Live data from Hacker News

Why Cities: Skylines 2 performs poorly

blog.paavo.me

531–540 of 593 posts

Re: Why Cities: Skylines 2 performs poorly

#531

So the game uses extremely detailed models, then fails to have an intelligent way of abstracting/culling away those things that will never make it into pixels, is that a fair summery? Also, does that mean that easy fixes are available or is this so core that solutions would require going back to the drawing board?

We can only speculate one the difficulty of the fixes. I am not an expert but I believe culling and LoD are two big things for engines. Not being able to use existing implementations is really unfortunate. I guess the "tricks" are well-known but I don't think the implementation is easy.

I'm not a GPU programmer, but I became interested to dig out what is the state of art of culling, and found out Arseny Kapoulkine [1] has implemented those in MIT licensed C++ code base:

Cluster cone culling, frustum culling, Automatic occlusion culling, triangle culling, Meshlet occlusion culling, Optimizing culling. On paper sounds impressive, and maybe Colossal Order could learn from those.

https://github.com/zeux/niagara

Re: Why Cities: Skylines 2 performs poorly

#532
post #153

Earlier quoted context omitted.

> It's not that "using web UI" is the reason why this game has awful performance, that's more like a bellwether for the studio's priorities. All it shows is that optimizing something that was already fast enough was not a priority. But why would you want it to be?

Sometimes you can take those small design decisions as indicative of how decisions are made in a company. I remember back when Apple removed the SD card slot from their phone. It wasn't a deal-breaking change, because their phones had lots of memory built in... but at the time, it seemed to me that the decision makers that did that, would continue to make similar decisions, each one making me unhappier and unhappier.…

But you're just asserting that it's showing bad judgment! Why is it a bad idea? Certainly not due to performance. Nor due to productivity.

Re: Why Cities: Skylines 2 performs poorly

#533
post #529

Earlier quoted context omitted.

Assuming they had C# or .NET as a constraint. I'd wager not, they just wanted something that would work for "scripting".

C# and their own custom clr language was the only supported languages, so yes.

There were lots of other languages with support available.

I don't think Unity had anyone mandating they had to use .NET or C#.

Re: Why Cities: Skylines 2 performs poorly

#534

Unity is a clown engine. I remember some guy benchmarked DOTS, against plain old C++ code with OpenGL, just like your dad used to write, and it was no contest, DOTS couldn't keep up. You have to remember, Unity usually sets the bar very low for themselves, comparing their ancient Mono implementation (they still use the Boehm GC, written in the 1980s!), and when a shiny new performance 'fix' like Burst/DOTS drops, the…

> Unity is a clown engine. I remember some guy benchmarked DOTS, against plain old C++ code with OpenGL, just like your dad used to write, and it was no contest, DOTS couldn't keep up.

I don't think it is necessarily a fair or useful comparison. I also wrote several toy 3d engine a few years back, and some where performing better than some "commercial" engine, but it is not hard to do when you don't have to handle cross-platform, and a large number of feature. What is a fairer criticism is that Unity has been unable for the last decade to actually stick to a few features and make them actually mature and production ready. DOTS has been introduced like 4-5 years ago ? And it still feels like a polished tech-demo, not a production ready-system, properly integrated with the rest of the stack. And the same could be said about so many Unity feature. The "legacy" systems are just plain simply more reliable than almost any new feature they started for their replacement.

Re: Why Cities: Skylines 2 performs poorly

#535

Earlier quoted context omitted.

> In the end, the problem is capitalism. Is this sarcasm? I’m asking seriously. If not, then how is a poorly running game the result of capitalism, and what is the alternative economic model that would produce only high-performance / efficient games?

I don't think it's sarcastic. The game runs poorly because it needed more time for optimizations. It doesn't get more time for optimiztions because the publisher said it needed to ship now. The publisher can say that it needs to ship because they can advertise for good launch sales, because the a large portion of the customer base will buy it at launch as long as there aren't obvious showstoppers. It's a bit trite to…

Corner cutting doesn't happen in socialist countries?

Re: Why Cities: Skylines 2 performs poorly

#536
post #535

Earlier quoted context omitted.

I don't think it's sarcastic. The game runs poorly because it needed more time for optimizations. It doesn't get more time for optimiztions because the publisher said it needed to ship now. The publisher can say that it needs to ship because they can advertise for good launch sales, because the a large portion of the customer base will buy it at launch as long as there aren't obvious showstoppers. It's a bit trite to…

