Ceci est un double post de ce que j'ai déja mis ici:
http://www.developpez.net/forums/sho...56#post1286356
J'effacerais ou mettrais "Résolu" sur celui des deux qui ne génère pas de réponses ^^
Bonsoir à toutes et à tous,
Je me permet de soliciter les plus expérimentés d'entre vous afin de répondre à quelques questions que je me pose...
Tout d'abord, un rapide récap de la situation s'impose
Je développe en projet perso une ébauche de MMORPG. La partie serveur est en Java (Peut être un peu de C++ plus tard, flemme pour le moment):
- Le plus efficace a été de laisser de côté le modèle multithread. Un thread par client si +1000 clients en même temps me semble un peu trop utopiste).
- Tous les calls RPC sont aussi exclus, j'utilise des sockets NIO (Un listener principal threadé associe un socket à chaque objet Player après son autentification).
- J'évite de tabler sur la sérialisation d'objets pour la partie réseau, car côté client le language ne sera pas forcément Java.
- Le thread listener utilise un parser XML pour décortiquer les inputs, et les places dans un sync arraylist qui sert de queue.
- Parallèlement un 2e thread examine la queue, extrait les commandes (en FIFO donc) et les execute ou non, fonction de tests internes aux rêgles du jeux, et envoie directement le résultat au(x) client(s) concerné(s) par le résultat (Je m'interroge quant à la mise en place d'une queue ici aussi, mais il me semble que c'est inutile pour le moment et non critique à mettre en place dans le futur)
- Pour effectuer la persistence de tous les objets du jeu, j'ai conçu un modèle d'objet générique dont tous les autres découlent. Le stoquage est pour le moment assuré par du MySql à l'aide du pilote JDBC fourni par MySql.
Aucun schéma n'est encore adopté côté client, je m'efforce de maintenir une version "light" en Flash au fur-et-à-mesure que le serveur avance. Toutefois le protocole sera au final ouvert afin de permettre à chacun de pouvoir développer son propre client de la façon la moins contraingnante que possible (Le protocole est pour le moment encapsulé en XML mais je prévois de donner la possibilité à chaque client de choisir entre divers formats).
Maintenant, les questions
Ce jeu étant le tout premier temps réel réseau que je développe (Ma copine crée l'Artwork), je ne sais pas du tout comment est censée être structurée la partie traitement des taches "autonomes"...
Vu qu'au final, j'aimerais que les "mobs"/"NPC" se déplacent tout seuls au milieu des joueurs, je pense qu'il faut au serveur une notion d'unité de temps, de tick quoi, mais comment? Dois-je utiliser un timer (ou boucle avec test sur temps de dernière exec) vérifiant chaque object toutes les "n" millisecondes? Ou dois-je tourner perpetuellement sur tous les objets en updatant ceux qui ne l'ont pas été depuis "max" milliseconds? Help...
Dernier point... Je cherche une ou plusieurs personnes ayant une expérience dans le domaine, pour répondre ponctuellement à ce genre de questions. Je n'ai jamais plus de deux questions par semaine, mais le fait que j'ai toujours la/les même(s) personne(s) comme interlocuteur(s) serait pas mal, cela éviterait de récapituler à chaque fois le background du jeu![]()
Quite bien sûr à poster ici les trucs pertinents pour aider les suivants.
Bon, je crois que c'est tout, j'éspère avoir été clair, parfois je m'embrouille souvent je m'embrouille pas toujours je m'embrouille.... Zavez compris![]()
Merci!
Pierrot.
Je rajoute après coup:
- Les "mobs" ce sont les monstres, les trucs qui vivent sans forcément interaction, ou contre lesquels on se bat, etc. Dans l'idéal, je voudrais éviter le Dongeon & Dragons, pas de succession porte-monstre-drop-levelup. Trouver une armure sur un cadavre de scorpion est un concept débile, mon objectif est de ne placer que des mobs style loups, biche, cerf, serpent etc... A partir de la matière première reccueuillie en les tuant, on pourra alors créer des items en s'adressant à un personnage possédans un corps de métier adapté...
- Les "NPC" sont les "Non Playing Characters", les personnages dirigés par IA. Dans l'idéal, je voudrais un total de 0 NPC sur la version prod... Le but étant de déléguer toutes les taches accomplissables à des gens acceptant d'endosser l'identité du personnage les gérant...
Partager