FAQ¶
Questions fréquemment posées sur R-Type.
Installation & Build¶
Quelle version de GCC/Clang est requise ?
R-Type utilise C++23. Vous avez besoin de :
- GCC 11+ (recommandé: GCC 13)
- Clang 15+ (recommandé: Clang 17)
Comment installer vcpkg ?
git clone https://github.com/Microsoft/vcpkg.git ~/vcpkg
cd ~/vcpkg
./bootstrap-vcpkg.sh
export VCPKG_ROOT="$HOME/vcpkg"
Ajoutez export VCPKG_ROOT="$HOME/vcpkg" à votre ~/.bashrc pour la persistance.
Le build échoue avec 'C++23 features not available'
Votre compilateur est trop ancien. Mettez-le à jour :
Puis relancez la configuration :
vcpkg ne trouve pas les dépendances
Le script build.sh gère automatiquement vcpkg. Si vous rencontrez des problèmes, nettoyez et recommencez :
Gameplay¶
Comment changer le backend graphique ?
Via l'option CLI :
Comment jouer en multijoueur ?
- Hôte : Lance le serveur avec
./rtype_server - Joueurs : Actuellement, l'adresse serveur est codée en dur (
127.0.0.1). Pour se connecter à un serveur distant, modifiezsrc/client/src/boot/Boot.cpp.
L'hôte doit partager son IP publique et ouvrir les ports :
- 4125/TCP : Auth TLS, rooms, chat
- 4124/UDP : Gameplay (inputs, snapshots)
- 4126/UDP : Voice chat
Le jeu lag beaucoup
Vérifiez :
- Latence réseau : Utilisez
ping <server_ip>(< 50ms idéal) - VSync : Activez dans
config/client.json - Backend : SDL2 est généralement plus performant que SFML
- Mode Release : Compilez en Release, pas Debug
Les contrôles ne répondent pas
Vérifiez que la fenêtre a le focus. Sur certains window managers Linux, cliquez dans la fenêtre.
Pour les manettes, assurez-vous qu'elles sont détectées :
Réseau¶
Quels ports utilise R-Type ?
| Port | Protocol | Usage |
|---|---|---|
| 4125 | TCP (TLS) | Authentification, rooms, chat |
| 4124 | UDP | Synchronisation de jeu (snapshots, inputs) |
| 4126 | UDP | Voice chat (codec Opus) |
Les ports sont définis dans le code et ne sont pas configurables.
Comment ouvrir les ports sur mon routeur ?
- Accédez à l'interface admin de votre routeur (souvent
192.168.1.1) - Trouvez "Port Forwarding" ou "NAT"
- Ajoutez trois règles :
- Port 4125, Protocol TCP → votre IP locale
- Port 4124, Protocol UDP → votre IP locale
- Port 4126, Protocol UDP → votre IP locale
Consultez la documentation de votre routeur pour les détails.
Pourquoi UDP et pas TCP ?
UDP offre une latence minimale car :
- Pas d'attente d'ACK
- Pas de retransmission automatique
- Pas de congestion control agressif
Pour un jeu action, perdre un paquet est préférable à attendre sa retransmission. L'état suivant corrige naturellement.
Développement¶
Comment ajouter un nouveau composant ECS ?
Comment débugger le réseau ?
Le serveur utilise spdlog avec une TUI intégrée qui affiche les logs en temps réel.
Ou utilisez Wireshark pour capturer le trafic :
- UDP port 4124 (game)
- TCP port 4125 (auth)
- UDP port 4126 (voice)
Comment créer un nouveau backend graphique ?
- Implémentez l'interface
IGraphicsBackend - Créez les classes
IWindow,ITexture, etc. - Utilisez la macro d'enregistrement :
Problèmes Courants¶
Erreur : 'SDL2/SDL.h' not found
SDL2 n'est pas installé. Via vcpkg :
Ou via apt :
Erreur : 'undefined reference to boost::asio'
Boost n'est pas linkée. Vérifiez CMakeLists.txt :
Le client crashe au démarrage
- Vérifiez que les assets existent dans
assets/ - Lancez en mode debug pour voir l'erreur
- Vérifiez les logs dans
logs/client.log
Segfault dans le système ECS
Causes fréquentes :
- Accès à une entité détruite
- Modification du registry pendant l'itération
- Composant non initialisé
Utilisez AddressSanitizer pour débugger. Le script build.sh configure automatiquement les sanitizers en mode Debug.