MMORPG en java [Résolu] - Java - Programmation
Marsh Posté le 05-10-2006 à 18:51:06
1- tu peux concaténer tes 3 clefs en une seule
2- il y a toujours moyen d'eviter les BDD , mais honnetement, les BDD ont ete inventé pour rendre service, s'en priver
3- je sais pas
Marsh Posté le 05-10-2006 à 19:16:39
flo850 a écrit : 1- tu peux concaténer tes 3 clefs en une seule |
Pour concatener les clef ca marche pas parce que je veux pouvoir retrouver vite un objet dont je n'ai que la position et pas l'id.
Elles doivent etres séparées, c'est comme si je croisait deux hashtable avec le meme set d'objets.
En fait pour ceux que ca interesse, j'ai trouvé ma solution:
Je créé un conteneur spécial qui etend la hashtable, et quand j'ajoute un objet, je retient dans quelle zone il est. Une zone est un rectangle.
Les zones se superposent. Chaque position correspond donc à deux zones au maximum.
Voila, merci pour vos tentatives d'aide. Comme quoi ca sert de dormir.
Marsh Posté le 05-10-2006 à 18:24:15
Bonjour,
Je developpe un MMORPG en java (un jeu en reseau quoi).
J'ai une question dont j'aimerais bien vous faire part car je commence à serieusement faire chauffer me neuronnes en ce qui concerne le stockage des objets du jeu. J'ai décidé de les stocker en mémoire vive et pas dans une base de donnée.
En fait, pour stocker ces objets (qui sont autant des personnages que des batiments ou des pieces de batiment) que j'apellerais Item, j'ai d'abord prit le parti que certains objets qui peuvent en contenir d'autres seront marqués ItemContainer et implémenteront des méthodes d'ajout et de retrait.
Il me faut souvent acceder au conteneur parent d'un objet et donc chaque objet contient une référence sur son conteneur parent du type ItemContainer.
Je transfère mes objets en les sérialisant, donc à l'arrivée chez le client, ce lien sur le conteneur parent n'est plus valable (les objets ont d'autres références).
Pour pallier à ce problème, j'ai utilisé une fonction qui recherche le bon conteneur (en comparant l'ID de l'Item) à chaque fois que j'ai un nouvel objet.
Ce systeme me pose beaucoup de problèmes, j'ai des erreurs de synchronisation inextricables, et j'ai pensé à autre chose.
Pourquoi ne pas me servir d'une table de hashage ou les ID des Items seraient les clefs et les Items les objets dans la table.
Ca résoud completement mes problèmes des parents parce que je référence des IDs.
Seulement, je commence à implémenter ce systeme, en faisant en sorte que tout mes objets et conteneurs d'objets soient dans la meme table et facilement repêchables par leur ID, mais le problème qui se pose, c'est que je dois souvent repérer ces objets par leur position (leur position dans le monde, dans le jeu), et énumérer cette liste à chaque fois pour retrouver un ensemble d'Items bien positionnés peut finir par être énorme.
Par exemple pour trouver les personnes dans un certain rectangle:
Alors voila, je commence à m'étouffer quand je pense que je suis bêtement en train de réinventer la base de données.
Donc mes questions après ce court état des lieux sont:
-n'y a t'il pas moyen d'utiliser des structures avec des clefs multiples? (clef Id, Clef Position, Objet Item)?
-suis-je vraiment obligé d'utiliser une base de donnée?
-que pensez vous qu'il soit le mieux entre séparer les conteneurs et tout mettre dans le même?
Voila, merci de votre lecture et de vos réponses.
Message édité par milootooloo le 06-10-2006 à 07:16:23