Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411423 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 19, 2024, 03:41:39 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsDwarf Fortress meets The Outer Wilds? "Ultima Ratio Regum", v0.10.1 out Feb 2023
Pages: 1 ... 37 38 [39] 40 41 ... 53
Print
Author Topic: Dwarf Fortress meets The Outer Wilds? "Ultima Ratio Regum", v0.10.1 out Feb 2023  (Read 177491 times)
Ultima Ratio Regum
Level 7
**


Game Studies Lecturer, "Ultima Ratio Regum" person


View Profile WWW
« Reply #760 on: April 18, 2016, 01:11:31 PM »

Poping up to encourage you and say good job! Can't wait for dialogue design!

Thanks man! I really do appreciate it. Dialogue design is so close! Next week should be the release of interim bug-finding version, and then I'll finally be onto speech/dialect/dialogue.

And here's this week's update!

----

This week I’ve been recovering from my recent thrilling illness, and made a load of progress on the AI for castles, fixing a ton of new AI bugs discovered in the interim, and some other small changes that I wanted to implement. Alas, my week of illness has pushed things back just a tad, but I’m actually still hoping to release the playtesting release next week. It’s going to be close, but my intention is to really focus on URR for the next week and try to get it out next weekend – there aren’t any academic deadlines in the next seven days or so, and those which are a little further past that I’ve made good progress on already, so I’m cautiously optimistic that it might be possible. I still haven’t decided whether to make it public or private (I know, I know…) but I guess I’ll have to decide soon enough. Probably private, though. Either way, here’s a very image- and gif-filled update for you all!

Castles

Almost all the AI requirements for castles are now done. As I mentioned last week, this was quite an easy and enjoyable part of AI programming, both because a large part was already done for all the involved NPCs and because castles are just very interesting spaces I enjoy moving around and exploring (even as their designer). The stuff that still needed doing after our previous update was to ensure that all guard exchanges work correctly (which they do, almost entirely), that monks behave in a sensible way (they do), that everyone goes to a logical bed when they turn in for the night, which is surprisingly tricky in a building with so many beds on so many floors (I think they do). As with everything else, this should work regardless of the player’s actions going in/out of the map grid, leaving the building unspawned, spawning the building, etc. Therefore, here are some screenshots.

Monks awakening for the day and moving around the castle:



A guard switch-over when the castle itself has not been spawned; although some of the colours here make it slightly tricky to see at times (I’m still trying to figure out a solution), I love the complexity of this dance as all the conscripts (“6”) and guards (“g”) exit the castle and exchange places with their comrades, before going back inside. In a later version the timings will be varied a little, of course, so that they don’t all appear at the same time, but for the time being this is more than adequate (and does look pretty cool!).



Here we have a bunch of knights guarding the throne room switching places. Sorry for the laggy parts of this gif – there was a lot of debugging stuff going on in the background which slowed it down every now and then.



In a slaving nation, we have several slaves in a castle going about their day and maintaining upkeep of the great hall; this was the same civilization as all the above gifs. A few minor issues arose here with behaviour that had been coded for mansions and manors not quite working perfectly for castles, but I’m pretty confident that’s all resolved now.



Three debugging images of a generated castle with the NPCs placed within it, and where they start. C = conscript, g = guard, K = knight, s = slave, M = monk. They normally start at their guarding locations or their beds, and then start moving as soon as they’re spawned by the player entering the castle.







More Monks

Monasteries have been successfully simplified for this release – abbots and monks now behave entirely indoors within the monastery, rather than venturing outside into the vegetable garden and the religious building at the core of the complex, and thereby causing all manner of confusion. Here we have some monks going to bed and already in bed, and then for reasons unknown I go for a wander into the next part of the monastery before ending the recording…



Bugs

Lots of fun bugs!

Firstly, something started crashing when I entered inns. It turned out that this was because of a slight typo I’d made in a line of code handling the decisions of important NPCs that accidentally scooped up a particular subset of non-important NPCs (e.g. those who can do their thing in taverns) and caused the game to implode. This wasn’t too tricky to fix once I found the line of code, although it took a fair bit of hunting down. Secondly, we had a bug involving the middle courtyards of castles (see below) which resulted in the player, upon leaving them, sometimes being transported onto the roof of the castle instead of correctly settling into the courtyard. This has also been fixed. Thirdly, we had another bug that caused certain categories of NPCs to duplicate themselves under extremely rare circumstances with the player’s movement and their spawning/non-spawning of buildings at various times in the player’s movement schedule, and this caused a bunch of problems with the clone NPCs overlapping in their schedules, or only doing half of their schedule, or all kinds of strange things. I figured out what the particular permutation was, and dealt with it. Fourthly, I ran into a bunch of problems with soldiers, conscripts and knights attempting to use the code designed for guards (since when guarding, the game should just treat them the same as guards) which needed fixing in a laborious but not massively challenging process, which basically entailed adding [‘Soldier’,’Conscript’,’Knight’] to almost every line of code with ‘Guard’ in it.

Lastly, I discovered a rather fantastic bug whereby guards and conscripts and suchlike inside a castle, who were trying to path outside a castle in order to relieve their comrades, would sometimes path to the internal doors in a castle (if that castle has an external courtyard) and would emerge into the courtyard, not have any idea how to path to their guard partners (despite being outside, and therefore supposedly able to path), and then for reasons I’m not entirely clear on, they would insert themselves into the door (see picture below) and sit there until I noticed them. This has only happened once, because I resolved it immediately after, but I really have no idea how they put themselves into the door. I guess it’s just one of those mysteries.



I also made a range of other minor changes this week in preparation for the interim playtesting release. Firstly, I removed the stat bars from the bottom of the screen, and the stats from the windows on the left of the screen. Those are almost certainly going to need updating/changing in the future, but for now, they’ve just distracting, especially as the game’s current stage is fully about exploration and (once 0.8 is out) talking to people. I’ve also made some minor changes to a bunch of flavour text here and there, primarily relating to travel and the player’s movement in the world, and changed a bunch of things relating to the wording of various items and features and terrain types and the like, as well as clarifying a few mechanics points, keypresses, etc. Naturally my focus is on the AI for the playtesting release, but I want to make it at least a reasonably streamlined experience for the playtesters!

Next Week

All that needs doing is finishing off castle AI, which is mostly done already. Next week will be the last AI update for 0.8, and hopefully the interim playtesting release. Finally!
Logged

BomberTREE
Level 9
****



View Profile
« Reply #761 on: April 22, 2016, 11:14:30 AM »

I love reading these so much <3
Keep it up man, you're doing such a good job!
Logged
Ultima Ratio Regum
Level 7
**


Game Studies Lecturer, "Ultima Ratio Regum" person


View Profile WWW
« Reply #762 on: April 30, 2016, 03:32:36 AM »

