Quali strumenti, schemi o migliori pratiche consiglieresti di implementare le meccaniche di ricerca indicate sotto i requisiti elencati?
Sto parlando dell'architettura del software (quanto generico dovresti essere) e delle scelte per il cablaggio degli oggetti, la sottoscrizione degli eventi e la rappresentazione delle condizioni. Le citazioni su strumenti / librerie utilizzate con successo sono benvenute. Modifica: se si utilizza lo scripting, quale configurazione consigliate?
Requisiti:
- mmo 2D semplice (rpg)
- tutti i dati di gioco, comprese le missioni, sono memorizzati in un database relazionale
- qualsiasi evento nel gioco potrebbe innescare una nuova ricerca per i giocatori o l'avanzamento di missioni esistenti
- una missione può avere un numero arbitrario di condizioni che devono essere soddisfatte prima che la missione sia disponibile per i giocatori
- una missione può consistere in un numero arbitrario di missioni secondarie / passaggi con condizioni arbitrarie
le missioni vanno dal semplice:
parla con A - uccidi 5 B - parla con A - aumenta permanentemente la salute
abbastanza coinvolto:
usa l'oggetto nell'area X - vai all'area Y - si genererà un bot - uccidi il bot senza subire più del 10% di danno - il bot rilascia l'oggetto - raccogli l'oggetto - il portale si sblocca - consegna l'oggetto a J dietro il portale - ricevi oro ed esperienza - consenti di passare di nuovo il portale - blocca il portale per questo giocatore
le istanze di livello sono una possibilità (i giocatori possono completare determinate missioni in squadre o in isolamento che genereranno la posizione di livello solo per quei partecipanti)
- Le missioni dovrebbero preferibilmente essere gestibili utilizzando un editor mondiale senza script o conoscenze di programmazione ( Modifica: non difendere contro gli script in generale però)
- Presumo C ++ come linguaggio di implementazione
Pensavo che se avessi potuto combinare qualsiasi catena di eventi e condizioni potremmo modellare ricerche più complesse e quindi probabilmente più coinvolgenti. Ho sperimentato il lancio del mio motore ECA (Eventi-Condizioni-Azioni) ma potrebbe essere eccessivo. È stato particolarmente difficile modellare le condizioni generiche senza utilizzare alcun tipo di scripting.