Most active commenters
  • CogitoCogito(3)

←back to thread

3883 points kuroguro | 21 comments | | HN request time: 0.371s | source | bottom
Show context
breakingcups ◴[] No.26296724[source]
It is absolutely unbelievable (and unforgivable) that a cash cow such as GTA V has a problem like this present for over 6 years and it turns out to be something so absolutely simple.

I do not agree with the sibling comment saying that this problem only looks simple and that we are missing context.

This online gamemode alone made $1 billion in 2017 alone.

Tweaking two functions to go from a load time of 6 minutes to less than two minutes is something any developer worth their salt should be able to do in a codebase like this equipped with a good profiler.

Instead, someone with no source code managed to do this to an obfuscated executable loaded with anti-cheat measures.

The fact that this problem is caused by Rockstar's excessive microtransaction policy (the 10MB of JSON causing this bottleneck are all available microtransaction items) is the cherry on top.

(And yes, I might also still be salty because their parent company unjustly DMCA'd re3 (https://github.com/GTAmodding/re3), the reverse engineered version of GTA III and Vice City. A twenty-year-old game. Which wasn't even playable without purchasing the original game.)

replies(40): >>26296812 #>>26296886 #>>26296970 #>>26297010 #>>26297087 #>>26297123 #>>26297141 #>>26297144 #>>26297184 #>>26297206 #>>26297323 #>>26297332 #>>26297379 #>>26297401 #>>26297448 #>>26297480 #>>26297806 #>>26297961 #>>26298056 #>>26298135 #>>26298179 #>>26298213 #>>26298234 #>>26298624 #>>26298682 #>>26298777 #>>26298860 #>>26298970 #>>26299369 #>>26299512 #>>26299520 #>>26300002 #>>26300046 #>>26301169 #>>26301475 #>>26301649 #>>26301961 #>>26304727 #>>26305016 #>>26311396 #
nikanj ◴[] No.26297332[source]
The old maxim of "Premature optimization is the root of all evil" has over time evolved to "If you care one iota about performance, you are not a good programmer".
replies(10): >>26297445 #>>26297456 #>>26297528 #>>26298013 #>>26298281 #>>26298654 #>>26299400 #>>26300250 #>>26304073 #>>26313590 #
1. vendiddy ◴[] No.26297456[source]
And fwiw, the full quote is:

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.

Yet we should not pass up our opportunities in that critical 3%.

replies(2): >>26297809 #>>26297927 #
2. blowski ◴[] No.26297809[source]
Also, it’s not “never optimise”. It’s “only optimise once you’ve identified a bottleneck”. I guess in a profit-making business you only care about bottlenecks that are costing money. Perhaps this one isn’t costing money.
replies(5): >>26297885 #>>26297926 #>>26298312 #>>26299305 #>>26299394 #
3. skzo ◴[] No.26297885[source]
ding ding ding ding
4. saagarjha ◴[] No.26297926[source]
This one isn’t measured to be costing money. Trying to figure out how much money you’re losing as a result of performance problems is extremely difficult to do.
5. nicbou ◴[] No.26297927[source]
Then again, using the correct data structure is not really optimisation. I usually think of premature optimisation as unnecessary effort, but using a hash map isn't it.
replies(4): >>26298331 #>>26298348 #>>26298402 #>>26304254 #
6. CogitoCogito ◴[] No.26298312[source]
Perhaps this one is costing them a lot of money.
7. CogitoCogito ◴[] No.26298331[source]
My belief is that your first goal should be cognitive optimization. I.e. make it simple and clear. That includes using hash maps when that is the proper data structure since that’s is what is called for at a base design level.

The next step is to optimize away from the cognitively optimal, but only when necessary. So yeah it’s really crazy this was ever a problem at all.

replies(1): >>26300662 #
8. marcosdumay ◴[] No.26298348[source]
If it doesn't change semantics, it's optimization.

It's just a zero cost one, so if anybody appears complaining that you are caring to choose the correct data structure and that's premature (yeah, it once happened to me too), that person is just stupid. But not calling it an optimization will just add confusion and distrust.

9. rodgerd ◴[] No.26298402[source]
This is the key point: premature optimization would be e.g. denormalising a database because you think you might have a performance problem at some point, and breaking the data model for no good reason.

Here the wrong data structure has been used in the first place.

10. nmfisher ◴[] No.26299305[source]
Precisely. Hasn't GTA Online done over a billion in revenue?

Given how incredibly successful it's been, it's conceivable the suits decided the opportunity cost of investing man-hours to fix the issue was too high, and that effort would be better spent elsewhere.

replies(2): >>26299338 #>>26384404 #
11. Dylan16807 ◴[] No.26299338{3}[source]
They're making lots of money but the ridiculous load times absolutely cost them money. It's not worth an unlimited amount of dev time to fix, but they definitely should have assigned a dev to spend one day estimating how hard fixes would be.
replies(4): >>26300074 #>>26300343 #>>26302375 #>>26302586 #
12. astrange ◴[] No.26299394[source]
Not all performance problems have obvious "bottlenecks", some are entirely second-order effects.

For instance, everyone tells you not to optimize CPU time outside of hotspots, but with memory usage even a brief peak of memory usage in cold code is really bad for system performance because it'll kick everything else out of memory.

13. nmfisher ◴[] No.26300074{4}[source]
That's also possible. I haven't played it myself, so I really can't comment.
14. blowski ◴[] No.26300343{4}[source]
Arguably, it could actually make them money, since it provides a window of free advertising. I have no data either way, but I wouldn’t assume long load screens are necessarily bad for business.
replies(1): >>26308674 #
15. yxhuvud ◴[] No.26300662{3}[source]
OTOH, at some point what is good from a cognitive viewpoint depends on what idioms you use. So it can be helpful to actively chose which idioms you use and make certain to not use those that tend to blow up performance wise.
replies(1): >>26301746 #
16. CogitoCogito ◴[] No.26301746{4}[source]
Given the current code example, I don't even thing idioms come into it. Here a hash map data structure was called for regardless of whatever idioms come into other parts of the design. This is just fundamental and has nothing to do with functional programming, OOP, etc.
17. rjmunro ◴[] No.26302375{4}[source]
It's costing them money just in the time wasted by their own internal QAs and devs loading the game to test it.
18. danlugo92 ◴[] No.26302586{4}[source]
N=1 but one of the reasons I don't partake in modern gaming is ridiculous loading times and mandatory update sizes.
19. bborud ◴[] No.26304254[source]
Exactly. And not only being able to pick the correct data structure for the problem, (and possibly the correct implementation), but being able to know what is going to need attention even before a single line of code is written.

Most of my optimization work is still done with pencil, paper and pocket calculator. Well, actually, most of the time you won't even need a calculator.

20. Dylan16807 ◴[] No.26308674{5}[source]
They don't need more than a full minute of advertising every load.
21. ric2b ◴[] No.26384404{3}[source]
Where does the belief that corporations are somehow perfect at doing cost-benefit analysis come from? Has anyone worked in a place where that seemed to be the case?

We're talking about an issue that has been loudly complained about for 7 years (and I am evidence that it makes people play the game much less often than they would like to) that some person without access to the source code was able to identify and fix relatively quickly, it would be surprising if it took an FTE 1 week to find this with access to the source code.

This is one of the most profitable games ever, they could hire an entire team to track this down for half a year and it wouldn't even be noticeable on their balance sheet. And I would bet money that it would have increased their active player base (which they care about because of the micro-transactions) in a noticeable way, as long as players were aware of the improvement so they would try it again.