Friends, welcome back! Today I begin something very exciting. Only a very small portion of this is going to appear in the 0.11 release, but as we find ourselves only weeks away from playtesting and I need to actually design the beginning of the game, i.e. where the curator of the museum you begin the game in lets you know that the world is full of riddles and mysteries that you should definitely go out and explore, I came across a problem – the current conversation / speech system was simply not up to the job. As all/most readers might be aware, the current system gives you a range of topics to ask questions on, and then an NPC you’re talking to gives a response. Some of the responses are pretty generic, some are dependent on the nature of the person (e.g. a farmer, a guard, a priest, etc), some are based on religious or cultural beliefs or norms, some are based lightly on you and what you’re wearing / how you look, and plenty of them are some combination of the above. There’s a lot of possible responses here, and a reasonable amount of variation within each response as well. Although I was intensely proud of the conversation system when I finished it, I’ve increasingly felt it’s one of the very weak points at the moment, and it really doesn’t serve the gameplay goals I want it to. This is because it’s not really a system that generates conversations – rather, it’s more a question-and-answer system where you ask a thing, they reply, you ask, they reply, and then either you leave the conversation, or the NPC gets fed up talking to you and they withdraw themselves from the conversation. It’s just not adequate for having an actual conversation with a “quest giver”, in the more traditional RPG sense of that, but it’s also not adequate for giving you information from the NPCs you might be talking to about the mysteries you’re trying to solve. You need to be able to ask them specific questions and get specific answers, and they need to be able to ask you things back and challenge you, and also you need to be able to reply to what they say and ask for more information. None of these things are really viable in the current system. Additionally, because the current system gives the impression of depth – while being one of the game’s most shallow systems in reality – I was worried about it distracting a 0.11 player from what they want to be doing, i.e. looking like a source of information, when it actually isn’t.

So, in the last fortnight I’ve totally reworked the entire conversation system from scratch, and in such a way that addresses – in an immediate way in 0.11, and laying the groundwork for much more later – every above concern with the old system. To start with, though, the challenge was becoming finding a way to begin such a vast process, either in creative terms, or technical terms. If the former, where do I start in terms of laying out what I want conversations to actually be like in game? If the latter, where do I start in terms of handling the mechanics of taking something as fluid and open as real-world human conversation, and codifying it into a game – and a PCG game at that, where I can’t have known NPCs with pre-written conversation options like a Fallout or Skyrim game? This was a tricky question for a minute, but then occurred to me – well, hang on. Why not just write up the kind of conversation I’d like the player to be able to have in URR, as a kind of creative exercise, and then work backwards from there? This wasn’t how I handled speech generation and conversations the first time around, but maybe this is the way to do it this time – given how incredibly successful that technique has already been on the image generation front. Whenever I’m making a new image generator I always create a non-generated variant first, check it looks good, and then I go back and alter as many pieces as I can within that same basic format in order to create as wide a range of visually distinct outcomes as possible. As such, for conversations, I decided to imagine what an absolutely perfect conversation would look like for a game like URR – what you would say, what the other character would say, how sometimes there would be clear responses to one another, sometimes new topics being brought in and/or old topics being forgotten, and basically how a much more human conversation might actually happen (albeit without the “uh”s and “ah”s and so forth that permeate actual human conversation, but really wouldn’t add a great deal to a game). I also wanted to experiment with the sort of tone I wanted to adopt, i.e. something just a little bit more… dramatic? Mythopoetic? Mysterious?… then the very down-to-earth conversational style currently present in the game, where everything is factual and there isn’t really much in the way of drama or emotion or real interest.

So, here’s the sketch conversation I put together of what I’d like a conversation in URR to actually play out like – and in italics I’ve put a bit of commentary:

Player: Good morning, friend.

NPC: Good morning! May the Winged Lord show his mercy to you. [This would be a specific greeting based on a dominant religion, or a dominant cultural idea, etc]

Player: I’m looking for information about the Nation of Unnomajji. Do you know anything about it?

NPC: Hmm, well, I think I’ve heard tell of them, in the east somewhere. I was told once that they worship a great bird and their capital city sits within a land of vast hounds the colour of grass, but I cannot speak to the truth of any of that. [These would be garbled and confused versions of the truth, e.g. maybe the symbol on their coin is a raven, and their capital city is in a bioregion called the Green Wolf Steppe, with the garbling becoming more pronounced the further away the nation is]

