Inspiration
My project Evolvit is inspired by the work of Karl Sims Evolved Virtual Creatures, he was the first person I saw who made virtual creatures evolve in a simulated environment. I wanted to recreate that concept but obviously in a much simply 2D format for reddit
Evolvit is a simulation platform where users can design simple creatures made up of organs like mouths, eyes, flippers, and spikes. These creatures move around in a shared 2D world, searching for food, interacting with others, and trying to survive. While the current version doesn't yet include brains or autonomous behavior, the foundation is set for future development—eventually allowing creatures to evolve decision-making systems and compete in a truly Darwinian environment.
How I built it
I built Evolvit as a real-time simulation with a custom back-end running on python and flask in a 2D physics world. Creatures are defined as modular objects with organs, energy levels, and basic properties like position and direction. The back-end buffers its last state i.e. 10-20 seconds ago along with the deltas from it and builds the current one. On a request from the front-end it gives it the completed buffered version. The front-end renders this initial state using a canvas, every 10 seconds it receives a full state update of the world along with up to 300 deltas of any changes. The front end advances its internal frame consistently at 1/30 second and searches for a delta at that frame and applies any changes it gets. This will get it to the next receive update
Some of the biggest challenges were:
Designing a scalable update system that keeps the simulation performant even with many creatures.
Encoding and applying delta frames smoothly for real-time rendering.
Building a modular creature system that can handle dynamic changes (like organ mutation or destruction).
Working within the Reddit Devvit environment, which has its own UI and interaction constraints.
Accomplishments that I'm proud of
Building a working simulation that runs in real time and syncs with a canvas-based viewer.
Designing a clean and extensible creature architecture that supports future features like brain logic and evolution.
Creating a fun and interactive frontend where users can immediately see their creatures in action.
Implementing a delta system to keep network requests low and frame updates smooth and efficient.
What I learned
Python is more powerful than I thought. collision detections should increase quadratically with the number of creatures but even with 100 creatures with organs it somehow hold up on fairly low end VPS
Building a simulation that runs in real time with constant updates is both fun and technically demanding.
Keeping systems modular—especially creature definitions—makes future expansion (like brains or reproduction) much easier.
Efficient data encoding and communication is crucial when working with constrained frontend environments.
What's next for Evolvit:
The Python/Flask version was always suppose to be a feasibility test since I had no idea of the capabilities of reddits interactive apps. However by the time I made it and it was performing better than expected I thought I'll go through with it. The next version ideally will use C++ for the simulation and run on a nodejs backend aswell. I've just learned to get Python/Flask servers up and running quickly.
Grid: Really thought I'd of had this implemented by the deadline but thought too much could go wrong if I tried to start this late. It was suppose to have cells of 500x500 pixels in a 20, 20 grid which creatures would move in and out of. This would help with the collision detection as well by spatial partitioning
Eyes: Eyes were going to cast a single ray and return the first object it detected. This could then be used with (below)
Brains & Behavior: I'll be adding a simple brain system so creatures can react to sensors and make decisions via simple IF-THEN logic.
User Sharing: Users could download and upload serialized versions of there creature and would have a viewer in the create window
Visual Upgrades: Animations, more expressive organs, and richer visual feedback for collisions, eating, and other interactions. Some way of showing when a creature has an offspring and who it is
Other Organs: Eyes are next and information from them will be used in brains. After that next will be
- Splicers: Will allow creatures to share genes making their offspring a combination of the splicer of any splicer of another creature it touches
- Blinkers: Blinkers would use inputs from the brain to display an arbitrary colour which would be detected by eyes. This could be used for things like communication or tricking creatures
Store: Currently I and some other users creatures all have top hats, in-app cosmetic purchases could help pay for better servers for the app to run on


Log in or sign up for Devpost to join the conversation.