[!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.
🚀 Features
The current and planned features are listed below:
- [X] Client-Server connection through
WebSocketMultiplayerPeer
- [x] Playable on web browser
- [X] Authentication system with Login UI
- [ ] Create account
- [x] Can connect as guest
- [x] Create character
- [ ] Game version check
- [X] Entity synchronization for players within the same instance
- [X] Instance-based maps with traveling between different map instances
- [x] Basic RPG class system with three initial classes: Knight, Rogue, Wizard
- [ ] Private instances for solo players or small groups
- [ ] Weapons at least one usable weapon per class
- [ ] Basic combat system
- [ ] Entity interpolation to handle rubber banding
- [x] Three different maps: Overworld, Dungeon Entrance, Dungeon
- [x] Instance-based chat
- [x] Master Server
- [x] Gateway Server
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 3 or more.
- 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
- (Optional) For game server and gateway server, add --headless under Launch Arguments to prevent empty windows.
- Run the project!
Setup example:
🤝 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