Finishing 0.8 Part III

Before anything else, I had some unexpected donations this week. I don’t push for donations – although such a button is hidden on my site – but one donation in particular was unusually generous this week, and I must express my sincere appreciation to BP (that seems anonymous enough!) for the support; it’s very generous and very much appreciated. Otherwise, I am pleased to report another productive week of coding for the books. Instead of playtesting everything I did last week, I decided to add another large body of new code, then playtest everything from the last three weeks next week instead. So, here’s the new code implemented this week:

  • Most importantly we have three new elements that influence how NPCs respond to conversations: sensitive topics are “tagged” as such, NPCs are more or less inclined to respond to those sensitive topics, and they have three kinds of basic responses when explaining why they don’t want to respond to something you’ve said for personal reasons (as opposed to not knowing the information, which is factored in elsewhere, and isn’t a case of “not wanting to reply”, but rather “being unable to reply”).
  • Every possible question now has what I’m loosely calling a “conversation tag”, which denotes whether it might be a sensitive topic on any of seven possible axes – “individual”, “political”, “national”, “religious”, “military”, “cultural”, “geographical”. Some of the questions will be potentially sensitive on more than one count. For example, if you ask about the politics of an NPC’s nation, that will naturally be flagged under both the “political” and “national”. Most questions have no tags, then it looks like around a third have one tag, and then a very small number have two tags or more; the most tags are questions asking people about the ideologies of their nation, which might be “political”, and “national”, and then “religious” or “cultural” or whichever other applies. What this means is that when you ask someone a question, it will check whether this is a sensitive topic, and the answer to that question will influence whether or not they are willing to give you an answer at all.
  • Then the next part is inclinations – how inclined are people to tell you about potentially sensitive topics? Each NPC has a rating for religious topics, for political topics, and so forth, which varies hugely across NPC classes. This is on an internal scale of 0-4; at 0, they will rarely talk to you about a sensitive topic (of the sorts listed above), at 4 they will always talk to you (extremely rare: only national and religious leaders, and then one NPC class per category, will always tell you about X). All other classes are spread out along 1-3 (default “humans” are almost always on 0, or if not, they are on 1 instead). If you ask a non-sensitive question, whether or not they answer will be dependent on other factors (how much they like you, etc) – if you ask a sensitive question, it will check which conversation tags are listed for that question, and compare their rating.
  • This might seem incredibly complex, so here’s an easy example. You ask someone about their religion. The game checks how inclined that NPC class is to talk about religious matters; a priest is very inclined, your average innkeep doesn’t have much time for religious matters, and so forth. An appropriate die is then rolled for the question; if successful (and other tests are passed, e.g. the NPC likes you enough), you get your answer. So what happens if they say they don’t want to talk about X?
  • Well, I’ve split the “I don’t want to talk about X” into three categories, I’m calling “stupid”, “uninteresting” and “suspicious”, which are the reasons NPCs will give you for not wanting to give you a reply. The “stupid” option means that the NPC is baffled why you are asking them about that particular topic: for example, asking a monk about military matters, or a farmer about sculpture, or an officer about plant life, is likely to elicit this response. The “uninteresting” options is the default, and simply means the NPC doesn’t want to talk about it right now, for which they might give a bunch of reasons. The “suspicious” option means that the NPC refuses to talk on the topic, and is puzzled, concerned, worried, anxious, or most obviously suspicious about why you ask – this happens most often when happening about military matters, but can crop up for any conversation topic except the “cultural” ones.
  • In some cases NPCs will give you a specific reason for not wanting to continue the conversation. If you asked about a religious topic, and they don’t want to reply, and they are from a particularly zealous nation, they might say something like “That knowledge is only for loyal followers of [god]”; or if you asked about a political topic, and they are from an isolationist nation, they might explain a dislike of talking to strangers about the politics of their homeland.
  • So, a “I don’t want to reply” looks like the following. If “Uninteresting”, they say “[Sorry, I don’t want to talk about that]. [Cultural reason why not]”. If “Stupid”, they say “[Am I really the person you want to ask/I dislike that topic/why are you even asking this?]” (without cultural reason). If “Suspicious”, they say “[Cultural reason why I can’t answer. And why are you even asking?]”.
  • I noticed very few questions have the “Cultural” tag – I’ll have to add some more in later versions.

