EPISODE 21:

He was aware that he was still a child.







Jeu 2D "splatoon"

Il y avait en réalité deux parties dans ce projet. La première partie était de seulement compléter le code du professeur. Nous devions :

  • lier dynamiquement la bibliothèque de chaque joueur à son joueur associé
  • coder l'action du joueur
  • gérer la fin du jeu

Cette partie était simple et pouvait facilement être faite en 2-3 heures. Coder toute cette première partie sans aucune erreur nous aurait valu un 15/20. Mais que dire des 5 points manquants ? Que dire de la deuxième partie ?

Eh bien pour obtenir les 5 derniers points, on nous a demandé de rendre le jeu meilleur. Cela signifie "faites ce que vous voulez tant que vous ajoutez des trucs cool". Il nous a donné des exemples tels que faire un petit menu, afficher le score en temps réel, des choses comme ça. Mais j'ai pensé "C'est dommage que les joueurs se déplacent tout seuls selon leur bibliothèque. Je veux les faire bouger moi-même". Donc c'est ce que j'ai fait. J'ai utilisé mes connaissances de licence en programmation système pour coder un processus serveur et client, et je l'ai ajouté à mon code.

Donc ça fonctionne comme ça : Nous avons au moins deux processus qui tournent en même temps. Il y a le processus de jeu, qui gère le rendu SDL. Au début du processus de jeu, je le fork pour démarrer le serveur. Nous avons ensuite un processus serveur qui va récupérer les commandes envoyées par les clients, et un processus de jeu qui va faire bouger les joueurs selon les commandes transmises par le serveur. La communication entre le serveur et les clients est une communication basée sur les sockets. Entre le serveur et le processus de jeu, c'est un tableau partagé. L'idée est que chaque fois qu'un client envoie une commande, le serveur l'écrive dans le tableau partagé à l'index correspondant à l'ordre de connexion du client (si c'est le premier client à se connecter, ses commandes seront écrites à l'index 0 et ainsi de suite). Ensuite le processus de jeu boucle et lit le tableau toutes les 100ms et fait bouger le joueur.

Ce projet était assez amusant car nous étions libres de faire ce que nous voulions, et j'ai pu me rappeler de beaucoup de fonctions et de concepts en C que je n'avais pas pratiqués depuis presque un an, donc c'était une bonne expérience.