NaNoGenMo / 2016

National Novel Generation Month, 2016 edition.
https://nanogenmo.github.io
162 stars 7 forks source link

Entry: Gamebook of Starship Tropes #25

Open maetl opened 7 years ago

maetl commented 7 years ago

I don’t have as much time as I’d hoped this year, so instead of attempting something ambitious and algorithmic (really excited to see what others come up with here), I want to do something more mechanical, particularly as I have put a lot of time into crafting a really useful API/library for template grammars over the past few months. This approach will be the fastest and most intuitive way for me to actually finish something.

My current plan is to make a sequel to my 2015 entry using stock scifi and spaceship tropes with more sophisticated world gen than last time (maybe with the capability to visit different planets, star systems, etc).

Also hoping to make more extensive notes and document as I go, this time around.

vovanz commented 7 years ago

Link to Gamebook of Dungeon Tropes is dead :( https://github.com/dariuskazemi/nanogenmo-2015/issues/189

The correct link is: https://github.com/dariusk/NaNoGenMo-2015/issues/189 (in case someone is interested too)

maetl commented 7 years ago

Fixed the links now. Thanks @vovanz.

maetl commented 7 years ago

Spatial and narrative continuity

The way I conceive of this series is a set of grammars nested inside grammars that compose the different layers of a narrative structure. The story generator starts with a random seed and a top-level root symbol, and expands a broad outline of the story and the world state from various small grammars, randomly selecting themes, tropes, settings, aesthetic flavours and antagonists/goals which can then be shared across all the other generators.

With these global elements selected, the next step is to generate the main structure of the story. The Dungeon gamebook did this in a very rudimentary way by laying out each passage of the story on a 2D grid of cells with each cell representing a room or chamber—a 1:1 mapping between spatial units and story units. This worked fine for establishing basic connections between passages but severely restricted the potential for continuity across many scenes.

One of the opportunities afforded by working on a sequel is to be able to improve on things that were less than ideal last time around, and this issue with spatial and narrative continuity is probably the main thing I’m looking to focus on this year.

Continuity can potentially be improved by swapping the explicit spatial data structures for a lookup API or world generator with potential solar systems with associations to other solar systems. Part of what the story has to communicate is the vast distances between planets and stars—so the idea of having a fixed end to the journey on a map is probably not necessary anymore. I already have some recent material I can draw on here as part of a star system generator I worked on for #fermijam.

If planets (or regions of a planet) become the primary unit of scene setting structure for the story, another significant change is that I’ll have to move away from a 1:1 mapping of spatial units to passages in the story. This will involve introducing a new layer of narrative data structures—probably some sort of directed graph or just another grammar—which can be used to map out encounters, actions, activities and story events that take place in one setting and yet need to play out across a series of individual passages.

An example encounter might look like:

CONFRONTATION -> FIGHT | SURRENDER
FIGHT -> SURVIVE | DIE
SURRENDER -> CONTINUE

An example narrative activity might look like:

SPY_ON_ALIENS -> SUCCEED | FAIL
SUCCEED -> GAIN_INTELLIGENCE
FAIL -> CONFRONTATION | PLEAD_IGNORANCE
PLEAD_IGNORANCE -> WIN_THEIR_TRUST | GET_IGNORED
WIN_THEIR_TRUST -> GAIN_INTELLIGENCE | GAIN_RESOURCES

This is just a basic sketch of what’s in my head. What’s missing above is any sense of specificity/generality. The level of abstraction here is still very handwavy and it might not make sense until I try out a few different things.

maetl commented 7 years ago

My first though was to focus on generating an oversimplified world model of stars and planets, then charting a path through it to build the narrative.

An alternative approach is to start with the abstract narrative structure itself, and build on it by attaching context, story events and settings. This is obviously strongly influenced by my previous work on narrative graph models which references standard patterns in choice-based games.

So now, I’m looking at a generator which builds chunks of the world model as directed graphs with branching pathways, representing the choices of whether to travel to one particular star or another and explore.

maetl commented 7 years ago

Branch & Bottleneck

branch and bottleneck

Time Cave

time cave