Skip to content

SlayHorizon/godot-tiny-mmo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Caution

README.md and documentations are out of date, refer to this branch archive/v1.
Current main is still experimental since the massive rework from this PR.

Note

The repository's documentation website: slayhorizon.github.io/godot-tiny-mmo/

Godot Engine License: MIT Documentation

Godot Tiny MMO

A tiny, experimental MMORPG demo developed with Godot Engine 4.4.

  • Browser + Desktop support
  • Shared codebase
    • Client and server live in the same repo
    • Clear folder organization
    • Faster iteration: develop & test in one place
  • Optimized exports
    • Separate presets for client & server
    • Excludes unused components (e.g. no server logic in client)
  • "Custom" netcode
    • No MultiplayerSynchronizer/Spawner
    • Supports movement interpolation, multiple maps loaded simultaneously, etc.
  • Mimic real MMO-style architecture
    • Gateway server: authentication & routing
    • Master server: account management & bridge between gateways and world servers
    • World servers: host multiple map instances per server

Screenshots

See screenshots:

project-demo-screenshot image architecture-diagram


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.
  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 people who made this project possible:

  • Maps designed by @d-Cadrius.
  • Screenshots provided by @WithinAmnesia.
  • Thanks to @Jackiefrost for their valuable contributions to the source code.
  • Also thanks to @Anokolisa for allowing us to use its assets for this open source project!

License

Source code under the MIT License.

About

Open-source web-based MMORPG built in Godot 4, with unique project organization.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors 5