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: 3 months 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 (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-26T20:50:36.000Z (12 months ago)
- Last Synced: 2024-10-26T20:55:32.495Z (12 months 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
> [!NOTE]
> The repository's documentation website: [**slayhorizon.github.io/godot-tiny-mmo/**](https://slayhorizon.github.io/godot-tiny-mmo/)
# Godot Tiny MMOA tiny web-based MMORPG demo developed with Godot Engine 4.4,
created without relying on the built-in multiplayer nodes.The client and server share the same codebase, but thanks to its unique organization,
custom export presets allow you to [**Export Client and Server builds separately**](https://slayhorizon.github.io/godot-tiny-mmo/#/pages/export),
keeping builds secure and optimized by excluding unnecessary components.This project contains different types of servers to try to mimic typical MMO architecture:
gateway, world, and master server (See [Network Architecture diagram in **#Features**](#features)).For documentation and more details, check out the [**https://slayhorizon.github.io/godot-tiny-mmo/**](https://slayhorizon.github.io/godot-tiny-mmo/).

> [!WARNING]
> This project is in **experimental state**, and features are missing (See [**#Features**](#features)).## Features
Current and planned features:
- [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] **Server Selection UI** to let the player choose between different servers
- [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
- [ ] **Server-side anti-cheat** (basic validation for speed hacks, teleport hacks, etc.)
- [ ] **Server-side NPCs** (AI logic processed on the server)Current network architecture diagram for this demo (subject to change):
## Getting Started
To run the project, follow these steps:
1. Open the project in **Godot 4.4**.
2. Go to Debug tab, select **"Customizable Run Instance..."**.
3. Enable **Multiple Instances** and set the count to **4 or more**.
4. 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.
5. (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.
6. Run the project (Press F5).Setup example
(More details in the wiki [How to use "Customize Run Instances..."](https://slayhorizon.github.io/godot-tiny-mmo/#/pages/customize_run_instances):![]()
## Contributing
Feel free to fork the repository and submit a pull request if you have ideas or improvements!
You can also open an [**Issue**](https://github.com/SlayHorizon/godot-tiny-mmo-template/issues) to discuss bugs or feature requests.## 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!> Code source under [**MIT License**](https://github.com/SlayHorizon/godot-tiny-mmo/blob/main/LICENSE)
> _For inquiries, contact me on Discord: `slayhorizon`_