Thanks so much! That's awesome to hear Smiley. And, indeed, here's an update!

---

Ladies and gentlemen, I am pleased beyond words to announce that, as far as I can tell, all the AI requirements for 0.8 are finished! Now, I must qualify this: there are a number of NPC classes that do not yet exist in the game, but those that do exist perform almost all their actions, although there are a small number of events currently omitted (rare or unique events like religious festivals and the like). What this means is that around 80% of all NPCs now do 98% of their schedules, and I think they work correctly no matter what kind of strange behaviour the player involves themselves in with regardless to moving, saving, loading, spawning/unspawning areas, and so forth. As a result, I am indeed putting out the interim playtesting/bug-finding release in the next few days! If you emailed me asking to be on the list, you should find an email in your inbox with details of how to download the playtesting release, and some things to look for, within the week. For the rest of this blog post, therefore, I’ll go over the final additions and refinements done in the last week, and then from next week onwards, we’ll finally be on to dialect and speech generation! I’m so excited. But, first…

Finishing Castles

On Tuesday, Wednesday and Thursday I finished off everything that still needed to be done for castles, and so as far as I can now tell, all the possible NPCs that can spawn in a castle all function correctly with their schedules, their placement, their tracking whether the castle map grid is spawned/unspawned and whether the castle itself is spawned/unspawned, and so on and so forth. One major issue was with sleeping and waking NPCs, and in a few particular contexts guards who should be spawned sleeping in beds were spawned sleeping at their posts, whilst those who should have been on guard duty at their posts were on guard duty in their beds! This got fixed by copying a line of code which should have applied to all guards, but was instead applying to around 90% of them thanks to a typo. I then ran into some issues with entering a castle after the 1080 time of the day (which has 1440 “ticks”, each being ten “turns”) which is when all the guard schedules should switch over; for some strange reasons, the knights guarding the throne room were struggling to spawn correctly and causing a crash, which had *something* to do with beds, but I wasn’t quite sure what.

The “filled” doors are doors to the outside whilst the hollow doors are within one building, so here we see various guards and conscripts going outside. It’s slightly jerky due to all the debug processes printing, but I think it still looks rather snazzy, and I love seeing such a large volume of people going about their day without the game crashing! (You’ll also see slaves and knights in these gifs also just going about their daily business in the castle)



And then immediately after, the guards/conscripts who were guarding outside come back inside and head to appropriate beds:





Here’s a cache guard switching with another cache guards whilst various other guards/knights/etc on the same timetable also move to wherever it is they need to go in order to switch over:



Guards on upper floors wouldn’t behave

As a result, here are some guards and a knight in one of the towers finding their way down correctly, rather than misbehaving terribly:



I ran into a bug whereby I sometimes ran out of beds on certain generations, but only for knights and guards. It took quite some time to diagnose what was actually happening here, but it finally became apparent that when the smallest possible number of beds spawned in the corner/side towers (four per tower, so sixteen total) and the game was trying to place guards and knights in those towers, and there was a cache in the castle, there simply weren’t enough beds, so the NPCs were stuck trying to find a bed; this meant I had to specifically enable their ability to climb up towers to find another bed, but only specific staircases (because the main staircases are in the main castle, rather than in the towers)! The disconnected nature of the upper floors of castles is unique, and has basically required adding in quite a few exceptions to a lot of NPC behaviour which ordinarliy wouldn’t have to think about impossible paths on a given floor.

After that, though, things went quite smoothly with servants, slaves, and monks. Here we have a basement in this castle containing the castle’s slaves, who were all going about their day most of the time and then filed into the basement as time went by:



And monks sleeping at night in their quarters:



I then turned my attention to priests, who – in castles – can fall into two categories. In religious nations you’ll find a single large chapel with a priest walking around inside, whilst in nations that have freedom of religion you’ll find a large number of small chapels, each with a priest (and altar, book, etc) of the appropriate religion. Here’s a priest wandering around a full-size chapel for a nation dominated by a particular religion (you’ll note various servants coming and going at the same time), and then various priests in smaller chapels in a castle in a nation with a plurality of religions:







And I must say there were some cool religions in this castle. Jaguars for the jaguar god!



Then, servants. They work the same as slaves (aside from being on the ground floor instead of underground), and these worked pretty much immediately thanks to all the code in place for slaves. I then moved onto torturers and jailers, who should be spawning in a different section of the basement, away from slave quarters (if slave quarters are present) and who keep to a very simple schedule. Sure enough, these folks seem to work perfectly well now too. Here’s one of them wandering around (I also really love how under-castle jails look, don’t you?).



And heading to bed:



And here’s a torturer checking out the cells under their control (where unfortunate people will one day appear), and in a later version there will be various unpleasant things in the centre of this room, which will vary from nation to nation (so different nations have different methods of torture, if torture is their thing).



And slave quarters and a dungeon in the basement of the same castle, with two different staircases. This is a rare-ish scenario, but meant I had to make absolutely sure that slaves returning to their quarters knew which staircase to take (servants, being on the ground floor instead of the basement, don’t have this issue)…



And that’s pretty much all the NPCs for castles! In future versions I may add in a couple of extra NPCs, like book-keepers for archives and the like, and also I need to add in concubines at an appropriate point – and the actual leaders themselves! – but for now, castles still appear very active when the player wanders around them, and that’s what matters for 0.8.

Final Check, Final Bugs

The last thing to do before sending out the playtesting release is to active all possible AI actors and spend a little while wandering around the world and trying to break them myself. I’ve now done so, and to my absolute delight, I have thus far discovered that everything seemed to be working correctly, although I do still harbour a tiny, tiny concern that certain NPCs in certain houses might not always appear in their houses at the correct times, depending on the player’s actions… but I couldn’t produce any bugs here, so that’s down to be super-secret super-elite playtesting team to figure out.

I’m also going to implement a few debug tools for my playtesters, so they can now look at a debug print-out which shows all the important NPCs in that area, where their homes are, what their current tasks and schedules and objectives are, and so forth. This, naturally, will not be in the final release, but I thought it was a pretty essential feature to maximize the potential of the interim playtesting beta.

Although I have ever confidence in my team, the complexity of all this stuff does mean it has to be possible that the final 0.8 release will go out with a few minor issues still in place. This would be disappointing, of course, but so long as there are no AI related crash bugs present when 0.8 hits the shelves, I’ll be content – it would obviously be even better if there were no AI bugs of any sort whatsoever, but I’m being realistic. Pathfinding and scheduling is massively complicated already and made even more complex by the variety of permutations of spawned/unspawned/loaded/saved areas the player can bring into existence or push into the background through their movements in the game world, and despite my best efforts, I’m sure it’s still possible for an NPC to duplicate, or to vanish into nonexistence, or something else of that sort. But we’ll see! Maybe the playtesting release will be remarkably stable and nobody will find any problems whatsoever.

