Dash Corning

Collaborative Game Programmer

Project Logo

About this Project

Atomancer is accessible horde survival roguelite, controlled with two buttons only.

My Contribution

I acted as lead programmer and focused mainly on the main mechanics, optimization, and developer facing tools

Atomancer: Accessible Horde Survival Roguelite

Game Overview

Atomancer is an accessible horde survival roguelite that challenges players to survive waves of enemies using only two buttons. Master unique abilities, upgrade your character, and see how long you can last against the relentless hordes!

Developer tools

Arbitray Object Pooling

Performance was a major issue, since there's always so much happening on screen. After poking the profiler with a stick for a while, the main sorce of slowdown was the instantiation and deltetion of multiple fat prefabs per frame. Mostly instantiation. Turning them on and off again however was quite cheap ;) The solution was object pooling! (Instert standard object pooling diagram) The problem with this technique however, is that it's typically used for one type of object. You can have bullets and enmies in the same pool, otherwise who knows what the heck you'd spawn when you get the top one. Having unique pools for each object is possible, but... It would cause other headaches. Each unique object type would have to referance it's own pool, and unique pools would have to be created for each object. (Insert diagram ) Destroying and creating objects is slow but simple Individual object pools are fast, but hard to maintain So why not have the best of both worlds? Here's what I came up with:

Arbitrary Object Pooling System

This system was good enough to alleviate our perfomance issue. In the future, I see potential improvements with this system. It's probably best to use a hashmap, and hash prefabs instances using something other than their name as the key. Here's what the final system would look like (diagram of hashmap object pooling)

Weapon Creator

As the protoype for the core gameplay loop solidified, the team got excited and ambitious with new weapon ideas. Our dearest designers protoyped an arsenal of shiny new stuff, but each addition came with an increasing technical debt. It became aparent that weapons needed to be systemized. :sunglasses emoji:

There were a few main issues that the team ran into:

  1. Time consuming to add new weapons
  2. Difficult to create level up variations
  3. Hard to test for balance

Here's my solution:

Weapon Creator System

Gamplay Prototype

I also made the first protoype of the game, to allign the team on the vision. I'm particularly happy about the main character, who's animated through code. Basically, he uses a sin wave as his heartbeat, moving up and down, forward and backwards, and side to side all based on the core wave. It's simple but it really adds a lot of character. It's super fun to play with the values

Character Animation System

Development Challenges

During the development of Atomancer, we faced several unique challenges:

Development Challenges

  1. Performance Optimization: Implementing efficient object pooling and LOD systems.
  2. Two-Button Control Scheme: Designing intuitive controls with limited input options.
  3. Procedural Generation: Creating varied and balanced levels procedurally.
  4. Balancing: Ensuring fair difficulty progression while maintaining challenge.
  5. Visual Clarity: Keeping the screen readable during intense horde battles.

Future Improvements

  1. Advanced Weapon System: Implement a more complex weapon creation and modification system.
  2. Enemy AI Enhancements: Develop more sophisticated enemy behaviors and patterns.
  3. Multiplayer Mode: Add cooperative or competitive multiplayer functionality.
  4. Performance Optimization: Further optimize for lower-end devices and larger hordes.
  5. Accessibility Features: Implement additional options for color-blind modes and other accessibility needs.

Future Expansions

  • Expanded arsenal with unique weapon combinations
  • New game modes to challenge seasoned players

Thank you for exploring the Atomancer project overview!