{"id":17932910,"url":"https://github.com/slayhorizon/godot-tiny-mmo","last_synced_at":"2025-07-11T15:03:40.312Z","repository":{"id":253709141,"uuid":"844252686","full_name":"SlayHorizon/godot-tiny-mmo","owner":"SlayHorizon","description":"Simple MMO / MMORPG using Godot 4. disc: slayhorizon","archived":false,"fork":false,"pushed_at":"2024-10-26T20:50:36.000Z","size":926,"stargazers_count":9,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-26T20:55:32.495Z","etag":null,"topics":["demo","game","godot","godot-engine","godot4","mmo","multiplayer","netcode","networking","server"],"latest_commit_sha":null,"homepage":"","language":"GDScript","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/SlayHorizon.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":"2024-08-18T20:47:42.000Z","updated_at":"2024-10-26T20:54:21.000Z","dependencies_parsed_at":"2024-08-29T00:54:18.615Z","dependency_job_id":"7066e69f-868f-4bf6-8357-21f9fa271656","html_url":"https://github.com/SlayHorizon/godot-tiny-mmo","commit_stats":{"total_commits":50,"total_committers":3,"mean_commits":"16.666666666666668","dds":"0.30000000000000004","last_synced_commit":"373b04d48605d611257f455aa4ad298a14def19d"},"previous_names":["slayhorizon/godot-tiny-mmo-template","slayhorizon/godot-tiny-mmo-demo","slayhorizon/godot-tiny-mmo"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlayHorizon%2Fgodot-tiny-mmo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlayHorizon%2Fgodot-tiny-mmo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlayHorizon%2Fgodot-tiny-mmo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlayHorizon%2Fgodot-tiny-mmo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SlayHorizon","download_url":"https://codeload.github.com/SlayHorizon/godot-tiny-mmo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245222614,"owners_count":20580195,"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":["demo","game","godot","godot-engine","godot4","mmo","multiplayer","netcode","networking","server"],"created_at":"2024-10-28T21:34:11.816Z","updated_at":"2025-07-11T15:03:40.282Z","avatar_url":"https://github.com/SlayHorizon.png","language":"GDScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e [!NOTE]\n\u003e The repository's documentation website: [**slayhorizon.github.io/godot-tiny-mmo/**](https://slayhorizon.github.io/godot-tiny-mmo/)\n# Godot Tiny MMO\n\nA tiny web-based MMORPG demo developed with Godot Engine 4.4,  \ncreated without relying on the built-in multiplayer nodes.\n\nThe client and server share the same codebase, but thanks to its unique organization,  \ncustom export presets allow you to [**Export Client and Server builds separately**](https://slayhorizon.github.io/godot-tiny-mmo/#/pages/export),  \nkeeping builds secure and optimized by excluding unnecessary components.\n\nThis project contains different types of servers to try to mimic typical MMO architecture:  \ngateway, world, and master server (See [Network Architecture diagram in  **#Features**](#features)).\n\nFor documentation and more details, check out the [**https://slayhorizon.github.io/godot-tiny-mmo/**](https://slayhorizon.github.io/godot-tiny-mmo/).\n\n![project-demo-screenshot](https://github.com/user-attachments/assets/ca606976-fd9d-4a92-a679-1f65cb80513a)\n![image](https://github.com/user-attachments/assets/7e21a7e5-4c72-4871-b0cf-6d94f8931bf7)\n\n\n\u003e [!WARNING]  \n\u003e This project is in **experimental state**, and features are missing (See [**#Features**](#features)).\n\n## Features\n\nCurrent and planned features:\n\n- [X] **Client-Server connection** through `WebSocketMultiplayerPeer`\n- [x] **Playable on web browser and desktop**\n- [x] **Network architecture** (see diagram below)\n- [X] **Authentication system** through gateway server with Login UI\n- [x] **Account Creation** for permanent player accounts\n- [x] **Server Selection UI** to let the player choose between different servers\n- [x] **QAD Database** to save persistent data\n- [x] **Guest Login** option for quick access\n- [x] **Game version check** to ensure client compatibility\n- [x] **Character Creation**\n- [x] **Basic RPG class system** with three initial classes: Knight, Rogue, Wizard\n- [ ] **Weapons** at least one usable weapon per class\n- [ ] **Basic combat system**\n- [X] **Entity synchronization** for players within the same instance\n- [ ] **Entity interpolation** to handle rubber banding\n- [x] **Instance-based chat** for localized communication\n- [X] **Instance-based maps** with traveling between different map instances\n- [x] **Three different maps:** Overworld, Dungeon Entrance, Dungeon\n- [ ] **Private instances** for solo players or small groups\n- [ ] **Server-side anti-cheat** (basic validation for speed hacks, teleport hacks, etc.)\n- [ ] **Server-side NPCs** (AI logic processed on the server)\n\nCurrent network architecture diagram for this demo (subject to change):\n![architecture-diagram-26-10-2024](https://github.com/user-attachments/assets/78b1cce2-b070-4544-8ecd-59784743c7a0)\n\n\n## Getting Started\n\nTo run the project, follow these steps:\n\n1. Open the project in **Godot 4.4**.\n2. Go to Debug tab, select **\"Customizable Run Instance...\"**.\n3. Enable **Multiple Instances** and set the count to **4 or more**.\n4. Under **Feature Tags**, ensure you have:\n   - Exactly **one** \"gateway-server\" tag.\n   - Exactly **one** \"master-server\" tag.\n   - Exactly **one** \"world-server\" tag.\n   - At least **one or more** \"client\" tags.\n5. (Optional) Under **Launch Arguments**:\n   - For servers, add **--headless** to prevent empty windows.\n   - For any, add **--config=config_file_path.cfg** to use non-default config path.\n6. Run the project (Press F5).\n\nSetup example \n(More details in the wiki [How to use \"Customize Run Instances...\"](https://slayhorizon.github.io/godot-tiny-mmo/#/pages/customize_run_instances):\n\u003cimg width=\"1580\" alt=\"debug-screenshot\" src=\"https://github.com/user-attachments/assets/cff4dd67-00f2-4dda-986f-7f0bec0a695e\"\u003e\n  \n\n## Contributing\n\nFeel free to fork the repository and submit a pull request if you have ideas or improvements!  \nYou can also open an [**Issue**](https://github.com/SlayHorizon/godot-tiny-mmo-template/issues) to discuss bugs or feature requests.\n\n\n## Credits\n- **Maps** designed by [@d-Cadrius](https://github.com/d-Cadrius).\n- **Screenshots** provided by [@WithinAmnesia](https://github.com/WithinAmnesia).\n- Also thanks to [@Anokolisa](https://anokolisa.itch.io/dungeon-crawler-pixel-art-asset-pack) for allowing us to use its assets for this open source project!\n\n\n\u003e Code source under [**MIT License**](https://github.com/SlayHorizon/godot-tiny-mmo/blob/main/LICENSE)  \n\u003e _For inquiries, contact me on Discord: `slayhorizon`_\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslayhorizon%2Fgodot-tiny-mmo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslayhorizon%2Fgodot-tiny-mmo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslayhorizon%2Fgodot-tiny-mmo/lists"}