[!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.
🚀 Features
The current and planned features are listed below:
- [X] Client-Server connection through
WebSocketMultiplayerPeer
- [x] Playable on web browser and desktop
- [x] Network architecture (see diagram below)
- [X] Authentication system through gateway server with Login UI
- [x] Account Creation for permanent player accounts
- [x] QAD Database to save persistent data
- [x] Guest Login option for quick access
- [x] Game version check to ensure client compatibility
- [x] Character Creation
- [x] Basic RPG class system with three initial classes: Knight, Rogue, Wizard
- [ ] Weapons at least one usable weapon per class
- [ ] Basic combat system
- [X] Entity synchronization for players within the same instance
- [ ] Entity interpolation to handle rubber banding
- [x] Instance-based chat for localized communication
- [X] Instance-based maps with traveling between different map instances
- [x] Three different maps: Overworld, Dungeon Entrance, Dungeon
- [ ] Private instances for solo players or small groups
Current network architecture diagram for this demo (subject to change):
You can track development and report issues by checking the open issues page.
🛠️ Getting Started
To get started with the project, follow these steps:
- Clone this repository.
- Open the project in Godot 4.3+.
- In the 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!
Setup example:
(More details in the wiki How to use "Customize Run Instances...")
🤝 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:
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
)
- Commit your Changes (
git commit -m 'Add some AmazingFeature'
)
- Push to the Branch (
git push origin feature/AmazingFeature
)
- Open a Pull Request
Credits