DiggersIII les sources (enfin diront certains)
Voici enfin un lien pour télécharger les sources de DiggersIII qui ont été utilisés pour le concours au Moulin de la Forge début Mai. Je les poste ici sur mon blog car elles sont pratiquement sans commentaires et j'ai pas trop le temps en ce moment de peaufiner le tout. Voici tout de même quelques explications sur l'architecture générale et comment le tester :
Il y a une application serveur Diggers.Server.exe exécutée sur un micro qui a deux fonctions :
- Gérer les messages DirectPlay envoyés par les joueurs et envoyer des messages DirectPlay aux joueurs.
- Créer une instance du GameEngine (le moteur du jeu quoi).
Une application Joueur Diggers.Player.exe exécuté sur le micro de chaque joueur (donc si vous comptez bien, il y a 3 micros en tout - ceci a été imaginé pour éviter de favoriser l'un ou l'autre joueur s'il hébergait la partie). Cette application a deux phases :
- Connection au serveur via une interface similaire à Messenger. En réalité, je suis parti de l'exemple DXMessenger du DirectX SDK. Le joueur peut ainsi découvrir les autres joueurs et inviter l'un d'eux à créer une partie Diggers.
- Une fois la partie créée, une nouvelle fenêtre pour chaque joueur apparait avec la vue de la carte de la planète de jeu.
Règles du jeu :
Chaque joueur possède un Héro qui au début de la partie est positionné par le Game Engine sur un des ports de la planète. Via son interface (Diggers.Player.exe), le joeur peut lui envoyer des messages (DirectPlay) prédéfinis qui permettent de :
- créer un robot (qui partira du port d'attérissage) ou un building (à l'endroit ou il est) ou un Plane (idem robot),
- déplacer le Hero.
Le but est d'aller extraire des diamants dans les mines et de les rapporter dans ses buildings. Le gagnant (ou bout d'un temps prédéterminé dans le fichier Config du Serveur) est celui qui a le plus de diamants dans ses buildings.
Exception : si son Héro est tué, vous avez perdu !!! (stratégie utilisée d'ailleurs par les gagnants de l'épreuve).
Les Elements (Robots, Buildings ou Plane)
C'est Elements possèdent une intelligence artificielle que vous devrez développer dans une assembly qui sera située sur le micro du server. A chaque tour de jeu, le GameEngine interroge votre assembly pour savoir ce que vous désirez faire (j'insiste : ca se passe sur le server). Un Element peut se déplacer (Robot, Plane), attaquer (Robot, Building), Extraire et transférer des diamants dans un Building (Robot).
Ceux ci ont un certain nombre de caractéristiques comme le stock qu'il peuvent transporter, les dégâts qu'ils font, la distance de scan, etc.) qui doivent respecter des limites (définis dans le fichier Config du Server) et dont le total ne doit pas dépasser un certain nombre suivant son type. Au chargement de l'assembly du joueur, le GameEngine vérifie d'ailleurs la validité de vos Elements (n'est ce pas Aleks ?).
Vous pouvez créer jusqu'à 10 types d'éléments différents mais leur nombre totale sur la carte en cours de jeu est illimitée. Au vue d'ailleurs de ce qui s'est passé pendant le week-end, il semble que des Buildings attanquants sont trop forts par rapport aux autres types d'unités. Il faudra donc ajuster le fichier Config pour cela.
J'avais proposé un nouveau type d'unité mais la majorité l'a refusé : le Kamikase. Celui ci faisait pas mal de dégât et mourrait une fois son unique attaque effectuée. A vous d'imaginer d'autres types.
La suite
Je suis déjà en train d'imaginer la suite de Diggers III (ie DiggersIV). La première chose que je compte ajouter est un nouveau micro (donc ca fera 4 minimum ;-)) intitulé Spectator. Celui ci recevra de la part du serveur toutes les informations de la partie. Cela permettra ainsi d'inclure l'interface 3D de Valentin et Cyril et d'assister à une partie en tant que...Spectateur.
Je travaille également à simplifier les interactions Serveur - Joueur pour que le lancement d'une partie soit plus naturelle.
Vous trouverez les sources ici. (attention, près de 9Mo, DirectX9 obligatoire + .NET Framework 1.1 + VS .NET 2003)
Amusez vous bien ;-)))
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :