Gastropoda is a snail breeding and racing simularion. It's been in my head for years. Last year I made a very rough playable prototype in JS/HTML5 (titled The Game of Snails at the time), but I always envisioned it as a PHP browser project, so that's what it's going to be.
My main dev blog is on my
personal blog, but I will post unique (maybe slightly more frequent and briefer) progress updates here as well.
The first post will mostly outline the concept of the simulation. Actual progress updates will come throughout the course of the thread.
Disclaimer: I am not an artist. All art is placeholder.
(This is the boring part)
GoalThe goal of making this simulation is fun. Fun for me, I mean. It probably won't be much fun for anyone else, but that's ok - that's not the goal. Some planned features are quite ambitious, so this is probably going to be one of those long drawn out projects that'll never be fully finished. I do not plan to monetize it..
OriginI must've been around 6 or 7 years old, playing in the rain at my grandparents' summerhouse in Kherson, Ukraine (near Dnepr river). It was raining and the snails had crawled out into the open to enjoy the moisture. I got our orange fishing bucket and collected a few, making a small and crappy terrarium for them with sticks, leaves, and a pool of water underneath (in hindsight not a good idea - snails can drown).
Then the training began. Most people don't believe me, but I swear I taught my snails to crawl side by side in a straight line. Snail racing!
I kept the snail for a few days with the bucket covered to prevent them from escaping. At some point, however, I had to go fishing - and I needed my orange bucket. That evening I left the bucket uncovered for them, expecting them to be gone the next day (freeing up the bucket for the fishing trip).
In the morning, however, the snails were still there. "Fine", I thought. I left the bucket open and waited, figuring maybe they'd escape during the day.
And escape they did. I saw them in the general vicinity of the bucket throughout the day, figuring they'd make it to the bushes soon. Then I could take the bucket fishing the next day instead.
That evening, however, I saw the snails crawling in the other direction! One by one they all returned to the bucket (and a couple never left).
This went on for a couple of days - the snails came and went as they pleased, but they were always back in the bucket in the evening. All of them. I later found out that snails have a very strong homing instinct. Still, nobody believed me.
By the third or fourth day I was sick of it. I really needed my bucket. Annoyed, I threw them into the bushes one by one (accidentally injuring one's shell in the process - something I feel guilty about to this day), threw everything out of my bucket, and went fishing.
Since that day I have felt bad about the snail I hurt when throwing them away too roughly, and I've had a soft spot for snails ever since.
Years later, when I discovered PHP browser games, the idea to make a snail racing simulation came to mind. I had a few false starts, but now I know I can actually do it.
There are two main parts of the project - snail
breeding and snail
racing. Between that are snail raising/care and training. There will be a rudimentary virtual currency and economy to simulate the cost of caring for snails, but this is the part I'm looking forward to building the
least.
Personally, I'm most excited about the breeding part, but the racing part will be a valuable tool to drive people's breeding goals (later I would love to add 'conformation' shows, but we'll see).
The User's SpaceA user's personal profile is broken down into three main parts:
- Their stable
- Multiple jars within the stable
- Multiple snails within the jars
BreedingMore info on breeding to come. Rough outline of breeding system/snail genetics for JS version of the project is
here.
RacingSnails race in steps (each step being a centimetre). Currently the only stats taken into account are initiative, speed, and endurance. However the goal is to give each snail the potential to perform _actions_ throughout the race (based on its behavioural traits).
Old Age & DeathSnails can die due to:
- Old age
- Mistreatment
- Illness
- Purposeful euthanasia
ItemsSnails need substrate, jar accessories, food, medicine, steroids (well, they don't _need_ these), and other care items.
IllnessSnails can get sick and spread their illness to other snails they come in contact with (in a jar, a race, during breeding, etc). They can be cured via medicine.
Currently implemented in PHP version:
- User registration/login
- Catching wild snails
- Generation of randomized wild snail
- Snails rendered on HTML5 canvas, seen crawling around at a speed relative to their actual speed stat
- Multiple snails (in jar view) seen crawling around the jar, also rendered on HTML5 canvas
- Moving snails between jars
- Renaming snails and jars
- "Breeding Jar", which when two or more snails are present starts the arousal/mate choosing/breeding process (already hooked up to DB)
- Cron job to execute queued breeding events
- Generation and saving of newborn snail based on parents' genes/attributes
- Snail ageing - superficial only, age doesn't yet have any effect on stats
- Creating and entering snail races
- Running the actual race and ranking the snails
- Consumable items with correct nutrition properties
- Snails can eat/bite consumable items to receive nutrients
- Snail energy is depleted according to their metabolism
- Macro distribution requirements is unique between snails