HAAAAAAAAAAA.

Next Week

DIALECT GENERATION! For the next week or two I’ll be working on the underlying mechanics for generating different styles of speech for each in-game culture (in the average game we need to produce around 40 very different styles of speech, and ideally many tens of thousands possible across a long enough stretch of time). I’ve started to draft this in various forms over the last month or so, and so next week I’ll give you all a run-down of what I have in mind here. After that we’ll be onto designing the conversation screen! I’ve also been giving this a lot of thought, and I have some idea how this is going to play out, and how it will connect to the dialect/sentence generation stuff I’ve been quietly putting together and experimenting with in the background. See you in a week!
Logged

Ultima Ratio Regum
Level 7
**


Game Studies Lecturer, "Ultima Ratio Regum" person


View Profile WWW
« Reply #763 on: May 08, 2016, 06:56:17 AM »

A huge update this week, so let’s skip the introduction and get on with it!

AI Refinements

I’ve had a wealth of fantastic feedback from my playtesters this week – thank you to you all! As such, I’ve implemented a whole range of fixes, some of which were for issues that I thought had been resolved ages ago, but some code edit in the mean time had apparently ruined, leading to these problems.

Firstly, we had a wealth of problems with servants/slaves in upper-class housing districts entering non-crucial mansions, and then when players enter them, a whole suite of Very Strange things happened, normally resulting in a crash. Quite a few people reported it. This bug was a leftover from a previous model of NPC handling, and required me to prevent random crowd servants/slaves from going into buildings, so now they just move around the district or sometimes leave the district instead; in turn, I’ve disabled servants/slaves in second-tier upper-class houses, and I’ll put them back once I come to 0.9 and I’m putting in all the other NPCs and NPC variations 0.8 will lack. This should all now be fine!



Secondly, I’ve had a bunch of reports of crashes when saving/loading the game, and these are very hard to diagnose, unfortunately, but I think I’ve fixed it. One was a rather strange issue with the pathfinding maps in buildings; these were just saved and loaded, but for some reason this has stopped working when you save and close the program; save and reload works fine. In truth, I don’t really understand what could be causing this in the slightest, but it takes just a few milliseconds to recalculate when you load the game instead of trying to load it from scratch, so I’ve dumped in some code to that effect, which will be sufficient for now. Debug logs still look crazy, though.



Thirdly, a major problem arose with non-“important” NPCs sometimes straying into the code for important NPCs, and being asked by the game to report their “current_step” variable (which relates to how far through they are moving from one district to another on a regular/routine schedule), and the game thereby crashing because they don’t have that variable at all. A lot of people reported this, and it turned out to be pleasingly trivial to diagnose and fix, since it basically required the addition of “if npc.important:” to a particular piece of AI code, and that sorted it out. Result!

We also had an issue with guards failing to appear to relieve other guards in upper-class districts, which has now been fixed:



And ambassadors were not always in their embassies at night, which needed a quick fix:



There were also reported issues of jailers sometimes getting into an infinite loop (fixed), an issue with castles that contained both slaves and jailers/torturers in the basement and they would sometimes try to path to beds in the other segment of the basement and cause the game to go into a loop (fixed), farmers sometimes didn’t always appear on their farms at the right times (fixed), and entering a farmhouse after a farmer who you saw enter, entered, and that farmer wasn’t an important farmer, would cause a crash (fixed), due to them inexplicably attempting to use a line of code designed for guards and knights moving between floors in castles, and the game freaking out with concern about the impossibility of pathing to duplicate mutually-exclusive staircases which didn’t exist. Weird. Also, we had a problem with guards sometimes teleporting themselves into the inside doors of a castle, which was screwing up their ability to exchange places with their counterparts at the right time (fixed, below) and a whole host of little minor problems which I didn’t write down whilst solving, but were generally not crash bugs, but just strange actions.



There is still one issue, which is that if you enter a “farm” map grid at night, the farmers spawn outside and then immediately rush inside to sleep; this really should be fixed, but it’s low priority, so in 0.9 I’ll make sure they appear in their buildings. It’s basically because most farmers being unique, but unimportant, AND being in their own buildings, is a unique combination, which requires some special code to it though. If I don’t mention on the blog that I’ve fixed this in the next couple of months, somebody remind me!

If you’re on the playtesting team, you should have a link to a new version in your inbox in the next few days. For everyone else, suffice to say that major bug-fixing improvements are taking place at the moment, and the team are doing damned well. More news as and when…

Talking Screen

Insanely exciting developments this week! We have a first draft of the conversation screen! It is heavily *in progress*, but check this beautiful thing out:



Now, I’ve been working on how this should look for quite some time and there’s a lot of stuff here to explain and describe, so let’s take it in order. Firstly, when you want to talk to someone you press ‘s’ for speak – ‘t’ is currently used for throw, and the options are therefore “throw” and “speak”, or “chuck” and “talk” – I think we can all agree that chuck is far too informal, so the first option is obviously better. This gives you a crosshair like the look function and the grab function and so forth, which can be moved in a 7×7 square centred on the player. Anyone in that area, and without your line of sight and on an explored tile (so you can’t exploit it by trying to speak through walls and finding where other NPCs are!) can be spoken with by pressing Enter, which brings you to the above screen. (In the below gif I quite rudely start talking to an NPC whilst they’re sleeping, but these are early days – naturally waking someone else will soon have some effect on their mood in the conversation).



Once you’re there, we have a bunch of options, which fall into three categories. Firstly, we have the “standard options”.



