Design BDD & PHP pour association/rareté objets type MMORPG
Posté : 28 août 2012, 13:33
Bonjour
Je récolte en ce moment quelques infos pour la création d'un jeu de type MMORPG en ligne.
Je connais les principes de base des bdd relationelles, mais j'ai du mal à comprendre comment je pourrais mettre en place certaines choses donc j'aimerais vos lumières.
Dans un jeu de type RPG/MMORPG, il y a ces concepts :
- le joueur drop des objets (sur des monstres, suite à des quêtes etc.)
- ces objets peuvent être uniques (fixes, prédéfinis), ou randoms (stats générées aléatoirement à partir d'un générateur d'objets j'imagine).
- un même objet (même stats, objets uniques donc) peut appartenir à plusieurs personnes
- n'importe quel objet est échangeable (changement de propriétaire)
- suivant le type de monstre (ou quête) tué, la qualité de l'objet augmente etc.
j'aimerais implémenter donc ce concept dans mon supposé jeu, mais j'ai du mal à comprendre comment je peux mettre en forme tout cela.
je comprend le principe de la création d'un objet et de ses stats, l'allocation à une personne ou plusieurs etc.. (avec les relations c simple à mettre en place), mais j'ai du mal à concrétiser la partie sur les objets random/uniques etc. et les proprios.
quelqu'un pourrait-il m'expliquer brièvement comment je pourrais mettre cela en place dans la base et dans le PHP
pour plus de simplicité, je vais mettre un exemple "très simplifé" de tables et relations de comment j'imagine le truc, je suis ouvert à tout conseil/critique :
dans l'exemple, j'envisagerais plusieurs tables du genre :
- item (contenant les items)
- item_types (contenant le type d'item, unique ou random)
- lien_personnage_item (qui fait le lien plusieurs/plusieurs entre les items et les cha
- monstre
on envisagerais donc :
table "item" avec par exemple :
item_id id de l'item
item_type clef étrangère sur la table item_types
item_name nom de l'item
item_level niveau de l'item
item_bonus_str bonus de force
item_bonus_int bonus d'intel
item_bonus_vit bonus de vitalité
item_bonus_N bonus N (on peut en imaginer plein)
a moins qu'il faille que je mette les bonus dans une table séparée et faire des liens ? j'ai du mal à voir comment gérer ça
table "item_types" :
type_id
type_name
table "personnage" :
personnage_id
personnage_name
personnage_level
personnage_statX
personnage_statX
personnage_statX
etc..
table "lien_personnage_item"
item_id
personnage_id
table "monstre"
monstre_id
monstre_level
monstre_name
monstre_statX
monstre_statX
monstre_statX
1. alors ma question déjà sur ce petit truc de base, est-ce que quelque-chose du genre vous semble correct ?
2. d'après vous, faut-il mettre les stats dans des tables séparées ? (par exemple pour faire des groupes de stats etc. pour les monstres identiques par exemple) et si oui, comment ?
3. comment puis-je gérer le fait que le personnage ait des items sur lui et aussi dans son sac ? dois-je simplement rajouter un champ dans la table de relation (colonne genre type_item étant sac ou perso ?)
4. c'est pareil, vaut-il mieux mettre les stats de base du perso (de la classe), et générer 'in-game' (dans le PHP) les stats finales du personnage avec les items qu'il porte ? ou les mettre en base ? (car j'aimerais implémenter la notion de dureté de l'item etc. aussi)
ensuite, comment gérer le fait :
- qu'un monstre puisse laisser tomber tel tel ou tel item "unique" ? on crée une colonne dans la table monstre contenant tous les ID des objets uniques qu'il peut dropper ? (et dans le PHP on fait une fonction de random avec pourcentage de chance de dropper un des items de la liste ?)
- je peux faire un générateur d'items dans le PHP qui créerait aléatoirement des items dans la base (fait à la volée lors du jeu), mais ceci est-il classique ? est-ce que cela se fait comme ça ?
- pour gérer le changement de prorpiétaire d'objets, d'après vous, il suffit de changer les entrées dans la table lien_personnage_item ? tout simplement ?
y-a-t"il des best practices pour tout cela ? ou est-ce que je me trompe complètement ?
merci
Je récolte en ce moment quelques infos pour la création d'un jeu de type MMORPG en ligne.
Je connais les principes de base des bdd relationelles, mais j'ai du mal à comprendre comment je pourrais mettre en place certaines choses donc j'aimerais vos lumières.
Dans un jeu de type RPG/MMORPG, il y a ces concepts :
- le joueur drop des objets (sur des monstres, suite à des quêtes etc.)
- ces objets peuvent être uniques (fixes, prédéfinis), ou randoms (stats générées aléatoirement à partir d'un générateur d'objets j'imagine).
- un même objet (même stats, objets uniques donc) peut appartenir à plusieurs personnes
- n'importe quel objet est échangeable (changement de propriétaire)
- suivant le type de monstre (ou quête) tué, la qualité de l'objet augmente etc.
j'aimerais implémenter donc ce concept dans mon supposé jeu, mais j'ai du mal à comprendre comment je peux mettre en forme tout cela.
je comprend le principe de la création d'un objet et de ses stats, l'allocation à une personne ou plusieurs etc.. (avec les relations c simple à mettre en place), mais j'ai du mal à concrétiser la partie sur les objets random/uniques etc. et les proprios.
quelqu'un pourrait-il m'expliquer brièvement comment je pourrais mettre cela en place dans la base et dans le PHP
pour plus de simplicité, je vais mettre un exemple "très simplifé" de tables et relations de comment j'imagine le truc, je suis ouvert à tout conseil/critique :
dans l'exemple, j'envisagerais plusieurs tables du genre :
- item (contenant les items)
- item_types (contenant le type d'item, unique ou random)
- lien_personnage_item (qui fait le lien plusieurs/plusieurs entre les items et les cha
- monstre
on envisagerais donc :
table "item" avec par exemple :
item_id id de l'item
item_type clef étrangère sur la table item_types
item_name nom de l'item
item_level niveau de l'item
item_bonus_str bonus de force
item_bonus_int bonus d'intel
item_bonus_vit bonus de vitalité
item_bonus_N bonus N (on peut en imaginer plein)
a moins qu'il faille que je mette les bonus dans une table séparée et faire des liens ? j'ai du mal à voir comment gérer ça
table "item_types" :
type_id
type_name
table "personnage" :
personnage_id
personnage_name
personnage_level
personnage_statX
personnage_statX
personnage_statX
etc..
table "lien_personnage_item"
item_id
personnage_id
table "monstre"
monstre_id
monstre_level
monstre_name
monstre_statX
monstre_statX
monstre_statX
1. alors ma question déjà sur ce petit truc de base, est-ce que quelque-chose du genre vous semble correct ?
2. d'après vous, faut-il mettre les stats dans des tables séparées ? (par exemple pour faire des groupes de stats etc. pour les monstres identiques par exemple) et si oui, comment ?
3. comment puis-je gérer le fait que le personnage ait des items sur lui et aussi dans son sac ? dois-je simplement rajouter un champ dans la table de relation (colonne genre type_item étant sac ou perso ?)
4. c'est pareil, vaut-il mieux mettre les stats de base du perso (de la classe), et générer 'in-game' (dans le PHP) les stats finales du personnage avec les items qu'il porte ? ou les mettre en base ? (car j'aimerais implémenter la notion de dureté de l'item etc. aussi)
ensuite, comment gérer le fait :
- qu'un monstre puisse laisser tomber tel tel ou tel item "unique" ? on crée une colonne dans la table monstre contenant tous les ID des objets uniques qu'il peut dropper ? (et dans le PHP on fait une fonction de random avec pourcentage de chance de dropper un des items de la liste ?)
- je peux faire un générateur d'items dans le PHP qui créerait aléatoirement des items dans la base (fait à la volée lors du jeu), mais ceci est-il classique ? est-ce que cela se fait comme ça ?
- pour gérer le changement de prorpiétaire d'objets, d'après vous, il suffit de changer les entrées dans la table lien_personnage_item ? tout simplement ?
y-a-t"il des best practices pour tout cela ? ou est-ce que je me trompe complètement ?
merci
