Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - UltimaRatioRegum

Pages: [1] 2 3 ... 19
1
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: August 08, 2017, 08:10:22 PM »
Only a short update this week, I’m afraid; this week I’ve been busy putting some of the final touches to my book and haven’t had as much time to program as I wanted; only half a day rather than a full day. As such, this week’s update is very short, but next week’s should be longer. However, in light of my new decision to have a gradual update log, I’m still going to do this post and then next week’s, instead of compressing both updates into one longer update. As such, this week:

- Most centrally, I’ve finished the task of moving the code that exchanges default words for the preferred word of a given civilization. In some cases this was being called twice, and in other cases not at all, and even though in some cases it was correctly being called once, the range of situations this was being used in were making it all rather unclear. I’ve finished making this shift, which required moving around quite a bit of the sentence generation code and adding some new code to re-handle things like punctuation and capitalisation, but I think that’s now done and working correctly.
- I’ve been going through and removing a lot of phrases, and a lot of word orders, which sound strange. As several people have pointed out, sentences could sometimes come out rather strangely; I’ve tried to fix as many of these as I can. At the same time, though, some of the interesting but logical sentences are generated from the same sources as the interesting but illogical sentences; it’s tricky to strike the right balance here. As ever, I think this will just need lots of playtesting.
- Just stated sketching out (on paper) a list of the bugs and small issues that need to be resolved before 0.8 is released; I had a bunch of smaller lists of this sort, but I hadn’t really collated them into one place before. For some of the bugs I’ve decided they don’t need fixing until 0.9, and some of them I decided it was easier to simply remove the thing that caused the bug (temporarily) than to fix the bug now; as I’ve said several times, I’m really trying to do the absolute minimum now required to get 0.8 released, and putting some of this stuff off until 0.9 is definitely the way to go.

I’m afraid that’s all for now, folks. Should get a full day to code next week, so should be back with a larger update next time around. See you all next weekend!

2
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: July 31, 2017, 06:55:31 PM »
Lots more coding this week! Let’s get to it:

I’ve implemented what happens when the player repeats compliments and insults over and over again (I have previously implemented the repeating of “general statements and questions”, i.e. almost everything, and repeating greetings, which are handled differently). When one says a compliment over and over, the NPC will appreciate it, and express their appreciation, but if you do it too much, they will begin to be a little bit puzzled; there are also some unique responses for repeated greetings being offered to particular classes of NPC. In the future I want to enable some greetings to be met with less positive responses if one greets repeatedly someone who might come from a culture which doesn’t especially like or appreciate the greeting in question.

If you repeat the same insult again, the NPC will quickly become even more annoyed than if you had simply said the insult once (which is itself a guaranteed mood drop) and will tell you to stop saying it, threaten you, become exasperated and ask why the hell you keep saying that, and so forth. Given that insults are unequivocally, well, insulting, this was a pretty easy group of phrases to code. I have also made it so that three or more insults in a row always has a 50/50 chance of ending a conversation: so be capable who you have a go at!

There was a bug with repeated comments; sometimes the game would seem to forget that you’d just asked something ten times, and if they answered, then said “why are you still asking this?” nine more times, on the eleventh time they would suddenly reply again. That was from the simplest of typos where the game was decided what kind of “why are you still asking this?” response it would give, where very rarely the game would select one which didn’t actually exist, and therefore default back to the previous sentence. This is now fixed.

The game previously only checked if someone’s mood had dropped to 1 or 0 to decide whether or not to end a conversation; this meant that if an NPC’s mood dropped from 2 or more to -1 or less, the game wouldn’t catch it, and they would go on talking and hating you, but not ending the conversation. This has also been fixed, and NPCs will end the conversation with you regardless of how low it drops. (It should be noted, the conversation does not literally “end” at this point; I need to add a dialogue box saying “This NPC has walked away” or whatever, and “Press Enter” to then end the conversation. I’ll be doing this before 0.8 is released, and shouldn’t really be too difficult; I’ll also need to add something when you talk to an NPC who has rejected you again, such as “I’ve told you, I have other things to do”, and the like).

I’ve given each civilization a list of reasons they might not want to respond to questions about particular topics. So people from an Isolationist nation might be disinclined to answer national or political questions because they are very wary of outsiders; someone from a theocratic nation might be disinclined to answer a religious question because that’s a matter for the state; and so forth.

Fixed a range of grammatical errors with the construction of sentences ,and discovered that in some cases, sentences were going through the system that varies each sentence for each culture twice, which was a big problem. That has now been fixed, shifting the “sentence varying” part of the process to something which only takes place once, and before. Before release I will need to spend quite a bit of time talking to every NPC I can find and dealing with every grammatical error I can possibly hunt down, but it’s a work in progress; the speech generation system is so complex, and so much varies, that it’s hard to pin down too much in any one sweep.

If people don’t want to respond to the questions you’re asking for personal reasons, there is now a set of responses in place for them explaining that they don’t want to respond for political reasons, or for religious reasons, or whatever. There are also some unique responses if you’re asking particular classes, so an inquisitor might mention it’s particularly suspicious if you keep asking about heresy. What this means if that there are many, many layers of questions and answers that the player will rarely, but sometimes see, and should provide a lot of variety. In this case, you need to ask someone something, it needs to be a topic they would be willing to reply to, and know something about, but they don’t want to talk about, and they decide not to talk to you about it, and they’re of a particular class and asking a particular question, you’ll get a unique response. I want these chains to be as long as possible, to maximise the chance of the player encountering a new response, no matter how long they’ve played the game.

I’ve put a lot of work into these responses, which take three forms: “uninterested” (the person doesn’t fancy talking about the topic), “stupid” (they think it’s a dumb question to be asked), and “suspicious” (they are troubled by you asking something).

In the case of the “Uninterested” response, they will begin with a sentence along the lines of “I don’t want to answer that” or “I don’t feel like talking about that”. After that, they will follow up with a comment that might be a general comment, or a class-specific comment. If it’s a general comment, they might say “It doesn’t really interest me”, or “I don’t think about such things”, or “Aren’t there other more interesting matters to discuss?”, and so forth. Class-specific, meanwhile, might be something like a miner saying “I should really get back to the seam…” or a priest saying “I would really prefer to speak to you about [god]”, or things of that sort. These have a nice variety, and I was able to think of at least three options for every class, as well as many general variations, all of which will of course vary across culture as with all sentences, so there’s a huge amount of variety here in the kids of responses one will get out of NPCs.

