18-05-2010, 01:53 PM
J'ai aussi un table carte mais avec 4 dimensions : (id_carte, x, y, altitude). L'id_carte prend une valeur différente selon que l'on est sur la carte générale, les cartes des donjons, des villes, des maisons, etc.
Selon comment tu images les choses, je pense qu'il n'y a au moins 2 choix :
- Soit tu indexes ta table carte pour avoir un id_unique (dans mon cas on pourrait imaginer l'id (id_carte & '_' & x & '_' & y '_' & altitude : exemple d'id : 2001_30_-50_1230 ). A partir de cet id, tu l'associes à un joueur dans une nouvelle table : connaissance_carte (id_unique_carte, id_joueur)
- Soit tu subdivises ton monde en zone (des carrés de 15 cases * 15 cases par exemple). Lorsqu'un joueur franchi une zone, il a la connaissance de toute la zone. Dans ce cas, tu créé une table connaissance_carte (id_zone, id_joueur).
En procèdent ainsi, tu limites la taille de la table connaissance carte si cela t'effraie.
D'autres alternatives son imaginable ... genre si tu possèdes plus de 90 % de la connaissance d'une carte tu peux accorder une connaissance global du niveau.
Sinon concernant la taille, il faut, pour te donner une idée, que je te parle de ma table log qui contient le listing de tous les déplacement de mes joueurs ... c'est encore plus lourd qu'une table connaissance_carte car elle contient en prime l'heure du déplacement. De plus, si je repasse sur une même case ca fait 2 enregistrement log bien distinct ...
Ces pourquoi mes tables logs font 70 Mo ... pour 90 Mo de bases de données. (ma table la plus grosse après les logs étant la table Objet). Je purge régulièrement les informations vieilles de plus de 1 mois dans mes tables logs.
Kéké
Selon comment tu images les choses, je pense qu'il n'y a au moins 2 choix :
- Soit tu indexes ta table carte pour avoir un id_unique (dans mon cas on pourrait imaginer l'id (id_carte & '_' & x & '_' & y '_' & altitude : exemple d'id : 2001_30_-50_1230 ). A partir de cet id, tu l'associes à un joueur dans une nouvelle table : connaissance_carte (id_unique_carte, id_joueur)
- Soit tu subdivises ton monde en zone (des carrés de 15 cases * 15 cases par exemple). Lorsqu'un joueur franchi une zone, il a la connaissance de toute la zone. Dans ce cas, tu créé une table connaissance_carte (id_zone, id_joueur).
En procèdent ainsi, tu limites la taille de la table connaissance carte si cela t'effraie.
D'autres alternatives son imaginable ... genre si tu possèdes plus de 90 % de la connaissance d'une carte tu peux accorder une connaissance global du niveau.
Sinon concernant la taille, il faut, pour te donner une idée, que je te parle de ma table log qui contient le listing de tous les déplacement de mes joueurs ... c'est encore plus lourd qu'une table connaissance_carte car elle contient en prime l'heure du déplacement. De plus, si je repasse sur une même case ca fait 2 enregistrement log bien distinct ...
Ces pourquoi mes tables logs font 70 Mo ... pour 90 Mo de bases de données. (ma table la plus grosse après les logs étant la table Objet). Je purge régulièrement les informations vieilles de plus de 1 mois dans mes tables logs.
Kéké