Please correct me if I’m wrong, but doesn’t the game have to be deterministic to properly integrate rollback? Different simulations on each client would cause problems, no?
I’m no expert in UE4’s networking architecture, but by default it seems to be delay-based, which is even the same issue with netcode for racing games/vehicles. And it seems nobody has been able to properly solve that problem yet either.
You can see in most of the fighting games that use UE4, they go delay based as well. Those who attempt rollback implementations don’t work well (SFV).
The only exception I know of in UE is MK11, which IIRC, uses a modified version of GGPO. And I believe that’s UE3 and not 4?
If it’s not overly challenging, I wish there was some examples out there of how to do it. Of course, certain things might be game-specific. But a good example could get developers started on how to get it working with one game example.
Netcode, in general, doesn’t seem to be very documented on UE4 except for first/3rd person action games. At least, in ways that are not using delay-based netcode. But delay based simply doesn’t feel smooth.
Around ~8 years ago, I had worked on netcode on Unity for an authoritative server with corrections that were pretty accurate. But finding documentation for pulling off the same here seems much more difficult, as all the genre’s I’ve looked in to have issues either with simulations, or they’re built to be delay based by default.
I honestly don’t have practice with GGPO so I can’t comment on that.
But yes, I do believe the simulation is a lot of the issue (again, same as we see in the vehicle systems).
Why would I want it? That’s an easy answer: Simply because GGPO (or solid rollback netcode) is the only true option to make fighting games that are playable without being frustrating.
MK11 is the best example of pulling it off in UE, and you can see that they use top-tier AAA graphics, and runs on high graphics even on mid-end systems without ridiculous CPU requirements. So they certainly were able to do it without taking up too much CPU.
At the end of the day, in my opinion, netcode seems to be the biggest area that UE4 is lacking. Of course, the genres of games I’m most interested in (vehicle, fighting, and beat em up) are all lacking with UE4’s built in netcode, and there’s no decent packages which solve the problem yet.
That’s all I truly hope for: Decent netcode for any (or all) of those genres. I’m just surprised nobody has been able to solve these problems by now, and if individual developers aren’t able to solve it, I’m surprised they haven’t come together in the community to solve these problems. Although that might be a bit idealistic.
UE4 is a pleasure to use in most areas. But it seems everything I try to work on in terms of multiplayer games… The time is spent fighting with the engine to get the netcode working well, rather than actually developing the game.