Problème de conception : variable globale - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Problème de conception : variable globale (/showthread.php?tid=6638) |
Problème de conception : variable globale - Maks - 09-02-2013 Salut à tous, J'ai un problème de conception qui m'empêche de boucler la version Beta de mon jeu. Dans tout mon code source, j'ai une seule et unique variable globale nommé "Root". Celle-ci pointe vers la classe Client côté client, la classe Room côté serveur. Bien sûr, côté client ça ne pose pas problème car la variable est globale pour un seul client. Cependant côté serveur, sous Node.JS, la variable devient globale à l'application et non à un seul client. Hors bien sûr sur le serveur tout le monde ne pointe pas vers la même room. Des pistes pour résoudre ce problème ? RE: Problème de conception : variable globale - Sephi-Chan - 09-02-2013 Je ne comprends pas : pourquoi le code client est-il utilisé dans le contexte de Node ? RE: Problème de conception : variable globale - Maks - 09-02-2013 Parce qu'une majorité des classes est partagé entre les deux environnements RE: Problème de conception : variable globale - Ter Rowan - 09-02-2013 Design pattern multiton ? RE: Problème de conception : variable globale - Maks - 09-02-2013 Multiton ? Multiple singleton ? Je vais donner quelques précisions pour être plus clair ^^ Côté client Classe Animation. Elle doit faire référence à la map, pour savoir s'il y a une collision. Du coup j'utilise Code : Root.map.collisionObstacle(x, y) Côté serveur Même cas de figure. Toutes mes classes sont rangées dans des espaces de noms, accessibles depuis l'espace global de Node.JS. Dans le même cas de figure, je pointe vers (global.)Root sur le serveur sauf que cette fois cette variable n'est pas nécessairement la room du client souhaitée. Du coup c'est un problème de conception à mon avis. Je dois en effet surement utilisé un design pattern, rendre certaines choses statiques, décomposer en plus de classes ? RE: Problème de conception : variable globale - Ter Rowan - 09-02-2013 Je suis certainement moins bon que toi, donc excuse si je me plante Je pense au mulsion : Comme le singleton mais avec un indice(ici l id du joueur si c est ça qui discrimine) Grosso modo A lieu de room.getInstance() tu fais room.getInstance( id) Et dans les données de room tu as un tableau ou une collection d objets chacun étant la room du joueur RE: Problème de conception : variable globale - niahoo - 09-02-2013 Code : Root.user[id].room RE: Problème de conception : variable globale - Maks - 09-02-2013 Ter Rowan > C'est pas une question de niveau, regarde on sait tous que les variables globales c'est de la merde et j'ai naïvement pensé qu'en n'en faisait qu'une je serais pas embêté Je vois ce que tu veux dire, ça rejoins un peu l'idée de niahoo. Côté Node, j'ai une variable globale server, instance de Server, qui contient un hash d'instances de Rooms selon une clée spécifique contenant le nom de la map (pour simplifier). Je peux donc accéder à la map en question via le nom de la map server.rooms[nomMap].map ou via un ID de joueur en effet avec une petite boucle. Le truc c'est que par exemple ma classe Animation est globale mais elle contient un attribut Character contenant un Personnage (joueur, bot...), du coup je pourrais récupérer l'ID et pointer vers la bonne Room Par contre pour d'autres classes ça sera plus compliqué car l'id ne peut sortir de nulle part ^^ |