Voglio costruire un parser di regole generico per sistemi RPG in stile penna e carta. Una regola può coinvolgere da 1 a N entità da 1 a N ruoli di un dado e calcolare valori basati su più attributi di un'entità.
Ad esempio:
Il giocatore ha STR 18, la sua arma attualmente equipaggiata gli dà un bonus di +1 STR ma un malus di DEX -1. Attacca un'entità mostruosa e la logica del gioco ora è necessaria per eseguire una serie di regole o azioni:
Il giocatore lancia i dadi, se ottiene per esempio 8 o più (il valore di attacco base che deve passare è uno dei suoi attributi di base!) il suo attacco ha successo. Il mostro lancia poi i dadi per calcolare se l'attacco passa attraverso la sua armatura. Se sì il danno è preso se non è stato bloccato l'attacco.
Oltre alle semplici regole matematiche possono anche avere vincoli come applicare solo a una certa classe di utente (warrior vs wizard ad esempio) o qualsiasi altro attributo. Quindi questo non è solo limitato alle operazioni matematiche.
Se hai familiarità con i sistemi RPG come Dungeon e Dragons saprai cosa sto facendo.
Il mio problema ora è che non ho idea di come costruire esattamente questo nel miglior modo possibile. Voglio che le persone siano in grado di impostare qualsiasi tipo di regola e poi semplicemente fare un'azione come selezionare un giocatore e un mostro ed eseguire un'azione (una serie di regole come un attacco).
Sto chiedendo meno aiuto per il lato database delle cose, ma di più su come creare una struttura e un parser per mantenere le mie regole flessibili. A proposito, la lingua preferita è il php.
Modifica I:
Permettetemi di perfezionare il mio obiettivo: voglio creare un'interfaccia user friendly (che non richiede a qualcuno di imparare un linguaggio di programmazione) per costruire regole di gioco più o meno complesse. La semplice ragione: uso personale per non aver bisogno di ricordare tutte le regole tutte le volte, semplicemente non giochiamo così spesso ed è un fermo per cercarle ogni volta. Inoltre: sembra un compito divertente da fare e imparare qualcosa. :)
Ciò che ho provato fino ad ora: Sto solo pensando a un concetto invece di perdere tempo a costruire un'architettura sbagliata. Finora ho l'idea di consentire a un utente di creare tutti gli attributi che vogliono e quindi assegnare tutti gli attributi che vogliono a qualsiasi tipo di entità. Un'entità può essere un giocatore, un mostro, un oggetto, qualsiasi cosa. Ora quando si calcola qualcosa i dati sono resi disponibili al parser delle regole in modo che il parser delle regole dovrebbe essere in grado di fare cose come se Player.base_attack + dice (1x6) > Monster.armor_check then Monster.health - 1; La domanda qui è su come creare quel parser.
Modifica II:
Ecco un esempio di valore piuttosto semplice, ma per calcolarlo correttamente ci sono molte cose e variabili da tenere in considerazione:
Base Attack Bonus (Term) Your base attack bonus (commonly referred to as BAB by the d20 community) is an attack roll bonus derived from character class and level. Base attack bonuses increase at different rates for different character classes. A character gains a second attack per round when his base attack bonus reaches +6, a third with a base attack bonus of +11 or higher, and a fourth with a base attack bonus of +16 or higher. Base attack bonuses gained from different classes, such as for a multiclass character, stack. A character’s base attack bonus does not grant any more attacks after reaching +16, cannot be less than +0, and does not increase due to class levels after character level reaches 20th. A minimum base attack bonus is required for certain feats.
Puoi leggerlo qui link compresi i link a classi e imprese che hanno di nuovo le proprie regole per calcola i valori richiesti per l'attacco di base.
Ho iniziato a pensare che mantenerlo il più generico possibile renderà anche piuttosto difficile ottenere un buon parser delle regole.