I’ve been having a bit of trouble figuring out the mechanics for SRPG. Specifically, making them interesting, deep, and open to emergent interactions. So I’m trying to break down interactivity in the game to make the mechanical behaviors more composable.
Ways you interact in SRPG:
- Translation: Moving an object from one place to another.
- Communication: Talking to someone.
- Destruction: Breaking something or attacking someone.
- Configuration: Changing the state of something without changing the thing itself.
- Transmutation: Changing something into something else.
- Combination: Using something with something else to configure, transmute, translate, or destroy it. This is usually a combination of Translation and another interaction type.
This is helpful already. Let’s say you need to get a raccoon to leave a location, but it won’t because there’s a delicious cake on the ground. The goal requires translation (moving the raccoon to a different location), but you can’t accomplish it directly. This is where the other modes of interaction come into play. You could:
- Communicate: Explain to the raccoon that an all-cake diet is bad for its health. If your reputation with the local wildlife is sufficient, the racoon will listen to your advice.
- Destroy: Smash the cake into oblivion. Even a raccoon doesn’t want to eat dirt.
- Transmute: Use your magic wand to turn the cake into a healthy salad. The raccoon will go look for something tastier.
- Translate: Just pick up the cake and take it with you. The raccoon will follow.
- Combine: Put a stick of dynamite in the cake. The ensuing explosion will certainly destroy the cake and might kill the raccoon. Either way, no more raccoon in that location.
I like this approach so far. In general, I want to separate means from ends. The player is presented with an end goal, and combines (composes) the interactive mechanics in their toolkit to accomplish the goal. This makes for a nice separation in the code as well. Instead of coding a quest condition like “player dropped cake in dim clearing” (which implies a particular solution), the check would look like: “raccoon is no longer in west trail”. If I add game mechanics later on, such as a ray gun that transforms any target into sawdust, the quest/goal doesn’t need to be updated, because it’s checking for outcomes rather than actions.