Source: MetaCat
Online game design medium has various functionalities and constraints, one of which is a high emphasis on collective decision-making. Through the exploration of this functionality using a prototype system, we introduce Sentences: a blockchain-based collaborative world-building tool that structures itself around the primitive structure of only adding branching narratives. It is built using MUD and provides a lightweight environment for generating collective storytelling. Each new game in Sentences generates a new world, which players then bring to life by gradually adding to its lore.
Motivation
In the realm of autonomous world spaces, a common task for new projects is collective “world-building,” constructing a shared mythology system that determines players’ experience of the world. This practice is often informal and unstructured but can also be supported through organized prompts and exercises to help world builders shape the structure and coherence of their world.
These exercises themselves are a world. They construct an information system among narrators, a set of rules that allow storytelling to flourish. These rules are the world, creating a potential space for the birth of new ideas. The choice of exercises will inevitably affect the narratives created: a set of questions will assume a space for potential answers; a prompt in one direction may hinder exploration in another.
Therefore, Sentences is a “world-building world”; a primitive sandbox for collaborative knowledge generation. It is necessarily sparse and constrained, intended as a laboratory to test new ideas without the addition of chat or contributions beyond expanding the narrative. In the world of Sentences, the world is built linearly but can branch out in multiple directions from the initial seed.
Mechanics
Loading the Sentences client will offer players the option to generate a new world unless a world is already in progress. Once generated, players receive a prompt that allows them to develop the story using a core mechanism. Examples of prompts could be:
“The most important aspect of this society is nature.”
“This civilization relies entirely on technology.”
“This group is built on the foundation of money.”
Once generated, the world becomes active, and authors have a fixed amount of time (set at 20 blocks, progressing in regular ticks) to propose new additions to the story. After the time ends, the second phase begins, where participants vote for their favorite proposals. Once the vote count is complete, the favorite proposal is added to the story, and the process starts over.
If no proposals are made within the time window, the world goes extinct. This extinction is not absolute; the world simply joins the archive of other extinct worlds. Since all proposals and votes are on-chain, all worlds contain a complete history of possible directions as “extinct” branches, representing a set of possible parallel universes.
Contracts
The state of the narrative is managed by two interrelated systems: one system handles the generation of new narratives, and the other system handles time, voting, and proposing new content to the narrative.
The initialization of new stories is done through FirstEntrySystem.sol, which is composed of randomly selected sentences from a hardcoded prompt list encoded in the input system. These prompts are generated using a simple substitution syntax script. In future versions, this script can also be replicated within the contract to provide a more diversified starting point.
Once the story is initialized, the initial prompt is added to the chain, and the new proposal period begins. This period lasts for n blocks (approximately one second per block) and is defined by the variable periodEndsBlock, which is set on each new proposal period on the active story.
During the proposal period, new narrative entries are suggested, and participants vote to decide which expansions they prefer. The proposals and votes are handled by ProposalsSystem.sol, which verifies the timing of these contributions based on the periodEndsBlock variable. Each proposal made points to a “parent” (the proposal it is responding to), and successful proposals form a linked list.
At the end of the proposal period, the vote count for each proposal is calculated. In the case of a tie, one of the two proposals is randomly selected (which can be seen as a branching scenario in future versions). If no proposals are made, the story ends. The story is then archived, and the next action players can take is to generate a new story.
Applications
We envision Sentences to be most effective in gatherings of 10-50 participants who may or may not know each other but come together in the spirit of prototyping storytelling. For example, hosting an event on Discord with the goal of generating five new worlds within an hour.
On its own, Sentences is not particularly exciting; it is merely a tool and not an engaging world. However, as a modular component, Sentences’ narrative generation mechanics can integrate well into more immersive role-playing games, weaving the structure of the game throughout the gameplay. The voting mechanism can also be used to support generated outputs within player-generated prompts.
One weakness of the current version of Sentences is the specificity of the initial prompts. This can easily be changed for different deployments, but expanding the prompt generation mechanism of the game to be more open-ended for the narrative part would be interesting.
Alternate Approaches
The form of Sentences takes inspiration from text-based games, improvisation, storytelling, and TTRPG. Some specific references we looked to while making this game include Max Kreminski’s Epitaph (a fantasy narrative generation game) and Kate Compton’s Tracery alternative syntax tool. These projects utilize simple randomness and modularity to create complex branching narratives, and in our case, we are interested in the potential of these primitives in a collective setting.
While Sentences is designed with world-building in mind, and with some subjectivity (i.e., only appending narratives), one can also imagine it being used in other constrained collaborative writing scenarios (e.g., Twitch Plays Pokémon?).
Extensions and Future Work
An obvious extension for Sentences is allowing anyone initializing a world to set specific rules about how new sentences are appended to the narrative. For example, these rules could modify the voting system, requiring a certain number of players to continue the narrative or modifying the voting time to slow down or speed up the narrative’s development. This way, Sentences becomes not only a prototype design tool for worlds but also a prototype design tool for constraints and dialogue structures that generate specific storytelling styles.
Another equally interesting direction for development is generating options for parallel worlds from the “dead” branches of the current world. As a mechanism, the best way to implement this might be generating a new “new world” contract with pointers to old branches instead of starting from scratch.