As you may have seen last week, the development on 0.8 is finally ramping back up again. It has been a long road here, and a far longer one than I would have liked, but I now finally find myself with enough time on my hands to actually re-open that famously lengthy Python file and finish off this gigantic release. Last week I put out something of an overview of where the game stands at the moment, and what needs to be done: which is to say, basically, finishing off the content for speech generation, finishing off the most basic version of the conversation system I would actually feel comfortable releasing, and then dealing with whatever bugs and minor issues remain that cannot wait unil 0.9 (which is to say, crash bugs, or other kinds of serious errors).
The easiest thing to resume work on is the content of conversations. All the data structures and whatnot are present for me to put this stuff in; I just have to actually write it. That’s what I’ve been tasking myself with this week, and I realised that this wasn’t really finished, and that there were quite a few new kinds of variation I could add – with only the tiniest alterations to code – that would bring a lot of extra variety to the whole thing. Therefore, for the last few days in my spare time I’ve resumed fleshing out, and adding more detail to, the conversation system. This basically means ensuring that for all the possible political ideologies, and the various religious orientations that might come up, and so forth, people will have something appropriate and reasonable to say which will (in some cases) hint back towards their backgrounds and beliefs. The central part of this was filling out all the possible “expansions” – where an NPC can say a little something extra about a particular topic, as informed by their background. I thought I had done so previously, but I now recognise this wasn’t the case and there was a lot of valuable (and easy to add) extra content I could include. These are now all complete!
I also went to the list of alternatives for certain words in sentences – where one is selected at random for each word for each civilization – and finished this list off as well. As with the above, there was definitely more to be added here, and doing something relatively coding-simple, but content-heavy, has also helped with getting me back into the swing of things.
Lastly, I also finished off another segment of the game’s conversation system, which is ensuring that multiple phrases with the same meaning, but slightly different contexts or grammatical structures, are consistent. Which is to say, if is a civilization might use the phrase “put to death” in place of “executed”, then “execution” should also be “putting to death” – see what I mean? In this case the game randomly selects the way of expressing the “base phrase”, in this case “executed”, and then cycles through all the possible derivatives of that phrase and ensures that they are all combined with the original base phrase, such as “executed”, “executing”, and so forth. In some cases this is trivial, and in some cases more complex. For example, the word “produce” might be rendered for different civilizations as “produce”, “create”, “cultivate”; to render them in the past tense, it simply needs to add a “d” onto the end. However, if the words were also “make”, “yield”, and so forth, these have different rules to be transformed into “made” and “yielded”; I’ve therefore implemented a set of fairly simple but quite comprehensive grammatical rules to ensure that different tenses and uses can be handled, and that the game will also use the right one for a particular civilization when it has someone from that culture say a particular word.
So, that’s now all there is to say this week. However, I’ve had several comments that have stressed the importance of keeping updates rolling now that development has resumed, even if things start out slow and quite minimal. As such, I would expect some of these updates to be quite brief (like this one), but I think it’s better for me to put out short updates than to save them for longer updates and do other pieces in the interim: it’s important to me that it’s clear to everyone that development is moving again, and to gradually regain the momentum I had until around last September or so. In the coming seven days I’ll be looking at the set of conversation variables that have to take account of potentially-changing external factors, and be generated in particular sentences, which are currently as follows…
These need to be always able to draw on the relevant bit of information being mentioned, and to “output” with an appropriate grammatical structure. So, for instance, [god] is the name and title of one’s deity or set of deities; [greatestbattle] is the name of the most important battle of that nation; and so on and so forth. This is probably the next big task in speech generation, I think, after which the conversation mechanics will be returned to. This week I’m hoping to implement a basic framework for these elements, and start to get characters drawing upon their backgrounds and life information to fill them out correctly.
See you next week!