14-07-2010, 10:19 PM
(Modification du message : 14-07-2010, 10:21 PM par PommeCassis.)
Bonjour,
je planche actuellement sur la conception d’un système de gestion des altérations (enchantements, malédictions, tout ça). Je souhaiterai offrir pas mal de possibilité gameplay au niveau des compétences. Pour cela le joueur aura le choix d’une classe primaire, d’une race puis d’une classe secondaire qui offriront chacune un arbre de compétences.
Mon objectif est de réaliser un système polyvalent qui ne me limitera pas pour de futures compétences. Mon problème est que cela semble complexe, je ne sais pas trop comment m’y prendre.
Pour vous situer dans ce bazar voila un bref récapitulatif du jeu que je veux faire :
Le but du jeu est de faire évoluer son personnage sur un damier géant de 500*500 cases (jeu que certains qualifieront de tapes-cases :haha: ). Celui-ci ce caractériserait par la possibilité d’altérer l’environnement, la possibilité de construire des bâtiments pour sa race, la prise de reliques, etc. Le jeu se baserait sur un système de point d'action attribué en petites quantités toutes les XX minutes (15 min par ex).
Le jeu sera développé sous Symfony.
Règle générale sur les effets/altérations/enchantements (enfin appelez ca comme vous voulez) :
- Altération des statistiques pouvant être exprimée en pourcentage ou en valeur chiffrée
- Les effets peuvent être apportées par :
> Compétences
> Terrains
> Bâtiments
> Equipements
Chaque effet a donc :
Une durée : illimitée, limitée dans le temps, limité par rapport à une condition spéciale (dure jusqu'à ce que le personnage reçoive 3 coups par exemple)
Un type : enchantement, pose de combat, malédiction, aura, condition, etc.
Déclenchement/Effectivité : permanent ( boost de +10 en force par exemple), déclenchement lors d’une action particulière (5% de déclencher l’effet si frappé par exemple)
Un effet : altération des statistiques, altération de l’environnement, invisibilité/furtivité, renvoie de dégâts, invocation de monstres (Par exemple a votre mort sous l’enchantement, un puissant squelette est invoqué), dégâts périodiques, etc.
Les modifications normales de statistiques, ca doit être simple à gérer. Ce qui me dérange le plus c’est pour faire par exemple un enchantement qui a X% de chance de déclencher certaines actions lors de certains évènements, un autre qui augmente le coup en PA de telle action, etc. Ca devient compliqué vue la multitude d’effets possible.
Autre problème : Si chaque bestioles/personnages régénère 1% de vie et 3PA chaque tour, il faut faire un calcul sur par exemples 500 personnages + 300 bestioles, ca fait 800 petits calculs a faire toutes les 15 minutes. (dans le cas ou un tour correspond à 15 min).
Mais en plus je dois aussi regarder les effets, certains peuvent augmenter la régénération des PA ou des points de vie par exemple. Ces effets peuvent être offert aussi par le terrain (qui peut être aussi enchanté), une aura, un bâtiment ou autre. Mais je peux pas parcourir une liste de plusieurs milliers d’enregistrements toutes les quinze minutes et faire tout un tas de traitement pour déterminer qui a le droit à quoi puis mettre en conséquence. Ca serait trop lourd.
De plus les altérations ont des durées, il faut gérer cela avec une sorte de générateur de tache fcron qui s’occupe de nettoyer les effets ?
Par exemple je m’enchante avec « Bénédiction MêmePasMal » qui dure 15h. Je crée donc une tache fcron qui lancera un script pour supprimer l’effet 15h plus tard ?
Mais si la tache fcron se déroule mal pour une raison quelconque, ca risque de causer des vilains bugs.
Comment gérer efficacement cette multitude de paramètres pour chaque effet ? Placer des tas de tables dans la bdd juste pour les effets et transformer le tout en usine à gaz ? Comment gérer leurs cycles de vie ? Comment optimiser tout ça ?
Si vous avez de la documentation, un conseil ou n’importe quoi la dessus je suis preneur.
Merci d’avance.
edit: mince mauvaise section
je planche actuellement sur la conception d’un système de gestion des altérations (enchantements, malédictions, tout ça). Je souhaiterai offrir pas mal de possibilité gameplay au niveau des compétences. Pour cela le joueur aura le choix d’une classe primaire, d’une race puis d’une classe secondaire qui offriront chacune un arbre de compétences.
Mon objectif est de réaliser un système polyvalent qui ne me limitera pas pour de futures compétences. Mon problème est que cela semble complexe, je ne sais pas trop comment m’y prendre.
Pour vous situer dans ce bazar voila un bref récapitulatif du jeu que je veux faire :
Le but du jeu est de faire évoluer son personnage sur un damier géant de 500*500 cases (jeu que certains qualifieront de tapes-cases :haha: ). Celui-ci ce caractériserait par la possibilité d’altérer l’environnement, la possibilité de construire des bâtiments pour sa race, la prise de reliques, etc. Le jeu se baserait sur un système de point d'action attribué en petites quantités toutes les XX minutes (15 min par ex).
Le jeu sera développé sous Symfony.
Règle générale sur les effets/altérations/enchantements (enfin appelez ca comme vous voulez) :
- Altération des statistiques pouvant être exprimée en pourcentage ou en valeur chiffrée
- Les effets peuvent être apportées par :
> Compétences
> Terrains
> Bâtiments
> Equipements
Chaque effet a donc :
Une durée : illimitée, limitée dans le temps, limité par rapport à une condition spéciale (dure jusqu'à ce que le personnage reçoive 3 coups par exemple)
Un type : enchantement, pose de combat, malédiction, aura, condition, etc.
Déclenchement/Effectivité : permanent ( boost de +10 en force par exemple), déclenchement lors d’une action particulière (5% de déclencher l’effet si frappé par exemple)
Un effet : altération des statistiques, altération de l’environnement, invisibilité/furtivité, renvoie de dégâts, invocation de monstres (Par exemple a votre mort sous l’enchantement, un puissant squelette est invoqué), dégâts périodiques, etc.
Les modifications normales de statistiques, ca doit être simple à gérer. Ce qui me dérange le plus c’est pour faire par exemple un enchantement qui a X% de chance de déclencher certaines actions lors de certains évènements, un autre qui augmente le coup en PA de telle action, etc. Ca devient compliqué vue la multitude d’effets possible.
Autre problème : Si chaque bestioles/personnages régénère 1% de vie et 3PA chaque tour, il faut faire un calcul sur par exemples 500 personnages + 300 bestioles, ca fait 800 petits calculs a faire toutes les 15 minutes. (dans le cas ou un tour correspond à 15 min).
Mais en plus je dois aussi regarder les effets, certains peuvent augmenter la régénération des PA ou des points de vie par exemple. Ces effets peuvent être offert aussi par le terrain (qui peut être aussi enchanté), une aura, un bâtiment ou autre. Mais je peux pas parcourir une liste de plusieurs milliers d’enregistrements toutes les quinze minutes et faire tout un tas de traitement pour déterminer qui a le droit à quoi puis mettre en conséquence. Ca serait trop lourd.
De plus les altérations ont des durées, il faut gérer cela avec une sorte de générateur de tache fcron qui s’occupe de nettoyer les effets ?
Par exemple je m’enchante avec « Bénédiction MêmePasMal » qui dure 15h. Je crée donc une tache fcron qui lancera un script pour supprimer l’effet 15h plus tard ?
Mais si la tache fcron se déroule mal pour une raison quelconque, ca risque de causer des vilains bugs.
Comment gérer efficacement cette multitude de paramètres pour chaque effet ? Placer des tas de tables dans la bdd juste pour les effets et transformer le tout en usine à gaz ? Comment gérer leurs cycles de vie ? Comment optimiser tout ça ?
Si vous avez de la documentation, un conseil ou n’importe quoi la dessus je suis preneur.
Merci d’avance.
edit: mince mauvaise section