HomeGamesUpdatesPricingMethodology
Steam News9 February 20264mo ago

DROSS - an Overdue Mandatory Update

TLDR: Pure DOTS ECS + ECS NETCODE, CO-OP started (Hosting, Joining) 5000 enemies @ 120FPS // It’s been a year. I can’t believe it’s been over a full year. Honestly it’s all kind of a blur.

Full notes

Full DROSS update

Read the full published notes in a cleaner layout. The original post stays linked below.

What changed

0 fixes2 additions6 changes0 removals
  • Gameplay
  • Performance
addedTLDR: Pure DOTS ECS + ECS NETCODE, CO-OP started (Hosting, Joining) 5000 enemies @ 120FPS
changedSo, here’s an update on DROSS. When I first pulled down the last demo, I hadn’t planned to keep it offline for so long. I started by refactoring everything, and was focusing on the core gameplay, movement, combat etc.
changedAll art, rooms, corridors, infestation, props, enemies hold or more compress their positions into these regions for quick lookup. Regions hold quality level. A low cost distance check. Enemies far from the player play their animations with far fewer frames, less frequent LOS checks, and as LOD meshes do not work in ECS, art mesh quality changes with this too. Remember this only updates / changes when the player had moved from one region to another.
changedGenerating a level, including floor plan, all art. Nests being created and growing. Infestation spreading. Ensuring keycards for any locked doors are reachable by player (plans out possible paths to complete level, ensuring it’s possible) item placement. Looking for oddly shaped corridors or too cluttered parts of the level. Takes about 10-20 seconds. And now there’s 3 levels of height for the paths. With tall rooms with upper mid and lower floors. As well as corridors generating on these lower main and upper floors. As well as corridors that ramp up or down floors. Stairwells. Etc.
changedIt took about 1-2 minutes to create a single far worse level previously.
changedAs is, i have a testing area that stress tests the system and checks how many bugs can exist at once. As is, 5000 bugs run smoothly, capped at 120 fps, on a 2019 iMac.

DROSS changes

addedTLDR: Pure DOTS ECS + ECS NETCODE, CO-OP started (Hosting, Joining) 5000 enemies @ 120FPS
changedSo, here’s an update on DROSS. When I first pulled down the last demo, I hadn’t planned to keep it offline for so long. I started by refactoring everything, and was focusing on the core gameplay, movement, combat etc.
changedAll art, rooms, corridors, infestation, props, enemies hold or more compress their positions into these regions for quick lookup. Regions hold quality level. A low cost distance check. Enemies far from the player play their animations with far fewer frames, less frequent LOS checks, and as LOD meshes do not work in ECS, art mesh quality changes with this too. Remember this only updates / changes when the player had moved from one region to another.
changedGenerating a level, including floor plan, all art. Nests being created and growing. Infestation spreading. Ensuring keycards for any locked doors are reachable by player (plans out possible paths to complete level, ensuring it’s possible) item placement. Looking for oddly shaped corridors or too cluttered parts of the level. Takes about 10-20 seconds. And now there’s 3 levels of height for the paths. With tall rooms with upper mid and lower floors. As well as corridors generating on these lower main and upper floors. As well as corridors that ramp up or down floors. Stairwells. Etc.
changedIt took about 1-2 minutes to create a single far worse level previously.

TLDR: Pure DOTS ECS + ECS NETCODE, CO-OP started (Hosting, Joining) 5000 enemies @ 120FPS

//

It’s been a year. I can’t believe it’s been over a full year.

Honestly it’s all kind of a blur. I haven’t really done much of anything other than reworking the game.

I’ve gone full goblin mode. And I haven’t really shared any progress either, not here or on Twitter.

But since people seem to worry if me of the game is dead, we are all ok. I may have gone a little crazy, but it wasn’t really too far to go.

So, here’s an update on DROSS. When I first pulled down the last demo, I hadn’t planned to keep it offline for so long. I started by refactoring everything, and was focusing on the core gameplay, movement, combat etc.

A few months pass, and I start looking into what’s next. Using the entity component system, since I knew no one, not you or I, anyone, would be happy with only a few hundred enemies on screen. It’s rather important element to the game.

Surely ECS shouldn’t be too tough to learn. After all I managed to figure out C# and mono behaviours and all that.

Let’s just say there’s a reason most people do not work with pure ECS, and I had a rough time. It was a really bad time…

Then I read something about using netcode. And ECS Netcode. Apparently it’s nigh impossible to just switch from a fully realized single player game to a multiplayer game. But of course, it needs to be multiplayer.