With the “Stupid” response, NPCs will instead open with something like “What a weird question” or “What a strange thing to ask me”, and then proceed to again, either give class-specific or general responses. General responses might be something like “Am I really the person to ask about this?”, or “That makes very little sense”, or “Why are you even asking?”. For the class-specific responses, they will reply in a way that emphasises why this was an especially daft question to ask that NPC class. If you ask a jailer about geography, they might say “My work is in here, and always will be”; if you ask a Concubine about war, they might say “What could I possibly know of battle from in here?”; if you ask a doctor about politics, they might say “Diseases and ailments care not for one’s political allegiance”; and so on. These should help the player to think about what kinds of things they should be asking different kinds of NPCs, what classes and questions make sense together – as well as what classes and questions definitely do not make sense together – and, as ever, dramatically increase even further the variety of things people might say to you in the URR world.

For “Suspicious” answers, they start off the same as the “Uninterested” answers, by saying “I don’t really want to speak on that” or whatever, but then things change. For each tag (“political”, “religious”, “geographical”, etc) some NPC classes have special responses, and all have a set of general responses. For example, asking about politics to a concubine might have them ask if you if you’re only asking because of their closeness to a ruler; for other classes, they might say “Politics is a strange topic for you to be asking me about…”, or equivalent. If one asks an individual question, a clerk might emphasise their personal life has no bearing on their work, or an inquisitor emphasises that their purpose is simply to pursue heresy, not to think about themselves. If one is asking about military matters, an officer might question why you want to know about potentially classified material, whilst someone from a militia questions why you’re interested in the defence of their homeland. There are then also some responses based on national ideologies, too, which will sometimes be thrown into the mix. Again: maximising number, maximising variety and difference, maximising the potential for the player to always be discovering new possible responses.

For this week’s sole coding screenshot, here’s a bunch of the “defaults” for the uninterested answers (which are picked at random, then varied for each culture according to procedurally-generated constraints and norms, as usual):



Next up: in the coming week, my objective is to finish fixing any remaining bugs to be found in the above set of points, and then start – I anticipate this taking several weeks – putting into place a structure for filling in the “[god]” and “[nation]” and whatnot parts of sentences, i.e. the parts that vary every time they get uttered and cannot be stored, but have to call reference to a wide range of different saved elements of the game world. I have no idea how fast/slow this will go, but all I can do is get started, so I’ll be doing that next Saturday/Sunday. See you all next week for the first steps into this crucial part of the conversation system!

3
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: July 30, 2017, 05:57:29 PM »
Here's last week's blog entry:

This week I’ve basically been playtesting everything that I coded in the previous three weeks since development actively restarted: this meant playtesting the mood system, playtesting NPCs becoming annoyed with you, making sure NPCs can say a tremendous range of things when you ask repeated questions (as ever, variation and believability are central here, and the two go hand in hand), and then seeing what happens when you ask NPCs all the questions you can ask, and making sure they can give some kind of logical response to them. NPCs should also be able to end conversations, make appropriate comments when they don’t want to respond something, choose what to not respond to, and so forth. I’d say pretty much everything in this selection seems to be working now! Here are some nice screenshots, all taken with one person from one civilisation for each demonstration. You’ll note the [thing] sections remain ambiguous, which is one of the tasks for the coming weeks, but hopefully here you can begin to see how NPCs give you reasons for not responding in various ways, or commenting when you say the same thing too regularly:













Some more work still needs to be done on the “naturalness” of what people say, and ensuring variation of all sentences, and so forth, but you can immediately get some idea from these about how things are shaping up with some of their more detailed responses, and the variety in responses, and there’s also of course a vast amount shown here with unique responses for certain classes, certain questions, certain questions asked to certain classes, asking certain classes from certain nations about certain topics, and so forth. As above, my goal is always to ensure the player might be able to see a new kind of statement in a new context, something that makes the conversation system feel truly deep and open-ended and potentially-infinite, whilst also being able to understand the many factors and many elements encouraging the NPCs one meets to respond in the ways they do. (One might also note a strange name for one NPC – need to fix that! I also got one NPC called “Son of Sluts”, which was pretty great – I’ll be sure to add that to the list of excluded terms). These screenshots have also shown me I need to find a way to add more facial variation to people from the same racial background; although in a global sense the variation is still huge, people will be spending significant blocks of time in one area, and that needs to vary more. I won’t be doing that in 0.8, but probably in 0.9. Next week: more conversation programming! Will be focusing on expanding “uninterested”, “stupid” and “suspicious” responses, people giving political or religious reasons or whatever for not answering things, and how to handle repeated insults and repeated compliments. See you then!

4
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: July 17, 2017, 01:18:25 PM »
Oh, now I have a big question. Will it be possible to have a job and be able to work to get money and possibly advance in the ranks (like being a soldier and slowly becoming more important in the army)?

I don't think so. I certainly have no plans in that direction; I see the player's character more as a roaming, ever-adapting traveller, rather than someone who will stay in one place long enough for something like that!

5
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: July 16, 2017, 06:11:20 PM »
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!

6
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: July 16, 2017, 06:03:04 PM »
Do you still have only 1 source file? I had problems with my Level class file which had I think nearly 6000 lines. Splitting it has been a good decision, now each class is about 1K lines which is much more manageable. And not only that, they are arranged to logical parts from simple to complex. Managing 6000 lines of code in one file is hard if you have different tasks in that class. But then again your decision to keep everything in one file must come from some kind of stubborn decision some smart people often seem to do.

Haha, I do, yeah. Wasn't intentional; it just kind of... happened. And now I'm disinclined to change things; it hasn't caused major issues. If it does start to cause problems, then of course I will, but until that time I'm not planning on making any changes.

Is there combat in URR?

Not yet; and once there is, it won't be the "primary" play method. You know how lots of games have combat as the "intended" play style, but you can also play with stealth, or with conversations, or with other stuff? Flip that on its head, where talking and exploring are the intended play method and combat is the harder more obscure alternative, and you'll have a good idea of what I'm going after!

7
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: July 11, 2017, 12:36:39 AM »
Hmm, nope, never had any problem with them! I know people say Python has issues for this kind of thing, but personally, I've never had any issues whatsoever :)

8
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: July 10, 2017, 07:46:09 PM »
Lots more progress this week! Still feels so great to be back into coding, and make solid and rapid progress on the conversation systems too; it’s striking how much can be done in a day when one really focuses. In keeping with our new method of rapid blog-entry-writing which is something akin to a changelog, here we go:

- Finished off all the possible “annoyed responses”, which fall into four categories, which I’m calling “general responses”, “class responses”, “default responses” and “special responses”. When you ask someone the same thing twice or thrice, they give increasingly annoyed or puzzled responses; then, when you ask again, one of these comes into play. 50% of the time when you ask someone the same question over and over, they’ll give a response similar to the responses they gave when you’d asked the same question twice or thrice, i.e. “why are you still asking me this?”, which will sound more or less annoyed depending on their mood (“general”).

