{"id":13574059,"url":"https://github.com/aeon0/multiplayer-babylon-js-game","last_synced_at":"2025-04-22T17:22:55.608Z","repository":{"id":40981185,"uuid":"115561590","full_name":"aeon0/multiplayer-babylon-js-game","owner":"aeon0","description":"Multiplayer BabylonJS game with Server and Client-Side physics engine synchronization","archived":false,"fork":false,"pushed_at":"2022-12-10T16:10:43.000Z","size":215,"stargazers_count":109,"open_issues_count":6,"forks_count":19,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-22T17:22:40.897Z","etag":null,"topics":["babylon","multiplayer-babylon-js","multiplayer-game","physics-engine"],"latest_commit_sha":null,"homepage":"http://185.82.21.82:8700","language":"TypeScript","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/aeon0.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}},"created_at":"2017-12-27T22:13:49.000Z","updated_at":"2025-04-06T21:36:12.000Z","dependencies_parsed_at":"2023-01-26T08:46:59.364Z","dependency_job_id":null,"html_url":"https://github.com/aeon0/multiplayer-babylon-js-game","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/aeon0%2Fmultiplayer-babylon-js-game","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aeon0%2Fmultiplayer-babylon-js-game/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aeon0%2Fmultiplayer-babylon-js-game/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aeon0%2Fmultiplayer-babylon-js-game/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aeon0","download_url":"https://codeload.github.com/aeon0/multiplayer-babylon-js-game/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250285852,"owners_count":21405321,"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":["babylon","multiplayer-babylon-js","multiplayer-game","physics-engine"],"created_at":"2024-08-01T15:00:45.840Z","updated_at":"2025-04-22T17:22:55.590Z","avatar_url":"https://github.com/aeon0.png","language":"TypeScript","funding_links":[],"categories":["Projects","others"],"sub_categories":[],"readme":"## Multiplayer Babylon JS \"Game\" with Client \u0026 Server-Side Physics Engine\n\n![alt text](multiplayer_game.png)\n\nYou can open the Demo in two different browser tabs, that way you spawn two different players into the world\n\u003cbr\u003eDemo here: http://185.82.21.82:8700\n\n#### Run Localy\n```\n\u003e\u003e cd client\n\u003e\u003e npm install\n\u003e\u003e tsc\n\u003e\u003e npm start\n```\nIn a new console:\n```\n\u003e\u003e cd server\n\u003e\u003e npm install\n\u003e\u003e tsc\n\u003e\u003e npm start\n```\n\nThen visit http://localhost:8700. \n\n#### Development\nIf you want to play around with the code you can run `\u003e\u003e npm run dev`. (nodemon must be installed globaly). This will watch any chances for the typescript files, recompiles and on the server side, also restarts the server to serve the changes. \n\n\n### What is this?\nTesting the server side \"NullEngine()\" from Babylon.js. This enables you to run Babylon.js on a node server without having to render anything to the screen. That means you can simulate the world on your Clients as well as on the Server. \n\nThis implementation uses Websockets for Client \u003c-\u003e Server communication. The physics engine is simulating on Client as well on the Server. The Server then sends each render loop updates to all clients about the current \"State of the World\". The Clients then adjust the World according to the Server updates. That means, the higher the delay, the more visible \"jumps\" can occur. Interpolation could smooth out this jumps, but is currently not implemented.\n\n### The \"game\"\nGranted, it is not really a game. It is just an \"arena\" where each player controls a ball. By pressing `W` or `D` you can give the ball a spin forward or backward into the camera direction.\u003cbr\u003e\nWith `A` and `D` you can rotate the camera around the ball to apply the spin from different directions. With `SPACE` you can jump (only working on the ground as it is hacked in...)\u003cbr\u003e\nThe plan was (or is) that you would have to try to push your opponents of the arena, but this is not implemented yet. Right now you just fall forever and have to reload the page (That is why there are walls around the arena for now : ). ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faeon0%2Fmultiplayer-babylon-js-game","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faeon0%2Fmultiplayer-babylon-js-game","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faeon0%2Fmultiplayer-babylon-js-game/lists"}