So: these were the things that last week I wanted to get done this week, and they’ve been done. Very please with the week’s coding! You’ll also probably note there are a lot of elements going into how and whether NPCs reply to you. What is their mood? What culture are they from? What culture do they think you are from? What topic are you asking them about? How has the conversation previously played out? What NPC class are they? And if you’re thinking this is a lot… it is! But I think this is what goes into making a reasonably realistic, and hopefully gameplay-interesting, conversation system. When you “fail” to get a reply, for any of the above reasons, the “failure” messages are all being designed so that you know why you didn’t get a response. If the NPC didn’t reply because they don’t like you, because you’re asking about a sensitive topic, or because they dislike the nation you seem to be from, it should always be clear, and allow the player to learn what it takes to find people who are willing to talk to them, and to talk to them in an appropriate way to actually get an answer.

Next week: playtesting and screenshots!

Be Sociable, Share!

17 thoughts on “Finishing 0.8 Part III

  1. Hey Mark.

    Cool update, I’m really digging the tag system, as I like markup languages and therefor am a dirty casual. 😉 The one thing I notice here is if a question is loosely related to a subject but could be better stuck under another term than one of the ones you have. Are you attempting to stick away from questions/answers that could go that way, or are you thinking of making the tags more weighting than outright flags?

    Sort of like [Answer 1][National : 2, Religious : 6, Military : 1, etc.] in code plan terms. The only reason I ask is due to games recently, namely a few times in Mass Effect and almost every single conversation choice in Fallout 4, have irked me with their generalisations.

    Like in a few responses in Fallout, you get some responses, and one reads in your head rather sarcastic but not in an outright attack way. Yet when the PC says it it’s suddenly vitriolic to the high heavens, and thusly the NPCs respond in kind and that’s not at all the kind of response I wanted.

    Or when you ask a question about how someone feels, expecting that it’ll be a segue from the previous topic of their friend’s death, asking how they feel about that particular topic, but suddenly they answer that the city feels tense recently so it’s putting them on edge. I always felt these kinds of things could be solved with better cataloging. Do you feel like you’ll manage to get the feel right for each of your questions and answers, or that you’d benefit your tags having doubles or ints attached to them to represent a weight system similar to the sensitivity ideas you’ve put in place?

    So, might be getting ahead of myself a little here, but I don’t think I remember any conversational skills on the skill system you had in place a fair while back. How will that all play into this, if or when the skill system becomes re-implemented? Is there going to be one overarching “conversation skill” that will just make it easier to get information you want from people? Allow you to broach touchier subjects with ease, grant you another ask of the same question before people start getting angered by it, that sort of thing.

    Or were you thinking of separating it into a few different skills like: interrogation, body language (could aid with your points being taken more favourably, or even help you communicate in another language if your proficiency is low, offering a bolster to your language skills and letting it grow faster, etc.), bartering, praising/brown nosing, and other assorted skills that allow you more conversational prowess as it were?

    Again, might be putting the horse before the cart here, but I’ve had the thought now and just wanted to posit it as a question. Food for thought.

    As always, pleasure reading!

    • What you wrote about the dialogue escalating unwantedly or leading into an endless loop is a typical problem with Bethesda’s and BioWare’s braindead „dialogue” system, where the dialogue menu text and the actual answers differ massively in places, and are often completely bogus to plain weird/braindead in their enforced pseudo-plotlines. You should notice that this is not common with most other games. With URR being a real RPG/world-sim, I think we can be sure that menu choices and the „said” things are appropriate to the situation concerned.
      Repetitiveness and evasiveness, however, depends solely on how deep conversation can and ought to go. But you’ll find some answers to this in the previous blog entry, „Finishing 0.8 Part II”.

      • Oh, I fully recognise the differences in their systems, but it was more leading up to the last question on the first point in paragraph 4:

        “Do you feel like you’ll manage to get the feel right for each of your questions and answers, or that you’d benefit your tags having doubles or ints attached to them to represent a weight system similar to the sensitivity ideas you’ve put in place?”

        (Just so you don’t need to bother scroll up, not to entail you didn’t read it. (Some people online are touchy over quoting oneself, so this is just a disclaimer for that, which is a bit sad.))

        Because some things don’t flow very naturally some times, and that is often down to old eyes reading the questions/answers. Obviously, I trust Mark’s eyes, he’s not done wrong by anyone so far bar himself occasionally maybe, and even then he fixes everything before we even get a chance to point it out. XD

        • *grin* now that would be a nuisance, being ripped of the occasion to complain and point out bugs or inconsistencies because of a *good* programmer ;-))
          But considering how much effort he puts into URR (including trial’n’error-testing before he makes a release), it is almost guaranteed that the dialogue will have a natural flow.

          • Isn’t it just? XD Quite novel, if you ask me.

            On his efforts: Oh yeah, most definitely. I’m just a sucker for positing food for thought on Mark’s articles though. They are such thought provoking beasts, after all. Where URR is concerned, and externally sometimes.

          • I’m really glad to hear that! I do enjoy writing blog posts (and it’s good to finally, properly, be back to doing so weekly) and I always love getting all the feedback on them, both the URR development posts and the general games criticism/commentary/design blog posts.

        • Haha, thanks :). It’s all about getting replies and a flow of speech that does look and feel as natural as it can be, and which does vary across cultures, whilst also sounding slightly more like the form of language one might expect from a Renaissance-era conversation than a modern one. I’m sure there will be a lot of iteration of the speech generation system to come, but I’m still very happy with how it looks at the moment.

    • Thanks Conor! Hmmm, no, they aren’t weighted currently; my present intention is that if someone is asked X, and that person has both Reason A and Reason B to not reply to that, they’ll pick at random; or I might make it so that the selection of what reason they give is deterministic, and maybe based on ideologies and this kind of thing. Your point about responses is really interesting and some being sarcastic/hostile; I’m actually quite confident I’ll be able to avoid that, all the responses are custom-built for each possible question, which takes/is taking a ton of effort, but it really makes a different when you talk to the NPCs because it properly feels like you’re getting a “handmade” response to what you asked, instead of a generic comment about something they might be unhappy with. Skills: I’ve completely done away with any “skills” of that sort written into the game itself; pretty sure those are all going to come from the player or the player character’s equipment/knowledge instead :). Body language is a good thought though: I honestly still haven’t decided whether I want to signal that, and if so, how. Right now, replies change based on three groupings of “mood”, high (9-7), mid (6-4) and low (3-1) – I might just have a single word somewhere that also changes through those three options…

      • Maybe you could use some sort of simplified, generalized body language (at least, for testing the general concept), by using a „ body language” skill and according dialogue influences like „he/she looks like he/she does not like the idea”, „suddenly you notice a hint of fear in his posture” and the like.

  2. Hello Mark Long time no see, Looks like that the 0.8 is coming very very soon and i can’t wait to put my hands on it. Well i’ve been very busy with several things these past months and so I did not show up much here, i’ll try to be active again here so… See you later Mark.

  3. Pushed the Donate button and threw spare coins, more as a ‘I sacrificed a chicken to please the angry gods of games’ than anything else. And maybe, a token of support / pat in the back / mild encouragement.

    It amazes me that you designed the whole conversation system in such concrete exchanges. Everytime I think of it, I think I’d had leaned in something vague describing the conversation “The peasant tells you stuff in a language you don’t handle perfectly but you understand [THIS] about [TOPIC]”. But I guess taht won’t give you the feeling of cultural gameplay you look for.

    At this point, curiosity wins over anything else.

    • Thanks! Most appreciated. Heh, yeah, I did debate going that kind of direction, but I really want to have them saying everything that can be said. If I release this version and one block of sentences are too regular or too common, then I’ll address them again and add more, and keep going until I really get this sense of people speaking in different ways.

  4. not sure i followed all your posts… but i definitely like to see titles like “Finishing 0.8” :DD
    keep going! you’re on the way to creating a game of a century ( ͡° ͜ʖ ͡° )

Leave a Reply

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