After several months where I just haven’t been able to find even a couple of hours to code, I am extremely pleased to report that I’ve managed to get through this incredible glut of academic work and emerge into the wonderful fields on the other side. As such, this coming week I am now officially resuming development on 0.8 in my spare time – which is still not extensive, but at least I have some of it now, with more to come as the start of next calendar year comes to pass – with the objective of getting 0.8 polished off and finally released in the next few months.
So: where were we, and what remains to be done?
The State of 0.8
0.8 is, by far, the biggest release I have ever done and the biggest release I ever intend to do. Had I known that I’d run into this unexpected delay towards the end of the release, I would definitely not have tried to develop the speech systems alongside everything else and I would released everything except speech as 0.8, then released speech and conversations as 0.9, but as it stands, there are several major parts of 0.8:
NPCs
The current version available here on the site, 0.7, has a massively detailed world devoid of people. This has now been addressed, and there are millions of people – all procedurally generated, with the important ones stored and tracked, and the less important ones spawning and despawning to give a sense of the crowds the player moves through – that can be met in the in-game world. This, obviously, is one of the biggest changes to and developments in the game, and is the last major “system” that needs to be in place, and – via the conversation system – marks, finally, the beginning of actual gameplay! Although a lot of coding was required to keep track of NPCs at various resolutions, near the player, far from the player, inside buildings, outside buildings, inside or outside buildings that hadn’t been spawned yet, and so on and so forth, we finally got there. All NPC systems are finished, and only a few tiny bugs remain (found by my kind playtesters) to be fixed prior to a release of 0.8.
Clothing and Face Generation
Alongside these NPCs we have clothing and face generation. Clothing generation can offer many millions of variations of clothing styles, which the game then varies in four levels – “lower”, “middle”, “upper”, “ruler” – and distributes appropriately to NPCs. You can then view the clothing of anyone you run into, and the player of course now also starts with a set of clothing appropriate to the civilization they start in. Face generation, meanwhile, creates a set of genetic and cultural variations which can produce high hundreds of millions of faces, I believe, allowing you to make judgements about both the geographic and national/religious origins of people you encounter. Both of these systems are fully integrated and finished.
Buildings, Districts, etc
An entirely new, massively, and massively important class of buildings have been added: castles. The aesthetics of these vary according to their civilisation of origin (as do all buildings) whilst what is found inside varies according to the ideological and religious orientations of that nation; you’ll find altars, banners, barracks, torture chambers, dungeons, libraries, studies, and a million other things in there (alongside a relevant set of NPCs to inhabit them and move around within them). In districts, meanwhile, I’ve gone over and changed a bunch of the generation algorithms, fixed some unusual edge cases which could sometimes appear, made sure NPCs can always path to where they need to path to, and basically ensured that districts do function correctly in all the ways they have to. All castles and district changes are in place with the exception of a few tiny bugs to do with castle generation that need to be resolved before release.
Speech and Conversations
This is the final one, and the biggest one, since it marks the first meaningful element of gameplay being introduced into the game – which is to say, talking to people, questioning them, acquiring information from, presenting oneself in certain ways, deciding which topics to pursue, and all the other conversation mechanics and dynamics I’ve talked about in blog posts before this one. Speech generation is partly complete, and conversation mechanics are partly complete.
What next?
Therefore, there are basically three objectives left to cover before I can release 0.8, each of which is probably approximately of around equal size:
1) Finish Speech Generation
The primary objective is, obviously, finishing the generation of all sentences and potential responses. Now, you’ll remember from some of the final blog entries before I went on the coding break that I was introducing some more complex speech systems, but I’ve decided it’s more important to get 0.8 than it is to implement all the speech dynamics I have in mind. As such, I’m toning back some of these ambitions for the 0.8 release, and whatever kinds of sentences and comments don’t make it into 0.8 will make it into the (small and compact) 0.9 that should appear quite soon afterwards. Nevertheless, there are lots of sentence archetypes that need finishing, lots of sentence components, lots of variations for ideologies/ geographies/ cultures/ religions/ etc that need to be implemented, and then – most importantly – I need to make it all actually generates correctly! There’s so much content in there that some weird grammar mistakes are bound to crop up, and I’m sure some spelling mistakes have slipped in too, all of which need to be fixed.
2) Finish Conversation Mechanics
Right now actual “conversations” don’t really happen, since the AI you’re talking to just produces a response without, for instance, asking you something back. As above, since I’m not putting in every possible sentence form in this release, I’m also not putting in ever possible conversation mechanic into this release, but I still want things to flow quite well and to be quite interesting to deal with. Even though I hope to get 0.9 out fairly speedily, this is still going to be a version a lot of people are going to play for a lot of time, and I want to make sure there’s enough there to reward the wait, even if 20% of the mechanics I want will just have to wait until a later version when I can take the time to really perfect them.
3) Finish all Tweaks, Fix Bugs, Optimisations, etc
Not much to say here – I just have a list of things that need fixing, and I’m going to fix them. Now, some of these I’m going to leave for 0.9, which is going to be a far shorter release anyway, though it’ll only be the bugs that aren’t game-breaking, or are perhaps entirely aesthetic, that I’ll leave until then. Anything critical, or anything that is definitely going to be noticed, needs to be fixed now.
Therefore:
It has been very hard on me to have to stop programming for a period and cease, however temporarily, working on a project that I care so much about and means so much to me. I know some people will have drifted away, I know the blog has lost some readership in the last few months, and – chances are – some people will have seen this as proof that a big project like this is doomed to fail! But worry not: we’re back, and the ramp back up to the speed I was developing last summer will take a little while, but it’s going to happen. My schedule and my life more generally will be freeing up gradually over the coming months, to some extent Jan/Feb/March, and even more so April/May/June/July, and that spare time will be going into URR. Next summer (much like last summer) in particular will give me ample time to code, and I’ll certainly be taking advantage of it. I’m starting now to keep the code open, to check in on what needs doing, remind myself where I left off, and to start slowly but surely developing the speech content first and foremost, as that’s certainly the easiest thing to get back into the swing with. URRpdates in the coming weeks might be smaller than normal, but they will still have something to show. URR is back, and the final push towards the first gameplay release is now – finally – on.