You Are Reading

0

Sotto il cofano... Parte I

Eccoci al primo attesissimo (!?) appuntamento di una serie di articoli in cui spiegherò l'architettura dell'engine e del suo funzionamento interno.

Siccome vi vedo impazienti come fan di Guerre Stellari alla prima de "La minaccia fantasma" comincio subito con lo spiegozzo, spero solo in reazioni migliori rispetto al film di Lucas :P

Attenzione! Se dovete andare in bagno o comprare i pop-corn questo è l'ultimo momento utile per farlo.

Architettura Generale:
Il motore si divide sostanzialmente in 3 parti: l'AssetManager, lo ScriptEngine e la Presentation.

AssetManager:
E'la parte del motore che si occupa di salvare e caricare le risorse inserite tramite l'editor quindi gli sfondi, la grafica i suoni etc.

ScriptEngine:
Definisce il binding tra il linguaggio di script e le funzioni interne, si occupa inoltre di gestire la logica interna del motore.

Presentation:
Si occupa di renderizzare a video le immagini e gestire l'interazione con il giocatore.

Questa separazione è realizzata in modo che ogni strato o layer sia completamente trasparente per gli altri, questo vuol dire che per esempio quando tramite uno script viene utilizzata la funzione per caricare una locazione, lo strato dello ScriptEngine chiama una funzione dell'AssetManager che gli restituirà l'oggetto richiesto.
Come l'AssetManager esegue il suo compito è completamente trasparente per lo ScriptEngine e questo concetto si applica anche allo strato di Presentation. 
Quando lo ScriptEngine ad esempio deve visualizzare il personaggio, chiama un metodo del Presentation che in maniera totalmente indipendente si occuperò di visualizzarlo a schermo.

Questo approccio, noto in programmazione col termine MVC (Model-View-Controller) permette tra l'altro di poter modificare uno strato o layer in maniera indipendente dagli altri.
Ad esempio la Presentation attualmente sfrutta la libreria SFML ma se un domani volessi sostituirla con una diversa potrei riscrivere la parte di Presentation senza toccare minimamente le altre parti dell'engine.

Nelle prossime puntate descriverò in dettaglio ogni layer dell'applicativo approfondento un po'di più le scelte implementative.

0 commenti:

Posta un commento

 
Copyright 2010 Alone in the Code