A small-scale MMO / MMORPG developed with Godot Engine 4.3, without relying on the built-in multiplayer nodes.
Both the client and server are included within the same project, utilizing export presets to manage the separation.
These presets allow to export only the client-side without including server components, and vice versa.
Feel free to explore the project details in the Wiki.
The current and planned features are listed below:
- Client-Server connection through
WebSocketMultiplayerPeer
- Playable on web browser
- Authentication system with Login UI
- Create account
- Game version check
- Entity synchronization for players within the same instance
- Instance-based maps with traveling between different map instances
- 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
- Three different maps: Overworld, Dungeon Entrance, Dungeon
- Instance-based chat
- Database Server
- Authentication Server (move the authentication system from game server)
...and maybe more features later.
You can track development and report issues by checking the open issues page.
To get started with the project, follow these steps:
- Clone this repository.
- Open the project with Godot 4.3
- In the Debug tab, choose Customizable Run Instance...
- Enable Multiple Instances and set at least 2 or more.
- Under feature tags, ensure to have:
- Exactly one "server" tag
- At least one or more "client" tags
- Run the project!
Example setup for multiple instances:
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
.
- 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
- Maps designed by @d-Cadrius.
- Screenshots provided by @WithinAmnesia.
- Also thanks to @Anokolisa for allowing us to use its assets for this open source project!