Questo framework e' nato dalla necessita' di avere un sistema che permettesse di definire la logica di gioco in modo rapido e con tempi di reiterazione il piu' bassi possibile.
- CONTEXT DEFINITION
L'Engine prevede un singolo contesto (eventualmente composto da sotto-contesti) atto ad elencare e descrivere staticamente tutti gli elementi logici presenti nel gioco (o meglio, quelli principali)
Viene definito in un apposito file, attraverso una struttura gerarchica di elementi (una sorta di DOM) identificati da un ID univoco, un TIPO, ed il filename del file che ne descrivera' il comportamento.
La posizione di un elemento all'interno della gerarchia ha un valore ed un significato intrinseco che cambia da situazione a situazione.
Ad esempio, un elemento di tipo 'ITEM' quando e' figlio di un elemento di tipo 'SCENE' significa che quell'item si trova 'fisicamente' direttamente all'interno di quella scena.
Allo stesso modo, quando tale ITEM viene raccolto e messo nell'inventario, cambiera' posizione all'interno della gerarchia, diventando un elemento figlio dell'elemento di tipo INVENTORY.
Se l'elemento di tipo INVENTORY a' un elemento figlio di un CHARACTER, significhera' che quell'INVENTORY rappresentera' l'inventario di quel personaggio...
o ancora, se l'elemento di tipo USER a' figlio di un CHARACTER significa che il giocatore sta controllando quel determinato personaggi... e via cosi'.
- STATE BASED SCRIPT LANGUAGE
Il comportamento di ogni elemento può essere definito in un file separato attraverso un 'linguaggio' adhoc (ovviamente piu' elementi possono condividere lo stesso comportamento se nel file di contesto questi linkano lo stesso filename).
Tale 'linguaggio' permette di descrivere la FSM dell'elemento, definendone gli stati, le condizioni che triggerano il cambio di stato (anche di altri elementi del contesto), le azioni dispobili in un determinato momento etc..
Snippet del linguaggio di scripting. Syntax coloring via NotePad++ UDL
Visual debugging degli elementi logici del contesto