Why did western devs like ID have almost perfect netcode figured out since the early 2000s...

Why did western devs like ID have almost perfect netcode figured out since the early 2000s, and yet fighting games from eastern devs always seem to fuck it up in some way?

I don't think I've ever played a fighting game with netcode I was completely satisfied of

Nip programming is notoriously shit.

Also it's id not ID. As in id, ego and superego.

May have to do with that Japanese Internet infrastructure make up for it and the focus on arcades. Also what said.

What the fuck do you think you know about "netcode"? It's a meme term and if you can't speak to specifics in terms of actual programming you're just filthy dumb memer scum.

Okay lemme rephrase it.
Why were western devs able to perfect servers and online play in the early 2000s and nips have yet to figure it out for fighting games?

There. Does that suit your majesty autism?

because UDP is haaard!

(UDP is not actually hard, but you'd have to write some code instead of use pre-canned TCP sockets shit not meant for realtime applications)

if you don't know what that means, basically games that use TCP treat your connection like a web browser connection; rather than just dealing with a missing packet or two, they wait for the network to retransmit.

What do you know about it that leads you to believe online play was ever "perfected"?

Because Quake and any other online FPS or MMO worked and most fighting games don't
Need any more info

How do games with UDP connections deal with packet loss? Do they implement some domain-specific TCP-like system?

There is a reason all games are select-and-mash-numpad WoW clones.

Hey it works

Which fighting game has you bent out of shape so that you believe MMO tier net interactions would be preferable?

Shooting games and fighting games require different styles of net code.

A simple client server infrastructure is good enough for shooting games. Fighting games require precise timing and immediate response which doesn't work well with client server.

Rollback net code which is very resource intensive wasn't viable until recently.

As well Japanese people live near each other and don't require net play so there isn't much incentive for them.

Not only that. Japan has gigabit connections as their standard speed, and we are still at one tenth of that connection.

By the way, how does rollback netcode work? I have read the GGPO article on Wikipedia and it's so vague it's kind of hard to understand what does it actually do. Does it make the game lagged on the client side as well or something by sending the package, then predicting when will it reach the end through previous latency probing, then delay the action until that moment?

Why is this? Obviously, there's a monopoly going on with telecommunications here, (US), but is it enforced by the government, or what? I know they have huge lobbying power, but I'm not aware of anything that's specifically preventing a smaller startup from providing a better service than them and getting us on Japan's level.

You can't just open shop and be an ISP by tomorrow. You WILL have to use networks of existing ISPs which will make you pay dearly in order to force you out of business.

Well, the situation in the US is bad mostly because resources have to be spread in a huge ass surface whereas Japan is highly concentrated. What I can't understand yet is why other countries with different ISP policies aren't as fast. I guess it has to do with Japan being special or something, there should be at least one country capable of matching it, but there isn't.

I see. I'm pretty sure we had anti-trust laws in this country at one point.

Rollback works by constantly saving states in RAM, which requires a lot of memory and processing power.

Any time there's a discrepancy in what your client expects, it "rolls back" to the correct state.

This allows the game to function with a very small input delay without a lot of jittering.

Sweden, Worst Korea and Norway have pretty good Internet infrastructure.

So like, you punch the guy, but you actually didn't punch him because he punched you first but didn't get the packets until then, then your game shows you punching him just before getting cockblocked by the netcode and showing you being punched instead? How is this jitter free? It seems like it would make for some really confusing game.

Nihon-koku doesn't PC.

This is known.

That depends on how much delay you have. The more ping, the more noticeable it will be.

The alternative is either a ton of input lag which makes rollbacks never happen, or no input lag without rollbacks, which makes the game a hellish mess that's virtually impossible to play properly since players will constantly be teleporting all over the place.

You know, netcode will probably be the same in a PS4 and a Windows masheen. It isn't like both of these didn't steal their network stack from BSDs.


I guess the alternatives are worse, but this seems far from being an actual almost lag-free experience, as the Wikipedia page implies.

Until we use a loop hole to get around the speed of light there's always going to be some lag.

For reference the way shooting games net code works is by having the game interpolate movements and the server occasionally sending you positional updates on the players.

It looks smooth because you're seeing whatever the ping is to the server plus the other player's ping behind where they actually are in their game and also maybe some extra client side delay for interpolation smoothness.

That's why when you go behind a corner and you get shot it looks like you were shot through the wall, but in actuality the other player still sees you in the open on their screen because they live in Brazil and have 200 ping.

Theoretically, quantum entanglement could provide near instantaneous communication (that "near" being caused by the polling rate) without eavesdropping, but we're far from that.

I already knew how most FPS worked, more or less. I was curious how fighting games worked since they are the games that require the most optimized netcode, and I was kind of surprised to find out it's basically Flowey's boss fight on steroids. I heard input buffering was also one of the optimization techniques they used to optimize the netcode, although I guess it wasn't initially thought for that.

Are packets in GGPO timestamped? I wonder how does it handle conflicting inputs; timestamps seem like the easiest way around this, but they are fallible, so maybe it uses some Git-like version control tree to check where did the fork happen.

I believe they are time stamped.

Because "developers" are faggots, and production studios don't hire real programmers.

Look at an actually well designed MMO from an even earlier era than WoW: Asheron's Call. The game ran well because Turbine used Microsoft SQL clusters and sub-zoned the open-world data. They had competent programmers, database administrators, and network engineers do the design, programming, and implementation of the server application (ie, business logic). I have no idea what Turbine did on the client-side, but I'm guessing there was some prediction…

I do know a bit about Quake, though. Original Quake (Net Quake) had just TCP/IP and IPX. This sucked ass on dial-up modems over POTS. Eventually a modder named Zoid wrote a customized Quake client called QuakeWorld that implemented client-side-prediction for players stuck on dial-up (which was the vast majority at the time of Quake's popularity). I think eventually id Software hired Zoid, and IIRC Quake 2 had his work incorporated into whichever version of iD-Tech engine that was.

Nip netcode wasn't designed for international use most of the time.

Fighting games are more lag sensitive.

You mean the ones from Freud's batshit insane theories?

You really can't overstate this. Particularly for games that players learn the timing for individual animation frames.

UDP doesnt know or care about packet loss, its solely one way in terms of communication. In a game its a system that relies entirely on good faith from its players to have a good, stable connection. Since theres no acknowledgements going on, a server will have to assume everything it gets (and sends) is the entire picture. Its a 'best effort' system that benefits the weakest connection.

TCP with some QoS is generally better as it is less prone to abuse in this way. Its just a case of striking balance between performance and accuracy. Fighting games heavily prefer the latter. Stutters during a fight suck, but are certainly preferable to dropped inputs or warping.

Well where else would you find the term superego used if not when talking about Freud