Sommaire

Exécution concurrente

Avant de commencer à concevoir des solutions pour le jeu en réseau, il faut tout d’abord être capable de faire fonctionner le moteur de règles dans un thread séparé des aspects d’interface utilisateur. À terme, l’objectif est de faire fonctionner un moteur dans un processus différent sur une machine distante.

Cette section présente également plusieurs approches usuelles et les patrons associés pour gérer l’exécution concurrente de traitements, avec pour exemple la parallélisation de l’exploration de l’arbre de recherche pour les IA avec planification.

1. Séparer Moteur de règles et Interface utilisateur

a. Échanges entre les acteurs

Pour mettre en place la parallélisation, trois principaux acteurs sont à considérer :

  • Le moteur de règles qui modifie l’état en fonction des commandes.

  • Le moteur de rendu qui dessine l’état et produit des commandes.

  • Le pilote qui orchestre les échanges, incarné par la classe PlayGameMode dans le jeu exemple Pacman.

Ces acteurs ont besoin d’informations communes, comme les données de l’état du jeu. Certains acteurs modifient ces données communes, ce qui rend leur lecture impossible lors des changements. D’autres acteurs produisent des messages, comme le moteur qui notifie les modifications de l’état, ou l’interface utilisateur qui produit ...