Live data from Hacker News

I cut GTA Online loading times (2021)

nee.lv

151–160 of 221 posts

Re: I cut GTA Online loading times (2021)

#152

Earlier quoted context omitted.

I know so many people that have stopped playing due to the loading times. Just because a scene is active and alive, doesn't mean it couldn't be even more active and alive with such a minor fix that could be implemented within a day. I am pretty sure they lost >100.000.000$ by that. Just shows how shitty the management over there is that they never tried fixing that problem.

By the time you get to the loading screen they've already profited. The fact that they continue to sell the same game over and over means individuals have likely purchased the game multiple times meaning they don't care about loading times, they just like the game. It's easy to say their management is shitty from the comfort of your computer, but the reality is Rockstar produces great games, and they're making a ton…

My statement is mostly based on the assumption that a large part of their revenue is based on microtransactions, for which satisfied customers are key. Therefore if I stop playing due to the loading times, they effectively loose money since I certainly won't buy any in-game money with my real money. But you are of course right that I have already bought the game.

Regarding the management: If it takes >5 minutes on top high-end gaming rigs to load a game and if your loading times have become a meme in the internet, I think a somewhat reasonable product manager should ask their developers to at least invest 5 minutes in figuring out why it takes so long (that's probably about the time needed to figure it out given the tools the developers have) and if it can be decreased in a reasonable amount of time. I was just amazed by how simple the problem actually was for an issue that has led me and many others to stop playing. (And I actually really wanted to play, but I just didn't want to look 15 minutes at loading screens for having 5 minutes of actual playtime.)

Re: I cut GTA Online loading times (2021)

#153
I've noticed similar stupid problems playing Portal 2 with a friend. Downloading the maps takes a really long time, but I've got a decent internet connection and so does my friend. It appears that when his machine is loading, my machine has no network activity whatsoever, and then once he's loaded the maps, then my machine will start loading them and his machine has no network activity.

The game has a number of other weird issues like this. After you've played a map, it asks you to rate a thumbs up or thumbs down, but the hit areas don't match where the button is drawn, for example. Sometimes the mouse doesn't cause my character to turn. I can quit and restart the game and it's the same. But if I open a different game, quit it and then restart Portal, it works fine. WTF?

I realize this is an old game so they aren't updating it (I have to boot into a 32-bit OS to even play it!) but it's a little depressing that such egregious issues went unnoticed for so long that we're now probably past the point of fixing them.

Re: I cut GTA Online loading times (2021)

#154

Clickbait title ;) The problem wasn't strlen(), that just showed up at the bottom of the call stack when profiling. IIRC the actual problem was an exceptionally dumb JSON parser combined with parsing a pretty big JSON file (which probably also grew much bigger than the original developer working on that feature anticipated). Edit: the title has been edited in the meantime, originally it was something about strlen() b…

It's funny though. Several years ago a coworker did some profiling on one of our server software components and found that it was spending up to 10% of the CPU time in strlen()... for very similar reasons.

I've seen PHP applications use 30% of their CPU in the “realpath cache”, which at the time was a super-slow (O(n²) in this case) home-grown hash table for caching the result of realpath(), which was called all the time because someone decided include_once() needed to run its paths through realpath() in case someone included a file multiple time through symlinks. And I guess they couldn't trust inode numbers or Windows didn't have them or something…

I hope it's gone. I really do hope it's gone :-)

Re: I cut GTA Online loading times (2021)

#155

Earlier quoted context omitted.

Screw this. Developers should advocate for their craft and for quality, and business metrics should hold an adversarial position to balance things out. We definitely should not be accepting the narrative that developers just do what they are told and don't push back on what we know is good for product - we are in a unique position of power, we should recognise this and use it for the betterment of the industry as a w…

> Developers should advocate for their craft and for quality, and business metrics should hold an adversarial position to balance things out. What makes you think this isn't the case? Business metrics holding an adversarial position over other interests obviously doesn't preclude business metrics defeating other interests.

In my experience, business interests always override everything else. Often times to the detriment of the business, and often as soon as mere 3 to 6 months in the future.

Re: I cut GTA Online loading times (2021)

#156

Earlier quoted context omitted.