So in the effort to get all this done sooner (no really I’m being serious) I restarted AGAIN, writing all of the DROSS systems to work in ECS Netcode and most of the major systems are all fully burst compatible Dots ECS. I didn’t know what any of this meant when I started this.

So after many many sleepless days, nights. Weeks, months. I still cannot believe it’s been a year… I have finally poked my head out just to say, it’s not ready yet.

Yes I know. Very anti climactic. But currently I am only now able to share any amount of visible progress. And as for an update to the demo, I won’t be having one available until it is good. Until it’s ready.

It’s not ready, and not all good. But..

What I have so far is really good.

😎

At the start I created a super performant spacial hashing grid. This would handle all distant culling and quality updates. And all future systems would be built around this. How it works:

The player character has their current position checked infrequently. When moving it is checked more frequently. At start their current region is saved within the grid. Upon leaving a region of the level grid, thus having a different region currently than the saved region, this triggers updating quality and culling. What is visible or not. Etc. All the cells use a Manhattan distancing check, so very easy on system. And any changes such as quality level from 0 to 1, update the regions with these quality changes. Mind you, only the regions the player is moving toward and the edges they are moving away from need changing, so a lot of early exits saving calculations.

All art, rooms, corridors, infestation, props, enemies hold or more compress their positions into these regions for quick lookup. Regions hold quality level. A low cost distance check. Enemies far from the player play their animations with far fewer frames, less frequent LOS checks, and as LOD meshes do not work in ECS, art mesh quality changes with this too. Remember this only updates / changes when the player had moved from one region to another.

Very boring but I’ve got nothing else really to talk about. And this is important, I don’t want my computer to overheat with a dozen enemies on screen.

Also meshes are all batch rendered with these.

RESULTS:

Generating a level, including floor plan, all art. Nests being created and growing. Infestation spreading. Ensuring keycards for any locked doors are reachable by player (plans out possible paths to complete level, ensuring it’s possible) item placement. Looking for oddly shaped corridors or too cluttered parts of the level. Takes about 10-20 seconds. And now there’s 3 levels of height for the paths. With tall rooms with upper mid and lower floors. As well as corridors generating on these lower main and upper floors. As well as corridors that ramp up or down floors. Stairwells. Etc.

It took about 1-2 minutes to create a single far worse level previously.

It works so quickly, if ever the layout is too difficult or impossible to complete. It just generates a fresh layout.

And as these floor layouts are on a grid they can and are converted to bits, compared to positions and values. This is what’s used to save and load the game mid run. (Yes this works) as well as generate the level and send the blueprints to the second player if playing online (yes this also works)

And how about the bugs? Well. I’ve managed to get a few more running smoothly on screen than before.

As is, i have a testing area that stress tests the system and checks how many bugs can exist at once. As is, 5000 bugs run smoothly, capped at 120 fps, on a 2019 iMac.

On SteamDeck, recent test had this same test getting only 11 fps average, so I still have a lot of optimization to do. But 11 fps for 5000 enemies is pretty decent all things considered.

Anything that I can make burst compatible, is. Anything that would work better with ECS, does.

Sometimes it feels like nothing is getting done, or I’m very close to finally having something worth sharing. But most of the time I am struggling with one error for s few weeks, only to figure it out and uncovering the next issue buried underneath.

It’s been an interesting year.

My goal is to have something playable. Soon. Something that can try out the large numbers of enemies, with working Co op. I need to get all the new stuff done, working and in game. And then I have to get all the older stuff done and working in game too.

But I mean, what else really do I have to do? And I’ve put enough time into this, im not going to just stop. I’m getting through it, and it’s looking pretty decent too.

I could talk more about more. Such as art and more things I have learned. It’s a lot of learning, making all of this. I’m not sure if knowing any of it ahead of time would make it easier, but I guess I manage.

And I am done typing. I’ve got stuff to do, and I’d rather share it once complete that talk about what I would like it to be, I’ll just show you. Thanks all again for hanging tough. And if you’re still here looking forward to DROSS, I don’t plan to disappoint. And I don’t plan to fail. And certain not giving up.

And I also want it done already so I can play it. So thank you all for reading, and no I’m not dead. Neither is DROSS. Just antisocial. Grinding. But I appreciate the concern.

Cheers, 🍻

~SALT_

Source

Steam News / 9 February 2026

Open original post

Changelog.gg summarizes and formats this update. How we read updates.