Hello,
Après une longue absence, je passe pour donner quelques infos sur l'avancement pour la v6.0.0:
- Moteur [en cours]
- Module plateforme [terminé]
- Module RTS [terminé]
- Présentations (slides) [terminé]
- Tuto (wiki, site, code snippet, exemples progressifs) [terminé]
- Module Shoot'em Up [en cours]
- Module Multijoueur [en cours]
Concernant la partie multijoueur, je suis en train de faire une démo avec Mario, et pour le moment il est facile de gérer le multijoueur entre X joueurs sur une map, et ce, de manière efficace (en envoyant le moins de données possible sans sacrifier le gameplay).
Les connections des nouveaux joueurs sont notifiées pour chacun d'eux (il est donc aisé de créer les entités à la volée lors d'une connexion).
La partie suivante va consister à synchroniser le jeu plus en détail (interactions avec les monstres, objets...).
Pour le moment, l'architecture est à mi-chemin entre du bas et du haut niveau. Afin de laisser le plus de choix possible quant à l'implémentation du système de réseau, j'ai opté pour une solution encodage/décodage en byte combiné à un typage de message.
Cependant, une fois l'implémentation bas niveau (encodage/décodage) terminée, tout le reste est vraiment facile d'utilisation.
En gros, si vous définissez votre type de message: EntityMessage (qui va contenir les infos de déplacement, et les corrections de placement si besoin), vous devrez implémenter vous même le décodage et l'encodage du message (rien de bien compliqué cependant). De fait, vous pourrez contrôler totalement ce que vous enverrez sur le réseau (il est évident que gérer le multi pour 4 joueurs sur un petit jeu de plateforme n'est pas la même chose qu'une partie de RTS avec 8 joueurs et 100 unités chacun).
Je verrai lorsque j'aurai plus de recul sur mon travail si je simplifie encore les choses, au détriment du contrôle... où si je compense avec une bonne doc.
L'avantage pour le moment, c'est qu'il est possible d'ajouter une couche multijoueur directement sur un système solo.
Entre d'autre terme, il suffira de déclarer une entité comme étant "Networkable", d'utiliser le modèle de base en délégation et d'implémenter les méthodes d'application de message (pour mettre à jour les entités des autres joueurs). Ensuite, il faudra ajouter au "World" (lui aussi de type Networked) les entités qui sont sujettes à une mise à jour sur le réseau, et la partie cliente est gérée automatiquement.
En parallèle, j'ai préparé des tutos complets et expliqués, sur une utilisation pas à pas des différents composants.
Cette version a venir ne ressemble plus beaucoup à la version précédente, puisqu'elle est tout simplement plus facile à utiliser. Je ne sais pas du tout quand elle sera prête, sachant que mon stage de fin d'étude se termine, et que la suite s'enchainera rapidement.
Dans tout les cas je privilégierai la finition afin de ne pas avoir trop à y revenir par la suite.
A bientôt !
Partager