These are the options that the player will be given for every single person they ever talk to. These will be related to the player’s “memory” (which will soon replace the existing “encyclopedia”, which is to say that you can ask anyone a question about any sub-topic within these topics, so for every important painting you’ve seen, you’ll be able to raise it as a potential topic of conversation (if you’re thinking “this will make for extremely tedious optimal gameplay – don’t worry, I have a solution, which is later in this entry). These options will likely form the majority of one’s conversations, and allow for a great breadth in potential conversation topics. Naturally, some people will be more or less willing to discuss each topic, for reasons of their own preferences or their culture/religion.

Then, we have the “special options”.



These are options specific to the class of NPC you’re talking to. A priest will give you options like “Worship”, “Holy Book” and “Relics” that we see here; a servant or slave will show “Tasks”; a noble or lord might show “Family”; an archivist will show “Archives” and “Tombs”; and so on and so forth. There are never more than four special options, but quite a few classes of NPC now have four special options listed. These will often be the crucial topics to speak about with an NPC, but naturally the standard options will also often yield important or interesting data of various sorts. I think these add a nice sense of variety when encountering new types of NPC, and also direct players to some almost “recommended” topics of conversation, which might be especially important when people are learning the game and find themselves a little overwhelmed by the sheer volume of Stuff you can talk about.

And thirdly we have the “dialect” option.



Now, you may be thinking – what is to stop the player simply asking every single question to every important NPC in the hope of extracting some information? We all know that gamers can often be satisfied with performing some very unexciting things in games if they are gameplay-optimal, and naturally I therefore don’t want it to be gameplay-optimal to “grind” in this way and just ask everything you can in the hope of landing upon something which matters. Once you’ve explored the world a fair bit, you are going to have hundreds, and potentially (in the late game) thousands of things which you could ask a given NPC. The solution to this problem is rather simple, and I think rather elegant. Basically, all NPCs will have a “conversation interest” meter, hidden to the player, but reflected in the tone with which they speak. If you ask relevant questions, the conversation continues. If you don’t, they will quickly become disinterested, and past a certain point, just end the conversation with you. This will therefore strongly encourage the player towards focusing only on conversation topics you know are important, or towards those you think might be important, getting the player to make intelligent and informed judgements instead of just taking a shot on every conversation option. This is very different to most games with conversation options, in which players are generally strongly encouraged to exhaust every conversation tree, and I think it’ll be interesting to see how this plays out.

Also, I then thought of a way even this could be exploited – end the conversation, start a new conversation, try some more options, etc – but that’s also readily fixed. Characters who end the conversation due to your stupid or irrelevant questions will be unwilling to start a new conversation for a period of time, and since time will be the fundamental “food clock” resource in URR, you won’t (in almost all cases) be able to just wait around until they reset (a few days? A week?), and if you do, then it will have to be a strategic choice because you strongly feel you need to speak to a character who has previously shunned you.

Anyway, back to the screen. When you select an option you’ll get a list of every possible topic, and whether you know the dialect well enough to speak that question in that dialect (I’m still working on how exactly that will be “acquired”). These are empty for now, but will be one of the next things I’ll work on. We also see two images at the top of the screen, for the player and the person you’re talking to, whilst the conversation will scroll up (and be scroll-able) in the middle of the screen, with your comments left-aligned and the comments of the other character right-aligned. These are all the things I’ll be putting together in the next few weeks!

Lastly, on dialects, I would also like to add (on a more personal note) how enjoyable it is to be working on the speech generation/conversation system stuff! There’s a real pleasure to be found in starting to work on an entirely new and very cool system, and the past few days have been a great little period of starting to piece the disparate components required together. I’m really happy with how this initially looks and excited to keep working on this in the coming weeks. Stay tuned!
Logged

gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #764 on: May 08, 2016, 07:32:53 AM »

Brillant idea for the conversation limit!
I wonder how the answer will be structured to broadcast the state!
Logged

andes-neumann
Level 0
**



View Profile WWW
« Reply #765 on: May 08, 2016, 01:13:18 PM »

Wow. This is a really impressive devlog.
I've only recently acquired an interest in rougelikes and this is some fascinating detail!
Logged

Greipur
Level 6
*



View Profile WWW
« Reply #766 on: May 08, 2016, 10:54:39 PM »

This is very different to most games with conversation options, in which players are generally strongly encouraged to exhaust every conversation tree, and I think it’ll be interesting to see how this plays out.


I really like your approach for this dialogue system, though I'd argue that the "exposition dump" style was not always the norm. I remember fondly games such as the first two Fallout games where every conversation felt like a minefield, it gave the dialogue a lot more weight and believability imo. It's sad to see that it went away after the 90's, though I'm pretty sure we have audiovisual fidelity to thank for that. Text branches have always been cheap as we all know, but if you add fancy animations and voice acting on top of that it becomes very difficult to give the player the option to ignore 70% of expensive content. Staying with text still has some advantages. Smiley

It seems that you're finding an interesting in-between the "old style" and the current norm, which rewards players' empathic abilities. They have to treat the NPCs as people rather than soulless guides.
« Last Edit: May 08, 2016, 11:04:41 PM by Greipur » Logged

Ultima Ratio Regum
Level 7
**


Game Studies Lecturer, "Ultima Ratio Regum" person


View Profile WWW
« Reply #767 on: May 14, 2016, 10:55:01 AM »

Brillant idea for the conversation limit!
I wonder how the answer will be structured to broadcast the state!

Thanks! Haha, that is the question...

Wow. This is a really impressive devlog.
I've only recently acquired an interest in rougelikes and this is some fascinating detail!

Why thank you! I'm really glad you like it. The project's about 50% through and for a year now I've been working on this huge mega-release, which should be going out at last in a couple of months... feel free to ask me any questions about the thing!

I really like your approach for this dialogue system, though I'd argue that the "exposition dump" style was not always the norm. I remember fondly games such as the first two Fallout games where every conversation felt like a minefield, it gave the dialogue a lot more weight and believability imo. It's sad to see that it went away after the 90's, though I'm pretty sure we have audiovisual fidelity to thank for that. Text branches have always been cheap as we all know, but if you add fancy animations and voice acting on top of that it becomes very difficult to give the player the option to ignore 70% of expensive content. Staying with text still has some advantages. Smiley

It seems that you're finding an interesting in-between the "old style" and the current norm, which rewards players' empathic abilities. They have to treat the NPCs as people rather than soulless guides.

Exposition dump: true, and I agree on early Fallouts, and as you say, text branches are naturally extremely cheap. I'm really glad you like the approach though; I think giving the player an absurd wealth of options and requiring them to think sensibly about what they ask is a really interesting model and could lead to some very intriguing gameplay, and some fun decisions, too!
Logged

Ultima Ratio Regum
Level 7
**


Game Studies Lecturer, "Ultima Ratio Regum" person


View Profile WWW
« Reply #768 on: May 14, 2016, 12:16:21 PM »

Playtesting and Bugfixing

Lots of new bugs fixed thanks to the playtesting team!

Fixed a very rare issue where important NPCs, moving in a map grid you are in, and then you leave, will crash upon trying to calculate how long it will take them to hypothetically complete their task, which is a number the game needs in case the player doesn’t return to that map grid, and therefore the important NPC must “tick” over into their next task at the appropriate time – and, if the player returns to the grid half-way through the NPC concluding their task, the important NPC should be half way there. The problem would arise from a random NPC being placed on the important NPC’s target square, and preventing them from reaching it and the game from acknowledging that they’d finished testing out their remaining steps. To fix this the game checks if there is a random NPC, and if there is, it deletes it. If there’s another important npc there (super rare, but… I think it has to be possible?) then it shifts them aside by one tile, has the first important NPC test their route, then shifts them back. It’s not super-elegant, but it’s entirely unseen by the player and gets the job done, and fixes a crash bug that a good two or three people reported.

Fixed an issue with guards under very rare circumstances in castles not correctly exchanging themselves with the other appropriate guards, which now works fine again. (Again, as before, they tend to change over at the exact same time, and that’s a truly minor aesthetic thing I’ll alter in the future).



Fixed another bug where, for a small subset of possible nomadic fortresses, merchants wouldn’t spawn because I’d failed to ensure that there were spawn points for all the (twelve?) possible market generation algorithms. Fixed another bug which had slaves/servants failing to spawn in large-but-not-massive mansions in upper class districts, due to a rather silly typo in the function that generates them and wasn’t adding beds on the bottom floor to the list of beds that slaves/servants could spawn upon. Also fixed a bug with doors and iron bars in torture chambers in dungeons in castles, whereby looking at the bars would very rather fail to produce a picture, whilst looking at the doors would often result in a crash, due to the lack of a wall nearby for the game to use as the correct terrain/texture (this was quickly fixed by adding an exception telling the game to look further in the map for the right wall terrain instead of just the surrounding tiles, which is adequate in every single case/scenario except this one).

At this point, it is actually looking like… dare I say it… everything for NPC AI / scheduling / pathfinding is basically working? The volume of bug reports have slowed down from a torrent to a mere stream, and nobody has found any truly catastrophic issues that required me to seriously rewrite large portions of code.

Hopefully.

Guards and Merchants in Fortresses

I’ve also continued to work on AI and NPCs and whatnot in the background whilst I wait for my playtesters to send me more bugs and issues. For instance, similar to a question I posed a little while ago about NPCs working correctly in towns, i.e. out of cities, came a similar question – would guards and merchants work correctly in nomadic fortresses?! Short answer: no, there were some serious issues with merchant scheduling, although guard scheduling appears to work completely fine. I had to put in quite a bit of new code to ensure that merchants were spawned correctly at the right places (whether in house or at their stalls), and to ensure that when merchants awake for the day and leave the house, they actually go directly to their stalls, and that when you leave and come back, the game actually correctly spawns the merchants at their outside shops instead of placing them in an imaginary “shop” building (which would be correct for a city, but is not correct for a fortress). Here’s a bunch of gifs from fortresses, the first three of merchants selling their wares, at home, and then emerging and returning to their location (a two-part gif).










However, as you will note… this does again raise the issue of skin tone and soil/sand colours. As I said a few entries ago, I’m going to try fiddling with the sand colours, and potentially making soil more of a “red brown” and even the darkest skin tones a little closer to “light brown”. It’s damned tricky though when you only have one-colour tiles to play with, in most cases, and there are only so many shades which are even light enough to see in the first place! Still: I’ll fiddle with these colours a bit and try to make sure that darker skin tones and soil/sand stand out a little better than they do at the moment, since although you can follow this, it’s obviously nowhere near as clear as dark skin tones on lighter terrain types / light skin tones on darker terrain types, and this is an issue that needs fixing somehow.

Conversation Window

You’ll notice a few other slight changes to the conversation list: “Exchange” and “Challenge” have been added, whilst one or two other options have either been removed, or subsumed into a larger category. “Exchange” is distinct from “Trade”, which is only an option for merchants and is explicitly for offering money, in exchange for an item, which they are selling; by contrast, “Exchange” will allow you to either demand something from them for nothing, or offer them something for nothing, or propose an exchange of items/information/money/anything else. It’ll then up to the other character to determine whether or not they want to accept the offer/demand/exchange, or they’re offended by it, flattered by it, etc. I realized that this was a pretty crucial thing to add, so that’s now in there, and will lead to a slightly different screen to the rest of the conversation options, although some of the others are definitely going to have unique/distinct stuff too. When clicked on, it’ll bring up three windows – one for your items/intelligence, one for their items/intelligence, and then a middle window to put in items from both lists and see what they think of it. The same window will be used for bartering in nations that aren’t especially fond of coinage.

“Challenge”, meanwhile, will be another more detailed function to allow the player to challenge another NPC at various things – or, at least, offer/demand a challenge. This could be a battle, or to accuse them of something, or offer to gamble with them, or anything of that sort. This will probably be developed a little later once I have some idea of what kinds of things you should be able to challenge NPCs at/with/for! This will bring up two windows, one for the nature of the challenge, and one for the stakes that you propose .The same two windows will probably be used for “Smithing” as a conversation topic, to decide on what you want smithed, and the resources/payment you want to contribute. Anyway, I think both of these more complex options will be very interesting and very important, alongside the other “standard” conversation options which will list topics the player can potentially speak about.

In this gif, we look at a standard conversation option which will give you one window with a list of things you can say and whether you know how to convincingly say them in that dialect, then we move onto the “Challenge” option which shows us two windows, and then “Exchange” which shows us three. Hopefully by next week we should have some idea of what’ll be in these options! (You’ll note the below gif was taken before name implementation)



0.8 Small Changes

I’ve spent some of this past week also putting in a somewhat sizeable range of small edits for 0.8 across a range of areas.

I’ve removed the “History” and “Heresies” options from the encyclopedia. The histories option has been removed because it no longer correlated well with the new forms of name generation for each nation (as outlined in this and the previous entry), and because this needs a substantial re-write anyway, and because in the near future players should be discovering the world’s history through their actions and conversations, rather than in the encyclopedia. The “heresies” option has been removed because it was always just a very early draft when I first implemented it, and it really needs a lot more work before I’m happy making it a core part of the game. Equally, as discussed before, the encyclopedia won’t be around for long anyway, so I don’t think it’s a tremendous loss to remove these options. In the Guidebook, meanwhile, I’ve updated the “Controls” list, disabled the “Histories” section, and updated the “NPC Types” list, as well as changed a couple of comments in a few entries which were no longer totally accurate.

I’ve also updated the policy descriptions for each nation, since these were out of date, and didn’t fit! Again, before too long these will probably be less visible and abstracted out, but it’s an important improvement for now. I’ve also updated the “0.7” stuff everywhere to “0.8”, and various other fiddlings just to fix things here and there. Quite a few people reported as bugs things that I’d just put in as placeholders, so I thought it was important to prevent any future confusion! I also disabled the “grab” function (for pulling/pushing large objects) since a) it isn’t relevant right now and b) it doesn’t seem to be working properly.

