Highly configurable and extensible implementation of Rollback Netcode with full asynchronous IO.
Heavily inspired by GGPO.
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 is designed to make incorporating rollback networking (aka. Rollback Netcode) into new and existing games as easy as possible.
NuGet package available:
$ dotnet add package Backdash
Tip
💡 Please check the DOCUMENTATION for usage details.
Title | Link |
---|---|
Terminal | |
Monogame Local | |
Monogame Lobby | |
Godot Lobby | |
Save/Load Replay |
Check the samples on the /samples directory:
There are examples for up to 4 players:
- Simple console game
- Monogame SpaceWar 1
- Monogame SpaceWar with lobby over internet 21
- Godot SpaceWar with lobby over internet
You need to have installed .NET 8 SDK
- Clone this repository.
- Restore tools
- On root directory run:
dotnet tool restore
- On root directory run:
- Building Library (root directory)
- SDK only:
dotnet nuke build --configuration Release
- Alternatively open the solution file
Backdash.sln
on your IDE.
- Alternatively open the solution file
- SDK and samples
dotnet nuke build-samples --configuration Release
.- Alternatively open the solution file
Samples/Backdash.Samples.sln
on your IDE.
- Alternatively open the solution file
- SDK only:
Backdash is available under The MIT License. This means Backdash is free for commercial and non-commercial use.
Attribution is not required, but appreciated.
Footnotes
-
If you are using ARM MacOS you may need the x64 version of .NET SDK to build some samples. ↩ ↩2
-
The sample needs a web server to exchange players addresses. check the sample
README.md
for more information. ↩