SlayHorizon / godot-tiny-mmo

A tiny open-source web-based MMO / MMORPG built in Godot 4, with unique project organization.
Other
19 stars 4 forks source link
demo game godot godot-engine godot4 mmo multiplayer netcode networking server

[!WARNING]
This project is in experimental state and gameplay features are missing (see #🚀 Features).

Godot Tiny MMO

A tiny web-based MMO / MMORPG demo developed with Godot Engine 4.x - 4.3,
created without relying on the built-in multiplayer nodes.

This project contains both client and server within the same codebase.
Using custom export presets, you can easily Export Client and Server builds separately.
This keeps exports safe and optimized by excluding unnecessary components.

For additional details, check out the Wiki.

project-demo-screenshot image

🚀 Features

The current and planned features are listed below:

Current network architecture diagram for this demo (subject to change):
architecture-diagram-26-10-2024

You can track development and report issues by checking the open issues page.

🛠️ Getting Started

To get started with the project, follow these steps:

  1. Clone this repository.
  2. Open the project in Godot 4.3+.
  3. In the Debug tab, select "Customizable Run Instance...".
  4. Enable Multiple Instances and set the count to 4 or more.
  5. 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
  6. (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.
  7. Run the project!

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

debug-screenshot

🤝 Contributing

If you have ideas or improvements in mind, fork this repository and submit a pull request. You can also open an issue with the tag enhancement.

To contribute:

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Credits