Next Week

Names will be integrated from the experimental file into the main game, and I’ll be figuring out how exactly dialects are learned. I have come up with four main options, and I think the fourth is definitely the strongest from a gameplay perspective, but I want to get some feedback before I go ahead in put in all the infrastructure for this! And probably some more bug fixes, but I am rather pleased to note that bug reports have trickled off, so I’m quietly hopeful we’ve now fixed all the major issues with 0.8…
Logged

Greipur
Level 6
*



View Profile WWW
« Reply #769 on: May 15, 2016, 10:12:48 PM »

Exposition dump: true, and I agree on early Fallouts, and as you say, text branches are naturally extremely cheap. I'm really glad you like the approach though; I think giving the player an absurd wealth of options and requiring them to think sensibly about what they ask is a really interesting model and could lead to some very intriguing gameplay, and some fun decisions, too!

Yeah, exactly. Having more to do than what you can bother creates a lot of atmosphere imo. I'm fond of The Witcher series, not only for their attempt to eliminate save-scumming (by not showing the results of your choices immediately) but also for being brave to offer the player to "ignore" chunks of the game. I've no real interest to return to The Witcher 2 even though I know I took a branch that kept me from say, 25% of the game. And I'm fine about that, it's great just to know that my choice mattered.

Another thing I like with your approach is that to me it seems it will make "soft fail states" that you can recover from. I sometimes roleplay with the pen and paper variety and I like to put emphasis on the drama, and what I always find fascinating with pnp RPGs is how you can always shift the goal posts. If your character dies or gets hurt that doesn't need to stop the story, the show must go on, sort of. Or, if you piss off a character for that matter. Even though I celebrate the early Fallout games they did tend to encourage save-scumming imo (it's also worth noting that I use the term in the loosest sense). And that's what I tried to say with the "in-between", that you're giving weight to characters such as in Fallout, but eliminating the irritating part of hard fail states in dialogue. And when I mean fail states I don't mean game over but rather that you can't talk with that character anymore, though, there's a hilariously bad game over state in a dialogue in Planescape: Torment (with Trias if I remember correctly).  Smiley
« Last Edit: May 15, 2016, 10:19:09 PM by Greipur » Logged

