making a C++ game without an engine p1.
the intro.
One of the parts of game development I have always found myself comfortable with is choosing a game engine. I started with Godot just about six years ago now, and after getting comfy with GDScript, I have since also picked up Unity and C# and Unreal 4/5 with blueprints. I have gotten to a point within any engine I have tried where it isn’t really a question of if something is possible —the answer is always “yes” on that front— but rather how I can do it optimally and with modularity or scalability.
The one thing I feel I am missing is the ability to use C++ effectively. There are plenty of options for me to do so, both Unreal and Godot utilize it (albeit for different use cases), but I am always trying to get out of my comfort zone. What is more uncomfortable than making a game without the modern software people use to make games? Probably being stuck in a cave with a grizzly bear, but this feels very uncomfortable nonetheless. Seriously though, they are friend-shaped, why can’t I hug them?
Grizzly bears aside, I decided to start developing a project using C++ and the SDL2 library, just to make it that tad bit easier for making windows, drawing sprites, things like that. I’m not so insane as to code that from scratch (although I did make an image display for the command line in C# that converts .png files into strings… that was a fun one) and seeing as it’s likely the only library I will be including in the project, I am happy to live with that.
the project.
With that in mind, I should probably describe the actual project here, but honestly, I am not fully sure of the scope of this thing yet. I can’t decide if I want it to be something I speedrun on a weekend, or something larger I take my time on, slowly whittling away at it until it becomes something gorgeous… maybe it’ll just be scaleable so I can add to it without wrecking the core design. I’d say for now it’s gonna be more of a game-jam scope rather than a full project, but I do love getting carried away when it’s a personal project rather than a collaborative one.
Since this will be completely from scratch, I thought it best not to make it too complicated on the level design side, as making level editors isn’t really what I want to accomplish here. Maybe a simple .txt level importer, but nothing more than that.
That’s enough rambling about the scope and whatnot, I should really just say what I plan on making— a tower defense game. These can be incredibly varied, but for now, I want to stick to something akin to Bloons TD, as I remember playing it a bunch as a kid and have always loved the overall simplicity of the design. Monkeys shoot balloons, sometimes balloons get stronger, and sometimes monkeys get stronger, overall pretty simple when you boil it down.
The main reason I want to stick to something simple, and not design something new and complex and unique, is because this is just meant to be a project for me to learn C++, not to design my magnum opus. This isn’t gonna be distributed anywhere, I don’t want to make money from it, I just want to learn a new programming language. With that in mind, borrowing design from another title doesn’t seem too bad to me, and I am going to be making some changes to it of course as I can’t just make Bloons (that’s already been done, you see), although I can make something similar. I will definitely be talking more about the actual design of the project as time goes on, although I am more wanting to document my learning of C++ here, so it won’t be too extensive.
the outro.
Damn, that’s kinda it for now! Future posts will be very much segmented into different systems, running through problems I encounter and how I solve them, that sort of thing. Obviously, you would expect more C++ in the first post about learning C++, but I think providing context is pretty sweet!
Ciao!
Connor