Show HN: Symbiants – digital ant farm / mental health companion (ant.care)
I'm creating my first video game. It's nowhere near complete, but I am eager for feedback, so here I am!
My game is a digital ant farm. You should think SimAnt + Tamagotchi. Here's a picture: https://i.imgur.com/dIJaraG.png
It's written in Rust/Bevy, compiled to WASM, and is open-source, https://github.com/MeoMix/symbiants. Fair warning, though, this is my first time writing in Rust/Bevy.
My goal is to give people cute ants that do cute ant stuff 24/7, ask people to look after their ants and to feed them once-per-day, and then deny people the ability to provide ant care unless they engage in mental health exercises.
I started working on this project for a few reasons:
1) I've been a dev for ~15 years, but, on a personal level, I have very little to show for it. I've worked on multiple, multi-year projects which were subsequently shut down by lawyers and, frankly, I'm tired of practicing non-attachment with my work. So, I'm creating this as a personal affirmation.
2) I enjoy my fully-remote, WFH lifestyle, but I find myself more isolated than ever. The lack of disruption allows for some serious focus. Sometimes I get so focused on a project that days slip by without me practicing self-care, and I'll keep going until my output wanes due to lack of healthy behaviors. I thought having a digital companion who is interested in ensuring I remain consistent in caring for myself, by expecting consistent care for itself, would be effective and beneficial.
3) Ants are sweet. Obviously there should be more ant sims. :)
Currently, "Sandbox Mode" is all that exists. This mode provides the user with developer tools and allows them to treat the world like an unbounded playground. I use this mode for prototyping. In the future, I'll combine mechanics from Sandbox Mode with cutscenes to create a more restrictive/compelling Story Mode.
Sandbox Mode includes the following features:
* Queen Ant spawns, searches for a nesting spot, and begins to dig out a nest by hauling sand to the surface.
* Queen Ant establishes a nest and begins rearing worker ants once per hour.
* Worker Ants haul sand to the surface and emergently expand the nest with tunnels/chambers when they feel cramped.
* Ants get hungry and starve if not fed every 24 hours.
* Sand-fall physics applies to the environment. Food, sand tumble down surfaces.
* Basic day/night cycle. Sky background lightens/darkens with time of day.
* Option to link in-game time to real-world time and to sync sunrise/sunset.
* Ants go to sleep at night.
* Ants emote when sleeping and eating food.
* User Actions allow user to spawn sand, dirt, food, and ants. You can kill ants, despawn ants, despawn food, and select entities, too.
* Settings allow user to affect simulation speed (Sandbox Mode only), ant color, etc.
* Breathwork Prompt encourages user to meditate on a loose schedule in exchange for feeding ants.
Today, I am working on adding eggs to the birthing lifecycle and then allowing ants to carry eggs as well as other, dead ants. :)
If you'd like to read more about my stretch goals for Story Mode, feel free to peruse my ramblings. The high-level goal is to create a homage to Children of Time by Adrian Tchaikovsky, https://docs.google.com/document/d/17ACH1XLCn7hkKz2dhuL1c_nx...
If you'd like to talk more directly - my email is in my profile or you can reach me through Discord - https://discord.gg/Qugp2Es4
So, what do you thi...
12 comments
[ 2.0 ms ] story [ 32.3 ms ] threadBesides you can also look at galaxy.click website, to host your game and get nice features likes votes and comments.
Anyway, nice work and keep it up!
> Ants get hungry and starve if not fed every 24 hours.
is not great for something related to improve mental health
Also, on a technical level, this is an idle sim which runs client-side. I don't have the ability to simulate an arbitrary amount of in-game time in a fixed amount of real-life time. So, while the intent is to have the ants get hungry, the simulation pauses after 24 hours of away time. So, in practice, the ants stop growing rather than starve unless you check on them repeatedly and also don't take the time to feed them.
This way, people have an incentive to "tend to their garden", even if/while depressed, but there's not the worse case scenario where their lack of tending to it results in the mass death of all their new friends
Edit: win/win/win/win (you+player+digital ants+society
Edit: like how in Animal Crossing, weeds buildup but you can like pay to clean it up automagically.
But I do think that the mechanics linking the ant colony and the player's mental health need to be designed in a "healthy" manner.
If breath work is what you want to encourage, maybe best to link that to the colony's well-being without ants dying.. Not sure how it would work but just highlighting that it won't scale as the colony will need more and more food than the player is willing to breath through and that might be frustrating/demoralising.
All in all, I think there is definitely something here! It's quite mesmerising to watch.
Another thing I think can be improved: the controls. There's too many options. Just start with really good defaults and maybe only expose a fast forward slider that's a simple 2x, 5x, 10x time speed up.
I hope this helps and well done!
Yeah, this is definitely a very blunt MVP. I have some loftier ideas for how to engage the user, but they take a lot more programming, so I just kinda crammed the goals together so I could start showing people and speaking more clearly about the end vision.
I agree that ants the player feels bonded too should not die. I think there's room for having ants of varying sizes, and maybe just the large ones being named, and allow the small ones to be more like fodder. And yeah, I need to figure out what my goal number of ants is for the colony. I'm treating performance like I want to have thousands of ants, but I don't feel like users will be able to bond to more than a handful.
Understood on the controls. I'll work on improving the UX a bit.
Do you think people would accept the "This website wants to know your location?" if I made the lat/long stuff automatic by using geolocation apis? I feel like those inputs add a lot of visual weight, and it's not very clear what the intent is behind them...but the end result of having in-game day/time linked with your IRL day/time I find compelling.
Yeah, having a target number of ants or varying sizes could be interesting but I don't want small ants dying either :'(
Agreed in game time is nice to match up to real life. But, do you really need detailed location data though? You can get rough location/timezone in a much less intrusive way using IP. You could even get timezone just in JS on the client side even. That should be enough to match up time (not sunset sunrise but better than nothing and less input from user)
Yeah. All of this code is written in Rust and running in WASM. I found it challenging to interface async JS callbacks with my Rust code. After I spent a bit of time trying to get what I thought the easiest route was to work (geolocation API) and failed on a simple callback, I decided to just throw in the lat/long inputs and see if people liked the feature at all. I agree that the best solution is one where the user doesn't even have to think about this feature
Maybe instead of lat/long, you expose a dropdown of popular cities? Again not bulletproof but does make the user's life easier