Cogmind is edging into a new phase of development, that all-important part of making a game called “making a game!™”
Naturally any game needs an engine to build it with (some devs skip this phase entirely if there’s something out there that can already do what you want, e.g. Unity3D), but a lot of unfinished games get bogged down in this stage as developers fiddle with the engine while momentum on the project gradually dies out. It’s especially traumatic to discover only after the engine is mostly ready that the intended game is not even that fun to begin with, another reason to recommend first creating a prototype that allows gameplay testing.
Cogmind borrows its engine from the already fairly mature X@COM, so aside from tweaks and enhancements implemented as necessary we pretty much skipped over that step.
Following that is an intermediate stage between the engine and game itself: Any relatively complex game will have numerous systems and mechanics to implement, along with the UI. You can argue that by implementing these systems a unique game is already taking shape (as opposed to a generic engine), but without content there’s really no game to be played, so I still wouldn’t really call this “making a game.” If development stops at this point there is no game!
This is what the past six months has been about--implementing mechanics unique to the game and making sure they work as intended, but not actually creating content for them. So far you’ve seen plenty of Cogmind screenshots, some even depicting action on the map, but it’s all pure test content--objects named for whatever was being tested at the time, e.g. robots like the “Allybot” and weapons like the “Hot Laser.” I’ve received requests for demos from eager players wanting to try out the game, but there really isn’t a game to be tried out, and it’s about time to change that.
While a few mechanics aren’t fully developed yet (those requiring some degree of iterative design that are waiting for real content), the code is complete enough and interface ready enough to support some real content.
Codeplosion
As a way to quantify the progress, we can look at some good old LoC (lines of code) statistics. The 2012 prototype included all the basic mechanics and a simple single-screen interface, and was used as the starting point for Cogmind development in July 2013. Everything since that point as been new features and a much-expanded interface.
Of the current total, 11,910 lines are mostly for handling the interface, while 23,522 control game logic. About 2k lines of the game logic code is prototype content generation yet to be ripped out and replaced.Roadmap
Any sensible large-scale project needs to set long-term milestones to help direct development, thus Cogmind is broken down into large chunks / major features and as each one is reached, that section is broken down further into a short-term to-do list to help answer that daily question “Okay, so what’s next?”
As you can see, many of the remaining items are oriented towards content. The above list is by no means absolutely complete--it’s definitely missing some important items, but it’s been maintained for several months now and time estimates have been accurate so far. This implies the game will at least be pretty playable in about 7.5 months, barring interruptions to the schedule (of which there will most likely be a couple). Note that it is purely a game development list, excluding the whole other (very essential) marketing and business side of indie gamedev. Items may also shift around on both the long- and short-term list, and some items are moved down once partially completed (ex: hacking), but that’s perfectly normal with a project like a game which has so many interrelated moving parts.
Time to make a game!
2 Comments
What engine did you use in development of the game?
Or, perhaps, you wrote it on your own?
I built my own engine for it, yep (though Cogmind is the second project I used it for, not the first). It’s a C++ terminal emulator based on SDL 1.2, with features similar to what you’ll find in something like libtcod or BearLibTerminal.
Sometime in the coming months I’ll do a blog post about engines and tools with lots more info, since I get questions about this fairly often.