{"id":14155368,"url":"https://github.com/gschup/ggrs","last_synced_at":"2025-12-24T07:37:13.535Z","repository":{"id":42970074,"uuid":"357564182","full_name":"gschup/ggrs","owner":"gschup","description":"GGRS is a reimagination of GGPO, enabling P2P rollback networking in Rust. Rollback to the future!","archived":false,"fork":false,"pushed_at":"2024-04-23T15:29:36.000Z","size":1378,"stargazers_count":482,"open_issues_count":12,"forks_count":24,"subscribers_count":12,"default_branch":"main","last_synced_at":"2024-04-24T17:32:48.049Z","etag":null,"topics":["gamedev","ggpo","networking","rollback","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gschup.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2021-04-13T13:30:48.000Z","updated_at":"2024-05-29T17:44:11.412Z","dependencies_parsed_at":"2024-05-29T17:44:07.600Z","dependency_job_id":"2590fa53-f450-4625-a4e5-5ad8bfa3011f","html_url":"https://github.com/gschup/ggrs","commit_stats":{"total_commits":589,"total_committers":8,"mean_commits":73.625,"dds":"0.10016977928692694","last_synced_commit":"aace722070159eaff04749456bd0a82f2ecb575f"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gschup%2Fggrs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gschup%2Fggrs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gschup%2Fggrs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gschup%2Fggrs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gschup","download_url":"https://codeload.github.com/gschup/ggrs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228821404,"owners_count":17977166,"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":["gamedev","ggpo","networking","rollback","rust"],"created_at":"2024-08-17T08:02:59.530Z","updated_at":"2025-12-24T07:37:13.508Z","avatar_url":"https://github.com/gschup.png","language":"Rust","funding_links":[],"categories":["rust"],"sub_categories":[],"readme":"# [![GGRS LOGO](./ggrs_logo.png)](https://github.com/gschup/ggrs)\n\n[![crates.io](https://img.shields.io/crates/v/ggrs?style=for-the-badge)](https://crates.io/crates/ggrs)\n![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/gschup/ggrs/rust.yml?branch=main\u0026style=for-the-badge)\n\n## P2P Rollback Networking in Rust\n\nGGRS (good game rollback system) is a reimagination of the [GGPO network SDK](https://www.ggpo.net/) written in 100% safe [Rust 🦀](https://www.rust-lang.org/). The callback-style API from the original library has been replaced with a much saner, simpler control flow. Instead of registering callback functions, GGRS returns a list of requests for the user to fulfill.\n\nIf you are interested in integrating rollback networking into your game or just want to chat with other rollback developers (not limited to Rust), check out the [GGPO Developers Discord](https://discord.com/invite/8FKKhCRCCE)!\n\n## Live Demonstrations\n\nGGRS has two demo apps you can try in the browser! One written with [macroquad](https://github.com/not-fl3/macroquad), the other written with [bevy](https://bevyengine.org/). Both use [matchbox](https://github.com/johanhelsing/matchbox). Try it out with a friend! Just click the link and match with another player! (You can also open the link in two separate windows to play against yourself)\n\n🚧 MATCHMAKING CURRENTLY OFFLINE! 🚧\n- [Bevy Demo](https://gschup.github.io/bevy_ggrs_demo/) ([Repository](https://github.com/gschup/bevy_ggrs_demo))\n- [Macroquad Demo](https://gschup.github.io/ggrs_demo/) ([Repository](https://github.com/gschup/ggrs_demo))\n\n## Projects using GGRS\n\n- [Jumpy](https://github.com/fishfolk/jumpy)\n- [Gamercade](https://gamercade.io/)\n- [NES-bundler](https://github.com/tedsteen/nes-bundler)\n- [Girls with Swords](https://github.com/trian-gles/Girls-with-swords-GGRS) ([gameplay footage](https://youtu.be/TFJSpAqXtiI))\n- [NieR Automata: Online](https://git.yasupa.de/jasper3108/NAMS-mp) ([Youtube](https://www.youtube.com/@nieronline))\n\n## Getting Started\n\nTo get started with GGRS, check out the following resources:\n\n- [Wiki](https://github.com/gschup/ggrs/wiki)\n- [Examples](./examples/)\n- [Documentation](https://docs.rs/ggrs/newest/ggrs/)\n\n## Development Status\n\nGGRS is in an early stage, but the main functionality for multiple players and spectators should be quite stable. See the Changelog for the latest changes, even those yet unreleased on crates.io! If you want to contribute, check out existing issues, as well as the contribution guide!\n\n- [Changelog](./CHANGELOG.md)\n- [Issues](https://github.com/gschup/ggrs/issues)\n- [Contribution Guide](./CONTRIBUTING.md)\n\n## Useful Links\n\n### Bevy Plugin\n\nThe authors of GGRS are also maintaining a [bevy](https://bevyengine.org/) plugin. Check it out:\n\n- [Bevy GGRS](https://github.com/gschup/bevy_ggrs)\n\n### WASM support through WebRTC sockets\n\nIf you are interested to run a GGRS application in your browser, check the amazing Matchbox project!\nThe matchbox sockets are compatible with GGRS through a feature flag:\n\n- [Matchbox](https://github.com/johanhelsing/matchbox)\n\n### Godot Wrapper\n\n[Godot](https://godotengine.org/) is a popular open-source game engine. marcello505 is developing a wrapper for GGRS.\nFind the repository here:\n\n- [Godot GGRS Wrapper](https://github.com/marcello505/godot-ggrs-wrapper)\n\n### Other Rollback Implementations in Rust\n\nAlso take a look at the awesome backroll project, a completely async rollback library. Special thanks to james7132 for a lot of inspiration and fruitful discussion.\n\n- [backroll-rs](https://github.com/HouraiTeahouse/backroll-rs/)\n\n## Licensing\n\nGGRS is dual-licensed under either\n\n- [MIT License](./LICENSE-MIT): Also available [online](http://opensource.org/licenses/MIT)\n- [Apache License, Version 2.0](./LICENSE-APACHE): Also available [online](http://www.apache.org/licenses/LICENSE-2.0)\n\nat your option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgschup%2Fggrs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgschup%2Fggrs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgschup%2Fggrs/lists"}