Heliconian Dev Log 08: Dialogue System
This far the crew members have been robot-like creatures that do only what they are ordered to do. I wanted to add something extra to the game to make them feel a little bit more alive. My first idea was to let them wander around the ship on their own when they are not performing any tasks. However, I soon realized that such system would go against the intense time management aspect of the game. For example it can be beneficial to anticipate things like spawning enemy or creeping exhaustion and to move the crew members to the right locations in advance. Also, you might want to keep them in separate rooms to avoid multiple crew members getting wounded from one enemy torpedo. Another reason would be the case of infectious diseases when you really want to keep your crew members separated. Or maybe you just want to keep them in the center of the Heliconian to be able reach any room fast when something happens. I didn’t want to make drastic changes to the game play feel so I ditched the idea of wandering crew members.
I ended up trying something more simple; conversing crew members. I wanted to let the crew members talk on their own, with each other and sometimes just by themselves. This also proved to be a great way of giving the crew members personality. Before, all they had was their portraits, simple backstories and some character specific events. By letting them have simple conversations, I could emphasize their personalities much more and make them feel more alive, more human. I designed the conversation module taking into account many many different considerations. First I created a list of hundreds of short phrases that a crew member can say. Then I wrote an algorithm that first selects a crew member who is going to talk. Then it randomly chooses a line to say taking into account the current situation of the selected crew member. All the following considerations are taken into account:
- Is the crew member alone or with someone?
- Is the crew member is walking or not?
- Crew member’s health condition(tired, sick, wounded etc.)
- Health conditions of other crew members in the same room.
- Hull and engine condition of the Heliconian.
- Number of enemies in proximity.
- Crew member’s personality: What kind of phrases the chosen crew member is likely to use.
- Which task the crew member is currently performing or is he/she idle?
- In which the crew member resides.
It ended up being quite a complicated algorithm for such a small feature, but I am quite happy with the results. The final thing I would like to add is a possibility for the crew members to react to what other’s are saying.
I am not sure if everyone likes this idea, since it doesn’t have any game play effect and it is definitely more clutter on top of everything else that is happening already. So I decided to make this optional feature that can be turned on/off in the settings.