{"id":13661751,"url":"https://github.com/UweGruenefeld/UnityNetworkModel","last_synced_at":"2025-04-25T03:31:06.663Z","repository":{"id":96089451,"uuid":"90400503","full_name":"UweGruenefeld/UnityNetworkModel","owner":"UweGruenefeld","description":"Package for Unity3D to synchronize GameObjects, Resources and Components with multiple Unity clients over websockets.","archived":false,"fork":false,"pushed_at":"2020-05-06T18:18:24.000Z","size":1274,"stargazers_count":41,"open_issues_count":0,"forks_count":5,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-11-10T16:46:10.421Z","etag":null,"topics":["json","network","nodejs","sync","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/UweGruenefeld.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}},"created_at":"2017-05-05T17:25:18.000Z","updated_at":"2024-08-31T05:44:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"c4e49141-5067-49fe-adfd-30faf59497d1","html_url":"https://github.com/UweGruenefeld/UnityNetworkModel","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UweGruenefeld%2FUnityNetworkModel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UweGruenefeld%2FUnityNetworkModel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UweGruenefeld%2FUnityNetworkModel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UweGruenefeld%2FUnityNetworkModel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UweGruenefeld","download_url":"https://codeload.github.com/UweGruenefeld/UnityNetworkModel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250747732,"owners_count":21480701,"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":["json","network","nodejs","sync","unity"],"created_at":"2024-08-02T05:01:40.910Z","updated_at":"2025-04-25T03:31:06.657Z","avatar_url":"https://github.com/UweGruenefeld.png","language":"C#","funding_links":[],"categories":["C\\#"],"sub_categories":[],"readme":"# Unity Network Model\nPackage for Unity3D, which allows synchronizing GameObjects, Resources, and Components with multiple Unity clients over WebSockets. On the server-side, a NodeJS script opens a WebSocket connection, stores the incoming GameObjects, Resources, and Components as JSON objects and sends updates to the Unity clients to keep them sync.\n\n\u003e Ideal for beginners, to synchronize multiple Unity clients without any knowledge\n\u003e about network programming. Perfect as well, to rapidly prototype\n\u003e multi-user experiences with a large number of supported devices.\n\n[![Demonstration of Unity Network Model](http://img.youtube.com/vi/fQcbDtgZxLE/0.jpg)](http://www.youtube.com/watch?v=fQcbDtgZxLE)\n\n*Demonstration of Unity Network Model*\n\n## Features\n* Bidirectional updates between Unity client and NodeJS server\n   - Every Unity client shares the same synchronized hierarchy of GameObjects and their Components and Resources\n* Unidirectional updates (only receive updates or only send updates)\n   - One Unity client, for example, can be used to show the copy of GameObjects without sending changes to the NodeJS server\n* Selected updates (specify which Components and Resources can send or receive updates)\n   - Supported components are BoxCollider, Camera, Light, LineRenderer, MeshCollider, MeshFilter, MeshRenderer, Script, SphereCollider, and Transform\n   - Supported resources are Material, Mesh, and Texture2D\n   - Extendable to support more components and resources\n* Supports multiple channel to synchronize different hierarchies on client and server at the same time\n* Synchronizes any hierarchy depth of GameObjects\n* Update frequency and decimal places adjustable\n* Updates only changed GameObjects, Components and Resources\n\n## Install\nTo install the UnityNetworkModel follow these five simple steps:\n1. Clone this repository to your computer\n2. Install the NodeJS package inside the nodejs folder\n```sh\nnpm install\n```\n3. Start node.js server\n```sh\nnode server.js\n```\n4. Import UnityNetworkModel.unitypackage in Unity3D\n5. Add the script NetworkModelConfiguration.cs to a GameObject\n\n## Requirements\n* NodeJS version 4.5 or higher *required*\n* Unity version 2017.4 or higher *required*\n* Tested on Unity version 2019.3 and 2018.4\n* If Clients (Unity) are deployed on different machines and compare timestamps is activated, a clock synchronization on all Clients is required\n\n## Platforms\n* Windows (including Hololens und VR headsets)\n* Linux\n* MacOS\n* Android (Oculus Go, Quest)\n* iOS\n\n## External Libraries\n* WebSocket-Sharp (see https://github.com/sta/websocket-sharp)\n\n\n-----\n## Screenshots\n\n![UnityNetworkModel Configuration Component](https://github.com/UweGruenefeld/UnityNetworkModel/blob/master/showcase/unity-config.jpg?raw=true)\n*UnityNetworkModel Configuration Component*\n\n![UnityNetworkModel Rule Component](https://github.com/UweGruenefeld/UnityNetworkModel/blob/master/showcase/unity-rules.jpg?raw=true)\n*UnityNetworkModel Rule Component*\n\n![NodeJS server console output](https://github.com/UweGruenefeld/UnityNetworkModel/blob/master/showcase/nodejs-console.jpg?raw=true)\n*NodeJS server console output*","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FUweGruenefeld%2FUnityNetworkModel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FUweGruenefeld%2FUnityNetworkModel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FUweGruenefeld%2FUnityNetworkModel/lists"}