Attention! Attention! ๐๐ Our NPCs have received an awareness update – they will now recognize your actions in the game and comment on them if they feel like it.
The goal is to make your game world feel more alive and immersive. If you upgrade your house, buy a new animal, or spend the whole day gathering wood, the other villagers will notice and chat about it with you.
This might look something like this.


How it works
When we take a little look under the hood, it’s actually quite simple.
We store certain game events in the short-term memory of the game. We only keep a limited number of them, and once the buffer is full, we replace older events with newer ones.


Various systems can then query those events, and in this case it is the Conversation System.
Each Conversation Graph can query for specific types of events and then have custom reaction dialogue nodes for them.
The custom event dialogue events can also resolve dynamically event-specific data like: item names, NPC names, etc.

Per default, each NPC will also only react once to a specific event. For this version, not every NPC might react to an event; if newer events push it out of the buffer before you talk to them, they won’t ever mention it.
However, you might have some events you really want a specific NPC to react to, no matter how much time passes or how many other events happen until you talk to them.
For this use case, we have a second list that contains events we really want specific NPCs to react to. Each of these events has a list of NPC tags that must respond to this event before it gets removed from the list.
With each response, we remove the tag of the applicable NPC, and once the list of tags is empty, we remove the event from the list.
The handy thing is that we can reuse the nodes in our conversation graphs for both use cases, keeping things really simple on the setup side.

All these things combined should lead to really fun and engaging conversations with the other NPCs in the game.
Future Plans
These events are not only used for NPCs and their reactions, but can be used for many other systems – a specific one I want to implement is a ‘Last Time on…’ System that shows you what you did during your last play session.
One of my main pet peeves with games is that if I have to leave too much time between play sessions because life gets in the way, I have zero memory of what I have done previously or planned to do next.
(You might say, why not write it down in Notepad or something? Well, you see, these pauses between play sessions are never intended or planned for, so I don’t write things down – and while this might be a me problem, I will write a system to fix it anyways.๐)
Another use case is a local in-game newspaper that updates the player with what is going on in the game world. For example, in-game holidays, weather forecasts, and other information, including if the player has done something significant (e.g., upgrading their house or unlocking a new area of the game).
I think these features can be really fun, and I haven’t seen them in many games before.

Leave a comment. (Email and Name are not required to be filled in)