Background
PROCJAM is a fun, relaxed game jam with the goal to “make something that makes something.” It doesn’t even have to be a game. (itch.io jam page) (twitter hashtag) This will be my third year participating.
- 2017, Spaceship Wrecker. Builds a spaceship that solves resource constraints, then the user breaks things, causing cascading system failures.
- 2018, Photo Copy. Generates a city (Black Rock City, site of Burning Man) and photos of landmarks within that city. The player must find where each photo was taken and recreate it.
Goal
This year, I’m making a tool to assist Chasing The Sunset, a sprawling, persistent exploration-based TTRPG based on West Marches and Fellowship. Explorers need locations to explore, and Fellowship has lists and instructions for creating new locations with pencil and paper. My goals for the online, procgen implementation of this tool are:
- Automatically generate legal, well-formed locations
- Teach the generator that some combinations make more sense than others.
- Allow the user to adjust any choice the generator makes
- Compress the output into a “random seed” that can be plugged back into the generator to reliably create the same output.
- be slick, non-hacky, and user-friendly. (I want to take a level in Artificer)
Progress
I’ve been fiddling with project setup and workflow for a few days. I’m using react.js and it requires a different mindset than jQuery, or component-based systems I might use in a game engine. I think I have the hang of sending data down the heirarchy through properties & automatic render() updates, and sending data back up through callback functions.
Here’s a screenshot of the current state of the project.
- Multiple lists that have the same code, but different data sources.
- Lists can toggled between read-only and editable modes.
- It displays checkboxes if multiple options can be chosen, or radio buttons if only one option can be chosen.
- List items have optional descriptions
- “Affinities” are a first pass at creating cohesive locations. Asterisks on options indicate how much they match with what’s already selected.
- The each list creates a number that uniquely represents its options, and the top-level generator concatenates them into a single seed, which is displayed a emoji because emoji are fun!
What’s next?
- Lots of data entry. Lists and lists of creatures, terrain descriptions, location moves, and relationships.
- Low priority because code may require changes in data format, and I want to minimize re-work.
- Random seed needs more thought. There are plenty of edge cases where the current system fails.
- Randomly select from a list, but with influence from other lists
- Affinities need more work. Right now I only have positive affinity: like attracts like, not negative affinity, where opposites repel.
- Export as text file.