{"id":13663405,"url":"https://github.com/HouraiTeahouse/HouraiNetworking","last_synced_at":"2025-04-25T17:30:40.105Z","repository":{"id":55473028,"uuid":"215452913","full_name":"HouraiTeahouse/HouraiNetworking","owner":"HouraiTeahouse","description":"Transport level library for peer-to-peer networking with multiple backends for the Unity.","archived":false,"fork":false,"pushed_at":"2021-06-04T08:34:01.000Z","size":125,"stargazers_count":103,"open_issues_count":6,"forks_count":16,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-07T23:13:52.769Z","etag":null,"topics":["peer-to-peer","relay-networks","transport","unity"],"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/HouraiTeahouse.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-10-16T03:56:22.000Z","updated_at":"2025-03-07T12:56:58.000Z","dependencies_parsed_at":"2022-08-15T01:10:26.842Z","dependency_job_id":null,"html_url":"https://github.com/HouraiTeahouse/HouraiNetworking","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HouraiTeahouse%2FHouraiNetworking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HouraiTeahouse%2FHouraiNetworking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HouraiTeahouse%2FHouraiNetworking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HouraiTeahouse%2FHouraiNetworking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HouraiTeahouse","download_url":"https://codeload.github.com/HouraiTeahouse/HouraiNetworking/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250861924,"owners_count":21499185,"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":["peer-to-peer","relay-networks","transport","unity"],"created_at":"2024-08-02T05:02:26.763Z","updated_at":"2025-04-25T17:30:39.802Z","avatar_url":"https://github.com/HouraiTeahouse.png","language":"C#","funding_links":[],"categories":["Open Source Repositories","NetWork","C\\#"],"sub_categories":["Networking"],"readme":"# Hourai Networking\n\nPlatform based P2P networking with multiple backends.\n\n## Features\n\n * Lobby based peer-to-peer transport, with pluggable backends. See below for\n   more details.\n * Abstracts platform level constructs like matchmaking and relay networks into\n   generic interfaces.\n * High performance message serialization with next to zero garbage collection\n   pressure.\n * Premade network topologies for faster iteration: Host-Client, Full Mesh\n * IL2CPP Compatible - All integrations should work in IL2CPP out of the box\n\n## Supported Backends\n\nHourai Networking acts as a wrapper around these backends to provide support.\nSome features may not be uniform across all platforms.\n\n|Feature|Steam|Discord|Direct UDP|Epic Games|\n|:------|:---:|:-----:|:--------:|:--------:|\n|Implemenation|✔️|✔️|Planned|Planned|\n|Lobbies|✔️|✔️|❌|?|\n|Matchmaking|✔️|✔️|❌|?|\n|Custom Metadata|✔️|✔️|?|?|\n|Host Migration|✔️|✔️|?|?|\n|Windows Support|✔️|✔️|?|?|\n|MacOS Support|✔️|✔️|?|?|\n|Linux Support|✔️|✔️|?|?|\n\n## Installation\nBackroll is most easily installable via Unity Package Manager. In Unity 2018.3+,\nadd the following to your `Packages/manifest.json`:\n\n```json\n{\n  \"dependencies\": {\n    \"com.houraiteahouse.networking\": \"0.1.1\"\n  },\n  \"scopedRegistries\": [\n    {\n      \"name\": \"Hourai Teahouse\",\n      \"url\": \"https://upm.houraiteahouse.net\",\n      \"scopes\": [\"com.houraiteahouse\"]\n    }\n  ]\n}\n```\n\n## FAQ:\n\n**Q: Why peer-to-peer? Almost everyone uses client-server nowadays!**\n\nThere are notable issues with peer-to-peer networking:\n\n * Inconsistent connections - need to use NAT traversals, low connection\n   quality, etc.\n * Lack of authority - cheaters can easily attack P2P game systems with\n   alterred clients or malicous abuse of the protocols used.\n * Difficulty to game scale - realtime games with a signifigant number of\n   players (think MMOs, battle royales) have difficulty scaling up to that\n   size.\n\nThese are notable issues commonly seen, which is why the majority of the game\nindustry nowadays aims for an authoritative client-server model of netplay.\nHowever, the main argument against this model, espeically for low-budget games\nthat want netplay, is cost. Running a fleet of servers 24/7, and paying\noperators to maintain those servers is simply impossible for most small\ndevelopers.\n\nPeer-to-peer netwroking only requires multiple players to share the\nsame game version and an internet connection. No dedicated servers are required\non the developer's end.\n\n**Q: Why use proprietary networks like Steam and Discord?**\n\nOne of the aforementioned issues with peer-to-peer networking is the\ninconsistent connection issues. Modern consumer home networks are almost always\nbehind NATs (network address translation), which makes normal socket based\nconnections almost impossible without a whole host of hacks and workarounds\n(i.e. UPnP, libjingle, STUN, etc.), none of which are perfect. The only true way\nto ensure connections complete is to have a relay server network, with well\nknown public IPs. This returns to the issues of servers and cost. Luckily,\nSteam and Discord, now some of the largest companies in PC gaming, offer free\naccess their relay networks to developers willing to integrate with their\nsystems: allowing for more consistent netplay experience in exchange for some\nvendor lock-in. One of the goals of HouraiNetworking is to help allievate that\nvendor lock-in by abstracting platform level differences away.\n\nOne other benefit to these solutions is use of relay services often incorproates\nIP masking and encryption to help maintian player privacy.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHouraiTeahouse%2FHouraiNetworking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FHouraiTeahouse%2FHouraiNetworking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHouraiTeahouse%2FHouraiNetworking/lists"}