November 8th, 2018   // Procjam 2018: Post mortem of Causality

Better later than never, here is a feedback on my attempt at the the ProcJam 2018. The goal was to create something that generates things. So I made a procedurally generated timeline that tells the story of a fictional planet.

The main principles are to have a world with a state. Events occurs and alter the state, which in turn changes the events that will occur. For instance, if the dice rolled that a sentient lifeform is pacifist then a war is less likely to occur in the future.

Sadly I had to drop some features/plans in order to finish in time. The first and biggest one being the ability to "time travel". I wanted the player to be able to change events outcome so they could try to rewrite a planet's history to what they wanted. I am currently working on this for a post-jam update. Also the experience can be quite repetitive because of the small amount of written events, this is also on the list of things to improve.

One other important sacrifice I made is documenting the project. The tool was designed to be reusable for anyone by just forking the code and writing different events. I'm also working on a better readme on the project's github page. In the meantime if you want to toy around with it, you can have a look at the main file https://github.com/OwlyCode/causality/blob/master/src/index.tsx to see how events are loaded in the engine and https://github.com/OwlyCode/causality/tree/master/src/possibilities to see how they are designed.

Last but not least, here's the two main things I learned the hard way:

Reduce the scope

Doing one thing right is better than doing everything badly. With Causality my scope was too big: to generate a full timeline I had to generate a planet, animals, civilizations and more. It caused me to work on a lot of different features where I could have just focused on one (like the civilizations) to explore it more deeply. This is what caused my tool to feel repetitive over time: too few events written per ages (world creation / animal evolution / civilizations).

Text based games aren't easier to make

Not having to deal with 2D or 3D maths doesn't mean it will be easier or quicker. Generating text also comes with a lot of complexity, like plural or conjugation. No one notices that a pixel of your texture is glitching during 2 frames when the character rotates but everyone will notice a typo or a missing space.

That's all folks! If you have any question about the code or if you want to share your jam advices don't hesitate to leave a comment or to ask me on twitter!