{"repo":"BestoGames/BestoNet","free":true,"listed":false,"github":"https://github.com/BestoGames/BestoNet","clone":"git clone https://github.com/BestoGames/BestoNet.git","description":"BestoNet is a custom rollback networking solution developed for the fighting game Idol Showdown. Built in C# for Unity, it integrates with Facepunch Steamworks to provide a robust and efficient rollback implementation.","language":"C#","stars":67,"topics":["bestonet","besto","bestogames","idolshowdown","csharp","godot","netcode","rollback","rollback-netcode","unity"],"license":"MIT","category":"game-templates","readme_excerpt":"BestoNet is a custom rollback networking solution developed for the fighting game Idol Showdown. Built in C# for Unity, it integrates with Facepunch Steamworks to provide a robust and efficient rollback implementation. This is a work in progress as a library, and won't work right out the box 📚 Documentation - Contributing Guide - Code of Conduct - Development Roadmap Background Originally we used Unity GGPO but there were some issues. - Unplayable connections at long distances (experiencing 7 frames of rollback) - Maintenance difficulties due to GGPO's C++ codebase - System instability during poor network conditions - Using GGPO required a relay system that added extra latency to online matches Core Features Rollback Management - Speculative Frame Saving : Saves CPU time and preventing 7 frame rollbacks - Currently saves the midpoint frame, confirm frame, and end frame - Input Prediction : Will predict the next input using the previously received input - Rift Management : Many different options to deal with one sided rollback and game syncing - Reliable Input Messaging : Maintains a 7-frame input buffer to handle packet loss and out-of-order delivery Implementation Requirements 1. Frame Timing: Idol Showdown currently uses a separate thread as a timer. 2. Spectator: The current implementation contains a call to send confirmed frame inputs to a spectator buffer 3. State management system: Deterministic game logic is required. For efficiency reasons, we recommend avoiding usin","default_branch":null,"files":null,"tree":[],"storefront":"/r/BestoGames","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/BestoGames/BestoNet/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}