Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/slayhorizon/godot-tiny-mmo
Simple MMO / MMORPG using Godot 4. disc: slayhorizon
https://github.com/slayhorizon/godot-tiny-mmo
demo game godot godot-engine godot4 mmo multiplayer netcode networking server
Last synced: 9 days ago
JSON representation
Simple MMO / MMORPG using Godot 4. disc: slayhorizon
- Host: GitHub
- URL: https://github.com/slayhorizon/godot-tiny-mmo
- Owner: SlayHorizon
- License: mit
- Created: 2024-08-18T20:47:42.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-10-26T20:50:36.000Z (11 days ago)
- Last Synced: 2024-10-26T20:55:32.495Z (11 days ago)
- Topics: demo, game, godot, godot-engine, godot4, mmo, multiplayer, netcode, networking, server
- Language: GDScript
- Homepage:
- Size: 904 KB
- Stars: 9
- Watchers: 1
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
> [!WARNING]
> This project is still in experimental state and core features are still missing (see [**#🚀 Features**](#-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**](https://github.com/SlayHorizon/godot-tiny-mmo-demo/wiki/Exporting-the-project)).
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**](https://github.com/SlayHorizon/godot-tiny-mmo-demo/wiki).
![project-demo-screenshot](https://github.com/user-attachments/assets/ca606976-fd9d-4a92-a679-1f65cb80513a)
## 🚀 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):
![architecture-diagram-26-10-2024](https://github.com/user-attachments/assets/78b1cce2-b070-4544-8ecd-59784743c7a0)You can track development and report issues by checking the [**open issues**](https://github.com/SlayHorizon/godot-tiny-mmo-template/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
7. (Optional) For game server and gateway server, add **--headless** under **Launch Arguments** to prevent empty windows.
8. Run the project!Setup example:
![image](https://github.com/user-attachments/assets/abd2fd11-bb29-4d90-92c4-a8aefcdd7d52)## 🤝 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
- Maps designed by [@d-Cadrius](https://github.com/d-Cadrius).
- Screenshots provided by [@WithinAmnesia](https://github.com/WithinAmnesia).
- Also thanks to [@Anokolisa](https://anokolisa.itch.io/dungeon-crawler-pixel-art-asset-pack) for allowing us to use its assets for this open source project!