GitPedia
proepkes

proepkes/UnityLockstep

Deterministic Lockstep with clientside prediction and rollback

5 Releases
Latest: 7y ago
Cleanup & Refactoring, Layered-architecture, Server-UI0.0.5LatestPre-release
proepkesproepkes·7y ago·February 14, 2019
GitHub

This release contains mostly refactorings. The project is now split into 3 layers: Core: Contains Entities and Components. It also provides an infrastructure for the upper layer to add features into. The infrastructure (class: World) allows to rollback changes that were made by the features. Game: Contains features that change the state of the simulation. For example: spawning & moving game-entities. Network: Handles network traffic. Provides a networked command-queue which is consumed by the simulation. In addition this release includes a method to dump all commands to a file. A dump can be used for replaying games or debugging a desync. Currenty dumps are written to "C:\Log" (make sure the directory exists before creating a dump). Also this release contains a prototype server UI, see Wiki for more information.

Change-rollback working0.0.4Pre-release
proepkesproepkes·7y ago·February 4, 2019
GitHub

📋 Changes

  • All active game-entities
  • All input-entities
  • A serialized log that lets you replicate a whole game with input simulation as it was ingame, see the dump-tests for an example.
Clientside prediction and rollback, navigation disabled0.0.3Pre-release
proepkesproepkes·7y ago·January 29, 2019
GitHub

This release splits the server into a separate project so development on the simulation can continue while the server is running. This release adds a first prototype for clientside prediction and rollback. The client runs the simulation with local commands. If remote input arrives, the simulation will roll back to the remote frame and fast forwards with the new input to the last local frame. Rollback only works for spawning entities so far, navigation feature is therefore disabled and will come back in the next release.

Buffering commands0.0.2Pre-release
proepkesproepkes·7y ago·January 27, 2019
GitHub

📋 Changes

  • rolling back to the received input and fast forward the simulation to the current local tick
  • the buffer from the server was removed but should be added again because: if a client receives an input he should be sure that it contains the input from all other clients for the given frame. this way the prediction for one frame can only miss once
Initial Release0.0.1Pre-release
proepkesproepkes·7y ago·January 25, 2019
GitHub

A first working protoype. Frames get executed as soon as they arrive, which works for local network, Lag and packetloss is directly noticeable due to the stuttering simulation.