NIMRODS | Performance Devlog - Every MS counts
Greetings, NIMRODS!
Optimization has been a top priority for us ever since the demo was released. We’ve made a lot of improvements and would like to share an update with you all.
To achieve smooth gameplay at 60 frames per second, each frame must render in 16.67ms or less (conversion is 1000 / 60 FPS = 16.67ms). This is our performance target for low-end machines, including the Steam Deck, which is our target platform for minimum specification (min-spec). The target remains 60 FPS or better, even during intense, end-game scenarios. To make that a reality, we have to optimize every millisecond for performance.
This devlog will outline our plan for performance improvements while ensuring the content isn’t too technical. For those wanting a deeper dive into the technical aspects, we’ll be participating in a few Unity focused livestreams this year. One of them later today on The Hot Path Show with Unity developer & Youtuber, Turbo Makes Games: https://www.youtube.com/live/l-aec7fgtbE
When we started developing the demo for NIMRODS, the game was built using Unity’s classic GameObject approach. In Unity, a GameObject is a fundamental building block for making a game, most scripts & components exist on a GameObject. For example, a SpriteRenderer is a component used to display… well Sprites. While using GameObjects and Component’s work and great, they struggle to keep up when working with many thousands of them, especially when applying complex effects (like our projectile modifiers - see below)
With this classic approach we quickly hit performance bottlenecks and it became clear that it wouldn’t scale to the level of chaos we envisioned. The end-game of NIMRODS is designed for your guns to have absolutely crazy combinations with all the unique gun augments stacking with each other.

That’s when we pivoted to Unity’s Data-Oriented Technology Stack (DOTS). DOTS introduced a new paradigm centered on Entities, which are lightweight, data-driven objects optimized for multithreaded environments. Leveraging DOTS and Unity’s Burst Compiler (which generates high-performance low-level code) allowed us to paved a path to significant performance improvements.
In fact, not only did DOTS help us resolve many performance issues from the demo, but it also opened the door to addressing the remaining challenges we’re now tackling.

With DOTS, Entities replaced GameObjects for many systems - one of these being Projectiles. The movement & logic of the projectile was now handled in a highly optimized system. This yielded some great performance improvements, but there was still more to gain. While the core data was converted to an Entity-based approach, the visuals still relied on SpriteRenderers and GameObjects - which are not compatible with Unity DOTS.


This was still a significant improvement, as the view became much simpler (the view only needed to follow the entity). However, with thousands of projectile views in play, this approach started to slow down in terms of performance.
To address this, our next iteration had us converting the views to an entirely entity-based graphic approach utilizing a newer feature called Entity Graphics. This change not only reduces work on the GPU but also eliminates the need for systems to manage the GameObject because there are no GameObjects anymore! 🎉
This conversion helps improve the performance of projectiles as well as other game elements that rely on the same view → entity connection.


NIMRODS consist of several core elements:
Each element can still be optimized further and there is still much performance work to do.
We have players that play from a wide range of devices. From the Steam Deck to high-end PCs with a Threadripper CPU w/ the latest NVIDIA RTX GPU - we’ve seen slowdowns on both. Each issue is not necessarily the same. Some slowdowns on the high end machines have to do with explosions (environment effects) combined with a specific modifier systems (like homing). While low end systems can struggle with time spent rendering (map assets).
Optimizing one area sometimes triggers a chain reaction of changes. For example, improving environment effects might require reworking how modifiers interact to ensure they’re as efficient as possible. It’s a process that takes time, but it’s worth the effort.
We’re committed to transparency and don’t want to work in a silo for months without sharing an update. Instead, we’ll roll out incremental updates, each focusing on a specific category of optimizations. This iterative approach ensures steady progress and helps us future proof the game. We will be setting up future public betas related to performance testing.
So with that in mind - if you know of a gun build that causes slowdowns, we want to hear about it! If you have Discord then please post in the #guns_go_brr channel or reply to this Steam post. Consider sharing a screenshot of your build in the Gun Inspect screen. Your feedback is super valuable in helping us target problem areas.
In an upcoming performance update, we’re focusing on optimizing projectiles and map assets by converting them to fully entity-based graphics. This change will not only help rendering on low end PCs but also resolve certain builds that cause a significant slow down on high-end PCs (ie builds that are focused around a lot of projectiles). Our future updates will have performance improvements focused on the other elements like Environment Effects and Units.
Our mission is to make NIMRODS capable of supporting the wildest, most chaotic builds imaginable without compromising performance. This not only paves the way for even crazier new gun augments but also helps us long term in expanding to future platforms (ie handhelds, consoles, etc). We’ve been dedicating 50% of our development efforts to performance optimization, with the other half focused on delivering new content (augments, guns, and more) - so do expect a balance of both.
Thank you for your support and patience as we continue improving NIMRODS. Together, we’ll make this game one of the most fun (and performant) games in the genre. ❤️
NIMROD out,
- Kmess
If you haven't already, come join our official Discord server