Corner cutting doesn't happen in socialist countries?

In a truly socialist structure, corner cutting comes from prioritizing other duties to the people, directly or indirectly. Capitalistic pressures come from money.

But there is no pure capitalistic structure nor socialist one. I did already mention it was a trite comparison.

Re: Why Cities: Skylines 2 performs poorly

#537
post #529

Earlier quoted context omitted.

C# and their own custom clr language was the only supported languages, so yes.

There were lots of other languages with support available. I don't think Unity had anyone mandating they had to use .NET or C#.

It used to be C# along with JS and Boo (a Python for .NET). All docs had examples in order of preference for JS, C#, Boo.

Re: Why Cities: Skylines 2 performs poorly

#538
post #534

Unity is a clown engine. I remember some guy benchmarked DOTS, against plain old C++ code with OpenGL, just like your dad used to write, and it was no contest, DOTS couldn't keep up. You have to remember, Unity usually sets the bar very low for themselves, comparing their ancient Mono implementation (they still use the Boehm GC, written in the 1980s!), and when a shiny new performance 'fix' like Burst/DOTS drops, the…

> Unity is a clown engine. I remember some guy benchmarked DOTS, against plain old C++ code with OpenGL, just like your dad used to write, and it was no contest, DOTS couldn't keep up. I don't think it is necessarily a fair or useful comparison. I also wrote several toy 3d engine a few years back, and some where performing better than some "commercial" engine, but it is not hard to do when you don't have to handle cr…

I don't think we disagree on much. Unity has failed to stick the landing on most features developed in the past decade. If you make small to medium sized games, and treat it like 2015-era Unity, it still works decently, but progress since then has been slow going. All the new-ish features since then, like Scriptable Render Pipelines, Networking and DOTS had a rough development path, with constant bugs, breakages and stillborn features, sometimes packages got deprecated before reaching production status.

As for the C++/OpenGL comparison, I could've just recommended any common sense approach using industry standard tools, like Unreal.

I'm just saying, in terms of code performance, DOTS promised a paradigm shift, this cool new way of structuring code and writing a dialect of C# promised heretofore unseen heights of performance. The reality was that Unity Burst code is barely faster than CoreCLR .NET code, and is slower than straightforward no-frills C++ (but at least you get Unity vendor lock-in). This performance matters when you're trying to code a core game system, like procedural shattering, CSG, or inverse kinematics, doing it in regular C# will bite you in the butt. I'd rather do C++ for the few things where performance matters (not to mention, I'm 99% sure that well-tested high performance open-source C++ implementations of the above problems exist), than let Unity take me for a ride with DOTS.

Just take a look at Unreal. I'm pretty sure most of the stuff Unity's still working on wasn't a problem circa UE4 release@2014, and most of their 2014 demos would work in a modern version of Unreal (not sure how much of a breaking change UE5 is, but definitely in the latter UE4 releases).

Re: Why Cities: Skylines 2 performs poorly

#539
post #535

Earlier quoted context omitted.

Corner cutting doesn't happen in socialist countries?

In a truly socialist structure, corner cutting comes from prioritizing other duties to the people, directly or indirectly. Capitalistic pressures come from money. But there is no pure capitalistic structure nor socialist one. I did already mention it was a trite comparison.

>In a truly socialist structure, corner cutting comes from prioritizing other duties to the people, directly or indirectly. Capitalistic pressures come from money.

You can argue that's the same under capitalism, just replace "the people" with "customers". In both cases corner cutting is only an issue if there's deception involved, wether that's a Party member using lower quality materials for a construction project, or a video game company spending less time polishing a game. I don't see a problem with releasing unfinished/poorly optimized games as long as it's clearly disclosed. Early releases are basically this.

Re: Why Cities: Skylines 2 performs poorly

#540
post #72

> A brief glance at the JS bundle reveals that they are using React and bundling using Webpack. While this is something that is guaranteed to make the average native development purist yell at clouds and complain that the darned kids should get off their lawn, When I first heard of this as being a thing, my initial reaction was indeed something like "wait what? HTML and CSS in a desktop PC game driving the UI? No, th…

I would not sing praises for Microsoft Flight Simulator 2020. First, the cockpit displays are rendered at lower framerate, because they take considerable chunk of frame time. Second... It may be fine to render display and UI using js, but if you dig in, you will also find the autopilot there on top of inheritance hell.
Post reply on HN