{"id":41894429,"url":"https://github.com/tik-choco-lab/mistnet","last_synced_at":"2026-01-25T14:17:30.859Z","repository":{"id":222980563,"uuid":"730913830","full_name":"tik-choco-lab/mistnet","owner":"tik-choco-lab","description":"UnityWebRTC: A decentralized networking library for Unity, leveraging WebRTC for serverless, real-time communication in multiplayer games and metaverse applications.","archived":false,"fork":false,"pushed_at":"2026-01-13T07:27:34.000Z","size":3010,"stargazers_count":31,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2026-01-13T07:49:59.219Z","etag":null,"topics":["csharp","distributed","unity","webrtc"],"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/tik-choco-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-12-13T00:28:03.000Z","updated_at":"2025-12-20T11:48:54.000Z","dependencies_parsed_at":"2024-03-10T14:29:06.317Z","dependency_job_id":"bee87c1b-5698-45ea-a2bb-e7b368765b6a","html_url":"https://github.com/tik-choco-lab/mistnet","commit_stats":null,"previous_names":["decentralizedmetaverse/mistnet","tik-choco-lab/mistnet"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/tik-choco-lab/mistnet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tik-choco-lab%2Fmistnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tik-choco-lab%2Fmistnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tik-choco-lab%2Fmistnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tik-choco-lab%2Fmistnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tik-choco-lab","download_url":"https://codeload.github.com/tik-choco-lab/mistnet/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tik-choco-lab%2Fmistnet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28754159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T13:59:49.818Z","status":"ssl_error","status_checked_at":"2026-01-25T13:59:33.728Z","response_time":113,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["csharp","distributed","unity","webrtc"],"created_at":"2026-01-25T14:17:30.305Z","updated_at":"2026-01-25T14:17:30.849Z","avatar_url":"https://github.com/tik-choco-lab.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MistNet\n![License](https://img.shields.io/badge/License-MIT-green.svg)\n![Unity](https://img.shields.io/badge/Unity-6-black.svg?style=flat\u0026logo=unity)\n[![Releases](https://img.shields.io/github/release/tik-choco-lab/mistnet.svg)](https://github.com/tik-choco-lab/mistnet/releases)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/tik-choco-lab/mistnet)\n[![Japanese Documents](https://img.shields.io/badge/日本語-blue)](README_JP.md)\n[![中文文件](https://img.shields.io/badge/中文-red)](README_CN.md)\n\n# Features\nA fully decentralized network library for Unity based on WebRTC.\nIt uses a signaling server only for the initial connection establishment, and thereafter realizes multiplayer communication basically without a server. A TURN server can also be used if necessary.\n\n**Implementation example**\n\nhttps://github.com/tik-choco-lab/mistnet/assets/38463346/cd4a1d95-3422-4b07-b9b6-21f8c63cd1f8\n\n# Setup\n\n1. Install [NuGetForUnity](https://github.com/GlitchEnzo/NuGetForUnity) and search/install **MemoryPack**.\n\n2. Install [MemoryPack](https://github.com/Cysharp/MemoryPack) via Git URL:\n```\nhttps://github.com/Cysharp/MemoryPack.git?path=src/MemoryPack.Unity/Assets/MemoryPack.Unity\n```\n\n3. Install [UniTask](https://github.com/Cysharp/UniTask) via Git URL:\n```\nhttps://github.com/Cysharp/UniTask.git?path=src/UniTask/Assets/Plugins/UniTask\n```\n\n4. Install **MistNet** via Git URL:\n```\nhttps://github.com/tik-choco-lab/mistnet.git?path=/Assets/MistNet\n```\n\n# Quickstart\n\n\u003cimg width=\"389\" height=\"272\" alt=\"image\" src=\"https://github.com/user-attachments/assets/8737962c-fe2c-4d7c-901c-356e1074b917\" /\u003e\n\n\u003cimg width=\"737\" height=\"171\" alt=\"image\" src=\"https://github.com/user-attachments/assets/f749da96-e55f-45c0-a988-92e9a5a87c35\" /\u003e\n\n\u003cimg width=\"364\" height=\"64\" alt=\"image\" src=\"https://github.com/user-attachments/assets/d5f867e5-bf50-49c6-80ba-6087e30e8362\" /\u003e\n\n## Signaling Server\n\nWhen you run first, a config file will be generated.\nOpen mistnet_config.json\nand set the signaling server URL.\n\n```json\n\"bootstraps\": [\n    \"wss://rtc.tik-choco.com/signaling\"\n],\n```\n    \nIf you want to use your own signaling server, please refer to the following repository.\nhttps://github.com/tik-choco-lab/mistnet-signaling\n\n# Usage\nPlace the \"MistNet\" Prefab in the Scene.\n\nThe Prefab is located in \"Packages/MistNet/Runtime/Prefabs\".\n\n![image](https://github.com/tik-choco-lab/mistnet/assets/38463346/e706a9e6-d549-489b-b1cc-1d4a770f6c70)\n\nPlease configure the connection selection method as shown in the image.\nSet it to Default if you want to connect in a full mesh.\n\n\u003cimg width=\"450\" height=\"282\" alt=\"image\" src=\"https://github.com/user-attachments/assets/10eec4c6-8320-496c-a881-e2f20f877355\" /\u003e\n\n# Setting up GameObjects to Synchronize\n\n## Configuration\n- Add \"MistSyncObject\" component.\n    - Used for RPC calls and identifying the object to sync.\n\n## Position Synchronization Method\n- Add \"MistTransform\" component.\n\n## Animation Synchronization Method\n- Add \"MistAnimatorState\" component.\n\n## Player Instantiation\n- Instead of placing the GameObject to synchronize in the Scene from the beginning, you need to Instantiate it via MistNet.\n\n- Register the target GameObject's Prefab in Addressable Assets and execute as follows:\n\n![image](https://github.com/tik-choco-lab/mistnet/assets/38463346/8ee873c1-89ff-4774-b762-a9017df5a825)\n\n\n```csharp\n[SerializeField] \nstring prefabAddress = \"Assets/Prefab/MistNet/MistPlayerTest.prefab\";\n\nMistManager.I.InstantiateAsync(prefabAddress, position, Quaternion.identity).Forget();\n```\n\n# RPC\n## Registration Method\nAdd `[MistRpc]` before the method.\n```csharp\n[MistRpc]\nvoid RPC_○○ () {}\n```\n\n## Invocation Method\n```csharp\n[SerializeField] MistSyncObject syncObject;\n\n// Method to send to everyone including self\nsyncObject.RPCAll(nameof(RPC_○○), args);\n\n// Method to send to all connected Peers\nsyncObject.RPCOther(nameof(RPC_○○), args);\n\n// Method to execute by specifying the destination ID\nsyncObject.RPC(id, nameof(RPC_○○), args);\n```\n\n# Variable Synchronization\n\nBy adding `[MistSync]`, you can synchronize variables.\n\n```csharp\n[MistSync]\nint hp { get; set; }\n```\nSynchronization occurs automatically when a user joins for the first time and when the value changes.\n\nAlso, you can execute an arbitrary method during synchronization.\n```csharp\n[MistSync(OnChanged = nameof(OnChanged))]\nint hp { get; set; }\n\nvoid OnChanged();    \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftik-choco-lab%2Fmistnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftik-choco-lab%2Fmistnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftik-choco-lab%2Fmistnet/lists"}