At a certain point, game development just comes down to iteration. You build a big pile of things, and then you iterate on them. Then, you iterate on them some more… and then some more. Eventually, after enough iterations, you get a game, or the Standard Template Library (whichever comes first.)
One of the major driving forces behind said iteration is the fact that the game is now in the hands of Real People, in limited quantities. We have done five internal test releases so far – a bit slower than I am happy with; the first four test builds mainly focused on performance and getting things working somewhat better on people’s terrible hardware (see blog post from a couple of weeks ago); the fifth test build put combat, barbers, and phrenologists back in the game, as well as turning on More Useful Features (like mining.) So what we have right now is a game buried under a shameful selection of UI failures, which we are now trying to extricate ourselves from for Revision 6. This has mainly led to David learning how to use the Doctor Nicholas Vining Patent XML UI Syntax Guaranteed to Vivify The Spirit and Improve Marriage, which has led to this:
However, this is starting to work. David has drawn many icons, and life is good. Consider the work party panel, before this week:
David sent me a bunch of art and a new mockup:
And we are now converging on an approximation of that in the game:
Note that all the things in Mr. Baumgart’s illustrative drawing (above) need to be hooked up; the militia button needs to cause an Angry Mob, right-clicking people need to bring up people’s character menus, etc. Still, it’s starting to look like a game. It’s all coming along nicely, and I basically get to spend the rest of this week working on User Interface Stuff before Revision 6 goes out to the pre-alpha testers. My mood at the end of the week probably looks like this:
Speaking of finishing things, Mr. Steele has now completed a first pass of all of the music – all four hundred and three megabytes of it! – and we have hooked it up. We have to remaster and adjust tracks to make the dynamic music system work better, but for the most part he’s on to sound effects.
Combat has proceeded apace, and we are now equipped with a first draft of “real bullets that fly out of a gun and hit various objects, not necessarily their intended targets” – tracers, in industry shorthand:
These will get a couple of prettification passes before release, as well as muzzle flashes on the guns and maybe slightly better predictive targeting (to ensure that they aim where their target is moving *into*, rather than just behind them, if they actually hit the target.)
People now correctly use claimed buildings! People have been able to claim them for awhile, but only recently has it started to have some sort of impact on gameplay. The big impetus for this came out of testing, when we discovered that, no, having overseers have work parties of lower class labourers having to run all the workshops wasn’t all that fun. Artisans, therefore, are middle class citizens (with work parties) who will claim any workshop for which they currently have the skill enabled, and will perform tasks therein (as well as any lower class folks you might assign to them in the work party.) Carpenters, given a carpentry workshop, will churn out a sequence of awful planks. Barbers, given a barbershop, will now also collect those who have been wounded in battle, and will subject them to Medical Care. (Please note that any individual who is working in a barbershop will *also* try to give medical care to nearby folks, probably using whatever is nearby.)
Phrenologists will, given a phrenologist’s workshop, visit people and by examining their skull determine character traits and whether they are a Traitor To The Crown, in which case they will be added to A List.
People can now also do work asynchronously. If you have ten ovens in your refinery, a refining artisan can (given enough lumber, hopefully placed conveniently in the stockpile outside the loading bay) keep them all full and convert logs to charcoal without having to actively stand over the oven while the logs cook. Possibly, while he’s not converting things to charcoal, he can be refining ores from the mines. The actual workshops themselves are starting to fill up with useful things, ranging from the manufacturing of planks all the way to laudanum. You can now also add or move machines and furniture in a building once it has been placed, and building roofs now have trim (and are waiting on Art for us to check them off.)
A lot of work has been done on pathfinding lately, as shown in our teaser trailer. Characters will now circle around each other, and won’t pass through each other (see the start of the trailer where people are lugging vegetables back to stockpiles.) This leads to lots of interesting problems in, say, doorways, that Micah is diligently working to resolve. Currently there are cases where we might search an entire path for the world, which our pathfinding algorithm (A*) will do quite happily, but which will cause a reasonably large slowdown for that particular game frame. Because the game runs asynchronously from the renderer, that’s not so bad – however, it still causes a hiccup. We’re fixing this by tracking connected components to support fast A* pathing queries, and doing some special case stuff for doors; this should do the trick.
Micah has also added The SuperConsole – an improved debugging console which we can dump debug information to in order to figure out what the heck is going on. Between that and optimizing terrain generation and load times (the speed of the marching cubes algorithm we use to generate polygonal terrain data for the world has now dropped from 10 seconds to 8 msec, for instance), we can iterate on stuff a lot quicker.
So, yes! Pre-alpha testing is starting to pay dividends, and we are converging on what we need to do to make this “a game that is fun” and not “a selection of things in an engine covered in programmer art.”