Remember this? Well, I’m still working on Falldown, but It’s been a while since my last post (over 8 months!!). The reasons for the lag time are:
- My wife and I had a baby. Well, she had the baby. They’re both doing well, and they’re awesome, and we’re looking for a place to live; and
- I’m re-working the game engine for Falldown from the ground up.
On point 1, it’s awesome being a dad and a family man, but this blog is about the games! 😀
So, to be more specific on point 2, I have been writing a new game engine to power Falldown and also a few other simple game ideas I have in my back pocket. I am basing the engine on the book: Game Coding Complete, 4th Edition (GCC4) and a host of other resources available around the web.
“But,” you ask, “Why are you writing Falldown again? You already had what looked like a working game!”
Well, I almost had a working game. However, I designed it poorly, and I reached a point where I would implement features sloppily, with notes “to be finished/improved later.” Each addition I made in that manner became more difficult to integrate into the game. I decided to redesign some of the underlying engine, to make it more modular and scalable.
“But still,” you ask, “Why would you write your own game engine, when there are umpteen free, ready-made options available, from Unreal Engine to Unity to Cocos (2D and 3D) to Godot to xyz engine?”
The answer is: I simply want to. I want to understand how to build and customize every piece of the game. One day, I will use a professionally-developed engine. Over the long term, I, as one nerd with a laptop, will likely not be able to keep pace with the quality of an engine developed and maintained by a team of dedicated people. But, for now, from-scratch is the way to go.
I chose the GCC4 book because it presents a good mix of guidelines and tips/tricks, without giving away too many implementation details. (It so happens I am also using a different gcc, the GNU Compiler Collection for my development environment, but I digress…)
The book is a strange duality: It aims to teach good design practices and habits to beginner-level game development students, but it assumes the students are at least intermediate to advanced-level computer people. To feel comfortable with writing a game engine based on GCC4, I had to learn quite a bit about programming in C++, and for that matter, math, physics, collision detection, artificial intelligence, sound, networking (ok, truth be told, I’m not so well-studied in the networking just yet, but I’ll get there).
Somehow, the duality works for me. Once upon a time in undergrad, I studied computer engineering, so none of the game development subtopics intimidate me. I was a bit surprised by how much I’ve forgotten over the years, and by how much I realized I never learned in school in the first place.
The process of getting back into it has been fun at times and frustrating at others. But the frustration and confusion make the eventual epiphanies even more rewarding than they otherwise would have been.
There are more “complete” books about writing games or a game engine, but I like the GCC4 approach (i.e., the hard way). That is what has delayed my blog updates. But I will keep writing about the progress of the game, and I will also write some instructional posts on how to do things and stuff in game development. Stay tuned!