Aller au contenu

Glossaire

Cette page définit le vocabulaire du projet Zappy. Les termes techniques du protocole (noms de commandes, codes…) restent en anglais car ils correspondent au texte réellement échangé sur le réseau.

Termes du monde

Tuile (tile)
Case élémentaire de la carte. Une tuile contient des ressources, zéro ou plusieurs joueurs et éventuellement des œufs. Côté serveur, c'est la classe Tile (server/srcs/world/Tile.hpp).
Monde torique (toroidal world)
Carte sans bord : les coordonnées « débordent » et reviennent de l'autre côté. Concrètement, l'accès à une tuile applique ((x % largeur) + largeur) % largeur sur chaque axe (server/srcs/world/World.cpp:47). Un joueur qui avance hors de la carte par la droite réapparaît à gauche. Toutes les distances et déplacements sont calculés selon le plus court chemin torique.
Carte / dimensions
La carte est un rectangle de width × height tuiles, fixé au lancement par les options -x (largeur) et -y (hauteur) du serveur.

Ressources

Ressource (resource)

Objet ramassable présent sur une tuile. Il existe 7 ressources, indexées de 0 à 6 dans le protocole et l'enum Resource (server/srcs/world/Tile.hpp:22) :

Index Ressource Rôle
0 food Nourriture : maintient le joueur en vie
1 linemate Pierre d'élévation
2 deraumere Pierre d'élévation
3 sibur Pierre d'élévation
4 mendiane Pierre d'élévation
5 phiras Pierre d'élévation
6 thystame Pierre d'élévation (la plus rare)
Nourriture (food)
Ressource vitale. Chaque joueur démarre avec 10 unités de nourriture. Une unité est consommée toutes les 126 unités de temps ; à zéro, le joueur meurt (le serveur lui envoie dead).
Pierres (stones)
Les 6 ressources non alimentaires (linemate à thystame). Elles sont consommées lors des incantations selon des recettes précises par niveau.
Densité de ressources

Proportion de tuiles censée contenir chaque ressource. Le serveur vise densité × largeur × hauteur exemplaires de chaque ressource sur la carte et complète périodiquement le manque. Valeurs par défaut (server/srcs/world/RessourceSpawner.hpp) :

Ressource Densité
food 0.5
linemate 0.3
deraumere 0.15
sibur 0.1
mendiane 0.1
phiras 0.08
thystame 0.05

Joueurs et progression

Inventaire (inventory)
Stock de ressources que transporte un joueur. La commande Inventory renvoie la liste [food n, linemate n, ...].
Vision / Look
Champ de perception d'un joueur. La commande Look renvoie l'ensemble des tuiles visibles, du plus proche au plus lointain. La portée croît avec le niveau : la rangée à la distance d contient 2·d + 1 tuiles et la vision s'étend jusqu'à la distance égale au niveau du joueur.
Niveau (level)
Rang d'un joueur, de 1 à 8. On démarre au niveau 1 ; chaque incantation réussie fait passer au niveau suivant.
Incantation / Élévation
Rituel qui élève d'un niveau les joueurs participants. Il faut, sur une même tuile, un certain nombre de joueurs du même niveau et un certain stock de pierres (voir Mécaniques de jeu). L'incantation dure 300 unités de temps et le serveur vérifie les conditions deux fois : au lancement puis à la fin.
Œuf (egg)
Future place de joueur dans une équipe. Au démarrage, le serveur crée -c œufs par équipe. À la connexion d'un client IA, un œuf de l'équipe éclot (hatch) et devient le joueur contrôlé.
Fork
Action par laquelle un joueur pond un nouvel œuf pour son équipe (commande Fork, délai 42 unités de temps). Cet œuf ouvre un slot de connexion supplémentaire pour l'équipe.
Équipe (team)
Groupe de joueurs partageant un nom. Les noms d'équipe sont fixés au lancement du serveur via -n. Le nom réservé GRAPHIC est interdit (il désigne le client graphique).

Temps et communication

Unité de temps / Fréquence
Le temps du jeu se mesure en unités de temps. La fréquence est réglée par l'option -f du serveur : une unité de temps dure 1000 / f millisecondes (server/srcs/scheduler/Scheduler.cpp). Plus f est élevé, plus le jeu est rapide. Chaque commande d'IA possède un délai exprimé en unités de temps avant de produire son effet (par exemple Forward = 7, Incantation = 300).
Broadcast
Message sonore qu'un joueur émet à toute la carte (commande Broadcast <texte>). Chaque autre joueur le reçoit sous la forme message K, <texte>.
Direction du son K
Entier de 0 à 8 indiquant d'où provient un broadcast reçu, relativement à l'orientation du récepteur. K = 0 signifie « même tuile que l'émetteur » ; 1 à 8 désignent les huit directions autour du joueur. Le serveur calcule K par le plus court vecteur torique entre émetteur et récepteur (server/srcs/algorithms/BroadcastAlgo.cpp).
Eject
Action par laquelle un joueur pousse d'une tuile tous les autres joueurs présents sur la sienne, dans la direction où il regarde (commande Eject). Chaque victime reçoit eject: K.

Direction d'orientation côté protocole

Dans les messages destinés au GUI, l'orientation d'un joueur est codée 1 = Nord, 2 = Est, 3 = Sud, 4 = Ouest.

Warning

Certaines unités diffèrent entre messages (par exemple la nourriture est rapportée différemment à l'IA et au GUI). Voir Limitations connues.