Lancement¶
Une fois les binaires construits (voir Installation), on lance Zappy en trois temps : d'abord le serveur, puis le GUI, puis une ou plusieurs IA par équipe. Toutes les commandes ci-dessous s'exécutent depuis la racine du dépôt via les scripts wrapper.
Ordre de lancement
Démarrez toujours le serveur en premier : c'est lui qui ouvre le port
TCP. Le GUI et les IA sont des clients ; ils échouent (code de sortie 84)
s'ils ne trouvent pas de serveur à l'adresse indiquée.
Lancer le serveur¶
./zappy_server -p <port> -x <largeur> -y <hauteur> \
-n <équipe1> <équipe2> ... -c <clients> -f <fréquence>
| Option | Signification | Défaut |
|---|---|---|
-p |
Port TCP d'écoute (1..65535) | 4242 |
-x |
Largeur de la carte (> 0) | 10 |
-y |
Hauteur de la carte (> 0) | 10 |
-n |
Liste des noms d'équipes (au moins un) | team1 team2 |
-c |
Nombre de clients (œufs) autorisés par équipe (> 0) | 3 |
-f |
Fréquence : nombre d'unités de temps par seconde (> 0) | 100 |
L'option -n consomme tous les jetons suivants qui ne sont pas une nouvelle
option ; le nom réservé GRAPHIC et les doublons sont rejetés. Une erreur de
configuration envoie un message sur la sortie d'erreur et termine le programme
avec le code 84.
Signification de -c
-c fixe le nombre d'œufs (donc de slots de connexion) par équipe au
démarrage. C'est aussi le nombre de clients IA qui peuvent se connecter à
cette équipe avant qu'un Fork ne crée des places supplémentaires.
Exemple :
Lancer le GUI¶
| Option | Signification | Défaut |
|---|---|---|
-h |
Hôte (adresse) du serveur | aucun (à fournir) |
-p |
Port TCP du serveur | 4242 |
En pratique, fournissez les deux options. À la connexion, le GUI envoie
automatiquement GRAPHIC\n au serveur, qui lui répond par l'état initial
complet de la partie (taille de carte, équipes, contenu des tuiles, joueurs,
œufs). Une fenêtre 3D s'ouvre (1280 × 720) et affiche la partie en temps réel.
Le GUI est passif
Le GUI ne fait qu'observer : après GRAPHIC, il n'envoie plus rien et se
contente d'afficher les événements diffusés par le serveur.
Lancer une IA¶
| Option | Signification | Défaut |
|---|---|---|
-p |
Port TCP du serveur | aucun (à fournir) |
-n |
Nom de l'équipe à rejoindre | aucun (à fournir) |
-h |
Hôte du serveur | 127.0.0.1 |
--debug |
Active les journaux détaillés | désactivé |
Chaque processus zappy_ai contrôle un seul joueur. Pour avoir plusieurs
joueurs dans une équipe, lancez plusieurs processus avec le même -n. Le nombre
de connexions par équipe est borné par le -c du serveur (plus les œufs créés
par Fork).
À la connexion, l'IA effectue le handshake (voir
Handshake) : elle attend WELCOME, envoie le nom
d'équipe, puis reçoit le nombre de slots restants et les dimensions de la carte.
Une erreur de connexion termine le processus avec le code 84.
Exemple de session complète¶
L'exemple suivant met en place une partie sur 3 équipes, avec le GUI et deux IA
par équipe. Ouvrez plusieurs terminaux (ou utilisez & pour mettre des
processus en arrière-plan).
# Terminal 1 — le serveur (à démarrer en premier)
./zappy_server -p 4242 -x 20 -y 20 -n team1 team2 team3 -c 6 -f 100
# Terminal 2 — le GUI (spectateur)
./zappy_gui -h localhost -p 4242
# Terminal 3..N — deux IA par équipe
./zappy_ai -p 4242 -n team1 -h localhost
./zappy_ai -p 4242 -n team1 -h localhost
./zappy_ai -p 4242 -n team2 -h localhost
./zappy_ai -p 4242 -n team2 -h localhost
./zappy_ai -p 4242 -n team3 -h localhost
./zappy_ai -p 4242 -n team3 -h localhost
sequenceDiagram
participant U as Vous
participant S as zappy_server
participant G as zappy_gui
participant A as zappy_ai
U->>S: ./zappy_server -p 4242 ...
Note over S: ouvre le port 4242
U->>G: ./zappy_gui -h localhost -p 4242
G->>S: GRAPHIC
S->>G: état initial
U->>A: ./zappy_ai -p 4242 -n team1
A->>S: handshake (WELCOME, team1, ...)
S->>G: pnw / enw (nouveau joueur)
Connexions tardives
Le serveur reste disponible tant qu'il tourne : vous pouvez connecter de nouvelles IA ou (re)lancer le GUI à tout moment, dans la limite des slots d'équipe disponibles.
Le launcher SFML (optionnel)¶
Le launcher graphique automatise toute cette procédure. Après l'avoir compilé
(make -C launcher), lancez-le :
La fenêtre « Mewzappy Launcher » propose un écran de réglages (port, largeur,
hauteur, nombre de clients, fréquence, liste d'équipes — valeurs par défaut
respectives 4242, 10, 10, 1, 1). En appuyant sur Launch, le
launcher :
- compile d'abord le projet en invoquant le Makefile racine
(
cd .. && make -j) et affiche la sortie ; - lance ensuite un
zappy_server, unzappy_gui, puis unzappy_aipar équipe et par client, à partir des réglages saisis. Il appelle les binaires wrapper de la racine avec les options :- serveur :
-p -x -y -c -f -n <équipes...> - GUI :
-p <port> -h localhost - IA :
-p <port> -n <équipe> -h localhost
- serveur :
- arrête tous les processus (SIGTERM) lorsque vous cliquez sur Stop ou fermez la fenêtre.
Pourquoi passer par la racine ?
Le launcher exécute les binaires « nus » (zappy_server, zappy_gui,
zappy_ai) depuis le répertoire racine du dépôt : il s'appuie sur les
scripts wrapper décrits dans Installation.
Limitations connues
Certains comportements de lancement et d'options présentent des écarts documentés. Voir Limitations connues.