Ultima Ratio Regum
Level 7
**


Game Studies Lecturer, "Ultima Ratio Regum" person


View Profile WWW
« Reply #770 on: May 21, 2016, 08:05:25 AM »

I haven't played the Witcher games (as ever, time is the problem), but at some point I might watch some Let's Plays of them if I can find someone whose voice/attitude/amount of speaking over the gameplay isn't totally obnoxious. Soft fail states: yes! This is totally and exactly what I'm after. You should be able ot return after a period and they'll no longer be annoyed, or you can do some other event which will get them back on your side, or if you annoy a priest but then you closely and visibly befriend their pope, then they'll grudgingly deal with you, etc etc
Logged

Ultima Ratio Regum
Level 7
**


Game Studies Lecturer, "Ultima Ratio Regum" person


View Profile WWW
« Reply #771 on: May 23, 2016, 11:59:04 AM »

This week has been absolutely bonkers with academic commitments, personal commitments, and travelling all around the country, and I just haven’t had time to program very much at all. However, there is a major question I’d like some input on, which is what this entry is going to be about – and, indeed, it’s actually important to resolve this question before going too much further.

Learning Dialects

I’ve got the conversation window opened up. You can see yourself and the person you’re talking to, browse the appropriate options, and access some special windows for challenging the person you’re talking to, exchanging or buying/selling items, etc. The next stage (this is the task for this and next week) is to add in the full database of possible sentences, add in a data structure to allow new sentences to be easily added (by me in the future) and easily “unlocked” (e.g. when you learn about a painting, you can then talk about that painting), and in order to do this, I need to think about the other half of the conversation system: being able to ask these questions in appropriate dialects. We now therefore face a rather challenging question: how does the player learn a dialect? I see several options, and I’m still not quite sure which one to go for.

1) You can only say a sentence in a dialect once you have heard that sentence. This would be the simplest; I’d add some colour variation in sentences said by the other person in a conversation to show whether a) you already knew that dialect bit or b) you were hearing it for the first time.

2) You gradually acquire % knowledge, and it is distributed randomly across topics. This could have a range of methods: maybe it’s the number of conversations you have, or the time you spend in a particular nation (though I’d have to make sure that couldn’t be exploited by just running around in the forest, so maybe settlements only!), or something else; as time goes by you can say more and more in that dialect.

3) You can acquire books, or blocks of knowledge, which teach you *everything* in a dialect for *certain topics*. So, for instance, a book called “Laws and Finance in the Nation of Mugoppe” will, once acquired, allow you to speak like a native on the “Laws” and “Money” topics; similarly, perhaps certain characters can be encouraged to tell you everything about a certain topic, which then triggers a little under-the-hood acknowledgement of the same thing, i.e. you can now speak on that topic as a native.

4) Some combination of the above?

5) Something I haven’t thought of?

So, from readers, may I request: can you think about these options, and any potential fourth options you might conceive of, and let me know your thoughts? The basic requirements are for there to be a truly MASSIVE volume of potential sentences, a volume of sentences which can be added to as the player discovers more about the world, and a “learning” system that is interesting, distinctive, and can be somehow “distributed” throughout the world – i.e. you will always learn languages gradually, rather than instantly. This might be fast if the player specifically sets themselves to quickly learning a dialect and doing X (the learning process) a lot, but it should never be instant; there needs to be the option for the player character to know a tiny part of a dialect, a lot of a dialect, some of a dialect, etc.

There’s also  an additional exciting technical question of how to code and store it all… but my intention is to get to plan that out in the next few days once I have some idea of how it should all work!

Also, for this release, I think the player will have full access to every dialect, but in the very near future (0.9 or 0.10) that will change, and the player will have to learn each form of speech for each dialect via whatever means we decide upon.

Chatbots or Robots

A very interesting idea came up in URR’s Bay12 thread this week about whether URR could perhaps instead use chatbots rather than the “option robot” approach. A very strong argument was made for it, and I did actually seriously ponder it for several days, but in the end I decided it wasn’t the right move. Succinctly, my reasons were:

Technical/speed – I’ve never used a chatbot before, and it would require a potentially lengthy process of up-skilling, and I’m really desperate to get 0.8 out asap.

Clues – how easy/hard would it be to program a chatbot to “drop clues” of the right sorts at the right moments in the right context? I have no idea, but I don’t think it would be easy, and given the above point, I don’t know where I’d even start!

Annoyance – a chatbot means the player has to type things, and selecting greetings is one thing, but typing out a greeting every time would quickly get quite infuriating I think. Don’t get me wrong, it would be super cool if the player learned things rather than the player and the player character learning things, but the corrolary there is that the player would have to type everything.

Uniqueness – I already think the system I’ve proposed here will be very different to any other “option robot”, although I am certainly open to further ideas about how to further differentiate it. This is because: a) You have a massive wealth of options and no explicit clues towards what you should say, or implicit “suggestions” for what you should say (i.e. games tend not to give you “pointless” options, but URR will effectively do so, but it’s up to you to decide which are useful/pointless), b) you cannot exhaust all options and have to carefully choose options, c) you’ll be speaking in and moving between dialects and different styles to say the same things. I feel the combination of those three will be very distinctive.

