{"id":13435511,"url":"https://github.com/lucasteles/Backdash","last_synced_at":"2025-03-18T11:31:26.165Z","repository":{"id":207198893,"uuid":"690212135","full_name":"lucasteles/Backdash","owner":"lucasteles","description":"C# Rollback network SDK","archived":false,"fork":false,"pushed_at":"2025-03-12T01:20:30.000Z","size":8102,"stargazers_count":116,"open_issues_count":11,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-12T02:25:27.813Z","etag":null,"topics":["fighting-game","gamedev","ggpo","library","multiplayer","netcode","network","rollback","sdk","versus"],"latest_commit_sha":null,"homepage":"https://lucasteles.github.io/Backdash/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lucasteles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"lucasteles"}},"created_at":"2023-09-11T18:49:26.000Z","updated_at":"2025-03-12T01:12:29.000Z","dependencies_parsed_at":"2024-06-10T17:39:01.214Z","dependency_job_id":"3adf815c-3b15-493e-ad1d-e76039b0f11e","html_url":"https://github.com/lucasteles/Backdash","commit_stats":null,"previous_names":["lucasteles/nggpo","lucasteles/backdash"],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasteles%2FBackdash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasteles%2FBackdash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasteles%2FBackdash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasteles%2FBackdash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucasteles","download_url":"https://codeload.github.com/lucasteles/Backdash/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244211001,"owners_count":20416567,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fighting-game","gamedev","ggpo","library","multiplayer","netcode","network","rollback","sdk","versus"],"created_at":"2024-07-31T03:00:36.411Z","updated_at":"2025-03-18T11:31:21.155Z","avatar_url":"https://github.com/lucasteles.png","language":"C#","funding_links":["https://github.com/sponsors/lucasteles"],"categories":["Networking"],"sub_categories":["Very old projects"],"readme":"[![CI](https://github.com/lucasteles/Backdash/actions/workflows/ci.yml/badge.svg)](https://github.com/lucasteles/Backdash/actions/workflows/ci.yml)\n[![Nuget](https://img.shields.io/nuget/v/Backdash.svg?style=flat)](https://www.nuget.org/packages/Backdash)\n\n![](https://raw.githubusercontent.com/lucasteles/Backdash/site/test_report_badge.svg)\n![](https://raw.githubusercontent.com/lucasteles/Backdash/site/lines_badge.svg)\n![](https://img.shields.io/badge/Lang-C%23-green)\n![](https://raw.githubusercontent.com/lucasteles/Backdash/site/dotnet_version_badge.svg)\n![https://editorconfig.org/](https://img.shields.io/badge/style-EditorConfig-black)\n\n# Backdash 🕹️\n\n[![](assets/images/banner.png)](https://github.com/lucasteles/Backdash)\n\nHighly configurable and extensible implementation\nof [Rollback Netcode](https://en.wikipedia.org/wiki/Netcode#Rollback) with full asynchronous IO.\n\n\u003e **Heavily** inspired by [GGPO](https://github.com/pond3r/ggpo).\n\n## Overview\n\nTraditional techniques account for network transmission time by adding delay to a players input, resulting in a\nsluggish, laggy game-feel. Rollback networking uses input prediction and speculative execution to send player inputs to\nthe game immediately, providing the illusion of a zero-latency network. Using rollback, the same timings, reactions,\nvisual and audio queues, and muscle memory your players build up playing offline will translate directly\nonline. [Backdash](https://github.com/lucasteles/Backdash) is designed to make incorporating rollback networking (_aka.\nRollback [Netcode](https://words.infil.net/w02-netcode.html)_) into new and existing games as easy as possible.\n\n## Getting started\n\n[NuGet package](https://www.nuget.org/packages/Backdash) available:\n\n```ps\n$ dotnet add package Backdash\n```\n\n\u003e [!TIP]\n\u003e 💡 Please check the **[DOCUMENTATION](https://lucasteles.github.io/Backdash/docs/introduction)** for usage details.\n\n### Demos:\n\n| Title           | Link                                                                                                   |\n|-----------------|--------------------------------------------------------------------------------------------------------|\n| Terminal        | [![Terminal](https://img.youtube.com/vi/n-3G0AE5Ti0/default.jpg)](https://youtu.be/n-3G0AE5Ti0)         |\n| Monogame Local  | [![Monogame Local](https://img.youtube.com/vi/JYf2MemyJaY/default.jpg)](https://youtu.be/JYf2MemyJaY)  |\n| Monogame Lobby  | [![Monogame Online](https://img.youtube.com/vi/LGM_9XfzRUI/default.jpg)](https://youtu.be/LGM_9XfzRUI) |\n| Godot Lobby     | [![Godot Online](https://img.youtube.com/vi/8M8QnTiJZzA/default.jpg)](https://youtu.be/8M8QnTiJZzA) |\n| Save/Load Replay| [![Save and load Replay](https://img.youtube.com/vi/iSbOJpLCx5M/default.jpg)](https://youtu.be/iSbOJpLCx5M) |\n\n## Samples\n\nCheck the samples on the [/samples](https://github.com/lucasteles/Backdash/tree/master/samples) directory:\n\nThere are examples for up to 4 players:\n\n- [Simple console game](https://github.com/lucasteles/Backdash/tree/master/samples/ConsoleGame)\n- [Monogame SpaceWar](https://github.com/lucasteles/Backdash/tree/master/samples/SpaceWar) [^2]\n- [Monogame SpaceWar with lobby over internet](https://github.com/lucasteles/Backdash/tree/master/samples/SpaceWar.Lobby) [^1][^2]\n- [Godot SpaceWar with lobby over internet](https://github.com/lucasteles/BackdashGodotSample)\n\n[^1]: The sample needs a [web server](https://github.com/lucasteles/Backdash/tree/master/samples/LobbyServer) to\nexchange players addresses. check the sample `README.md` for more information.\n\n[^2]: If you are using *ARM* *MacOS*\nyou [may need the x64 version of .NET SDK](https://community.monogame.net/t/tutorial-for-setting-up-monogame-on-m1-m2-apple-silicon/19669)\nto build some samples.\n\n## Building from source\n\nYou need to have installed [.NET 8 SDK](https://dotnet.microsoft.com/en-us/download)\n![](https://raw.githubusercontent.com/lucasteles/Backdash/site/dotnet_version_badge.svg)\n\n1. Clone this repository.\n2. Restore tools\n   - On root directory run: `dotnet tool restore`\n3. Building Library (_root directory_)\n    - SDK only: `dotnet nuke build --configuration Release`\n        - Alternatively open the solution file `Backdash.sln` on your IDE.\n    - SDK and samples `dotnet nuke build-samples --configuration Release`.\n        - Alternatively open the solution file `Backdash.Samples.sln` on your IDE.\n\n## Licensing\n\n[Backdash](https://github.com/lucasteles/Backdash) is available under The MIT License. This\nmeans [Backdash](https://github.com/lucasteles/Backdash) is free for commercial and non-commercial use.\n\nAttribution is not required, but appreciated.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasteles%2FBackdash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucasteles%2FBackdash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasteles%2FBackdash/lists"}