- However, sometimes instead of a general response they will give a “class” response, which is a response tailored to their class. For instance, a ruler will specifically scold you for wasting their time; a torturer or a gladiator might make veiled threats about wasting their time; monks will express anxiety about the fact they aren’t getting on with their studies; and so forth. These give a nice little bit of flavour; roughly half of all the NPC classes have “class responses” of this sort when you get on their nerves, but they don’t always come into play. These will also later on appear when you ask irrelevant questions, as well repeated questions.

- Then, the other 50% of the time (when general/class responses are not triggered) the game will look to see if there is a special response for being annoyed about that particular topic, which might be annoyed after giving a positive response (the NPC answered you, yet you keep asking) or a negative response (the NPC didn’t answer you, yet you keep asking). Some questions have special responses for positive/negative original answers, others just for one. If one exists, it then picks one; for instance, if you asked an inquisitor about heresy, and they didn’t answer, and you repeatedly ask, they might say “At this point, I begin to find your fascination with heresy concerning…”, or if you asked them about nearby volcanoes, and they answered, and you keep asking, they might give a snide response like “I’ve said all I can – these things are hard to miss”. If a special response exists, it is chosen 75% of the time.

- Then, if there is no special response coded for the question and the specific positive/negative modifier in question, the game then goes for a “default response”. If they responded positively, they might say something like “I’ve told you everything I know about [topic]”, or if negatively, something like “I will not speak about [topic], can we move on?”. The [topic] in this case will be drawn from a large library of phrases, like “buildings”, “my health”, “my homeland”, “weapons”, “fighting”, “these tombs”, “noble houses”, or whatever makes sense for the topic.

- These also vary according to mood, so an NPC who still likes you after your constant questioning might say “What interests you so much about X” or “I’ve already told you about X”, whereas an NPC annoyed with you will give sharper “Why do you persist in asking about X” or “I have got nothing more to say to you about X”.

- What all of this means is that the responses of NPCs when you get on their nerves is tremendously varied according to their mood, their background, their NPC class, their origins, what you’re asking about, how many times you’ve asked them, a wide range of other factors. It would take a tremendously long time for anyone to come close to seeing all the possible annoyed responses in the general/ class/ default/ special response categories.

- Some questions being asked repeatedly cause a bigger mood drop than others. For example, if you ask about sensitive topics, they get miffed much faster; if you ask about particularly mild topics, there is now a small chance they will not lose 1 mood; in general, though, asking a question twice will, 90% of the time, cause mood to drop by 1 (for those who don’t recall, “mood” is on a nine-point scale, and if it drops to 2, there is a 33% chance they end the conversation; at 1 there is a 66% chance they end it; if it’s at 1 and should drop again, they will always end the conversation).

- Also, asking people from more hostile or more closed nations the same question over and over comes with a die-roll for an extra mood drop alongside the default “1”.

- What all of these points mean is that (in the extreme cases) asking someone from a friendly nation about a neutral topic will take a while to annoy them if you repeat the same query; asking someone from a much more hostile nation about their work as an inquisitor is going to tire them out extremely quickly; and all other interactions fall somewhere in the middle of that spectrum.

- Lastly, some NPC classes will always have their mood drop faster if you annoy them: this means rulers of various sorts, top-tier military officers, inquisitors, archivists… basically any high-rank NPC will get annoyed with you far more rapidly.

- I’ve also coded in what NPCs say when they want to leave a conversation with you; for now, this only happens if you ignore them. There are a wide range of default goodbyes that any class can potentially use, and some classes can only use because they don’t have special goodbyes. Other classes do have special goodbyes, where they will explain that they need to go and do X, or talk to Y, or handle Z, or otherwise that your inane blather is generally less important to them than whatever else they might be doing. They then conclude with a “goodbye”, “farewell”, or similar.

- Note that these are very different from the goodbyes you get from NPCs if you say goodbye first and they echo the goodbye; they will give you at least a reasonably nice response back, even if their mood value is getting quite low. These goodbyes only happen if the NPC decides on their own account to end the conversation because whatever the player is saying is too annoying/irrelevant/distracting to continue the conversation.

- On some goodbyes where appropriate, NPCs might mention the time, e.g. “Good day to you” or “I bid you good night”, etc, and the word used will be appropriate to the time of day, i.e. morning/day/evening/night.

- Also, of course, made sure illogical goodbyes cannot be said – for example, a prisoner will not say “I must attend to other matters now!” and then just go back to walking around their cell; whereas free NPCs might say that, a prisoner might instead say “This conversation has become too trying”, or “Your tedious questions have become too much”, or whatever.

- Added another 100 words/phrases that can be unpacked and spoken differently in each nation, and made sure they can conjugate all the other versions of the phrase sensibly; so “say” can be “say”, “utter” or “speak”, then “said” could be “said”, “uttered”, “spoke”, and “saying” can be “saying”, “uttering” or “speaking”, and so on and so forth. Also added new conjugations of existing phrases or words which hadn’t previously been put into the database.

Next week? I’ll be playtesting all of this stuff, and once that’s all working fine, working on some other aspect of conversations. As mentioned before, I am actually not trying to do everything needed for conversations per se for 0.8 – the “metaquestions” (“What do you think of [artwork]”, etc) are being omitted until 0.9 at least, for example – but just enough to get the release off the ground and let people explore the central elements of the conversation system. As well as playtesting these elements, I want to start going through all the questions you can ask people, and check those work – I’m sure there are some bugs or typos in there I haven’t spotted yet. I’m confident by the end of next week I can have all that done, after which I’ll start working on having things like “[god]” or “[nation]” or “[house]” or “[officertitle]” or whatever correctly appear in speech. Those are a complex set of variables which will have to draw on a lot of different parts of the game, and I don’t want to tackle that until everything here, and the standard Q&A, are all implemented. See you all next week!

Some of the new word variables/extensions, where the comments remind me which other conjugations also need to be covered:



The general words people will use when they ask things like “why are you still asking me about X”:



As you can tell, a large part of this week has been writing massive lists! At least next week it’ll be back to playing the game itself and seeing how things play, so hopefully some in-game screenshots will come your way next time…

9
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: July 04, 2017, 03:16:52 AM »
It's nice to see you back into URR development :) Good luck!

Thanks my friend - it feels damned good to be back!

