Bullet Galaxy

Unity

C#

Git

DOTS/ECS

Spherical Planet

Bullet Galaxy is a small prototype that I developed during my investigation into Unity’s DOTS system, think if Super Mario Galaxy was a bullet hell.

Planets can have one of two different gravity types, those being point and spline. It was a unique and fun challenge to design a system that would allow the same projectile to behave as expected under both gravity types.

Pill-Shaped Spline Planet

Point gravity was fairly trivial to implement, it is just gravity that pulls towards a single point. Spline gravity however pulls an object towards the nearest point on the spline.

Splines themselves were a challenge because Unity lacked an unmanaged version of the Spline component, which lead me to implement my own.

By far my favorite part of this project was learning how to efficiently construct unmanaged components.

Torus Spline Planet

Since this project was a chance to learn DOTS I wanted to really focus on optimisations, particularly within the projectile system.

Throughout my experimentation and research I learned how to optimise memory usage on the stack by optimising unmanaged components, leverage Unity’s burst compilation, and make effective use of parallelism within DOTS.

By the time I was finished with this project, I had optimised it to the point that it could handle 100,000 projectiles at 60FPS on my mid ranged machine.

You can check out Bullet Galaxy here!

© 2026 Joshua Kennedy

GitHub Itch.io