Player: That’s very interesting – do you know how one might get there? [Player has selected a “Reply” option and is asking for more information on what they said, rather than asking a new question]

NPC: I know that Grey Knife Road will take you east from our lands, but beyond that, you would be on your own. [NPC gives a bit more information, but also might not, or become suspicious, etc]

Player: Thank you friend. I recently found this note – I wonder whether you can make any sense it? [Player has selected a scrap of paper in their inventory to show to this character and get some insight on]

NPC: I believe that is a symbol to do with Shuppu-Amar, the hideous god worshipped by those who live to the north. It denotes some part of their religion or their cosmology… do you know any places where they worship their foul eldritch deity? [I want NPCs to be able to ask questions back, with a response then being given depending on the player’s response – here it seems like the logical answer would be “No, I promise!” but I’d want questions where the “right” answer is far less clear. Even in this example, though, I think answering “yes” might still in some circumstances lead to an outcome you’d want]

And so on – you get the idea! So, this is the goal – and a rather lofty goal it was. To make this happen and work how I wanted it to I needed to do several things, and doing each of these things has now enabled me to put into place a wildly more interesting conversation system (seriously, just playtesting it, it’s like an other game – the richness of the conversations are so far improved).

Firstly, we needed a new in-game window for conversations with NPCs. The old window wasn’t going to work any more since it has a huge set of possible question categories you can ask down the bottom, and then each of those breaks down into even more question categories, and a lot of the screen is being taken up with the player’s face – and that’s not really doing a great deal. Instead, we’ve shifted now to a much smaller window, without the player’s face (but still showing the face of the other character you are speaking with) and just ten options, eight of which essentially only lead to one question (see below). As part of this a lot of things needed to be reshaped and reoriented, and I took the time here to make the drawing of the conversation window a lot more time-efficient than it previously was, and to make sure the code for handling things like scrolling and the like has been appropriately adjusted to the new size. This new window also gives you clear instructions for how to navigate having a conversation, and tells you the name of the person you’re talking to – if you know it – without taking up what is otherwise valuable screen real estate. I’m really happy with how this new screen looks, and I think having some of the world showing around the borders does a good job of situating the conversation within what else you’re doing, rather than being something very outside of / separate from what you’re otherwise doing. That’s a small point, but I do think it matters. I also debated still having it across the whole screen, but the text lines were just getting too wide and more difficult to read, so this more compact version serves to address that issue as well.

Secondly, we needed to shift from many topics with shallow answers, to a few topics with deep answers. The previous version, as noted above, had dozens of categories (e.g. “Diseases” or “Weapons” or whatever) each of which would break down into a long set of questions, e.g. asking about what weapons they had experience using, or what weapons they’d faced, or what weapons their civilization tends to use, or what weapons are holy to their god, and so on. This led to literally hundreds of possible questions you could ask people… but this had issues with it being very unclear what would be useful or not to ask, and having so many questions meant that the generators for the responses were, inevitably, very shallow. Instead, I need to turn these around – a handful of questions the player can strategically and precisely select, and deep, hugely varied, answers. To do these there are now, as noted, only ten options in the conversation menu, and only one of them consistently breaks down into a set of different questions like the above set. The main ten are “Nation”, “Religion”, “Object” (in the world, e.g. a nice obelisk you saw somewhere), “Item” (in your inventory), “Building”, “Location”, “Species”, “Language”, “Event”, “Person”. Then whichever one you click simply gives you a list of all of that thing you’ve encountered, and then you just ask them “hey, do you know anything about [whatever]?” – and that’s it. This is a huge change, as the core of the conversation system is now just the ability to choose a piece of information about the game world, and ask about it. Nothing else. This means there are only ten major questions you can actually ask NPCs, i.e. what do you know about [x] for ten different categories, and that frees me up to code in a lot of depth into those responses. Below you’ll see some examples. The eleventh, “Them”, is for asking the NPC about themselves, and that has around ten options. The twelfth, “Reply”, only becomes available if they say something there’s a logical reply to, or they ask you a question directly. Thus, few things to ask, offering deep answers and clear choices for the player in terms of what to say, instead of the absolute opposite of all these things.