10
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: July 03, 2017, 06:51:15 PM »
Firstly, I’d like to express my sincere and heartfelt appreciation for the outpouring of kind wishes after last week’s blog post, both here, and on Reddit, and Twitter, and by email, and elsewhere. They are deeply appreciated and deeply felt, and are a real credit to what a supportive bunch of people the roguelike community (and those who read my blog for the non-roguelike posts!) are. I don’t think there are a lot of games communities that would have responded so positively, and it really means a lot to me. I won’t disappoint you all; we’re back to coding, and 0.8 is back in development. I’m also going to get back to weekly updates, which will mostly be development logs/patch notes in style – however short they might be – with some longer pieces interspersed.

So, as mentioned in last week’s entry, my objective is now to devote one full day – either Saturday or Sunday – each week to programming until 0.8 is released, and beyond. As such, this weekend has been the first weekend of that new pattern (I’ve actually been coding both Saturday and Sunday), and for the first time in months I opened up URR’s files (or rather, file…) and took a look at where everything was; I also took some time wandering around the game world to see how everything was functioning and what still needs to be done. My first feeling, I must be honest, was a deep satisfaction at coming back to the project and wandering around the game world. Having slightly forgotten where I was up to before the monograph crunch/burnout began, I was pleasantly surprised to see just how many topics one could talk to NPCs about, and how intelligently (I think) they responded; how alive with activity the cities and towns were; and just how different the world felt to anything else that I’ve played, something in its texture, or the potential to fall down a rabbit hole of conversation, or ‘l’ooking in detail about the world. It was a tremendously motivating return, and one long overdue. So, without further ado, here’s the changelog for this weekend:

- The second I loaded up and tried to ‘s’peak to someone, we saw the first problem: the speaking crosshair seemed able to traverse the entire length of the screen, which was deeply puzzling. I discovered this only happened when the player was near the edge of one of the 200×200 grids the player actually walks around in, and this was because of a piece of code designed to prevent the crosshair from slipping off the screen; in this case it was registering that the player was near the edge, but thinking the player was using an infinite-length crosshair (e.g. the ‘l’ook crosshair) instead of one which is supposed to be contained to a 3×3 area. A quick fix took care of this, and told the game to handle edges differently depending on the crosshair the player is using.

- Then discovered that if the relationship between your nation and another nation was classed as “Unknown”, then one particular piece of code relating to greetings wouldn’t work, because it was looking for a friendship_value which didn’t exist. Instead, encountering an “Unknown” civilization now sets the friendship_value to a number determined by the ideologies of the nation in question, so a more outward-facing nation will be more friendly to total unknowns than an inward-looking nation.

- Have added the start of NPCs commenting when you ask the same question twice, and also forgetting after a lengthy period when you last asked something. In the first case, NPCs will give a new response if you ask or say the same thing a second time, and a third time, and then a final response at the end when you’ve asked over twice. The final response will be more or less exasperated depending on the mood of the NPC. Also, asking the same question over and over again will cause the mood variable of the NPC to drop. In some sensitive topics – e.g. talking to an inquisitor about a heresy – will cause mood to drop extremely quickly, and they might even get suspicious about why you keep asking…

- In the second case, all NPCs now have a hidden “forgetfulness” trait, which is influenced by a small number of other factors and determines how quickly/slowly they forget when you last asked them a specific conversation. In all cases, though, it’ll take at least days, and potentially weeks. As noted in a previous entry, there also needs to be some kind of “geographical memory” function to prevent you just asking Person 1 Question 1, then asking Person 2 Question 1, and going on and on in that manner. Instead, people will know when you’ve asked many others the same questions – they “heard on the grapevine” or whatever – and will refuse to answer. This is an important element to prevent tedious grindy gameplay, and I’ll implement this a bit later.

- Fixed some issues with asking people about their parents, grandparents, children, siblings, etc, which sometimes led to crashes when the game couldn’t construct a sentence properly. Will need to also come back to this later when special NPCs have relationships to other special NPCs.

- I’ve also done a lot of fixing of grammatical and spelling errors, which are (as expected) significant in number given the complexity of the conversation system. I had it print out every possible sentence stored for every civilization in a particular world generation – well over one thousand – then went through them all, found every typo, found where in the sentence generation that typo had arisen, fixed it, and moved onto the next. I must have fixed at least a hundred possible errors. I think I’ll do this again, to get another set of sentences, and go through those, and I’ll do this once or twice more before 0.8’s release. Should get the number of errors down to a tiny number by the end.

- I also discovered that fifteen of the “negative replies” – e.g. when you ask “Do you have X” and they say “I do not have X”, or whatever – were returning “This is a placeholder” instead of an appropriate hand-crafted response. This took a little bit of hunting down, but in the end I discovered this all just came down to fifteen typos in the thousands of words/phrases the game now stores! Things like “unimportant” being accidentally written down in another location as “unimpotant”, and things like that.

- Also made a list of questions which need special replies if you appear to be of the same nation/religion as the person you’re talking to (“Why are you asking me that?”, “Shouldn’t you know that”?, “The same as you, surely?”) or a particularly hated nation (“Why do you want to know that?!”, “There’s no way I can tell you that!”, etc). This will connect to the function that allows NPCs to estimate what nation/religion you’re from, which I’ll be working on soon.

- Added a ton (100 or so?) of new words that can be varied across nations, allowing nations to say even more things in a greater variety of ways than they could before. I also found a few cases where a culture would choose a way of saying X1 (e.g. “interested”) but wouldn’t always transfer that to ways of saying X2 and X3 (“interest” and “interesting”), so you would wind up with a culture whose people said “interested”, “intrigue” and “fascinating”, instead of “interested”, “interest” and “interesting”, the latter of which is far more logical and consistent for a single given dialect. I think I’ve now fixed all the cases where this could happen, and the differences in dialects should now consequently be just that little bit sharper.

- Started to think about how to implement what I’ve taken to calling the “metaquestions” that player can ask, e.g. “What do you think about [artwork]” where [artwork] can be replaced by the title of any artwork. I’ve put in general responses for NPCs on these questions now, i.e. I don’t know what this is, I have no opinion, I’ve already told you about this, etc, with more detail to come soon.

So: for a first week back, I’m incredibly happy with this progress! In the coming weekdays I’ll be focusing on my current academic work and continuing to put the final touches and edits to the book, then next weekend, I’ll be back to coding for at least one of the two days. I really feel incredibly invigorated by this weekend, I have to say – I’m really excited to continue pushing the conversation system to point where I can release the first version of it in 0.8. Lastly, and very briefly, here’s a little debug of some sentence generation and whatnot; you’ll see the sentences (on the right hand side) are almost entirely grammatically correct (they are the generated versions of the default sentences on the left); I really like letting these run and just seeing what the game can produce, and the different ways the game can utter the same sentence. And now, to conclude this entry on a sentence I’ve been wanting to say again for months: see you all next week for another URR 0.8 update!


