Dialog/written text in the game beyond simple one-offs are handled by a system referred to internally as DDS (Dynamic Dialog System).
Essentially, this breaks up written components into editable phases, which are nested inside one another. From smallest to largest they are as follows:
Blocks
- Blocks are text components of messages. For a letter for example, you might have a 'greetings' block, a 'main' block where most of the message is written, and a 'from' block.
- The main reason for splitting messages into blocks is so that we can easily re-use simple things like greetings without having to re-write them for each message. This should be more efficient when it comes to localization, and allows messages to be more dynamic (see next section).
- Blocks themselves can feature multiple 'replacements'. Multiple alternatives to the block can be configured. For example, an 'enthusiastic' greeting and a 'grumpy' greeting can be configured within one block, along with a default 'normal' greeting.
- You can tie these alternate replacements with various criteria such as character traits, or job.
Messages
- Messages are formed of several blocks.
- Blocks can be configured within messages in a similar way to the replacements within blocks. You can have a block that is only displayed if the writer has the 'likes baseball' trait for example.
Conversation Trees/Threads
- Trees/threads consist of multiple messages, sometimes linked together as a tree.
- For in-game v-mails this structure acts as an email thread with replies.
- Trees/threads can have up to 4 participants, but most of the time they're probably only going to be between 2 people for the sake of simplicity.
- Participants are chosen by matching certain criteria which include relationship, occupation, traits and various other triggers (for example 'must be in the same room'). Once the game matches these criteria, this tree will start within the game.
- Messages within trees are linked, and these links have settings too: A message could have 2 possible paths which allow the conversation to move to two different messages depending on certain criteria. This includes how much they know or like the other person, traits etc.
Bundles
- Bundles are packages of trees that you can export as a whole to the game.
The idea behind this system is to generate messages that are as dynamic as possible with as little input as possible. Dynamic trees hold dynamic messages formed of dynamic blocks etc.