Goodness gracious it has been a while, hasn’t it?
Life. Likes to get in the way and throw curveballs at us, preventing us from doing the things that we love, such as GAME PROGRAMMING!
I know in my last posts I was raving about using Unity/Unreal for all of my game projects, and how I was saying that I would use it for every project. Well, that’s not exactly the case…
Here’s what’s great about an engine like Unity, or Unreal. They’re great places to start, and the results you can get are pretty stunning – IF you know what you’re doing! They take quite a bit of learning, and you also have to learn to deal with the engine’s way of doing things a certain way. In my opinion? Not very fun.
So, I have decided to program my own games from scratch, at least the next several. One (and my main focus right now) will be a 2D platformer, and feature very pretty sprites. Originally, I wanted this game to be 3D, but I’m pretty much doing this game all on my own, and since I’m much better at drawing and animating 2D things rather than 3D, well, that kind of determined the outcome. Plus, I love the older 2D games, since they had to be really inventive in terms of level design and content! I hope to be at least half as inventive as some of those great older titles!
For the actual programming, I’m using App Game Kit 2, by The Game Creators. I may eventually use C++ instead of AGK BASIC, but for now AGK BASIC is doing fine for my needs. The great thing about App Game Kit is that The Game Creators are constantly updating it, and it will very soon have full 3D functionality – so in the future I plan to make my own 3D game series with its own custom-built engine, completely made with AGK!
My goal is to really get back into the art of programming. It’s too easy to get caught up in the latest “easy” engines, the ones that all you have to do is drag and drop, or design Blueprint scripts to do all the work for you. Great tools, just not the tools for me currently.
Yes, programming takes a lot more work, and most of the time I will probably wonder to myself “Am I insane? Would using Unity not make this infinitely easier?!”, and indeed that is part of the fun. Yes, doing it that way may make it easier – but where’s the fun in that?
Although I haven’t done too much since I posted about my project, I have implemented some pretty interesting things.
I added some enemies, one is a repeller that follows the player to continue pushing it until it falls off of the map (or into another enemy), and the other is a magnet which drains your health at 1 point per second until you can break away (which can be done!).
I have a video here demonstrating what I mean!
I plan to add some other enemies, though I’ve yet to figure out what all they’ll be! I do have an idea for one but I won’t tell you what it is yet!
As you can tell, the geometry of the level is quite unappealing. This is because everything is currently a placeholder, and will be replaced with fully detailed models in the future. I plan to make the repellers have some sort of “force field” around them, which expands as they’re pushing the player away, and the magnets will look like a stack of neodymium magnets.
I’ve also upgraded the central code of the game to rely on a “Game State Manager”, which means that information such as the score, lives and health are persistent and won’t be wiped when new levels are loaded. There is a save game and a load game function and they both work flawlessly.
That’s really all I have to report for now, stay tuned for more!
Despite my love for my iMac that I bought over a year ago, it is in no way, shape or form a gaming machine. It can handle some small things like Minecraft (on light settings), but nothing like the games I want to play, such as Battlefield 4. While it is still a great computer, it just doesn’t have quite the “oomph” I would like for game playing/development. Thus, the solution to my current predicament is quite obvious; I must build a monster gaming machine!
Sadly, it can’t be a “monster” monster gaming rig, I had to limit my budget. I set my MAX budget to $1500, including monitor, mouse and keyboard.
I managed to not only find parts that are pretty inexpensive, but I managed to get everything down to about $1150!
The big way that I did was going with AMD for both the CPU and GPU. For the CPU I chose the Fx-8350, and GPU is the R9 280X (which is basically a GTX 770). That, alone, probably saved me $300, and those parts are more powerful than their Intel/nVidia counterparts.
Anyway, I placed the first half of my order last week, and after my next two paychecks I’ll be able to order the rest! I can’t wait, I’ll finally be able to play some good old PC games that I love, as well as play new ones like Thief, Assassin’s Creed IV, and many, many others!
You can definitely expect a WIP post over the next few weeks as I build it. I also plan to shoot a video of me building the thing! I will also post a parts list as well!
I have made some pretty good progress with some of the basic game mechanics for “Project: Roll-Away!”, as the project name has been changed.
I have a basic scoring system, as well as collection systems and “death routines” in place. Checkpoints and initial spawnpoints also work flawlessly.
As I sat working yesterday, I realized I wanted a way to make it appear as though things like gems and checkpoint flags were hovering, in order to catch the player’s eye. I initially attempted to “lerp” between two positions, but this didn’t give exactly the effect I was going for. Then I remembered a trick from an old video tutorial, about using triggers and Unity’s physics engine to make objects “hover” by utilizing the “AddForce” function. I tried it, and it gave me EXACTLY what I was looking for!
Here is a video showing what I mean!
I also added a limiter, so that the object wouldn’t gain enough force to bounce out of the bounds of the trigger and fly out of the level, because upon initial tests, exactly that happened!
And that, my friends, will enable me to quickly get this game… rolling! I just have to finish off the basics of the “Player Control” script, which includes adding “save points” in the game so that the player can save anywhere it’s allowed, and finish writing the Save Game and Load Game routines, and it should be playable sooner rather than later! I won’t make any promises on a demo release, but it will definitely be within a month or two, at most!
I have sort of resurrected the project I had been working on earlier in the year.
By that, I mean I have finally come up with some pretty unique ideas for game mechanics, and I have also learned a fair bit more of Unity’s physics engine!
I just started developing today, and I’m surprised by how much I’ve already been able to get done (only been working for about 1.25 hours total, intermittently throughout the day). I have the basics of player control worked out, I have a checkpoint system, soon I’ll add in a scoring system and such like, as well as collectibles.
I’m not going to worry about the polish anytime soon, in fact I’ve come up with a scheme on how I’ll identify objects in the meantime (since the finished game will have a LOT of detail!).
- Any floor objects/platforms will be RED for being a REGULAR FLOOR TYPE
- Any different types of floor will be colored BLACK to represent UNSAFE FLOORS, and DARK GREEN for different conditions, such as slippery/icy
- Checkpoint objects are GREEN for GO
- PlayerStart positions are PURPLE, because it looks cool
- Player object is BLUE because that’s what I chose
With that system now explained, here’s a screenshot of what I’ve got so far, it’s nothing fancy!
And here’s a better look at the scene populated with a few checkpoints:
My personal goal is to see how far I can get by the end of September – if I can get far enough that I can start work on implementing final textures and detailed world pieces, I’ll shoot for a release for NaGaCreMo ’15, which should be a lot of fun!
I don’t really have any updates worth sharing on the status of my game I’m making with Unity, because life has gotten in the way and I really haven’t had much time to sit down and develop. I still only have the prototype level built, and barely have the main controller script started. But I’m getting there!
Developing on Mac has proved interesting, to say the least. The graphics chip I have in my system is only a GeForce GTX 660M with 512MB of VRAM – hardly anything, really. In fact, to prove how little power this chip actually has, I went and tried out the Unreal Engine. While that is a great engine and would be my #1 choice to develop games with, it requires a rather monstrous machine to power. Even when I had all of the post-processing effects turned off and everything set to low, I could only get 25-29 fps, and it dipped to 17fps quite frequently. And this was in a world that only had 4 objects and 2 lights!
I tried researching ways to get better performance from Unreal on a Mac, but it is simply too resource-heavy. Unity is much better, perhaps because it was actually originally developed for Macs anyway. Of course, if you had Unity Pro and turned the graphics settings up to 11 on a Mac, you’d get the same result as with Unreal – it would stutter and display a black screen with “lol wtf m8″ and crash, leaving you with a pile of molten aluminum and a sad frowny face.
With all of that said, I do want a proper, powerful gaming PC again, and I have found no better deal than the iBuyPower Revolt Gaming PC.. With everything upgraded, I was able to customize a PC to have a GeForce GTX 780 3GB graphics card, 16GB of RAM, a great processor, decent harddrive and a good motherboard for around $1650.00, so all in all if I can get that PC, Unity/Unreal would run pretty well for a long time to come, and I would finally be able to produce some amazing results! Not to mention, all of my PC games would run amazingly well.
Of course, I can make that a lot cheaper by substituting the GTX 780 3GB with a GTX 750/760ti 2GB, and save about $300-$400, so I might end up doing that. It would still be a pretty great machine!
In other news, I also have a newer idea for a game, based on several ideas I’ve had for a long while. Imagine a mix of Oblivion, some elements from the original Harry Potter console games, and humor, and you get the new formula for the game I want to make. It might take years, but it’s certainly an idea I want to pursue, and if I could get it launched on something like the Ouya, that’d be pretty great!
That’s really all I have for now. Just wanted to let people know I’m not dead!
I have encountered some serious, serious issues with my current game, and how things are handled inside of it.
First, I’ve had some issues with the physics engine, and have done some research which shows the way I’m controlling the player isn’t exactly the best. While this would be a small change to make, changing it would mean basically re-writing almost 200 lines of code, because of the way I’m storing the player’s information and stats. I’m just using regular old public(!)* variables that I can set in the Inspector, but what I should do is separate that information from the control input script entirely, and store all of player info (score, lives, hp, mp, whatever else I may need) in what’s called a GameState Manager.
A GameState Manager is a very handy script, written in a Singleton pattern (meaning there’s only ever ONE instance of the object) in which I can do things like set the current game session’s information through a loaded save file, save the current game state to a save file, set the current level, update the player’s lives, health, and whatever else I may need. They’re pretty awesome things, and should be talked about more, because I’ve only learned of them through a couple of references people have posted on the TGC forums, and a reference in a lesson on GameInstitute.com.
They’re a way to centrally control specific parts of the game, and accessing parts of it through other scripts would be as easy as this:
The GameManager is the GameObject created by the script at run time, Instance is the instance of that object, and SetHP() is a public function that one could use to then update the player’s health. And that could be accessed through any script, on any object, just like that. Cool, eh?
Sadly, I can’t really re-start my project just yet. This week, I’m going to New Orleans, Louisiana with some friends from Wednesday until early Saturday morning – meaning that I’ll have to wait a few days to start, since I don’t have a laptop to program on. I wouldn’t want to anyway, except maybe in the car. This also then affects my deadline for NaGaCreMo, but that’s ok – the project is still alive, and as long as I can complete something for it by the end of January, then all will be well!
*This, as we all know, is very very bad practice, although in some cases this is the only way to do things in Unity (when you want to set variables from the Inspector, for example).