{"id":31363810,"url":"https://github.com/ricmzn/laggy-multiplayer-peer","last_synced_at":"2026-05-18T09:10:09.769Z","repository":{"id":315966695,"uuid":"1061416432","full_name":"ricmzn/laggy-multiplayer-peer","owner":"ricmzn","description":"Network lag simulation for the Godot Multiplayer API - GDExtension","archived":false,"fork":false,"pushed_at":"2025-09-21T21:35:26.000Z","size":71,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-21T23:28:48.273Z","etag":null,"topics":["cpp","gdextension","godot"],"latest_commit_sha":null,"homepage":"","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/ricmzn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-21T21:25:43.000Z","updated_at":"2025-09-21T21:35:29.000Z","dependencies_parsed_at":"2025-09-21T23:28:49.730Z","dependency_job_id":"b8b1c90c-67a2-4a9a-8cc0-9817692eaaa8","html_url":"https://github.com/ricmzn/laggy-multiplayer-peer","commit_stats":null,"previous_names":["ricmzn/laggy-multiplayer-peer"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ricmzn/laggy-multiplayer-peer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricmzn%2Flaggy-multiplayer-peer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricmzn%2Flaggy-multiplayer-peer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricmzn%2Flaggy-multiplayer-peer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricmzn%2Flaggy-multiplayer-peer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ricmzn","download_url":"https://codeload.github.com/ricmzn/laggy-multiplayer-peer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricmzn%2Flaggy-multiplayer-peer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277184144,"owners_count":25775286,"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","status":"online","status_checked_at":"2025-09-27T02:00:08.978Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cpp","gdextension","godot"],"created_at":"2025-09-27T05:22:00.857Z","updated_at":"2026-05-18T09:10:09.762Z","avatar_url":"https://github.com/ricmzn.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Version](https://img.shields.io/badge/version-0.1.0-blue)\n![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/ricmzn/laggy-multiplayer-peer/build-main.yml)\n\n# LaggyMultiplayerPeer\nNetwork lag simulation for the Godot Multiplayer API.\n\n## Features\n- Simulates both latency and packet loss, while respecting ordering and reliability requirements.\n- Works with any underlying `MultiplayerPeer` type. ENet, WebRTC, WebSocket, and third party ones like Steam, EOS, etc.\n- Does not use a custom protocol, so a `LaggyMultiplayerPeer` can still communicate with non-wrapped peers over the network.\n- Complete documentation available in-engine: press \u003ckbd\u003eF1\u003c/kbd\u003e and search for \"LaggyMultiplayerPeer\".\n- Packaged as a GDExtension, which can be added into a project as an addon.\n- Easy to use with a few lines of GDScript, example from the documentation:\n\n```gdscript\nvar enet_peer := ENetMultiplayerPeer.new()\nvar err := enet_peer.create_client(\"localhost\", 1234) # Or your own connection details\nif err != OK:\n\tpush_error(\"Failed to create client, error: %s\" % error_string(err))\n\treturn\n# 200ms delay with 1% packet loss\nmultiplayer.multiplayer_peer = LaggyMultiplayerPeer.create(enet_peer, 0.2, 0.2, 0.01)\n```\n\n## Requirements\n- Godot 4.4 or higher.\n  - Older versions may work, but are untested.\n\n## Limitations\n- No C# bindings; Blocked by https://github.com/godotengine/godot-proposals/issues/8191.\n  - Can still be instantiated with ClassDB, and used through the GodotObject Get/Set/Call methods.\n- The addon has only been tested on Linux. Other platforms need testing.\n\n## Installation\n- Close the Godot editor before installing this add-on!\n\n- Download and open the LaggyMultiplayerPeer zip from the latest release, and extract the `addons/` folder from the zip to the root of your project.\n\n- To uninstall, just delete the `laggy-multiplayer-peer` folder inside of `res://addons/`.\n\n## Development\n- Make sure the repository has been cloned using `git clone --recursive`. If it hasn't, initialize and sync submodules by running `git submodule init` and `git submodule update --recursive`.\n- Ensure you have the required tools set up to compile Godot, like `scons`, a C++ compiler, and any other platform-specific requirements. See the [official documentation](https://docs.godotengine.org/en/stable/engine_details/development/compiling/introduction_to_the_buildsystem.html) for details.\n- Run `scons` in the root of the project directory, optionally passing extra parameters to build for a specific platform, or with specific settings (ie. `dev_build=yes` for debugging symbols).\n- The compiled library files will be installed in `demo/bin/${platform}/`.\n- Optionally, run the demo project to confirm that your changes are working.\n- **Note:** This library can only be built using scons! The CMakeLists.txt file is only for IDE compatibility (ie. CLion).\n\n## Demo Project\nA runnable demo project is included in the `demo/` sub-folder.\n\nBefore running it, please compile the extension using the development instructions. Alternatively, the demo is also included with pre-built libraries in the addon.\n\nAlso, to make use of multiplayer features present in the demo, you will have to enable multiple instances in the editor, with the following configuration:\n\n![Godot Editor \"Run Instances\" dialog](images/editor_instances.png)\n\nControls:\n- Left Mouse Button: Move local player to position (unreliable sync).\n- Right Mouse Button: \"Ping\" a location to all peers (reliable sync).\n- Spacebar: Send a continuous stream of sequential numbers to other peers (reliable rpc).\n- Bottom sliders (client-only): Adjust the latency and packet loss for this client in real-time.\n\n## Design\nAn architecture overview can be seen in [ARCHITECTURE.md](ARCHITECTURE.md).\n\n## License\nThis project is distributed under the MIT License. See [LICENSE.md](LICENSE.md) for details.\n\nAdditionally, [`src/variant_utils.h`](src/variant_utils.h) and [`src/variant_utils.cpp`](src/variant_utils.cpp) contain partial reproductions of source code from the Godot project, which is also distributed under the MIT License. Copyright details are reproduced in these files.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fricmzn%2Flaggy-multiplayer-peer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fricmzn%2Flaggy-multiplayer-peer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fricmzn%2Flaggy-multiplayer-peer/lists"}