11
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: June 25, 2017, 04:17:07 PM »
Maybe you are still trying to do too many things at the same time. I know what it is, but I'm possibly different kind of personality, because I don't need to get results fast and I know it's not going to happen fast. Roguelike projects are deceiving, because it feels like you should be able to finish one in some countable amount of time, but it's often not that easy. So many developers have found it out the hard way.

Thanks for the message Krice. I do understand what you're saying about still trying too much, but I think this reduction, and this change, will be what I need. I do understand what you mean about not "needing to get results fast" - but both in my academic life (because I need to secure future positions) and in URR (becaues 0.8 is *so* overdue) I do feel some pressure for results, and I think that's inevitable; but I'm working to push that out of my head and take things a little more slowly, and to allow myself the time to get ideas and work develop a bit more fully.

So… this is what burnout feels like.

You seemed super human in your output before. Any long term project gets you to this point eventually.
Good luck with readjusting your work/work/life balance. The second work is the game.  :)

Haha, thanks my friend. Yeah, any long-term project does that. I definitely had a "small" version of this feeling towards the end of my PhD, but that was a) lesser in intensity and b) shorter, lasting only around a week; this is still a very new experience. And I really appreciate the good luck wishes - I'm confident I can make it happen :).

12
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: June 24, 2017, 09:02:53 PM »
Cross-posted from my blog: http://www.ultimaratioregum.co.uk/game/2017/06/24/burnout-and-the-future/

So… this is what burnout feels like.

I’m almost now ready to submit the manuscript for my first academic monograph. It will have taken two months longer than anticipated, which was a great disappointment to me – it’s the only piece of academic work I’ve ever had to ask for an extension on. There were many factors at play there, some within my control, and some outside of my control, but the bottom line was that had I taken on less than I wound up taking on (and had the circumstances I was working within been different), I would have been able to get it submitted on time. Although I’m very happy with the final product, and I’m confident the work will be a valuable contribution to the study of unpredictability in games (of all its forms), I find myself reflecting specifically on the process by which the final parts of it – the crunch, if you will – were written. From around the start of March until the start of June, I can truthfully say I did effectively nothing with my spare moments except writing the book. All day on both days of every weekend was book writing; every evening was book-writing; every train journey and flight and coach trip was book writing. During this period I spent effectively no time with friends, no time exercising, and no time whatsoever doing any programming, much to my chagrin.

During this period, I began to experience for the first time what I believe is called “burnout” – my appetite dropped, I developed some anxiety (a deeply new experience for me), I developed some depression (similarly), and it felt at times as if there wasn’t really any point to what I was doing; that was I just speaking into the void because nobody else would read it; that I was letting everyone down by not working on URR (which I still feel quite acutely); and other feelings I’m not going to share here. Although certainly not the darkest time in my life, it has been, in many ways, a deeply unpleasant three months. Travelling a lot in this period helped me, and finding some times to engage with nature – whether meeting wild bison and wolves in the frozen tundra of Northern Canada or meeting wild tropical birds and lizards in the equatorial jungles of Hong Kong and Singapore – helped my mood a lot, but it only stemmed the bleeding, without addressing the underlying issues.

Academia, especially early-career academic before one secures a tenured faculty position, is notoriously stressful and time-consuming. One is always in competition with vast numbers of recent PhD graduates for a ludicrously small number of postdoctoral or junior faculty positions; one is constantly bombarded with requests and obligations and things that need to be done; one is strongly encouraged to submit only to top-tier journals, and yet doing so leaves one waiting for potentially years until publication, damaging one’s employability in the short term. The other crucial element of academia is that there is always more one can do. As academics, we don’t really have working hours, as such – just contracts that say we must “fulfil the expectations of the job”, or some equivalent language, using however many hours across however many days per week that takes. Many contracts even explicitly state we are expected to use evenings, weekends and holidays to meet those requirements where necessary – and that, assuming one wants to spend one’s academic career actually doing research, will always be true.

Up until now, I’ve always been able to field this and maintain the other things I want in my life, but in these last three months, I am not exaggerating when I say every spare moment has gone into the book. For the three months before that extreme compression of my time, almost every spare moment went into the book, and looking back, I can see my free time shrinking into a smaller and smaller gap with every passing day. Something inherently enjoyable – and I do enjoy academic work tremendously – quickly ceases to be enjoyable when it is something one must do, and when it is the only thing one is spending one’s time doing. Because of this the book became something of a chore, which itself made it harder to write, and which itself made it more of a chore, and made more painful my inability to spend my time on other things, and so forth. As a result of the stress leading up to and during the book-writing, I screwed up. I made two serious errors of judgement – one being a different but major piece of academic work I submitted, and another being a piece of work I submitted elsewhere. In both cases I made poor judgements about what I wrote, and over-estimated my knowledge of those domains, and was – quite appropriately – brought down a rung by those who do know those domains. They were both humbling experiences, which really brought home how much my judgement had been impaired by the stress of finishing the book.

But now, the book is basically finished, and I’m on my final visiting position of the year, having also just been offered an amazing new two-year postdoc opportunity in Canada where I will be able to drive my own research and make my own hours. However, as I sit here for now in a cafe in Nevada, trying to take stock of things, I realise that there are four things I must make time for, and a fifth change I need to make overall, from now, moving forward, no matter what, in order both to be the kind of academic I want to be, and to have the life I want beyond the academy.

Firstly, I need to make time again for programming, starting now. It’s something I enjoy tremendously, it’s creative work which forms a crucial balance to the intellectual work I make my income from, it’s something a lot of people are following and counting on me for, it’s something absolutely tethered to my online presence, and it’s something I simply deeply want to start doing again, and which gives me valuable balance in my life. It makes me deeply sad that I wasn’t able to get 0.8 out before I went into this period of total time compression and book-only-focus, and I want to put this right and get 0.8 released as fast as possible, and certainly before my new position starts later this year. Once 0.8 is out URR will be more than half-done, and psychologically, that’s an important marker I need to hit. Therefore, starting next weekend, I intend to devote a day per week to programming, no matter what else might be looming over me or might be requiring my attention. Either Saturday or Sunday each week, but probably I think Sunday, my intention is to always spend that day – as a minimum – programming. Despite the long hiatus, URR is not cancelled, but has certainly been on hiatus, and it’s finally time for that hiatus to properly, and truly, end.

