Source: MetaCat
Title: Sentences: A Collaborative World-Building Tool for Chain-Based Games
Chain-based game designs have various functionalities and limitations, 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 chain-based collaborative world-building tool that revolves around the structure of narrative branching. Built using MUD, Sentences 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 their legends.
Motivation:
In the realm of autonomous worlds, a common task that arises with new projects is collective “world-building” – constructing a shared mythology system that determines players’ experiences within the world. This exercise 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 worlds.
These exercises themselves form a world. They create an information system among narrators, which is a set of rules that allows narratives to flourish. This set of rules is the world, creating a suspended reality space for the birth of new ideas. The choice of exercises also inevitably influences the narratives created: a set of questions assumes a space for potential answers, and a prompt in one direction may hinder exploration in another.
Thus, Sentences is a “world-building world”; a primitive sandbox for collaborative knowledge generation. It is inherently sparse and constrained, intended as a laboratory to test new ideas without any additional chat or contributions. In the world of Sentences, the world is constructed linearly but can branch out in multiple directions from the initial seed.
Mechanisms:
When loading the Sentences client, players are presented with 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 may include:
– “Nature is the most important aspect of this society.”
– “This civilization relies entirely on technology.”
– “This collective is built on the foundation of money.”
Once the world is generated, it becomes active, and authors have a fixed amount of time (set as 20 blocks, following a regular tick) to propose new additions to the story. After the time expires, the second phase begins, where participants vote for their favorite proposals. Once the vote count is complete, the favored proposal is incorporated into the story, and the process restarts.
If no proposals are made within the time window, the world perishes. This demise is not absolute; the world simply joins the archive of other perished worlds. Since all proposals and votes are on-chain, all worlds contain a complete history of possible directions as “perished” branches, representing a set of potential parallel universes.
Contract:
The state of the narrative is managed by two interrelated systems: one system handles the generation of new narratives, while the other system manages time, voting, and proposing new content to the narrative.
The initialization of a new story is composed of randomly selected sentences from a hardcoded prompt list encoded in the FirstEntrySystem.sol, utilizing a simple substitution syntax script. In future versions, this script can also be replicated in the contract to provide more diversified starting points.
Once the story is initialized, the initial prompt is added to the chain, and the new proposal period begins. This cycle lasts for n blocks (approximately one second per block) and is defined by the variable periodEndsBlock, which is set on the active story at the start of each new proposal period.
During the proposal period, new narrative entries are suggested, and participants vote to determine their preferred expansion. Proposals and votes are handled by the ProposalsSystem.sol, which verifies the timing of these contributions based on the periodEndsBlock variable. Each proposed proposal points to a “parent” (the proposal it responds to), and successful proposals form a linked list.
At the end of the proposal period, the vote count for each proposal is calculated. In case of a tie, one of the two proposals is randomly chosen (which can be seen as an interesting case that generates branching in future versions). If no proposals are made, the story ends. The story is archived, and the next possible action for players is to generate a new story.
Applications:
We envision Sentences working best in meetings with 10-50 participants who may or may not know each other but gather in the spirit of prototyping storytelling. For example, hosting an event on Discord with the goal of generating five new worlds within an hour.
Sentences, on its own, may not be particularly exciting. It is merely a tool rather than an immersive world. However, as a modular component, Sentences’ narrative generation mechanism can be seamlessly integrated into more elaborate role-playing games, weaving the structure of the game throughout the gameplay. The voting mechanism can also be used to support generated output inclusion in player-generated prompts.
One weakness of the current version of Sentences is the specificity of the initial prompts. This can be easily changed for different deployments, but expanding the prompt generation mechanism of the game to be more open-ended in the narrative aspect would be interesting.
Alternative Approaches:
Sentences draws inspiration from text-based games, improvisational storytelling, legends, and TTRPGs. Some specific references we looked to when creating this game include Max Kreminski’s Epitaph (a fantasy narrative generation game) and Kate Compton’s Tracery alternative syntax tool. These projects leverage 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 was 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., Toggle the table of contents Twitch Plays Pokémon?).
Extensions and Future Work:
An obvious extension of Sentences is allowing anyone who initializes 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 altering the voting time to slow down or speed up the development of the narrative. This way, Sentences becomes not only a prototyping tool for world-building but also a prototyping tool for constraining and structuring conversations and dialogue styles that generate specific story 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 to generate a new “New World” contract with pointers to old branches instead of generating an entirely new world from scratch.