8000 N23: backroll-rs and GGRS (#685) · ErnWong/rust-gamedev.github.io@321f29b · GitHub
[go: up one dir, main page]

Skip to content

Commit 321f29b

Browse files
N23: backroll-rs and GGRS (rust-gamedev#685)
Co-authored-by: Joe Clay <27cupsofcoffee@gmail.com>
1 parent 7b65c8c commit 321f29b

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

content/news/023/index.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,56 @@ https://www.reddit.com/r/rust\_gamedev/comments/nx79kq/)_
205205

206206
## Library & Tooling Updates
207207

208+
### [backroll-rs] and [GGRS]
209+
210+
[backroll-rs] ([Discord](https://discord.gg/VuZhs9V),
211+
[crates.io](https://crates.io/crates/backroll)) by [@james7132] and
212+
[GGRS]([crates.io](https://crates.io/crates/ggrs)) by [@g_schup] are pure
213+
Rust implementations of the [GGPO] rollback networking library.
214+
215+
![Evo Moment 37](rollback.jpg)
216+
_[Evo Moment 37](https://www.youtube.com/watch?v=JzS96auqau0):
217+
Only offline or with rollback!_
218+
219+
Rollback networking is a peer-to-peer network technique designed to hide
220+
network latency in fast-paced games with precise inputs. Traditional techniques
221+
account for network transmission time by delaying the game execution, resulting
222+
in a sluggish game-feel. Rollback uses input prediction and speculative
223+
execution instead. Upon receiving inputs from remote clients, resimulation of
224+
incorrect game states occurs. This allows for gameplay that "feels just
225+
like offline". The open source standard for rollback netcode [GGPO] is used
226+
in successful games like Skullgirls, Guilty Gear XX Accent Core +R or
227+
Fightcade. For further explanation about rollback,
228+
[click here](https://ki.infil.net/w02-netcode.html).
229+
230+
Two projects in Rust were independently created to provide a working
231+
implementation as well as helpful resources for developers.
232+
backroll-rs features an added abstraction for the transportation layer and
233+
also provides a bevy plugin, [bevy-backroll]. GGRS replaces the
234+
C-style callback API of GGPO with a simpler, more understandable control flow.
235+
The authors of both libraries recommend backroll-rs for developement,
236+
as it is currently more actively collaborated on.
237+
GGRS is recommended as a learning recource and entry point,
238+
with a plethora of internal documentation and explanation.
239+
240+
The main requirement to make use of both presented libraries is determinism
241+
in your game execution. Resimulation requires that the result of progressing
242+
the game state depending on the given inputs yield the exact same results
243+
every time. Additionally, you need to be able to load, save and progress
244+
your gamestate without rendering the outcome.
245+
246+
If you are interested in integrating rollback networking into your game or
247+
just want to chat with other rollback developers (not limited to Rust),
248+
check out the [GGPO Developers Discord]!
249+
250+
[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs
251+
[bevy-backroll]: https://github.com/HouraiTeahouse/backroll-rs/tree/main/bevy_backroll
252+
[GGPO Developers Discord]: https://discord.gg/8FKKhCRCCE
253+
[GGRS]: https://github.com/gschup/ggrs
254+
[GGPO]: https://www.ggpo.net/
255+
[@g_schup]: https://twitter.com/g_schup
256+
[@james7132]: https://twitter.com/james7132
257+
208258
### [erupt]
209259

210260
![erupt logo](erupt.svg)

content/news/023/rollback.jpg

145 KB
  • < 3DD7 li class="prc-SegmentedControl-Item-7Aq6h" data-selected="true">
Loading

0 commit comments

Comments
 (0)
0