JeuWeb - Crée ton jeu par navigateur
questions sur la base mysql - 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 : questions sur la base mysql (/showthread.php?tid=209)



questions sur la base mysql - Soldatclone - 12-09-2006

Bonjour !

J'ai une idée de jeu en php dans ma tête, pendant les vacances j'ai essayé de concrétiser ça un peu sur le papier même si ça donne un résultat un peu fouilli (je suis plutot de nature bordélique ^^).

Je me suis beaucoup renseigner pendant les vacances sur le php et le mysql, et j'ai réussit a tomber sur un forum pas mal (en anglais) ou un membre expliquait avec quelque exemple comment créer ses premiers codes pour former des unités, construire des batiments etc. (je trouve dailleur un peu dommage que personne ne l'ai fait en français, c'est très instructif et sa motive à faire nos premières pages de code).
J'essaye en se moment de faire des petits test avec ma base mysql ou de code php (je galère un peu avec mysql surtout pour les tests d'inscription et de création de page membre).

Seulement il y a quelque chose que je n'ai pas du tout compris et j'aimerai que quelqu'un m'explique un peu.

Voila donc imaginons que je veuille faire un jeu de gestion moderne (avec char, avions de combat etc.):

1)Est ce que je doit créer une table ou je regrouperai dedant toutes les unités avec un champ pour le nom, le prix, l'attaque, la défense etc. ainsi qu'une autre table pour les différents batiments qui aurons eux même leurs caractéristiques (nom,prix, production)?

2)Un autre point que j'ai peur de ne pas avoir compris, ou dois-je stocker dans ma base mysql le nombre de batiments, unitées et technologie que le joueur a aquie au cour du jeu et qu'il vera s'afficher sur sa page membre lorsqu'il se connectera? là je sais vraiment pas, je pense pas que sa soit dans la table "membres" parce que sa ferai un peu fouilli à l'interrieur ... mais dans ce cas comment faire?

Il se peux que vous trouviez mes questions complètement stupides et inintéressantes, mais pour moi c'est important de comprendre comment ça fonctionne à la base, c'est pour ça que si vous pourriez me donner des liens qui sont plus ou moins en rapport avec mes questions je suis preneur (même les liens en anglais j'arrive a me débrouiller dans la compréension de cette langue).
Si vous avez des exemples n'hésitez pas non plus je suis preneur de tout !
vous pouvez aussi m'expliquer comment vous avez fait sa me sera surement très utile.

Voila, merci bien :respect:

ps: Il se peut que de nouvelles questions me viennent plus tard, je les posterai dans ce topic au fur et a mesure qu'elles me viendrons.


RE: questions sur la base mysql - Armage - 13-09-2006

Soldatclone a écrit :1)Est ce que je doit créer une table ou je regrouperai dedant toutes les unités avec un champ pour le nom, le prix, l'attaque, la défense etc. ainsi qu'une autre table pour les différents batiments qui aurons eux même leurs caractéristiques (nom,prix, production)?

Moi ça me paraît bien ton idée Smile Je dirais oui, fais plusieurs tables.

Soldatclone a écrit :2)Un autre point que j'ai peur de ne pas avoir compris, ou dois-je stocker dans ma base mysql le nombre de batiments, unitées et technologie que le joueur a aquie au cour du jeu et qu'il vera s'afficher sur sa page membre lorsqu'il se connectera? là je sais vraiment pas, je pense pas que sa soit dans la table "membres" parce que sa ferai un peu fouilli à l'interrieur ... mais dans ce cas comment faire?

Effectivement, ça ferait fouilli.
Une idée, c'est de faire des tables "de liaisons"

Imagine, t'as une table "unit" qui recense les unités avec leurs caracs.
unit
-> id, name, price, production, ...
Ex
-> 1, 'elephant', 200, 0, ...
-> 2, 'tank', 3500, 0, ...


Et une table "player" qui recense les joueurs (ta table "membres").
player
-> id, name, email, ...
Ex
-> 1, 'toto', 'toto@free.fr'
-> 2, 'momo', 'momo@free.fr'

Tu crées une troisème table "player_unit" qui contient l'identifiant du joueur (le "id" de "player"), l'identifiant de l'unité (le "id" de "unit") et éventuellement des caracs associées directement à ce couple d'id comme une date de création ou autre chose. Tu auras dans cette table autant de ligne par joueur qu'il a d'unités.
player_unit
-> id_player, id_unit, datecreate, ...
Ex
1, 1, 01012006
1, 1, 01032006
1, 2, 01032006
2, 2, 01012006

On aura donc pour le joueur 1 (toto) 2 éléphants (créés les 1er et 3 janvier 2006) et un tank, créé le 1er mars.
Et ainsi de suite.

Peut-être qu'il est inutile de mettre plusieurs lignes par couple joueur / unité et qu'il vaut mieux en mettre qu'une avec la quantité :
player_unit
-> id_player, id_unit, quantity

A toi de voir selon ton jeu.

Tout est bien séparé maintenant. C'est plus propre, donc générera moins d'erreur Smile

C'est un mécanisme standard en sql de créer des tables intermédiaires pour éviter de répéter les informations dans plusieurs tables. Cherches "normalisation" dans google, tu trouveras des infos sur le sujet.

Bon courage,

--
Armage