mirror of
https://github.com/genxium/DelayNoMore
synced 2024-12-26 11:48:56 +00:00
Updated README.
This commit is contained in:
parent
89c31e8944
commit
d1f8a58154
15
README.md
15
README.md
@ -2,18 +2,19 @@
|
|||||||
|
|
||||||
This project is a demo for a websocket-based rollback netcode inspired by [GGPO](https://github.com/pond3r/ggpo/blob/master/doc/README.md).
|
This project is a demo for a websocket-based rollback netcode inspired by [GGPO](https://github.com/pond3r/ggpo/blob/master/doc/README.md).
|
||||||
|
|
||||||
_(the following gifs are sped up to ~1.5x for file size reduction, kindly note that animations are resumed from a partial progress)_
|
The following video is recorded over INTERNET using an input delay of 4 frames and it feels SMOOTH when playing! Please also checkout [this demo video](https://pan.baidu.com/s/1_DAEuE66s5Obf2GwtVul4Q?pwd=mfpq) to see how this demo carries out a full 60fps synchronization with the help of _batched input upsync/downsync_ for satisfying network I/O performance.
|
||||||
|
|
||||||
![gif_demo](./charts/internet_fireball_wallmoveset_spedup.gif)
|
![gif_demo](./charts/internet_fireball_wallmoveset_spedup.gif)
|
||||||
|
|
||||||
![gif_demo](./charts/jump_sync_spedup.gif)
|
![gif_demo](./charts/jump_sync_spedup.gif)
|
||||||
|
|
||||||
Please also checkout [this demo video](https://pan.baidu.com/s/1_DAEuE66s5Obf2GwtVul4Q?pwd=mfpq) to see how this demo carries out a full 60fps synchronization with the help of _batched input upsync/downsync_ for satisfying network I/O performance.
|
All gifs are sped up to ~1.5x for file size reduction, kindly note that animations are resumed from a partial progress!
|
||||||
|
|
||||||
The video mainly shows the following features.
|
# Notable Features
|
||||||
- The backend receives inputs from frontend peers and broadcasts back for synchronization.
|
- Backend dynamics toggle via [Room.BackendDynamicsEnabled](https://github.com/genxium/DelayNoMore/blob/v0.5.2/battle_srv/models/room.go#L813)
|
||||||
- The game is recovered for a player upon reconnection.
|
- Recovery upon reconnection (only if backend dynamics is ON)
|
||||||
- Both backend(Golang) and frontend(JavaScript) execute collision detection and handle collision contacts by the same algorithm. The backend dynamics is togglable by [Room.BackendDynamicsEnabled](https://github.com/genxium/DelayNoMore/blob/v0.5.2/battle_srv/models/room.go#L813), but **when turned off the game couldn't support recovery upon reconnection**.
|
- Automatically correction for "slow ticker", especially "active slow ticker" which is well-known to be a headache for input synchronization
|
||||||
|
- Frame data logging toggle for both frontend & backend, useful for debugging out of sync entities when developing new features
|
||||||
|
|
||||||
_(how input delay roughly works)_
|
_(how input delay roughly works)_
|
||||||
|
|
||||||
@ -22,6 +23,8 @@ _(how input delay roughly works)_
|
|||||||
_(how rollback-and-chase in this project roughly works)_
|
_(how rollback-and-chase in this project roughly works)_
|
||||||
|
|
||||||
![rollback_and_chase_intro](./charts/RollbackAndChase.jpg)
|
![rollback_and_chase_intro](./charts/RollbackAndChase.jpg)
|
||||||
|
|
||||||
|
(By use of [GopherJs](https://github.com/gopherjs/gopherjs), the frontend codes for dynamics are now automatically generated)
|
||||||
![floating_point_accumulation_err](./charts/AvoidingFloatingPointAccumulationErr.jpg)
|
![floating_point_accumulation_err](./charts/AvoidingFloatingPointAccumulationErr.jpg)
|
||||||
|
|
||||||
# 1. Building & running
|
# 1. Building & running
|
||||||
|
Loading…
Reference in New Issue
Block a user