Bonsoir!
Depuis mon précédent jeu sous Java (Punxel Agent), j'ai signé un pacte avec Lucifer et j'ai installé Unity3D sur mon PC.
Cela fait maintenant plusieurs mois que je m'amuse avec et je suis conquis. Tellement conquis que je souhaite réaliser le jeu de mes rêves: Jouer un pirate de l'espace avec d'autres joueurs en coopération.
Mais beaucoup le savent: implémenter un mode "multijoueur en ligne" dans un jeu, c'est très difficile. Il faut voir les nombreux jeux indés qui ne comportent pas ce mode de jeu pour comprendre: Samurai Gunn, Towerfall...
Et même s'il y a la possibilité de jouer avec ses copains à distance, beaucoup de jeux possèdent un netcode pas très performant, ou pas très cohérent (coucou Battlefield 4 ).
Mais, étant fou et avec du temps de libre à perdre, je vais tenter cet aventure . Et ce topic sera mon devlog.
Pour résumer, dans ce topic, je vais écrire mes avancés sur la réalisation d'une architecture multijoueur sous Unity3D. Avec quelques conditions:
- Je n'utilise que ce que m'offre Unity3D pour réaliser mon projet. Pas de uLink, de Photon machin, ou autres API.
- L'architecture sera client/server avec un serveur autoritaire (pour limiter les possibilités de triche).
- Une architecture assez modulable pour être réutilisée dans plusieurs projets.
- Netcode optimisé (du moins, pour le format coop 8 joueurs ).
Ma finalité est de ne pas réaliser un jeu, mais une sorte d'API pour pouvoir intégrer facillement (et rapidement) un mode multijoueur pour mes futurs jeux.
De plus, mon but est de ne pas produire une architecture parfaite. Du moins, il faut que ca marche .
Ma façon de procéder est simple: Je débute tout à zéro en mode amateur. J'ai les connaissances, mais aucune pratique (même si j'ai déjà codé un FTP en Java).
Je ne vais pas tenter de reproduire ces architectures, mais je vais m'y baser:
http://fabiensanglard.net/quake3/network.php
http://www.gamasutra.com/view/featur...8_network_.php
https://developer.valvesoftware.com/...yer_Networking
Attention: j'écrirai en tant que développeur, pour les développeurs. Certains termes risquent de ne pas être compréhensibles pour les simples joueurs (Callback? Méthode abstraite?).
J'essayerai d'expliquer au mieux ma démarche au fil du projet, à chaque étape. Mais si j’explique mal ou si je ne détail pas assez, n'hésitez pas à m'en avertir .
Je tenterai de faire un "rapport" chaque semaine au minimum. Mais je préviens: ca sera des mises à jours irréguliers (vu mes disponibilités). Je ferais de mon mieux.
Si vous avez des questions ou des envies, n'hésitez pas .
FAQ1: Si j'utilise Unity3D pour ce projet, c'est parce que je veux réaliser un jeu sur le long terme (mais pas maintenant).
FAQ2: Je distribuerai le code source à la fin du projet .
FAQ3: J'ai des connaissances, mais aucune (vrai) pratique. Je ne suis pas un pro dans ce domaine, du coup il est fort possible que je fais des erreurs. N'hésitez pas à me critiquer!
A très bientôt!