@@ -205,6 +205,56 @@ https://www.reddit.com/r/rust\_gamedev/comments/nx79kq/)_
205
205
206
206
## Library & Tooling Updates
207
207
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
+
208
258
### [ erupt]
209
259
210
260
![ erupt logo] ( erupt.svg )
0 commit comments