Je veux construire un analyseur de règles générique pour les systèmes RPG de style stylo et papier. Une règle peut impliquer généralement 1 à N entités 1 à N rôles d'un dé et calculer des valeurs en fonction de plusieurs attributs d'une entité.
Par exemple:
Le joueur a STR 18, son arme actuellement équipée lui donne un bonus de +1 STR mais un malus de DEX -1. Il attaque une entité monstre et la logique du jeu est maintenant requise pour exécuter un ensemble de règles ou d'actions:
Le joueur lance les dés, s'il obtient par exemple 8 ou plus (la valeur d'attaque de base dont il a besoin pour passer est l'un de ses attributs de base!) Son attaque est réussie. Le monstre lance ensuite les dés pour calculer si l'attaque passe par son armure. Si oui, les dégâts sont subis sinon l'attaque a été bloquée.
En plus des règles mathématiques simples peuvent également avoir des contraintes comme s'appliquer uniquement à une certaine classe d'utilisateurs (guerrier vs assistant par exemple) ou tout autre attribut. Donc, cela ne se limite pas aux opérations mathématiques.
Si vous connaissez des systèmes RPG comme Dungeon and Dragons, vous saurez ce que je fais.
Mon problème est maintenant que je ne sais pas comment construire exactement cela de la meilleure façon possible. Je veux que les gens puissent mettre en place n'importe quel type de règle et ensuite faire simplement une action comme sélectionner un joueur et un monstre et exécuter une action (un ensemble de règles comme une attaque).
Je demande moins d'aide pour le côté base de données, mais plutôt pour trouver une structure et un analyseur afin de garder mes règles flexibles. La langue de choix pour cela est d'ailleurs PHP.
Modifier I:
Permettez-moi d'affiner mon objectif: je veux créer une interface conviviale (qui ne nécessite pas que quelqu'un apprenne un langage de programmation) pour construire des règles de jeu plus ou moins complexes. La raison simple: une utilisation personnelle pour ne pas avoir besoin de se souvenir de toutes les règles tout le temps, nous ne jouons tout simplement pas souvent et c'est un bouchon pour les rechercher à chaque fois. Aussi: Cela ressemble à une tâche amusante à faire et à apprendre. :)
Ce que j'ai essayé jusqu'à présent: penser à un concept au lieu de perdre du temps à construire une mauvaise architecture. Jusqu'à présent, j'ai l'idée de permettre à un utilisateur de créer autant d'attributs qu'il le souhaite, puis d'attribuer autant d'attributs qu'il le souhaite à tout type d'entité. Une entité peut être un joueur, un monstre, un objet, n'importe quoi. Désormais, lors du calcul de quelque chose, les données sont mises à la disposition de l'analyseur de règles afin que l'analyseur de règles puisse faire des choses comme si Player.base_attack + dice (1x6)> Monster.armor_check puis Monster.health - 1; La question ici est de savoir comment créer cet analyseur.
Edit II:
Voici un exemple de valeur assez basique mais pour le calculer correctement, il y a beaucoup de choses et de variables différentes à prendre en compte:
Bonus d'attaque de base (durée) Votre bonus d'attaque de base (communément appelé BAB par la communauté d20) est un bonus de jet d'attaque dérivé de la classe et du niveau du personnage. Les bonus d'attaque de base augmentent à différents taux pour différentes classes de personnages. Un personnage gagne une deuxième attaque par round lorsque son bonus d'attaque de base atteint +6, un troisième avec un bonus d'attaque de base de +11 ou plus, et un quatrième avec un bonus d'attaque de base de +16 ou plus. Bonus d'attaque de base gagnés dans différentes classes, comme pour un personnage multiclasse, pile. Le bonus d'attaque de base d'un personnage n'accorde plus d'attaque après avoir atteint +16, ne peut pas être inférieur à +0 et n'augmente pas en raison des niveaux de classe une fois que le niveau du personnage atteint le 20e. Un bonus d'attaque de base minimum est requis pour certains exploits.
Vous pouvez le lire ici http://www.dandwiki.com/wiki/Base_Attack_Bonus_(Term) y compris les liens vers les classes et les exploits qui ont à nouveau leurs propres règles pour calculer les valeurs requises pour l'attaque de base.
J'ai commencé à penser que le garder aussi générique que possible rendrait également assez difficile d'obtenir un bon analyseur de règles.
Func
s qui initialise l'état du programme en fonction des arguments comme clés du dictionnaire. Surpris, je n'avais jamais trouvé ce post de Yegge auparavant, très cool, merci de l'avoir signalé.