Remix.run Logo
yohannesk 2 days ago

I am curious as a non game developer, are these types of games deterministic? If so if I send to the server that I moved huge units to attack another huge units, can the server determine what the end will be? Why do we face a network issue?

matsemann a day ago | parent | next [-]

This article is a classic, 1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond

https://www.gamedeveloper.com/programming/1500-archers-on-a-...

Edit: original where the pictures work https://web.archive.org/web/20180719170411/https://www.gamas...

> Rather than passing the status of each unit in the game, the expectation was to run the exact same simulation on each machine, passing each an identical set of commands that were issued by the users at the same time. The PCs would basically synchronize their game watches in best war-movie tradition, allow players to issue commands, and then execute in exactly the same way at the same time and have identical games.

IshKebab a day ago | parent [-]

Which was great until there's a bug and it just says "sync error" and your 3 hour game is gone.

immibis a day ago | parent | next [-]

When this happens in Factorio, the game pauses, one player (the server?) saves the game and sends it to all other players who load the savefile and the game resumes when that's done. It's not a nice experience, but it's a lot better than "you can't play today, goodbye!"

doublerabbit a day ago | parent | prev [-]

Same with RA2/YR.

All it took was for some salty player to activate a trainer or prez IFS and kill the game.

I like that the lobbies were ran over IRCd.

Dreamforge IRCd with the server password being "supersecret".

HideousKojima a day ago | parent | prev | next [-]

Many (not all) RTS games use a networking method called lockstep synchronization that requires the gameplay to be deterministic, but has its own downsides. One of those being that if one player lags, everyone lags. I know AOE 1 and 2 use it, and I assume 3 as well

NortySpock a day ago | parent | next [-]

For Beyond All Reason, it seems the Spring/Recoil engine will eventually decide to "close the action window", so that if one player is lagging hard, they simply submitted no actions for that "round" and the rest of the players keep going.

I know because I've gotten to the point in the late game where my computer can't simulate at realtime, and I can no longer control my units, but everyone else keeps playing.

Conveniently you can even still sort of chat in this state, and ask a teammate to assume control of your army on your behalf.

littlestymaar a day ago | parent | prev [-]

The good thing being that you get replay for free.

Panzer04 a day ago | parent | next [-]

It's got downsides. There's often no way to recover game state without actually running the simulation, and often no way to go backwards either. If you miss a moment in the replay you gotta watch the whole damn thing all over gain.

gsich a day ago | parent | prev [-]

You get that with any type of networking.

arlort a day ago | parent | prev [-]

They can be deterministic but I think you might be confused about the kind of game

In RTS games like 0AD or AoE you don't just send a single huge unit to attack and wait for the result, you send many tens of individual units near enemy units, then the "battle" goes on in real time and you can micromanage units to influence the outcome. You can't just simulate it on the server because the server can't simulate the thought process of the players

vasco a day ago | parent [-]

AoE2 battles are all about the micromanagement. Last minute splitting the onslaught of trash units against your opponents treb micro shot can change everything.

Kind of old but lots of micro tactics per unit here: https://youtu.be/hjUgisPD_C4?si=F-UvzDOTsWRZhZSq