Première implémentation du client-serveur dans le jeu vidéo Sporgloo

- 22/07/2023 - 4 heures 18 minutes - Patrick Prémartin

Le développement de Sporgloo est découpé en plusieurs parties :

- l'interface graphique du jeu

- les interactions avec le joueur

- le dialogue entre le jeu et le serveur pour les interactions avec les autres joueurs

- le stockage des données du jeu côté joueur comme côté serveur

Pour vraiment attaquer le codage je me suis lancé dans la partie client/serveur en premier. Après tout, si le client n'a pas de serveur il ne peut rien faire dans ce type de jeu, alors autant se lancer...

N'ayant pas la manipulation des sockets TCP en tête (je ne m'en sers jamais) je suis reparti d'un exemple que j'avais développé lors d'une formation et en ai profité pour l'ajouter à ce dépôt de code d'exemples de programmes Delphi. Il montre les bases de la déclaration d'un client et d'un serveur en utilisant la classe TSocket native fournie par Embarcadero dans la RTL.

J'ai préféré passer par cette librairie plutôt qu'un composant Indy existant ou pouvant exister, comme ça je n'ai pas de dépendance supplémentaire sur le projet au cas où Indy ne serait plus installé par défaut à l'avenir.

J'ai défini les messages à échanger comme une structure à l'ancienne (avec un RECORD) puisque ce type a l'avantage de pouvoir partager la même zone mémoire entre plusieurs types de données selon comment on y accède. L'inconvénient étant que la taille de chaque alternative est inconnue, ce qui me chagrine un peu pour l'optimisation de la bande passante et le volume de données transférées. Envoyer une trame de 256 octets pour seulement 4 utiles me paraît quand même un peu idiot si on peut faire autrement.

Ceci dit je suis parti sur un octet de fin de trame afin d'optimiser tout ça en choisissant la valeur 0... Ce qui est totalement stupide comme on l'a vérifié le lendemain... surtout quand on fait transiter des nombres dans leur représentation binaire !

Une fois les threads en place côté client et serveur, les messages définis, j'ai ajouté les méthodes d'envoi et de réception des informations puis les actions à faire pour chaque dans la mesure du possible puisque les données du jeu n'étaient pas encore disponibles.

Certaines informations n'ont pas été affichées. Vous devez vous connecter pour y accéder.

Connexion Inscription


Liens associés

Ces liens s'ouvrent dans la même fenêtre que cette page. En cliquant dessus vous quitterez Serial Streameur.
Pensez à les ouvrir dans un nouvel onglet si vous préférez rester ici pour y revenir plus facilement.


Mots-clés associés

Delphi, FireMonkey, FMX, Game Dev, Gamedev


Classement

Evénements spéciaux > Game jam > Kenney Jam > Kenney Jam 2023
Projets > Jeux vidéo > Sporgloo