4 ms·
It’s briefly hinted at in the article, but this game uses Unity ECS. Unfortunately, the rendering side of things of that tech has been… garbage for a long long
by hesdeadjim 3y ago
It’s briefly hinted at in the article, but this game uses Unity ECS. Unfortunately, the rendering side of things of that tech has been… garbage for a long long time. Even 1.0 comes with the caveat that it might be (ha) worse than the standard rendering paths.
It seems that their team fundamentally underestimated that risk and backed themselves into a corner of having to write their own rendering bridge layer — and failing quite spectacularly at it. Bummed for them.
I’ve shipped one very high profile game and another much less so that use ECS. For both games I was never so crazy as to commit us to any ECS packages outside of the core and NetCode. From the start of each project I knew that we’d be bridging the ECS sim with regular Unity GameObjects for visuals — which sounds crazy but actually works quite well . I hope that there is a day when a game can be full DOTS without caveats, because despite the tech’s struggles I remain quite a proponent of the design patterns.
- ripper1138 3y agoWhat’s the high profile game?
- deleted 3y ago[deleted]
- Pulcinella 3y agoDid you ever encounter performance issues when converting between ECS and GameObjects?
- hesdeadjim 3y agoDepends, if you just need to update position/rotations you can use a TransformAccessArray which is supported with jobs+burst. When you need to pull data out of a dozen components to keep a renderer in sync, yea that’s not cheap. But there are ways you can flip things around, like have a job that outputs a native array containing condensed info about the entity that will be used for rendering. That avoids non-bursted random data access into the entity, but of course adds some additional complexity. This approach won’t naively scale to thousands and thousands of GameObjects like all the (boring) “look ECS can do 10000000 entities at once” demos. I get so, so, so tired of “scale” being the only sexy reason why you pick DOTS. Both my games have a resident set of a couple hundred entities at any given time and still, DOTS works great for how we use it.
- TillE 3y ago> From the start of each project I knew that we’d be bridging the ECS sim with regular Unity GameObjects for visuals — which sounds crazy but actually works quite well Yes! That's precisely what ECS makes sense for, complex internal game logic. It's questionable over-engineering at the game engine layer, where you care about rendering and physics and not much else.
- _joel 3y agohttps://blog.paavo.me/cities-skylines-2-performance/ https://blog.paavo.me/cities-skylines-2-performance/