Secondly, I need to make time again for fitness and exercise. I haven’t exercised once in the last three months, with the exception of hiking up and down Victoria Peak in Hong Kong and a couple of hikes in Alberta and Nevada. Normally I would exercise for at least an hour at least four or so days a week, but the book has simply dominated my time and my thought to such a degree that I’ve let this slip completely, down to zero. I can tell and feel that I’m less fit now, I’m less strong now, and less healthy now, and I don’t like it. It’s an unsettling and disturbing change from the state of being I’ve become used to, and I want to get back to my previous level of fitness as soon as possible. I’ve now managed to get this back to exercising twice a week, and hopefully I can push that back towards four as I decompress in the coming months. As I’m moving to Alberta, I’m keen to do lots of hiking there, too, and I have some interesting future travel plans which should also help with that.

Thirdly, I need to make time for a personal life. The fact that I am likely moving to a new country/city in a few months feels like a good time to make this kind of resolution – both to renew existing acquaintances in the UK and elsewhere, especially important now that I’m no longer in physical proximity to my friends in the UK, but also to go out there and find new friends and new colleagues. I’ve always been someone with a small group of close friends instead of a far wider social circle, but this, also, has shrunk to nothing in recent months, and my personal relationships have definitely suffered for it. I’m making amends to those I have unintentionally hurt, which I believe to be an important first step, and from this point onward I’m going to make a lot more time with friends and family in the coming months. It seems that the importance of this to one’s mental health only appears after it is lost, and that’s a lesson I don’t want to have to repeat again in the future.

Fourthly, I need to make time to actually play games. I got into game design and game scholarship and game writing and competitive game play because I love games; because I’ve played hundreds, probably thousands, and certainly own thousands; and I’ve been playing them since I was as young as I can remember. But I no longer find myself with the time to actually play any; in the last year I’ve played only two games for pleasure, which were Bloodborne and Dark Souls 3. Both were incredible experiences, but that’s only a fraction of the time I would normally spend playing games. Even in other periods of stress – such as when I was simultaneously finishing my PhD and dealing with a life-threatening illness – I still found far more time to play. It’s fun (most crucially), but it’s also important for my ability to be a good game designer and good games scholar. As such, my goal is now to at least double the number of major games I play each year for starters, and hopefully increase this number as time goes by. Right now, The Witness, Demon’s Souls, Shadow of the Colossus, The Bridge, Antichamber, and perhaps even returning to playing roguelikes all look very appealing, and that’s where I plan to start.

Fifthly, and lastly, I need to focus. Forgive the cliched phrase, but I now realise I need to work smarter, instead of working harder. I’ve been trying to be a game scholar, and a competitive game-player, and a game designer, and a game writer, and all the other things in my life outside games. This is just too much. As a result, I’ve decided to permanently “retire” any competitive gaming from my life. I want to really focus on scholarship/writing/coding, and in turn, to present myself specifically at the intersection of those three things. My background in poker remains a major informing element on my academic career – especially as I move toward studying gambling more seriously as a topic of study – but I think I’m spreading myself too thinly, both in terms of my effort, and in terms of how I appear. I want to focus in on my strengths, instead of trying to be everything, and do everything, when it comes to games.I think this will, without a doubt, be for the best, and strengthen my ability to work in my core domains without “distracting” myself with others.

As for the wider future, academia certainly remains my career path of choice. I take tremendous satisfaction from the unfolding of intellectual ideas on paper; I love travelling around the world to do research, to attend and present at conferences, to meet colleagues, and to experience new parts of this earth; I enjoy the freedom of working hours that academia (generally) gives one, even if that same freedom means working a lot of those hours, and the ability to largely work where and when I want. But these last three or four months have shown me what can happen when I take on too much – I make mistakes, and my ability to do anything else with my time beyond academia gets reduced down to a minimum, and then disappears altogether. This is not a “New Year’s” resolution, but this is certainly a mid-year resolution: I need to adjust my life back toward the kind of life I want to have, and I am confident this will have benefits both within and beyond my academic work. So with this written, and with this posted, I’m going to head to the gym in this hotel and work out for an hour, then head back to my hotel room and play something, anything, on Steam, then do some programming in the evening. The change starts now.

13
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: March 29, 2017, 08:58:35 PM »
This fortnight I’ve been working on getting the entire basic underpinnings of the conversation system finished; I’ve made a lot of progress, not quite enough to show off all the screenshots I’d like, so like last time, I’d rather wait until I can do a nice screenshot-heavy update, which will be next time (whenever that is!).

Instead, I’m going to talk a bit about the second thing I’ve been working on. I’ve now started developing the system by which NPCs will make judgements about you, the player, and where you come from. There are five elements to this: your clothing, your jewellery (meaning what rings and necklaces you are wearing, if any), your skin tone, your facial appearance (scarification, tattoos, headscarves, turbans, that sort of thing), and how you talk. The last one of these I’ve talked the most about in the past, but in this entry I’m going to do a little bit of an overview of how I see all of these functioning, and what it’ll do for the game. Equally, however, I now find myself faced with a big problem: what if all five elements of a player’s appearance suggest different origins or statuses? How should the NPC respond? I have a few notions, but I’m very open to suggestions.

Anyway, without further ado:

Clothing/Armour/Weapons

Other NPCs will make a range of judgements about the player based on the clothing they wear (and, later, the armour they wear, and weapon they wield). I think this will have three elements: what nation they seem to be from, their potential wealth, and whether their clothing denotes any kind of special affiliation, such as a religious order or military organisation. Most NPCs will likely treat you with more deference the more impressive the clothing you wear, but of course wearing the clothing style of a hated nation is likely to have the opposite effect no matter the wealth you’re showing off. For religious clothes, I’d like to have NPCs assume you’re a priest or a monk if you’re wearing obviously religious garb, although such garb will obviously have significant negative effects in certain areas of the game world; at the same time, though, it might encourage a particularly zealous shopkeeper to give you a discount, for instance. However, if people ask for religious advice and your character doesn’t know anything about the religion they are masquerading a priest of… that might be a little suspicious. Once armour is in the game that will also affect people and how they respond to you, probably with a little fear, a little deference, but again depending on the specific situation. Wearing unknown clothes should also elicit some kind of response depending on the nation/people; friendly and inquisitive if a very open and cosmopolitan nation, scared if isolationist, etc…



Jewellery

Jewellery will appear at some point in the near-ish future, and will consist of rings and necklaces. These will be similar to clothing: there will be cheap, middling, and pricy rings and necklaces available for each nation, and special/unique rings and necklaces for religions, religious orders, various other factors, various ranks in various organisations, and these sorts of things. Right now, I think special jewellery will be available for religions, houses/noble families, monarchs/rulers, but that’ll probably be it (and then more generally, as above, across cultures). I therefore see these as having a very similar set of relationships as clothing, but also denoting several things (such as family affiliation) which clothing does not; although most will be standard jewellery items for the culture in question.

