IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

Jeu de conquête spatiale [MLD]


Sujet :

Schéma

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 179
    Points : 77
    Points
    77
    Par défaut Jeu de conquête spatiale
    Bonjour,

    pour un petit jeu que je créé, je planche actuellement sur un MLD qui me servira à créer une BDD PostGreSQL par la suite.

    Le principe de mon jeu est relativement simple. En voici les grandes lignes :

    il consistera à pouvoir permettre à un joueur de posséder des planètes lesquelles planètes lui permettront de pouvoir construire des vaisseaux lesquels vaisseaux lui permettront d'aller piller les planètes des autres joueurs

    C'est un "ogame-like" pour ceux qui connaissent ogame

    Voici la partie de mon MLD sur laquelle j'ai 2 questions :

    Nom : shema.png
Affichages : 196
Taille : 51,2 Ko

    Tout d'abord, mon jeu est divisé en galaxies, systèmes solaires et positions dans le système solaire. Par exemple la coordonnée [1:1:1] signifie galaxie->1, système solaire->1 et position->1.

    Cependant pour chaque coordonnée distinctes il existe en fait 3 emplacements possibles. Un emplacement pour la planète, un emplacement pour une éventuelle lune et un emplacement pour un éventuel champs de ruines (CDR).

    Pour modéliser ceci (les 3 emplacements), j'ai essayé d'utiliser l'héritage en créer une table mère COORDONNEES stockant uniquement les coordonnées d'une planète ou d'une lune ou d'un CDR. La table CARACTERISTIQUES hérite de la table COORDONNEES et est la table parente des tables PLANETES et LUNES. Elle modélise les informations correspondant aux noms des planètes et des lunes ainsi que la grosseur de celle ci (champs case). La table CDR hérite elle directement de la table COORDONNEES car un CDR ne possède ni nom ni grosseur. Ma modélisation vous semble t-elle correcte ? L'héritage induit des relations 1-1 inter tables je pense que cela est normal mais je voudrais en avoir confirmation ?

    Pour ce qui est de la table FLOTTES maintenant, elle modélise pour une planète ou une lune le nombre de vaisseaux (et leurs types) disponible (un CDR ne peut pas avoir de flotte). J'ai pensé à 2 solutions.

    1) soit créer 2 tables FLOTTES_PLANETES et FLOTTES_LUNES
    2) soit créer une seule table FLOTTE où un des champs planete_id ou lune_id sera NULL afin de connaitre la provenance de la flotte.

    Pour le moment j'ai opté pour la solution 2 qui me semble plus meilleure car sinon cela complexifie les relations inter tables entre FLOTTES_PLANETES, FLOTTES_LUNES et les autres tables non exposées sur mon MLD. Je trouve pourtant la solution de mettre un NULL sur chaque enregistrement un peu "sale" et j'aimerais avoir votre avis ? Comment modéliseriez vous cela ?

    Merci beaucoup

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Rapidement, après un bref coup d'oeil à ton extrait de schéma...

    1) Je ne sais pas quel logiciel de modélisation tu tuilises mais évite les croisements de traits dans tous les sens, ça va vite devenir illisible !

    2) Tu as des erreurs de cardinalités.
    Par exemple, d'après ton schéma, une planète n'a qu'une seule caractéristique.
    Plutôt que de travailler directement sur un schéma E/R, qui est un schéma piégeux, commence par écrire des règles de gestion claires puis fais un MCD.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 179
    Points : 77
    Points
    77
    Par défaut
    Salut, merci de ta réponse

    Citation Envoyé par CinePhil Voir le message
    1) Je ne sais pas quel logiciel de modélisation tu tuilises mais évite les croisements de traits dans tous les sens, ça va vite devenir illisible !
    J'utilise ERMaster sous forme de plugin Eclipse. Pour ce qui est des croisements, j'arrive pa sà faire plus simple...
    Ceci dit, la partie exposée est la seule possédant des croisements donc ca reste "visible"

    Citation Envoyé par CinePhil Voir le message
    2) Tu as des erreurs de cardinalités.
    Par exemple, d'après ton schéma, une planète n'a qu'une seule caractéristique.
    En fait c'est le cas. Une caractéristique comprend une coordonnée (x, y, z), un nom (unique) et un nombre de cases unique également. C'est pour cela que je disais que l'héritage m'introduisait pas mal de relations 1-1 mais cela doit être normal.

    Citation Envoyé par CinePhil Voir le message
    Plutôt que de travailler directement sur un schéma E/R, qui est un schéma piégeux, commence par écrire des règles de gestion claires puis fais un MCD.
    Je vais essayer merci. C'est juste que ce projet "marine" depuis pas mal de temps dans ma tête et que j'ai bien les RG en tête du moins me semble t-il

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par jecomprendsrien
    Citation Envoyé par CinéPhil
    2) Tu as des erreurs de cardinalités.
    Par exemple, d'après ton schéma, une planète n'a qu'une seule caractéristique.
    En fait c'est le cas. Une caractéristique comprend une coordonnée (x, y, z), un nom (unique) et un nombre de cases unique également. C'est pour cela que je disais que l'héritage m'introduisait pas mal de relations 1-1 mais cela doit être normal.
    Qu'une caractéristique ne soit celle que d'une coordonnées OK. La contraposition de cette association est, d'après ton schéma, qu'une coordonnées peut avoir plusieurs caractéristiques.

    Mais je parlais de l'association avec Planètes. Au passage, tu devrais nommer tes entités au singulier.
    Si une planète n'a qu'une caractéristique et qu'une caractéristique ne s'applique qu'à une seule planète, alors autant fusionner planète et caractéristique.

    C'est juste que ce projet "marine" depuis pas mal de temps dans ma tête et que j'ai bien les RG en tête du moins me semble t-il
    Permets-moi d'en douter, ou de penser que ta réflexion n'est peut-être pas allée du bon côté de la Force !

    Tout d'abord, mon jeu est divisé en galaxies, systèmes solaires et positions dans le système solaire. Par exemple la coordonnée [1:1:1] signifie galaxie->1, système solaire->1 et position->1.
    Selon moi, une planète, un champ de ruines ou une flotte à un moment donné, ne se trouve qu'à une seule position qui est dans un seul système solaire, lequel est dans une seule galaxie.
    MCD :
    planete -1,1----situer----0,n- systeme_solaire -1,1----situer----1,n- galaxie

    Tables :
    galaxie (glx_id, glx_nom...)
    systeme_solaire (ssl_id, ssl_id_galaxie, ssl_nom...)
    planete (pln_id, pln_id_systeme_solaire, pln_nom...)

    Alors effectivement, pour les systèmes solaires, les planètes et les champs de ruines qui ne bougent pas, on peut utiliser l'identification relative.

    MCD :
    planete -(1,1)----situer----0,n- systeme_solaire -(1,1)----situer----1,n- galaxie

    Tables :
    galaxie (glx_id, glx_nom...)
    systeme_solaire (ssl_id_galaxie, ssl_numero, , ssl_nom...)
    planete (pln_id_galaxie, pln_id_systeme_solaire, pln_numero, pln_nom...)

    Cela a l'avantage de transporter la référence du système solaire et de la galaxie dans les entités dépendantes (planète), ce qui simplifie les requêtes.

    Mais pour une flotte qui bouge sans cesse, je suis moins fan de la méthode.

    Cependant pour chaque coordonnée distinctes il existe en fait 3 emplacements possibles. Un emplacement pour la planète, un emplacement pour une éventuelle lune et un emplacement pour un éventuel champs de ruines (CDR).
    Tu devrais vraiment clarifier cette partie.
    Que veux-tu dire ?
    1. Sur une coordonnée se trouve soit une planète, soit un champ de ruine, soit une lune.
    2. Sur une coordonnée se trouve une planète avec éventuellement une lune et/ou un champ de ruine.

    L'héritage induit des relations 1-1 inter tables
    En fait, l'héritage induit des cardinalités (1,1) - 0,1.

    Exemple :
    voiture -(1,1)----être----0,1- véhicule
    moto -(1,1)----être----0,1----------|
    camion -(1,1)----être----0,1-------|

    Et là aussi, les cardinalités entre parenthèses indiquent une identification relative qui donnera les tables suivantes :
    vehicule (vhc_id, vhc_nom...)
    voiture (vtr_id_vehicule...)
    moto (mot_id_vehicule...)
    camion (cmn_id_vehicule...)

    PS : Si tu connais, je suis "Einstein" sur Swing, d'où mon avatar ici et ailleurs.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 179
    Points : 77
    Points
    77
    Par défaut
    Salut,

    Citation Envoyé par CinePhil Voir le message
    Qu'une caractéristique ne soit celle que d'une coordonnées OK. La contraposition de cette association est, d'après ton schéma, qu'une coordonnées peut avoir plusieurs caractéristiques.
    En fait pour moi une coordonnee comprend 3 positions distinctes, une pour une planète, une pour une lune et une pour un CDR (modélisé par mes entités filles). Il y a donc au maximum 2 caractéristiques par coordonnée : une pour la planète et une pour la lune (si elle existe). J'ai mis une cardinalité de 1 entre caracteristique et coordonnees mais je me suis trompé. Sur le moment, j'ai pensé que chaque caractéristique étant unique (un nom de planète est unique) il n'y avait qu'une caractéristique par coordonnée alors qu'en fait il y en a soit 1 soit 2 donc 1-n.


    Citation Envoyé par CinePhil Voir le message
    Au passage, tu devrais nommer tes entités au singulier.
    Pour moi, mes entités correspondent à des tables et j'aime bien avoir des noms de tables au pluriel mais tu as raison sur le principe de mettre au singulier le nom des entités

    Citation Envoyé par CinePhil Voir le message
    Si une planète n'a qu'une caractéristique et qu'une caractéristique ne s'applique qu'à une seule planète, alors autant fusionner planète et caractéristique.
    Au début, je voyais simplement 3 entités planètes, lunes et cdrs et puis j'ai lu le billet de SQLPro et je me suis dis qu'en faisant cela, j'allais avoir de la redondance d'informations. Par exemple, si j'ai une planète, une lune et un cdr en 5:182:7 par exemple j'allais devoir référencer ces coordonnées dans les 3 entités. Je me suis donc dis que créer une entité "abstraite" coordonnées était une bonne idée. Même réflexion pour l'entité caractéristique, une planète possédant un nom et un nombre de cases tout comme une lune, j'ai préféré faire une entité à part. Cependant, comme

    planète 1-1----- possède ------- 1-1 caractéristique et
    lune 1-1----- possède ------- 1-1 caractéristique

    j'ai des relations 1-1 entre mes entités. Je sais pas si c'est bon ou non d'avoir des relations 1-1 mais avec l'utilisation de l'héritage dans mon cas précis, cela me paraît normal.


    Citation Envoyé par CinePhil Voir le message
    Permets-moi d'en douter, ou de penser que ta réflexion n'est peut-être pas allée du bon côté de la Force !
    J'avoue que parfois je crois avoir bien compris et assimilé un problème et puis ensuite je me rends compte que dans ma tête, c'est un gros mer****

    Citation Envoyé par CinePhil Voir le message
    Selon moi, une planète, un champ de ruines ou une flotte à un moment donné, ne se trouve qu'à une seule position qui est dans un seul système solaire, lequel est dans une seule galaxie.
    MCD :
    planete -1,1----situer----0,n- systeme_solaire -1,1----situer----1,n- galaxie

    Tables :
    galaxie (glx_id, glx_nom...)
    systeme_solaire (ssl_id, ssl_id_galaxie, ssl_nom...)
    planete (pln_id, pln_id_systeme_solaire, pln_nom...)

    Alors effectivement, pour les systèmes solaires, les planètes et les champs de ruines qui ne bougent pas, on peut utiliser l'identification relative.

    MCD :
    planete -(1,1)----situer----0,n- systeme_solaire -(1,1)----situer----1,n- galaxie

    Tables :
    galaxie (glx_id, glx_nom...)
    systeme_solaire (ssl_id_galaxie, ssl_numero, , ssl_nom...)
    planete (pln_id_galaxie, pln_id_systeme_solaire, pln_numero, pln_nom...)

    Cela a l'avantage de transporter la référence du système solaire et de la galaxie dans les entités dépendantes (planète), ce qui simplifie les requêtes.

    Mais pour une flotte qui bouge sans cesse, je suis moins fan de la méthode.
    Au final, cela revient un peu à ma méthode il me semble non ? Il n'y a pas de duplication d'infos dans les entités.


    Citation Envoyé par CinePhil Voir le message
    Tu devrais vraiment clarifier cette partie.
    Que veux-tu dire ?
    1. Sur une coordonnée se trouve soit une planète, soit un champ de ruine, soit une lune.
    2. Sur une coordonnée se trouve une planète avec éventuellement une lune et/ou un champ de ruine.
    Numéro 2. Pour moi une coordonnée est une position au sens "large", au sens "abstrait". Ce qui me permet de dire si une lune par exemple existe dans telle ou telle coordonnée est la FK caracteristique_id me permettant de jointer avec la FK coordonnee_id

    Citation Envoyé par CinePhil Voir le message
    En fait, l'héritage induit des cardinalités (1,1) - 0,1.

    Exemple :
    voiture -(1,1)----être----0,1- véhicule
    moto -(1,1)----être----0,1----------|
    camion -(1,1)----être----0,1-------|

    Et là aussi, les cardinalités entre parenthèses indiquent une identification relative qui donnera les tables suivantes :
    vehicule (vhc_id, vhc_nom...)
    voiture (vtr_id_vehicule...)
    moto (mot_id_vehicule...)
    camion (cmn_id_vehicule...)
    Ok, merci de l'info


    Citation Envoyé par CinePhil Voir le message
    PS : Si tu connais, je suis "Einstein" sur Swing, d'où mon avatar ici et ailleurs.
    Connait pas désolé y'a pas mal de jeux de ce type sur le net


    Merci de tes réponses en tout cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Free Pascal] Un jeu de vaisseau spatial écrit en utilisant Allegro.pas
    Par mohamedAziz dans le forum Free Pascal
    Réponses: 2
    Dernier message: 14/06/2015, 21h58
  2. [Recrutement] [Scarity] Jeu de gestion Spatial en ligne
    Par Davout dans le forum Projets
    Réponses: 1
    Dernier message: 13/06/2011, 06h55
  3. [Recrutement] Recherche 2 codeurs PHP/SQL et un graphiste pour jeu de gestion spatiale
    Par Davout dans le forum Projets
    Réponses: 11
    Dernier message: 10/10/2009, 19h34
  4. quel moteur 3d choisir pour jeu de shoot spatial
    Par Van-Galahad dans le forum Moteurs 3D
    Réponses: 2
    Dernier message: 07/04/2009, 02h25
  5. Quel moteur pour un jeu de combat spatial?
    Par DindonSauvage dans le forum Moteurs 3D
    Réponses: 6
    Dernier message: 31/10/2007, 10h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo