3 ms·
This is why you need a language (on a framework) with high introspection, with smart insights. Excuse my opinionatedism, but this is what .NET Core gives you. I
by aliswe 4y ago
This is why you need a language (on a framework) with high introspection, with smart insights. Excuse my opinionatedism, but this is what .NET Core gives you. It even streams JSON serialization/deserialization without much memory requirements, iirc.
- 0xFACEFEED 4y ago> This is why you need a language (on a framework) with high introspection, with smart insights. That would be nice if it were true. What happens in reality is you end up paying the performance cost in other areas specifically due to the framework. Frameworks tend to cater to very broad use cases and will generally be less performant than custom code written for one specific use case. Frameworks also tend to be extremely interdependent meaning that to rip out one part (for perf) you need to rip out another huge part. That is why, to this day, if one's business NEEDS something to be performant (no do-overs! no second chances!) then industry veterans will opt for custom systems. Yes they'll have more edge case bugs. Yes they won't be performant in areas you don't care about. But you will still sell 165 million copies of your game because it performs well on a bunch of different platforms with varying specs. This particular case is more of an organizational problem. No one was responsible for load times, it wasn't a priority to improve, and users weren't complaining enough about it to matter.
- outworlder 4y agoNah. We just need to stop this idea that JSON(or similar formats) is an acceptable data storage mechanism. It's fine when interacting with low bandwidth APIs across different systems, where the need for debugging is greater than performance. But on a shipped game? Just bake this JSON into a better, binary serialization format. No need to parse data that seldom changes over and over again. It doesn't matter if you can stream json, if you don't need to call strlen, what have you. Just don't parse unnecessary stuff.
- tialaramex 4y agoThis is GTA Online, so while it's a "shipped game" that JSON changes, Rockstar decides to offer the "Pfister Astron Custom" for $2.5M and they just change the JSON. I don't know whether it's fetched from their servers on startup, or whether it's on disk and just updated periodically, but either way choosing JSON is not as crazy as you seem to think.
- mypalmike 4y agoI'd guess that json is the least of their problems. Even with the fix, load time is still an unreasonable 2 minutes. This suggests they aren't doing any of the load performance things game devs have figured out over the decades, like streaming loaders and stacked memory pools.
- hyperman1 4y agoHe did basic troubleshooting with task manager, on an obfuscated executable, with a disassembler and a memory dump, without knowing anything about the code base, and fixed it with in-memory patching. So while I agree introspection can be a godsend, this specific case is not a tooling problem. Something this blatant is what happens if nobody takes a look. I can imagine they got tons of complaints, but 'it is slow' is nebulous enough to consider it basically unsolvable/normal. Maybe it never got a real bug report, maybe the report never made it past the service desk, maybe management thought it would cause a wild goose chase without resolving anything. But no developer looked into this, as just hitting a breakpoint in the 4 minute pause would insta-fix this.