Skin Tone

Skin tone varies very widely in URR, and is inevitably a central method by which peope might make judgements about the origin of the player character. This has only one element, which is to say a geographical assumption: NPCs will consider your skin tone, estimate how close/far from the equator you originate, and then look at their knowledge of nations and take a guess at which one you might be from. As such, there will also be some way to temporarily alter and mask your actual skin tone and make it lighter or darker as part of trying to blend in in other societies; and, of course, with some skin tones you’ll be able to “pass” for a citizen of many countries, most likely, whereas a clothing style would only allow you to pass for one. Hopefully the intersection of these (and the other elements below) will allow for some interesting combinations and strategic decisions.



Facial Appearance

Facial appearance, meanwhile, is a binary element: it denotes the overall culture someone comes from, and that’s it, although in a small number of cases it might also denote rank, slavery, and so forth. Again, if people recognise the markings they will suspect you are from the appropriate culture; if they don’t recognise the markings, the same range of responses mentioned earlier might play out. Again, I’ll be introducing ways to fake some markings (though probably not others?) as a means of further disguising yourself.



How you Talk

We’ve discussed this several times before on this blog, so I’ll keep it brief here, but the way in which you speak is going to be crucial. NPCs will make judgements about your origin based on what you say and how you say it, whilst you’ll be able to fake speaking in other dialects to a greater or lesser extent based on your knowledge of that dialect at the point you’re having the conversation. This will often be a make-or-break point for any player/player character attempting to “fake” their way into/through a particular culture or particular social situation, and is one of the aspects that’ll appear in 0.8 – NPCs won’t respond to it yet, but you will be able to change dialects, and see the results.



Summary

These are the five major elements I see as contributing to how other NPCs see the player – the first four being literally how they see the player, and the last one of course only coming into the equation if you start talking to the NPC (or the NPC starts talking to you, which is a feature that definitely needs to be implemented in the near future). I think these will give the player ample methods for crafting an image useful to them at that moment,

But what happens if 50% of your elements suggest you are person A of rank B from culture C and religion D, but the other half of your clothing suggests you are person W of rank X from culture Y and religion Z, which is the absolute opposite? Should they take an educated guess? Should they comment on how you are dressed, and that you are dressed strangely? What if they have particularly strong feelings towards/against A/B/C/D/W/X/Y/Z? Or what if 90% of your visible elements suggest X, but then you have a single element suggesting Y? Should the NPCs focus entirely on Y? Should they assume you are X and just treat Y as a strange element? Does that depend on the nature of X and Y and the context in which you are meeting another NPC? My point from all of these questions is that it’s proving very difficult and complex to decide, in essence and in one sentence, how NPCs should add up the elements of “you” they are presented with and how they should subsequently come to a judgement. This is what I’d love any and all of your thoughts on below; this system isn’t going to be implemented in 0.8, because I’m really trying to get only the core essentials of the conversation system done before release, but it’ll be a crucial element of the fast and much shorter 0.9 which will be finishing off the conversation system straight after. What do you think?

Updates

As I’ve said before, I’m crunching on finishing my first book, and about to travel for six weeks through various visiting fellowships; I am hard at work coding, but right now I’m finding fewer blog updates is really helping me with game developments, so we’ll be sticking to uncertain update schedules until my book is finished and submitted (May 31). I know this is rubbish, folks, and I wish I had some more time, and I hate how long URR 0.8 is dragging on for, but I’m doing the absolute best possible in the present situation. Next update: asap!

14
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: March 12, 2017, 12:55:48 PM »
A big update this week, summarising everything from the last three weeks of coding work. Succinctly, the game now has NPCs who can reply to even more “list questions” than they were previously able to, adds in what I am calling “meanderings” into speech from time to time in order to make everything feel and read more realistically, boasts a rather more developed international relations system which NPCs can draw on when making comments to the player, and procedurally generated alcohol is now present in the game. This last one is, obviously, the most crucial of the bunch. Oh, yes, and I’ve also expanded and finished the system for generating the names of relics, although their procedurally-generated images are of course not yet present. So without further ado, read on:

More List Questions

I have now finished off almost all the “list questions” – which is to say, questions where the answer often takes the form of a list, such as “What towns are nearby?”, or “What animals are sacred to your people?”, and so forth. Here are some examples of the recent additions:

Animals and Plants

You can now ask people about the animals and plants that are local to their homeland, and whether any animals or plants are considered especially important in that homeland, as part of your conversation. They’ll now give you a list of the local flora or fauna as appropriate, which is always grammatically correct, and also lists these things in a fairly logical order. The number is never too high, either, so you never find yourself reading through a gigantic list of things. Although not currently implemented, in the very near future these animals and plants will be spawning, and should be found referenced throughout a culture, and are designed to be another clue the player can potentially use to find out about the world.





International Relations and Geography

The game can now generate appropriate and logical sets of relationships between nations, based on their ideologies, religions, proximity, and so forth. You can now ask people about their relationships with other nations, what they think about other cultures in general, what kinds of cultures are nearby, what tribes and nomads can be found nearby, and so on. The same system is then used for overall geography, so you can now ask a range of questions about things that are near to where the player and an NPC are having their conversation. For example, you can ask whether there are mountains (or mountain passes) in the proximity, and so forth. These questions then redirect to a function which chooses an appropriate area for the NPC to have knowledge of (more educated NPCs will have a wider area, and NPCs more well-disposed towards you will think about giving you a longer response). This system needs expanding to all kinds of conversations, which I will talk about more in the future, but for the time being, people can tell you quite a bit about the surrounding areas:





Laws

Also, here are the law responses from last time:



You’ll notice the first of those is rather long. This is an example with a nation with a lot of laws on violence, and talking to someone who is well-disposed to you, and is therefore willing to actually talk to you. I think I need to find some way to chop this down; for such a long potential answer, maybe even people who like you the most will tell you the top laws or bottom laws, or maybe they’ll say “Do you want to know punishments for the worst crimes or the most common crimes?”, or… something. I’m not quite sure yet. Either way, it’s pretty clear that a reply this long isn’t really workable, and is very hard to read, and will probably lose the reader’s interest part-way through.

Meanderings

