• Stars
    star
    351
  • Rank 120,906 (Top 3 %)
  • Language
    Rust
  • License
    ISC License
  • Created over 3 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A (almost) 100% pure safe Rust implementation of GGPO-style rollback netcode.

backroll-rs

crates.io Documentation License Discord

Backroll is a pure Rust implementation of GGPO rollback networking library.

Development Status

This is still in an early beta stage. At time of writing, the public facing API is stable, and has undergone limited testing. There may still be notable bugs that have not been found yet.

Differences with the C++ implementation

  • (Almost) 100% pure safe Rust. No unsafe pointer manipulation.
  • Type safety. backroll-rs heavily utilizes generics and associated types to avoid serialization overhead and potentially unsafe type conversions when saving and loading game state.
  • Abstracted transport layer protocols - integrate and use any transport layer library you need. Comes with a raw UDP socket based implementation.
  • Configurable at runtime - Many of the hard-coded constants in GGPO are exposed as configuration parameters during session initialization.
  • Reduced memory usage - Backroll's use of generics potentially shrinks down the sizes of many data types.
  • Vectorized input compression scheme - Backroll utilizes the same XOR + RLE encoding, but it's written to maximize CPU utilization.
  • Multithreaded I/O - All network communications run within an async task pool. I/O polling is no longer manual, nor blocks your game's execution.

Repository Structure

This repo contains the following crates:

  • backroll - the main Backroll interface, intended to be used as the original GGPO.
  • backroll_transport - An isolated set of transport layer abstractions.
  • backroll_transport_udp - A transport layer implementation using raw UDP sockets.
  • backroll_transport_steam - A transport layer implementation using the Steam provided networking utilities. Enables access to the Steam Datagram Relay service.
  • bevy_backroll - a integration plugin for bevy. (Complete, untested).
  • lib - third-party linking dependencies (i.e. Steam) for easier local development

More Repositories

1

bevy_steamworks

A Bevy plugin for integrating with the Steamworks SDK
Rust
206
star
2

FantasyCrescendo

A 2.5D Touhou Platform Fighter, By the fans, for the fans.
C#
107
star
3

HouraiNetworking

Transport level library for peer-to-peer networking with multiple backends for the Unity.
C#
100
star
4

Discord-Game-SDK

A Unity Package Manager compatible version of the Discord Game SDK
C#
24
star
5

bevy_system_graph

Utilities for creating strictly ordered execution graphs of systems for the Bevy game engine.
Rust
24
star
6

Loadables

A Unity3D library for abstracting and simplifying loadable assets and scenes.
C#
23
star
7

HouraiOptions

Simplified and automatic game option creation for Unity3D games.
C#
18
star
8

HouraiLauncher

A cross platform launcher patching solution for video games.
Python
16
star
9

parallel_vec

A leaner structure of arrays implementation with a vec of tuples like public interface
Rust
13
star
10

FantasyCrescendoECS

An experimental port of FantasyCrescendo's systems to Unity's DOTS based ECS.
C#
12
star
11

FantasyCresendoBevy

An experimental, ground-up reimplementation of the core gameplay systems of Fantasy Crescendo in Bevy/Rust.
C++
9
star
12

HouraiLocalization

Localization system for Unity3D.
C#
9
star
13

Unity-Build-Scripts

Travis CI Build Scripts for Hourai Teahouse's Unity3D projects.
Shell
7
star
14

Tapioca

Efficient and cost effective continuous delivery for large binary games.
Go
7
star
15

HouraiConfig

A Unity3D system for effectively authoring and editing global game configurations without use of singletons
C#
6
star
16

bevy_prototype_animation

A preliminary prototype implementation of animation primitives for Bevy
Rust
6
star
17

HouraiLib

A general set of utility scripts used in Hourai Teahouse projects.
C#
5
star
18

houraiteahouse.net

HTML
5
star
19

HouraiOptions.UI

Automatic UI generation for game settings created with HouraiOptions.
C#
3
star
20

HouraiCore

A core utilities library underpinning most Hourai Teahouse projects in Unity 3D.
C#
3
star
21

HouraiSerialization

High performance binary message serialization for Unity 2018.3+.
C#
2
star
22

houraiteahouse.net-frontend

Front-end of http://houraiteahouse.net
JavaScript
2
star
23

FantasyCrescendoRedux

An Experimental Rewrite of Fantasy Crescendo from the ground up to support various types of net-enabled gameplay.
C#
2
star
24

houraiteahouse.github.io

Documentation site for Hourai Teahouse
HTML
1
star
25

GameConsole

C#
1
star
26

houraiteahouse.net-backend

The backend of http://houraiteahouse.net
Python
1
star
27

houraiteahouse.net-prod

The statically built website for Hourai Teahouse. Source code: https://github.com/HouraiTeahouse/houraiteahouse.net
HTML
1
star
28

HouraiDeploy

Webhook based deployment to a given host.
Python
1
star
29

houraiteahouse.net-functions

Google Cloud Functions running as a light backend for houraiteahouse.net
JavaScript
1
star
30

SmashBrew

A customizable engine for creating games similar to Nintendo's Super Smash Brothers series.
C#
1
star
31

KeyboardInputTest

A Unity3D project to debug keyboard input issues.
C#
1
star
32

houraiteahouse.net-test

The statically built test website for Hourai Teahouse. Source code: https://github.com/HouraiTeahouse/houraiteahouse.net
HTML
1
star
33

FantasyCrescendo-Old

Old Implementation of Fantasy Crescendo prior to 02/03/2018
C#
1
star