You don't think that it's a bigger WTF that sscanf implementation calls strlen when parsing a number (when it iirc even ignores any non-digit characters for the actual number parsing so no reason it couldn't terminate that part w/o the extra call)?

sscanf is essentially being used as a tokenizer for the JSON grammar, which means something like this: {"foo": "bar"} Is potentially turning into 5 different tokens: { "foo" : "bar" } After each token the "state" of sscanf is being discarded and each invocation of sscanf is independent. The API simply isn't descriptive enough to know that a string is immutable and hasn't been changed and there are certainly many vali…

How much "state" would sscanf really need? From memory (and with an extra peek at the man page) each directive is in sequence of the "format" specifier is sequential (it's not nearly as flexible as a Regexp) so you really only need:

A: a processing state (int/enum). B: a current fmt str pointer. C: va_list struct to keep track of destinations. D: a source string pointer.

Now if what I saw mentioned in another comment is true that there is some insane conversion to a FILE* stream to do this, then yes I can see why it happens but it's not really NEEDED to implement the function as specified.

Re: I cut GTA Online loading times (2021)

#157

Earlier quoted context omitted.

You are saying a game had a 6 minute load screen and everybody would throw their hands up and say “but look at the dynamic lighting once it loads… it’ll all be worthwhile!” If that’s not group think gone bad, I don’t know what is.

The customer has put up with 6 minute load times, but a low framerate kills sales quickly (unless you're Star Citizen).

And kills reviews. Most reviewers won't freak about the load time, but the framerate they will.

Re: I cut GTA Online loading times (2021)

#158

Earlier quoted context omitted.

You are saying a game had a 6 minute load screen and everybody would throw their hands up and say “but look at the dynamic lighting once it loads… it’ll all be worthwhile!” If that’s not group think gone bad, I don’t know what is.

Not to mention, unless they have a really clever system to do hot code reloading, EVERY SINGLE DEVELOPER AND TESTER would have been plagued by these load times. I wonder if the watercooler rooms at Rockstar are exceptionally furnished as a result.

Sometimes testers aren't even working with the full data set. And testers might have some seriously shit-hot hardware that is max spec too. When I was developing everyone would go buy the absolute best PCs out there at the start of every new game to make sure they lasted through dev.

Re: I cut GTA Online loading times (2021)

#159

Earlier quoted context omitted.

I’m starting to slowly realize how terrible it is working in environments where people simply aren’t curious. It’s so hard for me as an individual contributor to decouple this way of thinking. Curiosity is how we find better ways of doing things or finding out hidden flows that can be better. Incurious people are a contagion, but I want to believe you can make people curious. It can’t be innate. Every company talks a…

I'd be careful about painting the developers at Rockstar as "not curious," that feels like an incredibly unfair conclusion to draw from this. Those developers have other pressures, and deadlines to hit. There are a million reasons why this bug wasn't solved by the team there. When a user complains about a bug in software you wrote, is it because you just "weren't curious" enough? Or is the situation more complicated?…

Game was out for almost EIGHT YEARS by the time this bug was fixed. There can be no reasonable explanation for them not fixing that. 5 minute load every time you try to go into multiplayer. The amount of revenue lost to that one single bug is staggering. This bug was a reason why I never played GTA online, for example.

Re: I cut GTA Online loading times (2021)

#160
post #78

Earlier quoted context omitted.

I wasn’t trying to blame engineers that wasn’t my intention, but someone needs to own establishing the environment that actively encourages or doesn’t encourage curiosity. Talented people are found everywhere, but hopefully someone with authority over them doesn’t slowly poison the drive out of them.

Why should developers necessarily be trying to cut loading times? Perhaps GTA is phenomenally successful because they have good BAs and POs who are able to identify and convince engineers to work on what matters to the bottom line.

Loading times were the #1 complaint from users about the game. I personally wouldn't play a game where 5 minute loading times were the norm, 10+ minute times are common, and 15+ minute times are not unheard of.

It's the #1 complaint. The thing that makes this egregious isn't so much that they didn't fix the #1 complain, the thing that makes it egregious is that it's a simple enough flaw that a mediocre developer could have just run WPR/WPA against it and see that 90% of those 5+ minutes was spent in strlen. Maybe it's not their area, maybe they don't know how to fix it, but they will recognize that it's a problem with a likely easy fix.

So even if we completely ignore the fact that it's the #1 complaint, it's still egregious that it's been allowed to go on for this long.

Post reply on HN