Skip to content

SlayHorizon/godot-tiny-mmo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Note

The repository's documentation website: slayhorizon.github.io/godot-tiny-mmo/
Latest research note: Byte-Level Networking Protocol for MMO Scalability

Godot Engine License: MIT Documentation

Godot Tiny MMO

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
  • 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

image
See more screenshots:

architecture-diagram image


Features

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)


Getting Started

To run the project, follow these steps:

  1. Open the project in Godot 4.4 or 4.5.
  2. Go to Debug tab, select "Customizable Run Instance...".
  3. Enable Multiple Instances and set the count to 4 or more.
  4. 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.
  5. (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.
  6. Run the project (Press F5).

Setup example (More details in the wiki How to use "Customize Run Instances...": debug-screenshot


Contributing

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.


Credits

Thanks to everyone who made this project possible:

License

Source code under the MIT License.

About

Open-source cross-platform MMORPG built with Godot 4 - Still experimental, feedbacks and contributions are welcome

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published