{"id":14963953,"url":"https://github.com/hajis23/room-game","last_synced_at":"2025-10-25T03:31:06.789Z","repository":{"id":205790091,"uuid":"715086703","full_name":"Hajis23/room-game","owner":"Hajis23","description":"Multiplayer server meshing demo","archived":false,"fork":false,"pushed_at":"2025-02-07T10:57:26.000Z","size":661,"stargazers_count":3,"open_issues_count":16,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-07T11:35:45.559Z","etag":null,"topics":["game","matter-js","multiplayer","phaser","react","socket-io","websocket"],"latest_commit_sha":null,"homepage":"https://hajis23.github.io/room-game/","language":"JavaScript","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/Hajis23.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":"2023-11-06T13:02:58.000Z","updated_at":"2025-02-07T10:57:30.000Z","dependencies_parsed_at":"2024-09-13T20:38:43.041Z","dependency_job_id":"b45c42ed-0815-49af-8203-48085c586777","html_url":"https://github.com/Hajis23/room-game","commit_stats":{"total_commits":125,"total_committers":8,"mean_commits":15.625,"dds":0.4,"last_synced_commit":"1a2e7b523ad7ac0b5d92bf777a962f2b6b137d19"},"previous_names":["elehtine/distributed-systems","hajis23/room-game"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hajis23%2Froom-game","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hajis23%2Froom-game/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hajis23%2Froom-game/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hajis23%2Froom-game/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hajis23","download_url":"https://codeload.github.com/Hajis23/room-game/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238075252,"owners_count":19412301,"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":["game","matter-js","multiplayer","phaser","react","socket-io","websocket"],"created_at":"2024-09-24T13:32:22.828Z","updated_at":"2025-10-25T03:31:06.164Z","avatar_url":"https://github.com/Hajis23.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Room game\n![hajis](https://github.com/user-attachments/assets/d3279a3d-7fbe-4875-afa8-beec1eb03e16)\n\nA prototype of a multi-server real-time online multiplayer game, implementing: \n- simple Server Meshing / Spatial partitioning between server nodes.\n- Object replication between nodes\n- Object transfer between nodes\n- Server-authoritative physics with simple client-side prediction\n- Server node discovery \u0026 coordination with a master node\n\nWe built it as a course project for the University of Helsinki Distributed Systems 2023 course.\n\nThe server nodes are based on NodeJS, run inside docker containers and communicate with the client and other server nodes via [socket.io](https://socket.io/).\n\nThe game client is created using [Phaser 3](https://github.com/photonstorm/phaser) with a [React](https://react.dev/) user interface.\n\nThe game features a simple dungeon-like map consisting of multiple rooms, created using Tiled. The players can freely move around the map and interact with other players (only by colliding with them). The rooms are simulated on separate servers and the player can seamlessly walk from one server to another.\n\n## Setup\n\nMake sure you have docker and npm installed.\n\nTo install all dependencies run following command:\n```\nnpm install\n```\n\n## Run\n\nRun the Vite development server:\n```\nnpm run client\n```\nThe dev build is served at localhost:8000.\n\nRun coordinator and 3 room servers with:\n```\nnpm run room_server\n```\nThis builds the required docker images and runs the compose file `room_server/docker-compose.yml`.\n\nIf you still come accross any `module not found`-errors, try running `npm install` locally in `room_server/` or `coordinator/`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhajis23%2Froom-game","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhajis23%2Froom-game","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhajis23%2Froom-game/lists"}