So, I decided not to go to with the chatbot, but I thought it was an interesting enough idea to be worth posting here, in case anyone else has some other ideas, or some other ways to make the system even more distinctive (but you’ll have to be fast, coding starts this week!). Of course, had I elected to go with the chatbot model, I wouldn’t have needed to think about the player character learning dialects as discussed above in this entry, since it would be up to the player themselves, but for the reasons above, chatbots just don’t seem like the best solution for URR.
Logged

gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #772 on: May 24, 2016, 12:37:17 AM »

Well all those question are answered in very clear analysis and recipes in the huge unbearable list of links I dropped earlier on the thread lol. But I won't fault you for not looking at book length information, this is daunting.
Logged

Ultima Ratio Regum
Level 7
**


Game Studies Lecturer, "Ultima Ratio Regum" person


View Profile WWW
« Reply #773 on: May 31, 2016, 04:52:12 AM »

Haha, it is, there's no doubt. I have actually started going through the links, but in recent years I've been struggling to even get all my existing obligations done, so adding extra reading of any sort is proving rather tricky :\. It's happening, though!

---

This week's blog entry touched on lots of things (including my first live TV experience!), so the full thing can be read at http://www.ultimaratioregum.co.uk/game/2016/05/30/television-canada-dialects-talks-esports/, but here's the URR-specific bit, about dialects and whatnot.

Dialect System

In light of all the excellent comments last week, I have some idea of how dialect learning will now take place in the game. The overwhelming answer seemed to be “some combination of 1 and 3”, and I agree that this is the best solution. If you’re talking to someone about a topic and they make mention of a particular aspect of that topic, then you’ve heard someone say that particular thing in that dialect, and that’ll get added to your list. Alternatively, you’ll be able to buy books or ask someone to specifically tell you about extensively about a particular topic (for a price), both of which will add appropriate information to your database for that dialect. There were also five really interesting ideas raised which I hadn’t thought about, and here they are, and my thoughts on them:

General books? It was suggested that perhaps one could build up a reserve of “points” which are acquired through “general books”, perhaps, which allows you to talk in a dialect for quite a while without needing expertise, but once you exhausts that knowledge of the “basics” of the language, you then pursue more specialist information. I quite like this idea for the basics, and perhaps a system where you can choose where to focus this basic learning? It needs a little more thought, but I think it has promise. Verdict: Probably.

Event learning? The idea was put forward that your character can learn dialect information by attending particular events. I think this could be a fantastic middle-ground between learning language bits just by hanging around in a city, and learning from items – if you go to an arena you’ll learn how to talk about combat, going to a religious festival will let you overhear info about that religion, etc. I’ll have to think about how exactly to put this in to prevent farming/tedium, but I really like it. Verdict: almost certainly.

Fast forward feature? One comment suggested that you can choose to spend time in a city just learning the dialect as another means of acquisition. I think if I implement this you will not be able to pick up language just by hanging around in a city normally, but you will be able to choose to click a button to spend X time in a city talking to people, and at the end of that time your dialect proficiency will go up; spending time as a resource, therefore, which is always a good option in a roguelike. Verdict: Probably.

Learning basics helps you learn advanced? It was suggested that you learn advanced parts of a language faster the more of the basics you know, but I’m not sure how well that would line up with learnings in “chunks” through books, events, etc, but the concept makes a lot of sense. I’ll think more about how to add this. Verdict: Maybe.

Mastery? The idea came up that when you reach over a certain % of a dialect, you are automatically given the small parts you don’t have – so when you have 90%, for instance, everything is automatically filled in, since your player character can “work out” how everything else would be said. This makes a lot of gameplay and thematic sense, and I like it. Verdict: Definitely.

Also, I realize that I should make explicit the difference I’m intending here between “languages” and “dialects”! All the major civilizations in the game world will “speak English”, but different dialects of it which produce different phrasings, different ways of speaking, etc. By contrast, smaller tribal civilizations will speak their own languages, which will need their own systems I haven’t quite decided on yet…
Logged

Ultima Ratio Regum
Level 7
**


Game Studies Lecturer, "Ultima Ratio Regum" person


View Profile WWW
« Reply #774 on: June 05, 2016, 09:28:36 AM »

Remember that technical stuff I talked about last time, and the dialect learning system we discussed the week before? This is going to be one of those rare URRpdates which is actually semi-technical, and I’m going to talk a little bit about how I’m going to implement and store the player’s knowledge of each dialect.

Dialects vs Languages

Firstly, as mentioned last week, I’m talking currently only about dialects – which for the sake of URR I’m currently defining as “a way of speaking English” – rather than languages, which in the URR context I’m defining as a totally different set of characters being used for speech, which might be unintelligible to the player character. The latter will be used for tribal nations (once I figure out a way to implement it that isn’t totally infuriating), but for 0.8 and all immediate future releases, we’ll be focusing on dialects rather than entire languages. It was suggested on URR’s Bay12 thread this week that languages could actually play a small role in the “main” civilizations of the world, i.e. the feudal and nomadic ones, by having 3/4/5 languages across the world as well as dialects, so that you have a lot of nations you can visit that speak your language (which would offset the potential annoyance of having exploration curtailed by language problems) but there are still multiple languages even in the large nations of the URR world. I’m pondering this option and haven’t reached any conclusions yet, but it’s definitely an interesting option.

Technical Specifics

So, I am faced with a bunch of interesting challenges here. I see these four in particular, and I have four solutions I’m currently implementing, with the target of having a working model by this time next week, and some nice screenshots to show off!

Firstly, a system is required that can both keep track of standard “sentence meanings” – such as [Standard Greeting] – and however many custom sentence meanings might be required within a particular game world, such as [Ask about the painting “Sunrise over the Empire of Nurnek”], which will obviously be unique to that particular playthrough. These should all be given to the player in the same way and at the same time, so that the player starts with just a bunch of standard conversation options, and then as time goes by and they learn more about that generated world, they’ll gain a massive range of other conversation options. My intention is that upon world generation, the player will be given a range of sets of the sort greeting_questions = [], farewell_questions = [], and so forth. These will then be populated with a standard set, but they can also be added to manually by the game as a particular playthrough proceeds; so encountering a work of art will append a new possible sentence about that work of art. In turn, each of these additional sentences will be part of an archetype, e.g. “ask about painting”, “ask about sculpture”, etc, and a “tag” on each will keep track of what each sentence means, so that when the player learns how to say [Ask about painting “X”], every sentence of that sort becomes ask-able. A quick mock-up of how this should look, if the player had clicked on the “Past Life” option:



Secondly, the game needs to track what dialects the player character can and cannot say each thing in. This has two obvious options – either the game tracks sentences and lists for each one the appropriate dialects the player knows, or lists the dialects and tracks the sentences that can be said. It became immediately clear that it should track the sentences and then record valid dialects for each sentence, rather than the other way around – if I tracked the dialects, then each dialect would quickly fill up a massive list of valid sentences which would take a long (“long” by roguelike standards) time for the game to sort through each time. Therefore, the game tracks all sentences, and in each sentences has a list of numbers, which relate to each civilization whose dialect the player can say that sentence within.

