SlayHorizon / godot-tiny-mmo

Simple MMO / MMORPG using Godot 4. disc: slayhorizon
MIT License
9 stars 4 forks source link
demo game godot godot-engine godot4 mmo multiplayer netcode networking server

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

Godot Tiny MMO

A simple web MMO / MMORPG 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 separate client and server builds (see the Wiki: Exporting Client and Server separately).
This setup enables client-only exports without server components and vice versa, keeping your builds optimized and secure.

For additional details, check out the Wiki.

project-demo-screenshot

🚀 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 3 or more.
  5. Under Feature Tags, ensure you have:
    • Exactly one "gateway-server" tag
    • Exactly one "master-server" tag
    • Exactly one "game-server" tag
    • At least one or more "client" tags
  6. (Optional) For game server and gateway server, add --headless under Launch Arguments to prevent empty windows.
  7. Run the project!

Setup example:
image

🤝 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