JeuWeb - Crée ton jeu par navigateur
Architecture Base de donnée - 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 : Architecture Base de donnée (/showthread.php?tid=5376)

Pages : 1 2 3


Architecture Base de donnée - ToraTora - 12-04-2011

Bonjour,

n'étant pas expert en base de donnée, je me demande si mon architecture est correct, ou si je peux encore l'optimiser.

Voici les tables que j'ai :

items:
id, x, y, z, image_id

personnages:
item_id, empire_id, planete_id, ville_id, [caractéristiques du personnage...]

vaisseaux:
item_id, planete_id, ville_id, personnage_id, [caractéristiques du vaisseau...]

objets:
item_id, planete_id, ville_id, [caractéristiques de l'objet...]

planetes:
item_id, nom, description [caractéristiques de la planete...]

villes:
item_id, planete_id, nom, description [caractéristiques de la ville...]

Mes planètes sont découpés en plusieurs images
exemple : [Image: dax-7.png]
J'enregistre donc toutes les images avec leurs coordonnées associé pour construire quelque chose comme ça :
[Image: tmpvjr.png]

Est ce que c'est la bonne façon de faire ? Y a-t-il des optimisation à faire ?

Merci pour votre aide ! Wink


RE: Architecture Base de donnée - Sephi-Chan - 12-04-2011

Qu'est-ce qu'un item ?

En tout cas, ce mélange des langues est dangereux. Tu devrais n'en choisir qu'une (et idéalement choisir l'anglais).


Sephi-Chan


RE: Architecture Base de donnée - ToraTora - 12-04-2011

Effectivement, il faudra que j'harmonise tout ça.

Ma table item ne sert qu'à enregistrer les informations identiques à toutes mes tables.
Au lieu d'avoir


personnages:
id, x, y, z, empire_id, planete_id, ville_id, [caractéristiques du personnage...]

vaisseaux:
id, x, y, z, planete_id, ville_id, personnage_id, [caractéristiques du vaisseau...]

objets:
id, x, y, z, planete_id, ville_id, [caractéristiques de l'objet...]


je voulais regrouper tous les champs identiques dans 1 seule table.

En fait item devrait s’appeler position..


RE: Architecture Base de donnée - Sephi-Chan - 12-04-2011

D'accord, je comprends mieux. Mais quel est l'intérêt dans ton cas ?
Si c'est pour économiser des colonnes, ça ne sert à rien. :p

Ça ressemble à du polymorphisme, mais en moins complet.


Sephi-Chan


RE: Architecture Base de donnée - ToraTora - 12-04-2011

Un personnage peut avoir plusieurs vaisseau, plusieurs objets.
Un vaisseau peut avoir plusieurs objets.

Donc lors d'un déplacement, au lieu de modifier la position des vaisseaux/objets/personnages dans chaque tables, je la modifie que dans 1 seule.

Je me demande si c'est la bonne façon de faire.




RE: Architecture Base de donnée - Sephi-Chan - 12-04-2011

Hm, je croyais comprendre, mais en fait non.

À quoi correspond l'image généré ? Qu'est-ce que ça représente ?
Pourquoi un objet a-t-il besoin de coordonnées ?
Bref, explique-nous ton schéma.


Sephi-Chan


RE: Architecture Base de donnée - Argorate - 12-04-2011

(12-04-2011, 07:13 PM)ToraTora a écrit : Un personnage peut avoir plusieurs vaisseau, plusieurs objets.
Un vaisseau peut avoir plusieurs objets.

Donc lors d'un déplacement, au lieu de modifier la position des vaisseaux/objets/personnages dans chaque tables, je la modifie que dans 1 seule.

Je me demande si c'est la bonne façon de faire.

Oui, j'avais fait pareil pour mon MMO, d'ailleurs j'avais bien galéré a tout transféré, mais effectivement c'est une optimisation non négligeable et que je te conseil fortement.

Les objets doivent avoir des coordonnées lorsqu'ils ne sont pas contenu, mais dès qu'il le sont ils doivent figurer dans une table de liaison (id_obj, id_conteneur), et du coup il n'ont plus de coordonnée propre, ils sont dans un conteneur qui lui a des x et y a ce moment là...

Bref tu as deja compris tout ça tout seul, je dis juste que je trouve ça pertinent.


RE: Architecture Base de donnée - ToraTora - 12-04-2011

Ok, commençons par les planètes.

Chaque planètes est découpés en plusieurs image.
Pour pouvoir reconstituer la planète au complet j'enregistre donc les coordonnées de ces images, exemple :
x:5, y:-2, z:3, image: img-1.png
x:5, y:-3, z:2, image: img-2.png
x:6, y:-3, z:1, image: img-3.png
etc...
Lorsque j'affiche ma carte j'affiche donc les images en fonction de ma position.

Pour les personnages/vaisseaux/objets/villes c'est plus simple, car je n'ai qu'une seule image associée à chaque id.
Est ce que c'est plus clair ?

Merci pour ton temps Wink


RE: Architecture Base de donnée - Sephi-Chan - 12-04-2011

Pourquoi as-tu besoin de coordonnées pour les objets et les personnages ?


RE: Architecture Base de donnée - ToraTora - 12-04-2011

Parce qu'un objet peut être à un certain point dans l'espace.
Pareil pour mon personnage, il peut sortir de son vaisseau et être à un autre point.