Optimization has been a top priority for us ever since the demo was released. We’ve made a lot of improvements and would like to share an update with you all.
To achieve smooth gameplay at 60 frames per second, each frame must render in 16.67ms or less (conversion is 1000 / 60 FPS = 16.67ms). This is our performance target for low-end machines, including the Steam Deck, which is our target platform for minimum specification (min-spec). The target remains 60 FPS or better, even during intense, end-game scenarios. To make that a reality, we have to optimize every millisecond for performance.
This devlog will outline our plan for performance improvements while ensuring the content isn’t too technical. For those wanting a deeper dive into the technical aspects, we’ll be participating in a few Unity focused livestreams this year. One of them later today on The Hot Path Show with Unity developer & Youtuber, Turbo Makes Games: https://www.youtube.com/live/l-aec7fgtbE
The Journey So Far
When we started developing the demo for NIMRODS, the game was built using Unity’s classic GameObject approach. In Unity, a GameObject is a fundamental building block for making a game, most scripts & components exist on a GameObject. For example, a SpriteRenderer is a component used to display… well Sprites. While using GameObjects and Component’s work and great, they struggle to keep up when working with many thousands of them, especially when applying complex effects (like our projectile modifiers - see below)
With this classic approach we quickly hit performance bottlenecks and it became clear that it wouldn’t scale to the level of chaos we envisioned. The end-game of NIMRODS is designed for your guns to have absolutely crazy combinations with all the unique gun augments stacking with each other.

That’s when we pivoted to Unity’s Data-Oriented Technology Stack (DOTS). DOTS introduced a new paradigm centered on Entities, which are lightweight, data-driven objects optimized for multithreaded environments. Leveraging DOTS and Unity’s Burst Compiler (which generates high-performance low-level code) allowed us to paved a path to significant performance improvements.
In fact, not only did DOTS help us resolve many performance issues from the demo, but it also opened the door to addressing the remaining challenges we’re now tackling.

From GameObjects to Entities
With DOTS, Entities replaced GameObjects for many systems - one of these being Projectiles. The movement & logic of the projectile was now handled in a highly optimized system. This yielded some great performance improvements, but there was still more to gain. While the core data was converted to an Entity-based approach, the visuals still relied on SpriteRenderers and GameObjects - which are not compatible with Unity DOTS.


This was still a significant improvement, as the view became much simpler (the view only needed to follow the entity). However, with thousands of projectile views in play, this approach started to slow down in terms of performance.
To address this, our next iteration had us converting the views to an entirely entity-based graphic approach utilizing a newer feature called Entity Graphics. This change not only reduces work on the GPU but also eliminates the need for systems to manage the GameObject because there are no GameObjects anymore! 🎉
This conversion helps improve the performance of projectiles as well as other game elements that rely on the same view → entity connection.


NIMRODS consist of several core elements:
- Projectiles (bullets, lots of bullets, tesla chains, buzz saws, split bullets, rockets, etc)
- Modifiers (the bread and butter of the game - what gun augments use. I.e homing modifier, explosion modifier, etc.)
- Environment Effects (these are area of effects - like explosions, freeze cloud, land mine explosions, honey effect, etc.)
- Status Effects (frozen, stat changes, setting enemies on fire, move speed buff, etc.)
- Units (you - the player, enemies, breakables like vines, towers, etc.)
- The map (pretty much sprites - a lot of them)
Each element can still be optimized further and there is still much performance work to do.
The Balance
We have players that play from a wide range of devices. From the Steam Deck to high-end PCs with a Threadripper CPU w/ the latest NVIDIA RTX GPU - we’ve seen slowdowns on both. Each issue is not necessarily the same. Some slowdowns on the high end machines have to do with explosions (environment effects) combined with a specific modifier systems (like homing). While low end systems can struggle with time spent rendering (map assets).
Optimizing one area sometimes triggers a chain reaction of changes. For example, improving environment effects might require reworking how modifiers interact to ensure they’re as efficient as possible. It’s a process that takes time, but it’s worth the effort.
The Plan
We’re committed to transparency and don’t want to work in a silo for months without sharing an update. Instead, we’ll roll out incremental updates, each focusing on a specific category of optimizations. This iterative approach ensures steady progress and helps us future proof the game. We will be setting up future public betas related to performance testing.
So with that in mind - if you know of a gun build that causes slowdowns, we want to hear about it! If you have Discord then please post in the #guns_go_brr channel or reply to this Steam post. Consider sharing a screenshot of your build in the Gun Inspect screen. Your feedback is super valuable in helping us target problem areas.
In an upcoming performance update, we’re focusing on optimizing projectiles and map assets by converting them to fully entity-based graphics. This change will not only help rendering on low end PCs but also resolve certain builds that cause a significant slow down on high-end PCs (ie builds that are focused around a lot of projectiles). Our future updates will have performance improvements focused on the other elements like Environment Effects and Units.
The Goal
Our mission is to make NIMRODS capable of supporting the wildest, most chaotic builds imaginable without compromising performance. This not only paves the way for even crazier new gun augments but also helps us long term in expanding to future platforms (ie handhelds, consoles, etc). We’ve been dedicating 50% of our development efforts to performance optimization, with the other half focused on delivering new content (augments, guns, and more) - so do expect a balance of both.
Thank you for your support and patience as we continue improving NIMRODS. Together, we’ll make this game one of the most fun (and performant) games in the genre. ❤️
NIMROD out,
- Kmess
If you haven't already, come join our official Discord server
