Further tweaks to the generator
I created a ‘printText’ function which would run through the generator for as many times as Jacky had set the levelCount to (6 at the time of writing, plus one ‘end’ scene), and dump the generated text into an empty game object. I could then, with a few clicks, export that text into Notepad and check through it for errors, repetitions, or just ways in which it could be improved.
I played through Jacky’s completed build, and one of my earliest reflections (and echoed in some feedback from players) was that while the information within each level hung together, a sense of progression was lacking.
In order to regain this, I implemented a new rule: {0:option|3:option}. A regex would check for a number followed by a colon, then parse the string number into an int, and add that plus the option string to a temporary Dictionary<int, string>. By iterating through the Dictoinary and comparing the int keys to PlaythroughCount, returning the highest int that is equal to or lower than the PlaythroughCount, I could guarantee that the most structure-appropriate options would be shown.I also divided the introductory texts up into levels, and had PlaythroughCount determine which table to draw from.
Writing
Stephen King’s book Danse Macabre provided a useful reference on what drives horror – while I can’t say that I was able to implement all of its guidance, I did find the following useful:
- The idea of ritual – an image or a phrase that, when repeated, gains added dramatic significance or weight. The games writer and narrative designer Whitney Beltran (aka Strix) agrees on the usefulness of ritual, and given more time I would certainly deepen my research to include works like Victor Turner’s From Ritual To Theatre and Dramas, Fields and Metaphors. I defined at the top (in a json called ‘constants’) one of six sentences that would be repeated with increasing frequency the further the player wen through the game.
- Horror is always “in search of another place, a room which may sometimes resemble the secret den of a Victorian gentleman, sometimes the torture chamber of the Spanish Inquisition… but perhaps most frequently and most successfully, the simple and brutally plain hole of a Stone Age cave-dweller.” This prompted me to refocus my writing on place, and what might come into it…
Bouncing off Jacky’s work was great for me – I’m a reactive creative, after all. I particularly enjoyed the more grammatically complex areas of generative writing – nesting verb tenses and different adjective lists, for example.
Player feedback
- ‘A way to skip the typing text would be good’
- Added an ‘E to skip’ popup and function to the canvas
- ‘Not clear what’s going on at the start, or where I should go’
- Brute forced this by making level (0,0) draw from a discrete ‘tutorial’ pool of text, which sets out the basic story, introduces movement, the purpose of the hedrons, and what the player should be looking for in terms of an exit.
- ‘It would be easier to read if the text would break between punctuation.’
- Exposed different WaitForSecond values for letters, commas and full stops.
Conclusion
Though the final result hangs together well enough, I think I would need at least another week of testing and writing to really make it sing. It was astonishing to me just how much groundwork I needed to lay before I could even begin writing the thing properly, and though that led to me doing a great deal of experimentation in programming the generator, it left me with little time to experiment with what it could generate.
This process was also useful in reflecting on my assumptions about design processes. Without the prototype in Perchance, then my parsing system, then my new structuring system, I felt lost in the woods; with them, I started re-appraising the design ideas I had junked during scoping. Maybe they were more appropriate than they had seemed? Despite my earlier disappointment with storylets, I had essentially ended up using them in the final product, after all.
I’ve learned from this that I might be more of a problem-solving designer, and that my route to uncovering a final design lies in lots of prototyping rather than too much diagramming. In future I will try to stay aware of this, and build in time to prototype, reflect, plan, and iterate as many times as possible during the development process!