Jump to content


Community Members
  • Content Count

  • Joined

  • Last visited

Community Reputation

2 Neutral

About skeletonzombie

  • Rank

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Subsuming as I have understood it so far: on every computer, a complete simulation of all aspects of the game is run. all 500ms this is synced checked for being in-sync between the computers. what happens in between the sync is called a 'turn'. while a turn is being simulated, each player can accumulate new commands. but these commands do not affect the current turn, they are synced to everybody on the next turn-wrap, and only after that they affect the simulation. currently the AI of AI-players is a set of deterministic scripts which is just run on every computer, so syncing is not needed for their commands. currently the state of the AI-players' AI itself is not saved in savegames. even the AI's initial state is not synced between the computers, it is just the same everywhere because it is seeded in the same way everytime. Question: It is possible to rejoin multiplayer games (without AI). Does the game halt while somebody is disconnected? Because if the game would continue without the player, the game-state would have to be completely synced-in from another player on rejoin. (since all players have the same simulation, it doensnt matter who would send it) actions - replay, all non-deterministic information, like human players' commands, has been saved, so that the whole game can literally be resimulated. since all commands for all players are already available, the whole thing can be acted out on a single computer, making turn-wraps trivial. - savegame, loading this should behave as if it was the first turn of a new game, but with initial state already prepaired, i.e. loaded from the savegame instead of being generated. [this currently misses the state of the AI-players' AI] - syncing on turn-wrap - check whether simulation is in sync, this is needed - against cheating or bugs - because fpu operations can differ depending on hardware architechture - everybody sends his commands for the next turn to everybody else, so the simulation stays exactly the same on all computers. - start game - communicate initial parameters/state to all players, so the simulation is in sync for the first turn [How is this currently handled? e.g. at least the winning conditions must be somehow synced?] - resolve out-of-sync, [not implemented] e.g. by syncing the state of the host to everybody else or similar - rejoin (see question above)
  2. Then the initial AI state is somehow synced from the host to the other human players? Or is it just the same because the initial seed for the AI is the same always?
  3. Oh wait ... then currently playing multiplayer with AI is not possible?
  4. ... and transmitting the AI parameters/state requires to serialize it. Ok, now I understand that part, too. Thanks
  5. But then a loaded multiplayer savegame could also just start with 'brainwashed' (==new) AIs in the respective player slots, like for a single player save game. And rejoining human players would be solved by (so the game does not start/continue before all human players are available), where the large part to do is Or do I miss sth?
  6. Ok. Is this strategy-data very complicated/large? Or is it just that nobody has written the serialization code so far? -- Does every unit has its own AI? And not just the AI-Player has its AI?
  7. I don't understand why it would act differently. What details are not saved for the AI making it non-deterministic in this respect?
  8. But singleplayer save games work with an AI, right? And it doesnt do a full replay on loading, or does it? The thing I'm wondering most about is, I would expect that the game could be frozen at a turn-wrap, even for multiplayer games. Then that state is encoded and saved. For the AI it should be sufficient to save the states of the RNGs + where all units are etc
  9. I've just read through the discussion for ticket https://trac.wildfiregames.com/ticket/1088 Isn't loading a multiplayer saved game equivalent to setting up a new multiplayer game? All players choose there slots, and when complete, the game will start, but instead of generating a new game, the one from the save is used. The parameters and world data is transmitted from the host (has the save file) to the other players, and then the game will start as usual.
  10. ok, so the difference in the computation (fpu) can lead to an out-of-sync, detected on the next synchronization. -- Is it done in this order? (multiplayer): 1: players do their commands; meanwhile simulation runs based on the state of the last turn 2: turn wrap, synchronization (serialization of commands), updating the parameters for the simulation 3: now the simulation runs with the new state and again players can make their commands (~ 1) In other words, player commands effect the simulation only after next synchronization?
  11. I'm currently trying to understand how synchronization is done in 0ad. When two players try to pick up a crate (ship-wreck), how is it negotiated who gets it?
  12. But what about Gaia then? Isnt this controlled/computed by the host? These effects, also like the rising water level, could simply be actions of some Gaia player-like entity. I see the problem now, the host must be trustable for this, so for rated games a dedicated host would be needed.
  13. Hello Friends! About regrowing resources, I would like to discuss how this can be implemented -- or what of it is implemented already. I would like to understand how your engine works with respect to these 'world mechanics'. 1: I think these world update actions belong to the mechanics that the host of a game should act out. it should be updated every few moments. 2: If the host is responsible for this, then the host -- which sets up the parameters of the launched game -- could use its own scripts for this. This would avoid the endless discussions about how berry bushes or trees would regenerate in detail and leave it up to the host of a game to specify it. Just provide some default scripts from a drop down list or so. My questions are now: q1: Do you already have such 'host bound world mechanics' implemented in the game? e.g. birds flying around or so? q2: If yes, how is this split into engine-part (C++?) and script-part (javascript?) in 0ad. More details: There are certainly many nice map-bound or game-bound effects possible, which would simply be registered in a list of actions that is then performed every second or so by the host. Love+Greetings
  • Create New...