I’ve tried implementing a gym for Gastropoda a couple of times now. Both times I put the feature on hold not because I got stuck, but because I realized that I may not really even need a gym.
What I wanted was a way to quickly train snails (that is increase their performance stats like speed and endurance), but not cheat - I wanted to have the training utilize the existing snail brain. So as opposed to have a user click a dropdown to “Run a snail around a track” and then magically give it +5 maxSpeed, I wanted to have a user select what terrain they want the snail to crawl on and then give them items to react to (like an “Attractor” item that would make the snail crawl across the terrain toward it). Then, for example, crawling across a terrain of grooved glass might improve the snail’s endurance or strength.
I simulated a jar in the gym to do this. Basically I’d create a temporary “training” jar that wouldn’t get saved in the database and offer the user dropdowns for which terrain to apply, which item to place (and how far away), and what treat to give the snail (if any). The user must already have these items in their closet (so they would’ve had to purchase them previously). Then I could check the snail’s reaction to the item/s by using
checkOneInput() in the brain, as many times as I want. This would allow the training process to go quickly (since I could just loop through however many iterations of
checkOneInput() I want, display the snail’s reactions/movements, and modify attributes based on what happens).
However, each time I found myself trying to simulate the behaviour of a jar and…well…I already have jars, so when I get to this point I wonder why not just make it a jar?
The one problem with this is that snails are slow. With my original gym above I could loop through training actions quickly and display the result to the user within moments. Here they would essentially be dealing with watching a snail crawling around very slowly with no rapid feedback as to what is actually happening. So I have a decision to make:
- Find a way to fast forward actions inside a training jar
- OR make training a long term process, unlike many traditional life sims
I am leaning toward option #2: having a training jar be just like any other jar (no distinction whatsoever, the label “training jar” would basically just be in the user’s head). Sure, it means the training process would be more long term, but it’s snails - that’s how it works. Since I’m trying to make a life simulation and not a game here, I don’t need to provide instant gratification to the user.
But I guess we’ll see what happens! For now I’m going to do a large refactor and then move on to implementing terrains for normal jars.