3 ms·
If the randomness is deterministic doesn't that mean players could peek into the future?
by paulryanrogers 4y ago
If the randomness is deterministic doesn't that mean players could peek into the future?
- Centigonal 4y agoGenerally (I hope I get this explanation right), the PRNGs on all players' computers are the same algorithm, with the same seed, executing the same player commands in the same order. So as soon as the game starts, you can predict what all future calls to random() will return. However, you can't predict the other players' actions, and those actions can insert an arbitrary (and unpredictable) number of random() calls between now and when your next action executes, so practically there is no gameplay advantage you can get from that avenue (AFAIK).
- taberiand 4y agoI'm gonna take an uneducated guess that though the simulation is in lockstep, the order of inputs from all players is not known ahead of time so you can't peek too far. Though maybe a cheat engine could simulate a few branches of possible inputs a few steps ahead and adjust inputs when it discovers split-second advantages?
- hot_gril 4y agoEveryone waits for your client's next step. Your client can basically pause the game whenever it wants, giving you time to do something. But there are bigger exploits. IIRC, the client sends separate actions for buying a unit/tech/building and paying resources, and the other clients don't enforce that they go together. This allows malicious clients to buy without paying. It's been seen a few times even in the ranked mode of the Definitive Edition remake. https://www.reddit.com/r/aoe2/comments/fjjudp/cheaters_are_a_thing_in_de_apparently/ https://www.reddit.com/r/aoe2/comments/fjjudp/cheaters_are_a... This way of doing things made sense for the time, and the execution was impressive. It was pretty reliable, nobody wanted to cheat anyway, and yes lag was a big problem but there wasn't another good way to do it back then. Nowadays they should have something else IMO.
- ComputerGuru 4y ago> Nowadays they should have something else IMO. Finally found a genuine use for the blockchain, since the server is only used for the lobby! Mine virtual AoE gold and record it in the distributed ledger. Primitive path finding is also AI, so now you just need some investors!
- hot_gril 4y agoDE seems to use a relay server. Old version relied on P1 setting up port forwarding and always being present in the game, not an issue anymore.
- lolinder 4y agoThat problem doesn't seem inherent to the model, it's a flaw in the selection of client steps. Is there any reason transactions like building and paying couldn't be atomic?
- hot_gril 4y agoI don't know why it's that way. My guess would be complexity. Yeah, they could fix that later, but they can't fix the fog of war cheat, which would also be pretty powerful.
- Emjayen 4y agoThe problem is simply the lack of validation -- I detailed it a bit below in my top-level comment. The only exploits that are inherently applicable in the case of a simultaneous deterministic simulation model are those of the information-revealing class (e.g, "maphack"). This is where a standard AH system comes in.
- bluescrn 4y agoDeterministic multiplayer has an assortment of cheating problems that weren't really a big deal in the early days of online multiplayer, but certainly are now, in the days of ranking systems and very competitive gaming. The obvious one is that the client knows where everything is on the map, even when hidden by fog-of-war - so client-side hacks can reveal that. A hacked client can easily desync the game too, or stall it and cause it to time out if the player is losing.
- Jare 4y agoYes - and this can be AWESOME. In a deterministic engine, anything not affected by player input can be forecast accurately - by the computer, not the human user. For NBA Inside Drive 2000, I developed all the ball physics to be deterministic and "reasonably" accurate (25 years ago, in a world without physics engines). This meant that after a player made a shot and the ball left their hands, the trajectory, scoring or bouncing off the rim, was purely controlled by deterministic physics. This in turn meant that we could foresee what was going to happen, and feed the player AI with that while the ball was in flight. Obvious use was to move characters with high rebounds stats towards the place where the ball would bounce after not scoring, so they're more likely to pick the rebound. [edit: for shooting the ball, the instant the ball would leave the player's hands I computed the perfect trajectory to hit a shot, and then based on the player stats, I'd nudge the trajectory off center. It was then purely up to the physics to determine if the ball went in or what]
- qikInNdOutReply 4y agoYou can reseed with player inputs every cycle
- Emjayen 4y agoNot to any meaningful degree -- inputs (from humans) permutate the state. You can, however, compute say the initial world state, revealing the map/resources/ect. Ofcourse in this case you'd may aswell just look for some sort of maphack.