Microcosmonaut
Gallery
Quick Info
  • Genres: Sandbox, exploration, roguelike, sci-fi
  • Engine: Unreal Engine 5
  • Project timeline: July 2022 - Ongoing
  • Team size: Solo
  • My role: Technical Artist, 3D Artist, Blueprints Programmer, Designer
  • Software used: Maya, UE5, Substance Painter (so far)
Game Summary
Shed the limitations of the two-dimensional microscope slide and explore the microcosmos as it exists in reality! Pilot your microbe as you explore this fascinating alien world, while finding food, battling fearsome predators, and evolving your species to optimize it for your environment.
Inspired by the likes of Spore's Cell Stage and the Journey to the Microcosmos YouTube channel, this passion project aims to capture the feeling of swimming around and surviving as a real microorganism. This is an ongoing project I'm building in my spare time, and hope to develop a release timeline sometime in 2023. For now, I'll be posting periodic updates on my progress in blog form below, so stay tuned!
Blog
Game Design Document
I've been dodging the looming question of this game for too long: what is the gameplay, actually? So I decided to finally sit down and begin the GDD for this game, so I can have some concrete ideas written down instead of having them exist nebulously in my brain. All of it is subject to change, but I have gotten it down to a scope I can reasonably manage (with time). 
If you want to check out the current GDD, or watch it evolve over time, the document is public here! Let me know what you think!
Tail
The next big hurdle I wanted to tackle was the technical art implementation of the flagella, the tail-like organelle that the player will use to swim through the world. I tried a few different methods, each with pros and cons.
The first method I tried was using a skeletal mesh and UE5's Control Rig system. I created a spline, with 6 control points, and fit the skeleton to it. I then animated the controls with sine and cosine translations, with the player's speed as the input for time. This created the effect of the tail spinning rapidly to propel the player, which looked great, but it was lacking one thing: I really needed the tail to lag behind the player as they turned, which wasn't going to be possible for this setup.
My other attempt was to use a Niagara system to spawn points for the tail, and use a cylindrical ribbon to render it. This way, the particles would naturally trail behind as they are generated in world space. To get this to work, I needed to maintain a constant number of particles, repeatedly culling the oldest ones when new ones are generated. This kept the tail length consistent, but was difficult to pull off. I had to write a custom Scratch Pad module that could access all the particle data and accurately select the right one to cull. Adding some jitter to the particles gave it that random motion so it looked like it was propelling itself. This works really well, the only drawback here is that Niagara Particle Update ticks are tied to framerate- meaning if my frames are low, it won't be able to keep up with the culling, and the tail will get longer until it can catch up. I'll find some way around this in the future, but it works for now.
GUI Elements
Adding an early form of the GUI would be useful for imagining this project as a fully-fledged game, so that was the next task on the agenda. I envisioned the health of the player's cell as a two-part HP/shield relationship, where your membrane's integrity was your shield, and having your membrane get punctured would cause your cytoplasm (HP) to slowly leak out the hole. To show this I designed this Diablo-style ball meter with a curved bar surrounding it. I used UE5's Material editor to put together a UI shader that showed the cytoplasm as a flowing substance waving around inside of a glass ball (clip).
Screen-space world markers were another key element I wanted to include, which would help make the game feel more like a proper open-world RPG. I also loved the idea of having an objective on your screen that would be something like 3mm away, but actually being a long trip. For this, I created a WidgetBP that could be attached to any targetable object, and would render a reticle and distance directly to the screen, and calculate the true distance based on my 10cm/1μm equivalence.
Early Prototyping
The next big step for the project is to hop into engine and get building! I opened a new Unreal 5.0.0 project and started with programming the player controller. I followed a tutorial for a standard third-person character and adapted it to work with floating in 3 dimensions. I then added a simple blob mesh that would wiggle as it moved.
The character was moving, but the environment was still empty. I added a few various elements to add interest to the player's surroundings, and to actually have things to swim around:
  • An ant carcass, scaled up to be a massive terrain feature. This model helps players understand the scale of the world; since ants can be seen at both our scale and the micro scale, it helps bridge that gap.
  • Submerging the player in water by adding thick colored height fog, and a Niagara system that spawns little air bubbles everywhere.
  • Blobs of substrate floating in 3D; they're currently just spheres but will eventually get unique shapes and textures.
  • Swarms of bacteria using another Niagara system that spawns little capsules with erratic motion
I also wanted to nail down the units and scale of the world before it got out of hand. I settled on using 10cm in Unreal to represent 1 micrometer (μm). This keeps everything within a reasonable threshold for the engine to handle. To keep track of these units, I created a test level for laying out and measuring my models to keep them consistent.
Concept & Moodboard
After initially conceiving of the idea for this game, I needed to decide on my goals for this project. I settled on 3 core pillars to focus on for early development, to be worked on in roughly this order:
  • Capture the visuals of being in a microscopic setting
  • Make the player feel like they are controlling a microbe
  • Implement a roguelike-adjacent evolution system for player progression
To address the first point, I sat down to put together a moodboard to get a sense for what this game would look like.  This is especially difficult considering there are many different techniques for microscopy, which all produce very different images. I decided to use samples of polarized light microscopy to guide the look of the game, which would appear the most "life-like" when rendered in 3D.
I also did some mockups of the GUI, both to visualize ideas for the GUI and to think about what gameplay systems I would implement. I want the resources the player is juggling to reflect the needs of microbes, so my mockups included meters for cytoplasm integrity and ATP, and slots for digestive vacuoles to store bits of food. These ideas will become more solid as development continues, but for now it's helpful to have a sense of the direction I'm going in.