Thirdly, a method for storing dialects themselves is needed. I’m not currently completely sure about the correct method to do this, but it’s one of the things I’ll be thinking about this coming week, and then implementing the week after. If you look at the URR slides below, you’ll get a good impression of the variables that need to be recorded, and those need to be put into each civilization somehow. More on this later!

Fourthly, we need a method for sorting through certain conversation options that might come with a particularly large volume of viable options. For example, regardless of your dialect, the “Greeting” menu might only have a few options – “Warm Greeting”, “Greeting”, “Terse Greeting”, etc. By contrast, the “art” menu will end up including every piece of artwork you ever see, and if you reach the end of the game, and you’ve investigated a lot of galleries, mansions, cathedrals, castles… it’s going to be the pretty colossal list, and there probably needs to be some way for the player to immediately sort through them. Maybe options to sort by civilization, or start typing in a word and it tries to match that up? So once you know a particular piece of art called “Sunrise over the Great Southern Ocean”, you can type in “Sunri” and it’ll immediately offer you that option. There could be other methods, but I think some combination of those might be the best.

My intention for this week, therefore, is to populate all the option menus with an appropriate set of options, and to start figuring out how exactly to store dialects and therefore generate sentences. More soon! And here’s another mockup I put together for this week’s presentation:



Lastly, if you want the slides from my recent talks in Canada, head here! http://www.ultimaratioregum.co.uk/game/2016/06/05/dialects-the-technical-side/
Logged

wizered67
Level 1
*


View Profile
« Reply #775 on: June 09, 2016, 01:18:55 PM »

Wow, it's really amazing how much depth you're giving to the world! Looking forward to seeing more Smiley
Logged
Ultima Ratio Regum
Level 7
**


Game Studies Lecturer, "Ultima Ratio Regum" person


View Profile WWW
« Reply #776 on: June 11, 2016, 03:55:35 AM »

Thanks! Smiley
Logged

Ultima Ratio Regum
Level 7
**


Game Studies Lecturer, "Ultima Ratio Regum" person


View Profile WWW
« Reply #777 on: June 11, 2016, 08:35:49 AM »

Just a short update this week on a lot of things outside URR, but implementing the conversation system is proceeding, and we should have a lot of stuff to show there next week! In the mean time, a general "what am I doing with my time?" update can be found here, with some rather nice ANSI art: http://www.ultimaratioregum.co.uk/game/2016/06/11/micro-update/
Logged

Ultima Ratio Regum
Level 7
**


Game Studies Lecturer, "Ultima Ratio Regum" person


View Profile WWW
« Reply #778 on: June 21, 2016, 02:51:55 PM »

I’m pleased to report a nice big (if two-day delayed) URRpdate this week! Lots of progress has been made in the last fortnight, and now we can scroll through all the standard options for each conversation options, with an appropriate pairing of colours to denote whether you know how to say it in the dialect you’re currently speaking (if you don’t and you select that option, it will say it in your home dialect, thereby “giving you away” somewhat if you pretending to belong to a different culture); and in the future I might add a language layer as well, assuming I come up with a good mechanic for language-learning and language-based gameplay.

So, firstly, here’s now the conversation menu looks now, with and without a scroll bar. I’m still finishing off the coding on the scroll bar as these things are really just remarkably awkward and difficult to program in well, especially when you have options that can take up multiple lines and change size, and be sorted into windows of different sizes depending on the player’s selected options. Nevertheless, screenshots/gifs:





These are all, of course, only the default options, as the system for implementing extra questions is not yet in place, but will be soon! So as you can see, we’re going for a two-part colour coding here: green and white means that you’ve got the knowledge to say that in the chosen dialect (obviously you can say everything perfectly in your home dialect, otherwise you’d be in serious trouble!), red and grey means you haven’t. For looking at dialects, the currently-selected dialect shows up with a blue diamond and all the other dialects you know anything of have a red ‘X’. When you’re in the “Challenge” and “Smithing” options and the other options that have two windows, selected/rejected options will be displayed the same way; when you’re trading, which has three windows (your trade goods, selected trade, their trade goods), the items in the middle window will have a < or > arrow next to them showing which person of the two trading parties (i.e. you and the person you’re talking to) they came from.

Now, some techy stuff. When the world is generated, the game now has an (in the process of being written) list of every possible question archetype. There will probably be somewhere between one and two hundred default questions, at a guess, and finishing these off is one of my tasks for the coming week. As for questions that are generated? Well, every question of the sort “What do you think of [work of art]?” will simply be a variation of a default “What do you think of a specific work of art?” question, and once that question is learned the player will be able to ask about any work of art. Those meta-level questions are not present in this initial list, since one would never ask “What do you think of a specific work of art?” without stating the work of art in question, but they are also stored, albeit in separate lists. I am still calculating exactly what the best way to store the player’s dialect knowledge of these meta-questions, but I expect we’ll have a large list of meta-level questions – since there aren’t that many (ask about an artwork, a city, a town, a book, a poem, etc) I think they should be stored fine in their own list.



You’ll note a “gap” between the top and bottom lists; the bottom list is for question topics that only show up when you talk to particular classes of NPC, whereas the top lists apply to everyone. Of the two special instances shown in the above picture, for instance, the “tombs” questions apply to priests and archivists in cathedrals, whilst the “harvest” questions (as you might expect) apply to farmers. In turn, each question in each category has a list added onto the end of it, which contains a set of numbers, relating to which dialects the player does/doesn’t know how to ask that particular question in. This system obviously requires me to type out all the standard question forms – which I’d have to do anyway, regardless of system! – but works very rapidly in the speech system when listing possible statements and whether they can be said in a particular dialect. Upon a particular sentence being selected, the game will then translate the overall question into a specific question for that dialect – so “Who built the tombs?” might become “By the efforts of what craftspeople were these tombs carved?”, or “What people created these great crypts?”, or “Under what ruler were this tombs mined out?”… and so forth, and the same then obviously applies to every possible question, including the generated ones. As well as finishing all the question lists, the other goals for this week are ensuring the scroll bars work correctly, storing the meta-questions, properly allowing the player to switch dialect, and allowing the player to start typing something and then have the list of potential questions adjust themselves based on the “search” – as we discussed before, this is going to be *vital* for some of the really long question lists.
Logged

gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #779 on: June 21, 2016, 07:36:38 PM »

Interesting, the combat system look rad  Big Laff
Logged

Pages: 1 ... 37 38 [39] 40 41 ... 53
Print
Jump to:  

Theme orange-lt created by panic