Calypso
This project is still under development and is not ready for use.
Calypso is a unity package for creating simulation-driven visual novels. It enhances visual novels' prototypical branching narrative structure by simulating characters' lives outside their conversations with the player and their relationships with other characters. We provide a query language extension for dialog scripting that allows developers to create flexible conversation scripts that adjust to the current cast of characters. This project aims to assist visual novel developers in creating more dynamic and unique stories than can be accomplished solely using conventional branching narrative tools such as Twine.
Simulating the characters' lives and relationships
Calypso wants to help developers create stories that feel alive and dynamic. It supports storytelling with an underlying social simulation that handles non-player characters' (NPCs) schedules and social lives outside their conversations with the player. NPCs can move between locations and interact with other present NPCs. Conversation dialog is affected by the player's actions and background simulation. Also, actions have cascading effects on character relationships. For example, selecting a dialog option that insults a character might make their friends dislike the player.
Dynamic dialog using Ink and RePraxis
Conversation dialog is authored using Ink, a popular interactive fiction writing tool that was used to make games such as 80 Days. It allows writers to create branching and reactive dialogue choices that can easily integrate with and take advantage of C#.
We created a query language extension for the Ink called RePraxis that allows writers to precondition conversations and dynamically cast information from the game. It is inspired by the Praxis logic language used by Versu, a social simulation and interactive fiction engine.
Each character in Calypso is given a collection of conversation scripts, and they choose probabilistically from this collection when interacting with the player. Conversations may have preconditions that affect their availability. For example, they might check for if the friendship score between the player and a character is past a given threshold. Also, preconditions can store variable values in Ink. This feature allows us to dynamically cast characters into conversations, creating more dynamic dialog that adjusts to any configuration of NPCs.
Planned features
- NPC schedule System
- Simulation calendar
- Tick-update system
- Author new conversation dialogue using Ink
- Weighted-random conversation selection
- Precondition query language
- Location selection menu
- Relationship system
- Control the simulation from within conversations
