I'm creating a 2D ant colony simulation that runs 24/7 in your browser. It's supposed to feel like a pet and you're supposed to want to keep it alive and check in on it as tunnels are dug, ants are born, food is found, etc.
You, the proud owner of some new ants, must keep them alive. For the MVP, you'll just get a ration of food each day when you show up, but there's a catch. To unlock the food, you need to arrive at a self-designated time each day, you can't miss your time window, and you'll need to participate in a breathing exercise. Black screen, white text, breathe in/out, repeat for a minute, etc. You emerge calmer than before, get your food, feed your ants, watch them thrive, and get on with your day.
Long-term, I'd like to continually increase the complexity of the simulation to make it more engaging, disguise the self-care offerings behind game lore/mechanics, and provide more self-care offerings such as journaling or guided meditation.
The goal is to get people who like using technology a lot to unintentionally dedicate a few minutes each day to checking in on themselves. They get into it thinking they're caring for some wannabe-Tamagotchi ants, but they stick with it because they're on a seven day self-care streak, feel good about that, and don't want to let their ants down. It's similar to https://finchcare.com/ but less on-the-nose about feelings and more for those who'd appreciate a RimWorld / Dwarf Fortress simulation aesthetic.
This is my first attempt at anything like a ~game and I have very little to show in way of functionality, but I've been enjoying teaching myself Rust/Bevy and writing with an ECS-first mindset. Trying to use these tools has slowed down development several magnitudes compared to throwing TypeScript at the wall, and I haven't seen significant benefits yet, but I'm hoping that long-term the low-level control and fast-growing game engine will pay dividends.
Anyway, here's a few ants which dig dirt and make some sand piles. I know it's not much :)
I'm hoping to get people checking back on their ants for seven straight days by spicing up the visuals a little bit, adding a queen, nesting, egg laying, hunger, death, and then a top-down view for food discovery / pheromone trails.
Yes, absolutely! I 'played' Viridi for quite a while many years ago. I always looked forward to engaging with it - even though it was just for a second before switching to a classic game. The creators were also pretty open in discussing their development and business financials which I appreciated - http://www.icewatergames.com/blog
If you end up building something, I'd love to hear about it :)
This sounds like an awesome project but a terrible product, but in a good way. You are not hooking the user, but you are not hooking people with gameplay. However, if you can give it a nice aesthetic, this might work as a game on the desktop/mobile.
Regarding Bevy, my wife and I recently started a games company recently and she did a ton of research on game engines. The verdict in Bevy was that it needs to mature a lot more in comparison to more mainstream engines. YMMV. If you run into issues, take a look at Godot. It's has been fairly simple to learn, its language borrows from TypeScript and Python a lot. You can also use gdextension to write code in C++, or even Rust with the community-supplied bindings.
:) Yeah, the "awesome project, terrible product" idea you're expressing has crossed my mind many times. It's an interesting line to try and walk to be sure.
Care to share more on the research you did? I'd love to hear more.
While I'm not a stranger server-side languages, the last decade of my career has been mostly building CRUD apps with JavaScript. So, I initially tried building out this simulation using React + PixiJS. I ran into performance issues with React's reconciler pretty quickly. That, plus no real modern, 2D JavaScript game engine (BabylonJS for 3D .. PhaserJS for 2D?) made me look elsewhere.
My intention is to build a web-first game not a steam-first game because I see focused interaction with the game being just a couple of minutes each day, but brief check-ups on the game state to occur repeatedly throughout the day. I don't think those use cases align with how I see myself using Steam. Usually Steam is a sit down and game for an hour sort of thing.
Assuming web-first is a priority, but avoiding JS, the only option is WASM. I did some reading around and saw suggestions to avoid using GC'ed languages because JavaScript's GC is one mark against it already and because stuffing a GC into a WASM build makes it very heavy.
Those decisions sort of naturally pushed me into Rust/Bevy for better or worse!
The whole games development has been a wild ride so far, we spent 9 months learning it without bringing out any game. We threw away a lot of prototypes though. Our background is in open source and server side stuff, so we needed to let go of a lot of concepts to be efficient.
Research-wise we did a whole lot of reading and a bunch of work building games we threw away. Here's what we found and I can share publicly:
- Unreal Engine: pain and suffering for awesome results. You must love debugging. You get source code access to help with that. Have a Rider subscription to lessen the pain of C++. (I'm not joking.) Loves to crash a LOT, but at least you get a stack trace. C++ has garbage collection here, which is neat. Did I mention to get Rider? Not web friendly though.
- Unity: works, relatively easy to get good results, lots of tutorials, but no source code access unless you fork out a lot of cash up front. Didn't crash on us.
- Godot: Free, open source, easy to start, stupidly hard to master. Needs a lot of fine tuning to make look good. Random weird bugs pop up with no stack trace. Has a custom DSL called GDScript which has some weiiiiird design decisions. (E.g. a Vector2 is not an object, but a data type.) GDExtension takes some experience to set up. I like C++ with UE a lot more.
- Phaser: It's a toy, lacks too much to do anything serious with. Love it though. Might be wrong on this one, only built one small game.
- BabylonJS: Built our website with it (see my bio), sturdy workhorse but you need to optimize your stuff a lot beforehand. Love it. Forums/community are awesome.
The ones we didn't test:
- Three.js: didn't try, but the API is apparently not very stable.
- Bevy: The community is very small, lots of parts seem to be still missing to build larger stuff. Didn't try it out in the end.
- OGRE3D: Couldn't get it to build, but it looks very robust. Would love to try again some day.
- PyGame: Good to learn the basics, but like Phaser, it seems to lack a lot to build more serious projects with it.
Keep in mind, opinions can be very subjective, it can be very hit and miss. We had fans of either comment on our YouTube videos and we have a feeling that getting into game engine discussions is similar to JS framework discussions.
One thing we learned for ourselves though, since we are trying to make money: stop wasting time. There are 20 year olds out there who release on Steam for a chance to become successful while we spent lots of months learning stuff. Technical prowess does not a good game make. It's all about the gameplay and the vibes.
Regarding Steam being a sit-down thing: both my wife and son love the Steam Deck and they often jump into a few short rounds of something. (Brotato is pretty good for that.) It is what you make of it, but the audience does seem to expect a gameplay loop that works over longer periods of time indeed
You, the proud owner of some new ants, must keep them alive. For the MVP, you'll just get a ration of food each day when you show up, but there's a catch. To unlock the food, you need to arrive at a self-designated time each day, you can't miss your time window, and you'll need to participate in a breathing exercise. Black screen, white text, breathe in/out, repeat for a minute, etc. You emerge calmer than before, get your food, feed your ants, watch them thrive, and get on with your day.
Long-term, I'd like to continually increase the complexity of the simulation to make it more engaging, disguise the self-care offerings behind game lore/mechanics, and provide more self-care offerings such as journaling or guided meditation.
The goal is to get people who like using technology a lot to unintentionally dedicate a few minutes each day to checking in on themselves. They get into it thinking they're caring for some wannabe-Tamagotchi ants, but they stick with it because they're on a seven day self-care streak, feel good about that, and don't want to let their ants down. It's similar to https://finchcare.com/ but less on-the-nose about feelings and more for those who'd appreciate a RimWorld / Dwarf Fortress simulation aesthetic.
This is my first attempt at anything like a ~game and I have very little to show in way of functionality, but I've been enjoying teaching myself Rust/Bevy and writing with an ECS-first mindset. Trying to use these tools has slowed down development several magnitudes compared to throwing TypeScript at the wall, and I haven't seen significant benefits yet, but I'm hoping that long-term the low-level control and fast-growing game engine will pay dividends.
Anyway, here's a few ants which dig dirt and make some sand piles. I know it's not much :)
https://ant.care/
I'm hoping to get people checking back on their ants for seven straight days by spicing up the visuals a little bit, adding a queen, nesting, egg laying, hunger, death, and then a top-down view for food discovery / pheromone trails.