[PR #10] feat: Add local Docker Compose setup for building services from sourc… #10

Open
opened 2026-05-06 16:09:42 +02:00 by BreizhHardware · 0 comments

📋 Pull Request Information

Original PR: https://github.com/DyingStar-game/servers/pull/10
Author: @vde-dis
Created: 12/17/2025
Status: 🔄 Open

Base: mainHead: feature/docker-compose-local-deployement


📝 Commits (1)

  • 366289f feat: Add local Docker Compose setup for building services from source, including the game server, and update documentation.

📊 Changes

14 files changed (+407 additions, -4 deletions)

View changed files

.env.local (+22 -0)
.gitattributes (+17 -0)
📝 Makefile (+8 -1)
📝 README.md (+71 -3)
docker-compose.local.yml (+70 -0)
gameserver/Dockerfile (+39 -0)
gameserver/boot.gd (+18 -0)
gameserver/boot.tscn (+6 -0)
gameserver/client.local.ini (+8 -0)
gameserver/override.cfg (+6 -0)
gameserver/server_docker.ini (+38 -0)
horizon/Dockerfile (+30 -0)
horizon/entrypoint.sh (+64 -0)
horizon/plugins_docker.toml (+10 -0)

📄 Description

Centralisation de la configuration locale Docker dans servers

Résumé

Cette PR centralise tous les fichiers de configuration et scripts relatifs au déploiement local Docker dans le répertoire servers/, permettant un développement local propre sans modifications des dépôts DyingStar et horizonserver.

Problème résolu

  • Le Game Server ne démarrait pas en mode "dedicated server" dans Docker (restait en mode "player headless")
  • Le plugin audio Wwise crashait le serveur en mode headless Linux
  • Horizon ne pouvait pas se connecter au Game Server ("No websocket writer available")
  • Configuration dispersée entre plusieurs dépôts

Changements principaux

  • Nouveaux fichiers dans servers/gameserver/
  • boot.gd & boot.tscn - Force le mode serveur au démarrage
  • Contourne l'absence de feature tag dedicated_server
  • Initialise explicitement NetworkRole.SERVER et GameStates.SERVER_PLAYING
  • override.cfg - Désactive l'autoload Wwise
  • Évite les crashs liés au SDK audio en mode headless
  • Permet au serveur de démarrer sans dépendances audio
  • server_docker.ini - Configuration serveur complète
  • Paramètres réseau (ip_public, port)
  • Configuration SDO, chat, metrics, observability
  • Toutes les sections requises par NetworkOrchestrator
  • client.local.ini - Configuration client locale
  • URL WebSocket vers Horizon local
  • Paramètres d'observabilité pour dev
  • Modifications de docker-compose.local.yml
  • Montage des nouveaux fichiers de boot et configuration
  • Commande mise à jour pour exécuter boot.tscn au lieu de la scène par défaut
  • Tous les volumes restent pour le hot-reload du code

Autres changements

  • servers/launch_client.ps1 - Déplacé depuis DyingStar/, copie client.local.ini au lancement
  • servers/README.md - Instructions de lancement client ajoutées

Comment tester

# 1. Démarrer la stack locale
cd servers
make start-local  # ou: docker compose --profile gameserver -f docker-compose.local.yml up
# 2. Vérifier les logs
docker compose --profile gameserver -f docker-compose.local.yml logs game-server
# Doit afficher: "[BOOT] ✓ Boot sequence complete!"
# 3. Lancer le client
.\servers\launch_client.ps1
# 4. Vérifier la connexion dans les logs Horizon
docker compose --profile gameserver -f docker-compose.local.yml logs horizon
# Doit afficher: "👋 Player ... connected"

Impacts

Positifs

  • Aucune modification dans DyingStar/ ou horizonserver/ (repos propres pour MR)
  • Configuration centralisée dans servers/
  • Hot-reload préservé (volumes source montés)
  • Stack complète fonctionnelle (Horizon ↔ Game Server ↔ Client)

Warning

  • Le serveur ignore Wwise (pas de son côté serveur, bug du plugin de son dans Godot 4.5 ?)
  • override.cfg génère un warning autoload bénin (non-bloquant)

Checklist

  • Code testé localement
  • Stack complète démarre sans erreurs
  • Client se connecte avec succès
  • Aucune modification dans les repos externes
  • Documentation mise à jour (servers/README.md)

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/DyingStar-game/servers/pull/10 **Author:** [@vde-dis](https://github.com/vde-dis) **Created:** 12/17/2025 **Status:** 🔄 Open **Base:** `main` ← **Head:** `feature/docker-compose-local-deployement` --- ### 📝 Commits (1) - [`366289f`](https://github.com/DyingStar-game/servers/commit/366289f7ca968a83d6e3159e5b9e4e6efc72814a) feat: Add local Docker Compose setup for building services from source, including the game server, and update documentation. ### 📊 Changes **14 files changed** (+407 additions, -4 deletions) <details> <summary>View changed files</summary> ➕ `.env.local` (+22 -0) ➕ `.gitattributes` (+17 -0) 📝 `Makefile` (+8 -1) 📝 `README.md` (+71 -3) ➕ `docker-compose.local.yml` (+70 -0) ➕ `gameserver/Dockerfile` (+39 -0) ➕ `gameserver/boot.gd` (+18 -0) ➕ `gameserver/boot.tscn` (+6 -0) ➕ `gameserver/client.local.ini` (+8 -0) ➕ `gameserver/override.cfg` (+6 -0) ➕ `gameserver/server_docker.ini` (+38 -0) ➕ `horizon/Dockerfile` (+30 -0) ➕ `horizon/entrypoint.sh` (+64 -0) ➕ `horizon/plugins_docker.toml` (+10 -0) </details> ### 📄 Description ### Centralisation de la configuration locale Docker dans servers **Résumé** Cette PR centralise tous les fichiers de configuration et scripts relatifs au déploiement local Docker dans le répertoire servers/, permettant un développement local propre sans modifications des dépôts DyingStar et horizonserver. **Problème résolu** - Le Game Server ne démarrait pas en mode "dedicated server" dans Docker (restait en mode "player headless") - Le plugin audio Wwise crashait le serveur en mode headless Linux - Horizon ne pouvait pas se connecter au Game Server ("No websocket writer available") - Configuration dispersée entre plusieurs dépôts **Changements principaux** - Nouveaux fichiers dans servers/gameserver/ - boot.gd & boot.tscn - Force le mode serveur au démarrage - Contourne l'absence de feature tag dedicated_server - Initialise explicitement NetworkRole.SERVER et GameStates.SERVER_PLAYING - override.cfg - Désactive l'autoload Wwise - Évite les crashs liés au SDK audio en mode headless - Permet au serveur de démarrer sans dépendances audio - server_docker.ini - Configuration serveur complète - Paramètres réseau (ip_public, port) - Configuration SDO, chat, metrics, observability - Toutes les sections requises par NetworkOrchestrator - client.local.ini - Configuration client locale - URL WebSocket vers Horizon local - Paramètres d'observabilité pour dev - Modifications de docker-compose.local.yml - Montage des nouveaux fichiers de boot et configuration - Commande mise à jour pour exécuter boot.tscn au lieu de la scène par défaut - Tous les volumes restent pour le hot-reload du code **Autres changements** - servers/launch_client.ps1 - Déplacé depuis DyingStar/, copie client.local.ini au lancement - servers/README.md - Instructions de lancement client ajoutées **Comment tester** ``` # 1. Démarrer la stack locale cd servers make start-local # ou: docker compose --profile gameserver -f docker-compose.local.yml up # 2. Vérifier les logs docker compose --profile gameserver -f docker-compose.local.yml logs game-server # Doit afficher: "[BOOT] ✓ Boot sequence complete!" # 3. Lancer le client .\servers\launch_client.ps1 # 4. Vérifier la connexion dans les logs Horizon docker compose --profile gameserver -f docker-compose.local.yml logs horizon # Doit afficher: "👋 Player ... connected" ``` **Impacts** ✅Positifs - Aucune modification dans DyingStar/ ou horizonserver/ (repos propres pour MR) - Configuration centralisée dans servers/ - Hot-reload préservé (volumes source montés) - Stack complète fonctionnelle (Horizon ↔ Game Server ↔ Client) > [!WARNING] >- Le serveur ignore Wwise (pas de son côté serveur, bug du plugin de son dans Godot 4.5 ?) >- override.cfg génère un warning autoload bénin (non-bloquant) **Checklist** - [x] Code testé localement - [x] Stack complète démarre sans erreurs - [x] Client se connecte avec succès - [x] Aucune modification dans les repos externes - [x] Documentation mise à jour (servers/README.md) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
DyingStar-game/servers#10
No description provided.