NIMRODS Devlog | Performance

NIMRODS: GunCraft Survivor

Assemble a limitless arsenal in this survive-em-up roguelite shooter. As a Gun Manufacturer's testing force, your mission is simple: test the latest gun tech and scavenge alien planets. Collect insane weapon parts to invent crazy guns that slay thousands. You may not survive, but your guns will!

Greetings, NIMRODS! We haven't shared a performance Devlog yet, so we wanted to share some details about our recent work. We’re excited to share some major improvements we’ve made to our game’s performance since the Demo. Previously, certain gun builds in the Demo struggled to reach past 5 frames per second. We’ve drastically improved this by utilizing Unity’s DOTS ([url=https://unity.com/dots]Data-Oriented Technology Stack[/url]), unlocking the game’s potential to perform smoothly on various devices like minimum spec devices, Steam Deck, and more. [h1]How It Works[/h1] All of our gun augments in the game work with a modular approach where everything function as a 'modifier'. This not only enables our game designers to quickly configure these augments in the editor, but also allows all gun upgrades to combine seamlessly, resulting in trillions of possible combinations. We believe this system significantly enhances the game's fun and replayability. Here are some examples of the projectile modifiers found in the game, along with their corresponding gun augments: [list] [*] [b]Homing Projectile Modifier[/b] - Causes your bullets to home in on the nearest target. Used in the Homing Sight augment. [*] [b]Wave Projectile Modifier[/b] - Causes your bullets to path in a sine pattern. Used in Helix Barrel augment. [*] [b]Splitter Projectile Modifier[/b] - Causes your bullets to split into two smaller bullets when you impact a target. Used in Splitter Bullets augments. [/list] And then if you add these up together you get a homing, wavy projectile that splits into smaller sub-bullets that also home and are wavy. [h1]Performance Gains[/h1] Before using [url=https://unity.com/dots]Unity DOTS[/url], having 10,000 projectiles on screen with the wave projectile modifier took about [b]3ms[/b] to finish computing [i](for reference, reaching 60 FPS requires each frame to take less than 16.7ms to render)[/i]. After these performance improvements, this time was reduced to just [b]0.03ms[/b] per frame - a 100x improvement! Pog Here is a taste of what the game can now handle, in terms of sheer amount of projectiles / enemies on screen: [img]https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExcnp4bGFubDgzNmMyNzFlOGp0d3J5aHdtODhmMzkyd2dreXduMG12dyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/Akiq3cddw1uYsRcE88/giphy.gif[/img] [img]https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExeWNuZG5lcnZ2ZHFlMnp1eDN3Zm4zMzh4cG14cTM4eHRiaW5lcjAyZiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/PpKdODEloeWBVraDUm/giphy.gif[/img] [i]GIF slightly impacts FPS due to limitations[/i] These changes help us ensure the game will be lag-free, even in the end-game with thousands of projectiles, explosions, status effects, enemies, and much more. We can't wait to share more about what we’re cooking up for the Early Access release. Expect an announcement of an Early Access release date coming soon! Thanks for becoming a NIMROD :) -Kmess