https://github.com/lucasteles/backdash
C# Rollback network SDK
https://github.com/lucasteles/backdash
fighting-game gamedev ggpo library multiplayer netcode network rollback sdk versus
Last synced: 10 months ago
JSON representation
C# Rollback network SDK
- Host: GitHub
- URL: https://github.com/lucasteles/backdash
- Owner: lucasteles
- License: mit
- Created: 2023-09-11T18:49:26.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-03-27T18:38:43.000Z (10 months ago)
- Last Synced: 2025-03-30T02:05:00.971Z (10 months ago)
- Topics: fighting-game, gamedev, ggpo, library, multiplayer, netcode, network, rollback, sdk, versus
- Language: C#
- Homepage: https://lucasteles.github.io/Backdash/
- Size: 8.32 MB
- Stars: 121
- Watchers: 5
- Forks: 4
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
[](https://www.nuget.org/packages/Backdash)


[](https://github.com/lucasteles/Backdash/actions/workflows/ci.yml)


# Backdash đšī¸
[](https://github.com/lucasteles/Backdash)
Highly configurable and extensible implementation
of [Rollback Netcode](https://en.wikipedia.org/wiki/Netcode#Rollback) with full asynchronous IO.
> **Heavily** inspired by [GGPO](https://github.com/pond3r/ggpo).
## Overview
Traditional techniques account for network transmission time by adding delay to a players input, resulting in a
sluggish, laggy game-feel. Rollback networking uses input prediction and speculative execution to send player inputs to
the game immediately, providing the illusion of a zero-latency network. Using rollback, the same timings, reactions,
visual and audio queues, and muscle memory your players build up playing offline will translate directly
online. [Backdash](https://github.com/lucasteles/Backdash) is designed to make incorporating rollback networking (_aka.
Rollback [Netcode](https://words.infil.net/w02-netcode.html)_) into new and existing games as easy as possible.
## Getting started
[NuGet package](https://www.nuget.org/packages/Backdash) available:
```ps
$ dotnet add package Backdash
```
> [!TIP]
> đĄ Please check the **[DOCUMENTATION](https://lucasteles.github.io/Backdash/docs/introduction)** for usage details.
### Demos:
| Title | Link |
|------------------|-------------------------------------------------------------------------------------------------------------|
| Terminal | [](https://youtu.be/n-3G0AE5Ti0) |
| Monogame Local | [](https://youtu.be/JYf2MemyJaY) |
| Monogame Lobby | [](https://youtu.be/LGM_9XfzRUI) |
| Godot Lobby | [](https://youtu.be/8M8QnTiJZzA) |
| Save/Load Replay | [](https://youtu.be/iSbOJpLCx5M) |
## Samples
Check the samples on the [/samples](https://github.com/lucasteles/Backdash/tree/master/samples) directory:
There are examples for up to 4 players:
- [Simple console game](https://github.com/lucasteles/Backdash/tree/master/samples/ConsoleGame)
- [Monogame SpaceWar](https://github.com/lucasteles/Backdash/tree/master/samples/SpaceWar) [^2]
- [Monogame SpaceWar with lobby over internet](https://github.com/lucasteles/Backdash/tree/master/samples/SpaceWar.Lobby) [^1][^2]
- [Godot SpaceWar with lobby over internet](https://github.com/lucasteles/BackdashGodotSample)
[^1]: The sample needs a [web server](https://github.com/lucasteles/Backdash/tree/master/samples/LobbyServer) to
exchange players addresses. check the sample `README.md` for more information.
[^2]: If you are using *ARM* *MacOS*
you [may need the x64 version of .NET SDK](https://community.monogame.net/t/tutorial-for-setting-up-monogame-on-m1-m2-apple-silicon/19669)
to build some samples.
## Building from source
You need to have installed [.NET 8 SDK](https://dotnet.microsoft.com/en-us/download)

1. Clone this repository.
2. Restore tools
- On root directory run: `dotnet tool restore`
3. Building Library (_root directory_)
- SDK only: `dotnet nuke build --configuration Release`
- Alternatively open the solution file `Backdash.sln` on your IDE.
- SDK and samples `dotnet nuke build-samples --configuration Release`.
- Alternatively open the solution file `Samples/Backdash.Samples.sln` on your IDE.
## Licensing
[Backdash](https://github.com/lucasteles/Backdash) is available under The MIT License. This
means [Backdash](https://github.com/lucasteles/Backdash) is free for commercial and non-commercial use.
Attribution is not required, but appreciated.