Thirdly, we needed to add “moods” for NPCs. Previously there was quite a basic mood function but it didn’t really do much, and it had so many different layers that it was, again, very difficult to imagine a player using any kind of strategy here or making interesting choices. So, instead, I’ve gone now with fewer options but much deeper outcomes. Essentially NPCs can just have three moods now – friendly, neutral, and hostile – and every answer to everything you ask them, as well as of course their willingness to even have a conversation with you, will be shaped by that. As you might expect it’ll be friendly NPCs who will be the most inclined to give you the most information, and I’m designing the responses to the queries to keep that in mind, with these characters sharing lots of data with you and sometimes, in rare cases, maybe even something “extra”, i.e. a bit more beyond what you asked that might point you towards something you hadn’t considered before, or a new place to explore, or an interpretation of something which wasn’t previously apparent, etc. Enemy NPCs will also, however, give quite a bit more information sometimes – though in quite a hostile way – and while this might seem like a strange choice, the point is to actually reward the player a bit here for taking sides and gaining enemies as well as allies. My hope is therefore to encourage friendship, but ALSO to encourage the player to both makes enemies, and talk to them! With that said, 1/6 times a neutral will treat you as a friend (i.e. give the friend-type reply) and 1/6 times a neutral will treat you as an enemy (i.e. give the enemy-type reply), in order to add a bit of variety into conversations with people whose nations or religions you haven’t yet become close friends with / mortally offended. From initial testing I’m really happy with how this is working, as the friendly replies are really deep and rich with information, the hostile replies are very snarky but also sometimes give you some useful data, and the neutral replies are pretty middle-of-the-road and might give you something, but perhaps not quite enough. As for how we change characters’ moods, well, we’ll get to that later, but now I’m really pleased with shifting this, too, into a narrow but deep system, instead of a wide but shallow one.

Fourthly, we needed to add “obsessions” for NPCs. This is a really cool feature I came up with to enhance the variety in what they reply to, and again from initial testing I’m really pleased with how it plays out – it adds a ton of variety, a ton of reply depth, and also has potential for clues and riddles later on as well (i.e. you might be tasked with finding a particular merchant in a particular city who has a particular obsession, and only by talking to each of them and seeing what they keep talking about would you be able to figure out who the appropriate person is). How this works right now is that each NPC is generated with one obsession (we might make it two in the future, or three, but this needs playtesting) which can only be a logical and appropriate obsession for that person, e.g. if they worship an eagle-headed god, they aren’t going to generate being obsessed with octopuses. These obsessions will then shape their potential replies to many different questions, and should really help make different NPCs really memorable and identifiable (e.g. you’re talking to someone about a range of topics and they keep moving the conversation back onto their absolute fascination with mountains) while also, as I say, having quest potential. Once again the goal here is to deepen instead of broaden, and to add a lot more personality into the characters you’ll be encountering.

Fifthly, we needed to add replies and responses. This is to prevent conversations from not actually being, er, conversations, and just being question and answer sessions instead. While the existing NPCs are able to display tiny bit of agency by ending a conversation they’re no longer interested in, they’re essentially completely passive and there’s not really anything they can do to respond to you, respond to your questioning, pose you questions instead, or otherwise be a lot more active. It goes without saying, but dialogue and conversation systems in many games are much more a back-and-forth, with you sometimes asking questions, and the characters sometimes asking them back. This is far easier, of course, in a game without procedural content generation where you can predict exactly what questions can be asked, to whom, and in what contexts, but there’s really no reason we shouldn’t be able to do it here as well. As such, some responses from NPCs will come with their own questions now, and when that happens, you’ll then be able to access the “Reply” option which will let you reply to their questions or comments as appropriate. You’ll also of course just be able to go onto a new line of questioning, but I think we’ll have a model where sometimes the character will get annoyed quite quickly if you’re not responding to what they say to you, and you’re just pestering them with endless questions. Overall this should make the flow of conversations far more organic, and will allow you to go into a lot more depth on topics as well beyond just the initial question, as many topics can lead onto other questions, replies, replies to those replies, and so forth.

