Devlog Week 19

Here’s a summary of the game devlog for the 19th week.

Interaction System

I continued working on the interaction system and adding more features to it. I made a few small tests to showcase individual features, but I also made a more complete “real-life” example showing a portion of what’s possible to achieve at the moment.

“Eye Test” Interaction scenario

In the video above, I demonstrated how NPCs can affect each other’s dialog, like the assistant telling you to speak with the doctor first, or the doctor asking the assistant to perform the test for you, then the assistant telling the results to the doctor…etc.

Now for the smaller features and individual tests. The first one I made is the possibility to set the current dialog line for another NPCs. This an instruction that can be added anywhere, but in the following test I used it right after answering a question, so if you pick “strawberries” for example the other NPC knows you picked it, and says the appropriate line.

The instruction sets the current dialog line to “7” for the other NPC called “Test_10_Milestone_Other_NPC”
Test 10 – A question affecting the dialog for another NPC

The system can also set a milestone in addition or instead of changing the dialog line, which can be used to lock the dialog in a certain branch. I could technically just use “go to” to point to an instruction that sets the milestone from the target NPC, but I find being able to set the milestone for any NPC from any other NPC easier and better. Below is an example

Test 11 – Set the milestone and current line for the NPC called “Test_11_Milestone_Other_NPC”
Test 11 – setting milestone + current line. Picking strawberries locks you in the “you picked strawberries” dialog.

I also added a “friendliness” feature. I am not sure exactly to what extent I’ll use it, but it can for example determine how an NPC talks with you. They can respond with one-liners and tell you the bare minimum and be rude and dismissive with you if you don’t meet a certain friendliness value, but if you do they will talk to you normally, and if you exceed a certain high value they’ll tell you gossip and be very friendly with you.
In practice, “Check Friendliness” is just a fancy “go to” : if an NPC’s friendliness towards you exceeds or equals the value you asked, it will go to line number A, otherwise it will go to line number B.

Test 12 – If friendliness is above 50, go to line 2, otherwise go to line number 4.
Test 12 – Friendliness Check

I also made a “set friendliness” feature. As its name implies, it sets the current friendliness of an NPC. It can also be used to set friendliness of another NPC. This allows me to make an NPC friendlier (or more hostile) towards you if you have positive interactions with their friends and family. Like an NPC telling their friends you’re a nice person and they should respect you for example. Below are examples of “Set Friendliness”.

Test 13 – Set Friendliness
Test 13 – Set Friendliness

Test 14 – Set Friendliness for Another NPC
Test 14 – Set Friendliness for Another NPC

I also modified the code a little bit to have a “static” option, where the next line is never fetched, instead the current line is repeated forever. This is useful to have one data table for all items with descriptions, instead of one data table for each one of them, or having to add a “go to” instruction after every description line.

Test 15 – A data table containing all the item descriptions
Test 15 – “Static” Descriptions Using a Shared Data Table

Another feature I thought of was a multi-choice “question” without a question. So it’s just a way to pick from 2 or 3 options (actions, conversation subjects, ask the NPC a question…etc). I changed the layout and made the options align vertically, to make it more readable and to allow longer options. It’s not a unique interaction type per se, it’s just a regular question, but with the actual content left blank.

Test 16 – Multi-Choice Without Question
Test 16 – Multi-Choice Without a Question

And finally, I made a “Dialog Exhausted” interaction type. It sets a boolean variable to true when called, which is then used when the interaction icon is shown. If true (dialog is exhausted, there are no new lines) then the icon will be greyed out, otherwise the interaction icon will be orange. It can also be set to false, if the boolean in the datatable is changed to False.

Test 17 – Dialog Exhausted
Test 17 – Dialog Exhausted. Stepping on the platform sets the current line to 6 and resets Dialog Exhausted to False

That’s all concerning the interaction system.

Robot Head Sketches

I spent more time on the robot design again. This time I’m happy with the result. I wanted something that looks both retro enough, but also fancy and sleek, somewhat like the cars of the 60’s and 70’s, in an alternative universe where robotic tech is a few decades ahead of what we currently have.

These are still very rough sketches with barely any detail, but I’m happy with the overall shape. I’ll refine those this week.

That’s everything for this week. I hope to see you again next week. Cheers.

Leave a Reply

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