Secondly, I added in a set of what I’ve now taken to calling “meanderings”. As part of making conversations as realistic as possible, I felt it was important to add in code for people thinking for a moment before they reply, or being semi-reluctant to quickly reply, and just generally having the umms, ahhs, and oks, that characteristic real speech. At the same time, of course, having too much of this would quickly get annoying. To balance this out, there are two elements. Firstly, people will only start to use these phrases if they begin to get annoyed about the conversation, and they’re starting to lose interest in you. When their full interest is on you they won’t falter in the conversation, but this might change as time goes by. Secondly, they will not use it too often; an NPC that has just used one will definitely not use it on the next sentence, and beyond that, it is randomised, but becomes more and more likely the less and less interested in the conversation the NPC becomes. If you look at the conversations above, you’ll see a few of those present here and there.

International Relations

As noted above, the game now generates appropriate relationships between each nation in the game, whether feudal, tribal, or nomadic. In essence, the game looks over the ideologies of each nation, and looks at where they match, and where they clash. In some cases a pair of ideologies could be seen as a match or a clash; for instance, two monarchies might get on well because they have the same system of leadership, maybe the families are related, and so forth; or they might hate each other and have a rivalry between their ruling families. In these cases the game chooses at random whether these are “good” commonalities or “rivalry” commonalities. Equally, some shared ideologies will always cause conflict – two theocracies or two especially religiously zealous nations which do not share religions are never going to get on, and likewise two imperialist nations – whilst others will always generate friendship, such as a shared commitment to religious tolerance, or a shared appreciation of gladiatorial combat. Then, in turn, various religious beliefs, geographical distributions, and so forth, further affect matters. These are then categorised into nations that are close allies, friendly, neutral, disliked, or firm enemies; these five categorisations then affect speech, whilst the more specific like/dislike values will play into other elements later on. This is basically akin to the kinds of systems one sees in the recent Civilization games, but somewhat more complex and with many more factors at play determining what cultures think of one another.

Along the civ.relations dictionary, there is also a civ.trade_relations dictionary. This is similar, obviously, but actually somewhat distinct. Whereas relations simply tells you what one nation thinks of the other, in the case of trade_relations, we’re talking specifically about how much trade passes between two nations. Of course, trade is not going to be passing between nations that loathe each other, but two nations that share a massive border and are somewhat friendly are likely to trade more than two nations that are the best of friends, but half the world apart (bearing in mind, of course, that we are talking about the renaissance rather than the modern day here). Trade_relations therefore tells you the volume of trade going on between each nation and each other nation, and in some stores the player will therefore be able to sometimes find the items of other nations for sale. The reverse will actually happen in black markets – if X and Y hate each other, the goods of X might secretly appear in the black markets of Y, and vice versa. In this way I’m aiming to make the potentially someone “abstract” idea of international and trade relations much more concrete; it shapes who appears in each nation, what items appear where and under what conditions, and will also – of course – affect where the player can safely go.

Alcohol

For a fun little diversion for an hour this week, I also implemented the system for procedural alcohol – I’m sure we’ll all agree, a truly vital component of any procedural world. Each nation now selects an archetype of drinks that they tend to enjoy drinking, which can be beer, spirits, or wine; these are designed so that a full world will not have a completely equal distribution, but some generations should have a high volume of beer, spirits, or wine drinkers; much as in the real world, we don’t see these equally distributed. It then generates an appropriate set of alcoholic drinks for each nation, with words drawing on the terrain and climate types enjoyed by that nation, a wide set of default words for each alcohol type, and names – a class of alcohol might be named after the particular monastery where it is brewed, a particular town where it is particularly favoured, and so forth.





The player can also now ask innkeeps about the kind of alcohol they sell, and they’ll give you an appropriate list! Taverns stock a high percentage of all the alcohols drunk by one nation, but will never stock the full collection; equally, I’ll shortly implement a system so that taverns particularly near the border with another country will (assuming that is a nation with a particular set of alcohols, so not a tribal nation) sometimes carry one of the alcohols from “across the border”. Later on I will also add actual “breweries” in the locations where the various alcohols in a nation are brewed; these will have minimal gameplay value, so I certainly won’t spend more than a few hours on that, but for the sake of completeness I think they need to go in to make the world look just that little bit more complete, more varied, and so forth.



Relics

In the last fortnight I also finished the generation system for relics, and here are some example debug logs, where “RT” means “Relic Type”. Some of these do have rather lengthy names, because the names of the people associated with the relic can be quite long. It’s a little unwieldy, but honestly, I think it’s fine. I’m extremely happy with how these work and how these look, and I don’t think I’ll make any more changes here before the 0.8 release, beyond making sure everyone in the game can speak about relics of their religion correctly.



Blog Update Speed

So, once again, this has been a fortnightly update. As such, I’m just going to stop commenting on this for now or trying to predict when the next update will be, and I’ll just say to everyone: I’ll update as soon, and as rapidly, as I can. I am developing URR actively again, as you can see from the above, but I am also changing jobs, taking up two visiting positions in two other continents, and finishing my first academic monograph… so we’ll see how it goes. See you all next wee-… er… next time!

15
Early Dev / Re: Ultima Ratio Regum (v 0.7 released, 18th April!)
« on: February 27, 2017, 01:05:01 PM »
I will finally be able to make a fascist party in a roguelike!

Well, maybe not MAKE, but certainly FIND! There is a pretty wide selection of possible parties in the game, and I'm sure in the future I'll add more detail in there; for now I'm only really focusing on putting in enough details so that NPCs can talk intelligently about them.

---

This week I’m doing something slightly unusual. A huge amount of coding has been done this week, but I’m not yet able to produce screenshots from this progress; some of it is slightly buggy, and I need to test a few new generation systems to ensure that the NPCs I want to talk to, in order to take the screenshots, correctly have the information I actually want them to have. Succinctly, though, we now have a huge set of new list questions generating, various elements such as punctuation and slight meandering to make conversations seem more human, political parties even more fully implemented, a geographical search system put in place, greetings vary massively based on the relationship between you and the NPC, and even a procedural alcohol-name generation system so that innkeepers have something to talk about, and the beginnings of systems for modifying what people will say to you based on their mood (personal), the “local” mood (what people in that area think of you), and their knowledge of the particular matter (geographical, historical, etc).

All of these are finished, on the cusp of completion, or well into development; but because I’ve just been coding like mad, I haven’t really stopped to polish everything and get things to a position where I can take screenshots. As such, I’ve decided just to put this up this week, to signify: lots of coding is happening, and there will be lots to show off soon, but I’d rather show it all off once I can implement screenshots. I know some of the recent updates have been screenshot-lite, so I really want to have a solid volume of screenshots in place once I can show things off.

As such: hopefully, we’ll have a nice set of screenshots next week!

Pages: [1] 2 3 ... 19