Finally, I needed to change who the player can talk to, and what they’ll actually say. Right now you can talk to any NPC, both those who are spawned and despawned constantly to give a sense of a crowd within any settled area, and those the game actually stores and tracks, e.g. merchants or guards or priests and the like. This, again, is a mistake, because no NPC is special or different in this scenario, and while a few replies do vary based on the nature of the person – so talking to a merchant or a priest might yield a slight change to what they have to say – there wasn’t really much variation. Instead, an NPC’s nature as a merchant or priest, a jester or a ruler, now has a massive impact on what they’ll say, what they won’t say, how they’ll respond to you based on how you look or how you’re dressed, what questions they’ll ask back, and what information they actually have to give you and what information they don’t have to give you. This should again lead to fewer, deeper interactions, but also lends the opportunity for interesting variety here, as one could find a quest in which between certain hours on a certain day, you actually need to talk to the generic NPCs in a certain place, not the important ones, in order to ascertain information. I can also think of other comparable ideas, e.g. maybe only being able to get a sense of broader cultural or religious currents by talking to the “everyman” rather than important figures? We’ll see how it goes, but right now the basic idea is again to change NPCs from a sort of undifferentiated mass, where everyone basically says something but none of it is particularly useful, to a point where you can only really have a full conversation with a relatively small number of characters, but they’ll all have interesting things to say and will enable full conversations. And, of course, there will still be some kind of limit to talking to people unless they’re really into the conversation, so with the in-game world having only a few hundred “important” NPCs, one might get to a point of not wanting or being able to “waste” a good conversation with someone unless it’s really going to yield the value you want. As such, in 0.11 I intend to basically heavily curtail the conversation options of most NPCs – since they don’t really have that much of interest to say, and I don’t want to distract from the core new additions – while giving a few NPCs, such as the curator from whom one receives the quest to start the game, a great deal more to say, and in the process exploring some of these very new conversational styles.

Now, how do the new questions work, Well, let us take nations as an example. If you ask about a nation there are four permutations, essentially – you are standing in that nation and asking someone from that nation about it, you are standing in that nation but asking a foreigner about it, you are asking a foreigner about their home nation, and you are asking someone about a nation you and they are not currently in, and nor are they from. In the first three categories it is reasonable to assume the person would know something about that nation, since they are from it, live in it, or both, and thus those answers will always yield reliable information (as an aside, I still haven’t decided about deceitful NPCs and the like, but this is a huge enough change already, so we’ll deal with that later if we decide to go for that). By contrast, if the person is neither from Nation X, nor lives in Nation Y, they will always give semi-reliable or obscured information about that nation, with the degree of obscured-ness having “Low”, “Medium”, and “High” levels. The game calculates what the level should be by checking first whether the nations border each other – which immediately removes “High” obscured-ness – and then counting up how similar the two nations are, with very different nations having higher obscured-ness levels in this person’s thinking, and very similar nations having low obscured-ness in this person’s thinking. Such a person will always answer in an obscured way even in the “Low” permutation, but in that variant it’ll be very clear what they’re talking about if you just give it a moment’s thought, whereas the “Medium” permutation should be trickier and less clear, and the “High” variant should be telling you real information, but doing so in a badly obscured and twisted way. This is the system for nations, but it applies to other things as well, with information being blurred or not depending on the person’s “distance” from the thing being discussed, and the extent to which it would actually be logical for them to know something about it!

And with all that said, here’s an example of how one of these conversations looks. I’m finishing off now adding in the remaining variety in the content for 0.11 – which is just core basics about nations and religions for now, everything else can come in later – but I really am happy about how this looks. I honestly think this is so much richer, so much more interesting, and fewer, deeper conversations, are definitely the way to go – especially when coupled with a basic but very important friend-foe system, and obsessions which will lend each NPC an extra level of individuality. AND, atop all that – it shouldn’t really distract from the core things you want to be doing in 0.11, while still hinting at where the system is going to go in the future. I’m really, really happy with this.

What next?

So, there we go! The conversation system has been completely redone in the space of one blog update, and with over half of 0.11’s conversation content already implemented. We’ve shifted from a wide but shallow conversation system to a focused but deep conversation system, all the required technical and gameplay changes have been implemented, and this will achieve the goals of not distracting the player in the 0.11 release, and laying the groundwork for this to be very easily massively expanded with other things you can ask about in 0.12 and beyond. I’m honestly incredibly happy with this and pleased, as ever, by how much can actually be done with just a couple of weeks of really focused work and attention, and trying to avoid getting distracted by other features. With this done, I’ll be heading back into finishing off the remaining riddle material for 0.11, then getting quests going and testing them out. Thanks as ever for reading, everyone, and (sorry as ever for sounding like some tired content creator on YouTube…) please do let me know your thoughts in the comments, and/or share this post around on the web if you know of other people or communities who may well find it interesting! That’s all for this fortnight, and I’ll see you again in two weeks for the next update as I continue to barrel as fast as I possibly can towards the 0.11 release. Hope you all have a great fourteen days between now and then :).

Leave a Reply

Your email address will not be published. Required fields are marked *