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) % largeursur 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 × heighttuiles, 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 foodNourriture : maintient le joueur en vie 1 linematePierre d'élévation 2 deraumerePierre d'élévation 3 siburPierre d'élévation 4 mendianePierre d'élévation 5 phirasPierre d'élévation 6 thystamePierre 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 × hauteurexemplaires de chaque ressource sur la carte et complète périodiquement le manque. Valeurs par défaut (server/srcs/world/RessourceSpawner.hpp) :Ressource Densité food0.5 linemate0.3 deraumere0.15 sibur0.1 mendiane0.1 phiras0.08 thystame0.05
Joueurs et progression¶
- Inventaire (inventory)
- Stock de ressources que transporte un joueur. La commande
Inventoryrenvoie la liste[food n, linemate n, ...]. - Vision / Look
- Champ de perception d'un joueur. La commande
Lookrenvoie l'ensemble des tuiles visibles, du plus proche au plus lointain. La portée croît avec le niveau : la rangée à la distancedcontient2·d + 1tuiles 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éGRAPHICest 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
-fdu serveur : une unité de temps dure1000 / fmillisecondes (server/srcs/scheduler/Scheduler.cpp). Plusfest é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 exempleForward= 7,Incantation= 300). - Broadcast
- Message sonore qu'un joueur émet à toute la carte (commande
Broadcast <texte>). Chaque autre joueur le reçoit sous la formemessage 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 = 0signifie « même tuile que l'émetteur » ;1à8désignent les huit directions autour du joueur. Le serveur calculeKpar 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çoiteject: 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.