Live data from Hacker News

How fighting games use delay-based and rollback netcode (2019)

ki.infil.net

51–60 of 107 posts

Re: How fighting games use delay-based and rollback netcode (2019)

#51

Earlier quoted context omitted.

A good player can't be accurately predicted by a human

First, a good player can't be accurately predicted at all; the conclusion from game theory is direct and clear. This is a case where a strategy involving picking moves at random is superior to any deterministic strategy. Second, your rebuttal is not especially good support for the idea that we should be trying to solve the problem with a technology specifically designed to imitate humans.

How good are human players, by that metric?

Re: How fighting games use delay-based and rollback netcode (2019)

#52
Here's another great video on the subject:

8 Frames in 16ms: Rollback Networking in Mortal Kombat and Injustice 2 https://www.youtube.com/watch?v=7jb0FOcImdg

One of my favorite topics, partially because there's not that much literature on the subject but it's so important

Re: How fighting games use delay-based and rollback netcode (2019)

#53
post #40

This piece was really interesting. That you can hide network delays by building a “fake” model of the other player that replicates what a real player would do and rolling back when this prediction fails. So you can train some neural nets on what players do in such situations and you get a certain accuracy. And yet you can keep making this “fake” player better and better until it’s indistinguishable from fighting a hu…

Not sure you would want the prediction to take non-dumb actions. You need to maintain the hypothesis of least surprise for the local player, otherwise you local player could start to act based on the wrongly predicted actions of the remote player, and that's even worst than nothing. For instance, say the local player tries to hit the remote one. If the prediction for the remote player is to evade, the local player ca…

> Since players don't change inputs very fast, just replicating the last input is in fact 99.9% accurate.

Sadly, fighting games, and to the same extent FPS casually break that assumption. 1s is an eternity in a close fight, and players don’t just react, they also read ahead and align inputs based on the situation they expect, regardless of the speed of the game.

Commands will be entered in as low as one to three frames depending on the players, and it will be common to train to do some combos to input them faster. Basically “shooting twice” could actually be “shoot once, go left, go right, shoot again” if doing that has any advantage (canceling the shooting cooldown time for instance). And players don’t do these consistently, or succeed every time.

It’s really complicated :)

Re: How fighting games use delay-based and rollback netcode (2019)

#54
post #53
post #40

Earlier quoted context omitted.

Not sure you would want the prediction to take non-dumb actions. You need to maintain the hypothesis of least surprise for the local player, otherwise you local player could start to act based on the wrongly predicted actions of the remote player, and that's even worst than nothing. For instance, say the local player tries to hit the remote one. If the prediction for the remote player is to evade, the local player ca…

> Since players don't change inputs very fast, just replicating the last input is in fact 99.9% accurate. Sadly, fighting games, and to the same extent FPS casually break that assumption. 1s is an eternity in a close fight, and players don’t just react, they also read ahead and align inputs based on the situation they expect, regardless of the speed of the game. Commands will be entered in as low as one to three fram…

>1s is an eternity in a close fight, and players don’t just react, they also read ahead and align inputs based on the situation they expect, regardless of the speed of the game.

This was a pretty obvious result when LinusTechTips did their different frame rate testing in first person shooter games. Higher frame rate benefited worse players more than skilled players. My assumption is that skilled players have learned the pattern. Kind of like martial arts - you practice a flow of moves so that you can execute them without having to think about the next move. (Perhaps this is also how people type very quickly.)

Re: How fighting games use delay-based and rollback netcode (2019)

#56
post #48

Earlier quoted context omitted.

Event sourcing is exactly what this is. The game state is built from a combination of initial setup parameters (random seed, level etc), and a list of player inputs. I snapshot after every recent frame. The snapshots are stored in the game entities themselves via generated code. Each user accessible entity has a bunch of shadow slots it can copy from or write to. Then a higher level system sends each entity commands…

Haha! That's exciting to see something like that shared across industries. I use it for medical health records to ensure we track every single change and know when something changed. Pairs really nicely with dynamodb in aws.

Could you talk a little about that or point to something that details the overall strategy? I'm considering a similar setup for event sourcing in AWS and DynamoDb with change streams crossed my mind.

Re: How fighting games use delay-based and rollback netcode (2019)

#57
post #56
post #48

Earlier quoted context omitted.

Haha! That's exciting to see something like that shared across industries. I use it for medical health records to ensure we track every single change and know when something changed. Pairs really nicely with dynamodb in aws.

Could you talk a little about that or point to something that details the overall strategy? I'm considering a similar setup for event sourcing in AWS and DynamoDb with change streams crossed my mind.

Sure, if you don't mind I'll get back to you tomorrow if that's OK.

Re: How fighting games use delay-based and rollback netcode (2019)

#58
post #24

Super smash bros melee is having a bit of an online renaissance due to a combination of the COVID 19 pandemic and the recent implementation of rollback netcode by a community member that quit his job.

The fact that Fizzi was able to get implement rollback netcode for a game by just directly editing the assembly code without any access to a the game's source code is insane. The delay based netcode for the newest smash game, Smash Ultimate(2018), is so bad that it went from being the biggest fighting game of all time in terms competitive playerbase to basically having no scene at all due to covid killing lan tournam…

He's got an interview somewhere where he notes the trick comes down to the fact that lightning mode exists in Melee.

It's all fun stuff - the dev discord is also open for people who enjoy this kind of stuff, some really knowledgeable people in there.

Re: How fighting games use delay-based and rollback netcode (2019)

#59
post #38

Earlier quoted context omitted.

Where did you get the thing about neural networks? I read your comment before reading the article and was really disappointed the prediction "algorithm" (pioneered by GGPO in 2006 [0] and still used today) is literally "assume nothing changed", ie. the opponent is still holding down the same keys as the last frame. [0]: magazine article by the author of GGPO [pdf] https://drive.google.com/file/d/1cV0fY8e_SC1hIFF5E1rT…

You shouldn't be disappointed. Nothing has changed is overwhelmingly the correct answer. It is incredibly jarring to assume a remote player takes an action, display them taking that action, then roll back when you realize they didn't. From your local perspective, it looks like they blocked for a few frames, which makes you assume they're going to block, then they flash back to being defenseless, and your attack weird…

Yeah it probably is an optimal strategy (and certainly relative to return on investment).

I didn't mean disappointment that the tech hadn't advanced, I meant that my expectations were set really high by the grandparent comment ("Neural networks? In 2006? Surely not! But it must be something really fancy, judging by all these flowcharts!" [0]) and by how they kept hyping up the "prediction algorithm" for half the article, when it's just

1. take the data you already had

2. (there is no step 2)

[0]: https://drive.google.com/file/d/1cV0fY8e_SC1hIFF5E1rT8XRVRzP...

Re: How fighting games use delay-based and rollback netcode (2019)

#60
post #57
post #56

Earlier quoted context omitted.

Could you talk a little about that or point to something that details the overall strategy? I'm considering a similar setup for event sourcing in AWS and DynamoDb with change streams crossed my mind.

Sure, if you don't mind I'll get back to you tomorrow if that's OK.

Hope you don't mind if I listen in - fascinated by this area too :-)
Post reply on HN