Note
The repository's documentation website: slayhorizon.github.io/godot-tiny-mmo/
Latest research note: Byte-Level Networking Protocol for MMO Scalability
Experimental open-source MMORPG framework built with Godot 4.
Inspired by proven MMO systems, this project pushes the boundaries of what can be achieved with Godot in large-scale multiplayer.
It explores scalable multiplayer architecture, efficient byte-packed networking, while staying clear and simple in our learning journey.
- Cross-platform: browser + desktop + mobile
- Unified codebase: Client & multiple servers in one repo
- Faster iteration, develop in one place, test in one click
- Separate export presets for clean client/server builds
- "Custom netcode" but stay simple
- No reliance on Godot’s
MultiplayerSynchronizer/Spawner
for better control - Packed protocol format (efficient PackedByteArray instead of string-based messages) for hot synchronization
- Entity interpolation, multi-map instances, seamless transitions
- No reliance on Godot’s
- True MMOO architecture
- Gateway server: authentication & routing
- Master server: orchestrator, account management & bridge between gateways and world servers
- World server: host multiple concurrent maps and instances; the place where gameplay actually happens

See current and planned features:
-
Client-Server connection through
WebSocketMultiplayerPeer
-
Playable on web browser and desktop
-
Network architecture (see diagram below)
-
Authentication system through gateway server with Login UI
-
Account Creation for permanent player accounts
-
Server Selection UI to let the player choose between different servers
-
QAD Database to save persistent data
-
Guest Login option for quick access
-
Game version check to ensure client compatibility
-
Character Creation
-
Basic RPG class system with three initial classes: Knight, Rogue, Wizard
-
Weapons at least one usable weapon per class
-
Basic combat system
-
Entity synchronization for players within the same instance
-
Entity interpolation to handle rubber banding
-
Instance-based chat for localized communication
-
Instance-based maps with traveling between different map instances
- Three different maps: Overworld, Dungeon Entrance, Dungeon
- Private instances for solo players or small groups
-
Server-side anti-cheat (basic validation for speed hacks, teleport hacks, etc.)
-
Server-side NPCs (AI logic processed on the server)
To run the project, follow these steps:
- Open the project in Godot 4.4 or 4.5.
- Go to Debug tab, select "Customizable Run Instance...".
- Enable Multiple Instances and set the count to 4 or more.
- Under Feature Tags, ensure you have:
- Exactly one "gateway-server" tag.
- Exactly one "master-server" tag.
- Exactly one "world-server" tag.
- At least one or more "client" tags.
- (Optional) Under Launch Arguments:
- For servers, add --headless to prevent empty windows.
- For any, add --config=config_file_path.cfg to use non-default config path.
- Run the project (Press F5).
Setup example
(More details in the wiki How to use "Customize Run Instances...":
Feel free to fork the repository and submit a pull request if you have ideas or improvements!
You can also open an Issue to discuss bugs or feature requests.
Thanks to everyone who made this project possible:
- Maps designed by @higaslk
- Valuable help and feedback: @Jackiefrost, @d-Cadrius and multiple anonymous contributors
- Also @Anokolisa for allowing us to use its assets for this open source project!
Source code under the MIT License.