Skip to content

Repository files navigation

Zappy ⚒

Le projet Zappy est un projet de 2e année à Epitech.

Ce projet est un jeu multijoueur utilisant du réseau, une interface graphique et de l'IA, implémenté dans plusieurs langages tels que Python, C et C++.

Le serveur est chargé de répondre aux requêtes client provenant de l'IA et de l'interface graphique.

❀༉ Usage

Le projet est compilé avec un Makefile

make

Pour demarer le serveur :

./zappy_server -p port -x width -y height -n name1 name2 ... -c clientsNb -f freq

Par exemple :

./zappy_server -p 4242 -x 10 -y 10 -n Ender Creeper -c 10 -f 100

Pour demarer l'interface graphique :

./zappy_gui -p port -h machine

Par exemple :

./zappy_gui -p 4242 -h localhost

Pour demarer l'inteligence artificielle :

./zappy_ai -p port -n name -h machine

Par exemple :

./zappy_ai -p 4242 -n Ender -h localhost

✦ Structure du projet

src/server/
├── main.c          # Point d'entrée principal
├── server.c        # Gestion du socket serveur TCP
├── clients.c       # Gestion des clients connectés (IA/GUI)
├── main_loop.c     # Boucle principale avec poll()
├── protocol.c      # Gestion des protocoles IA et GUI
├── game.c          # Structure du jeu (stub)
└── utils.c         # Fonctions utilitaires

include/server/
└── server.h        # Structures et prototypes

★ Fonctionnalités

₊✧ Base réseau

  • Socket serveur TCP non-bloquant sur le port 4242
  • Gestion multi-clients avec poll() (jusqu'à 256 clients simultanés)
  • Différenciation automatique des clients :
    • IA : envoie le nom d'équipe à la connexion
    • GUI : envoie "GRAPHIC" à la connexion

₊⊹ Gestion des clients

  • Structure client_t complète avec buffer, type, authentification
  • Lecture/écriture non-bloquante avec gestion des messages ligne par ligne
  • Déconnexion propre et nettoyage automatique

⋆˚。 Protocoles de base

  • Protocole IA : commandes Forward, Right, Left, Look, Inventory, etc.
  • Protocole GUI : commandes msz, bct, mct, tna, ppo, plv, pin, sgt, sst
  • Réponses par défaut pour tester la connectivité

⋆˚。 Se deplacer dans l'interface graphique

  • Z key : monter
  • Q key : s'éloigner
  • S key : descendre
  • D key : se rapprocher

✿ Tests

Le serveur peut être testé comme ci-dessous :

# Compilation
make zappy_server

# Lancement
./zappy_server

# Test connexion IA
echo "team1" | nc localhost 4242

# Test connexion GUI
echo "GRAPHIC" | nc localhost 4242

❤︎ Réponses attendues

Client IA (team1)

WELCOME
1           # Numéro du client dans l'équipe
10 10       # Dimensions de la carte

Client GUI

WELCOME
msz 10 10   # Taille de la carte
sgt 126     # Unité de temps
mct         # Contenu de la carte

ೀ Structures clés

Client

typedef struct client_s {
    int fd;                    // Socket file descriptor
    client_type_t type;        // CLIENT_IA ou CLIENT_GUI
    char buffer[BUFFER_SIZE];  // Buffer de réception
    bool authenticated;        // État d'authentification
    char *team_name;           // Nom d'équipe (IA uniquement)
    int x, y, orientation;     // Position et orientation
} client_t;

Serveur

typedef struct server_s {
    int socket_fd;                         // Socket serveur
    client_t clients[MAX_CLIENTS];         // Clients connectés
    struct pollfd poll_fds[MAX_CLIENTS+1]; // Structure poll
    int client_count;                      // Nombre de clients
    game_t *game;                          // État du jeu
} server_t;

By radio sound "Box, Box..." 🏎☘︎

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages