Lo sviluppo di giochi in ambiente Android - La piattaforma Libgdx
Libgdx è un framework open-source per lo sviluppo cross-platform di giochi su tecnologia Java. In realtà, oltre a Java, il framework fa uso anche del linguaggio C sia per compiere quei compiti che sono critici per le performance, sia per incorporare librerie C di terze parti che forniscono tool di supporto.
Una delle caratteristiche principali di Libgdx è la possibilità di esportare il proprio progetto su diverse piattaforme. Per fare ciò fornisce un’API comune che astrae completamente i dettagli implementativi delle varie piattaforme supportate che attualmente sono: Windows, Linux, Mac OS X, Android, iOS e HTML5.
Libgdx non è un game engine. I game engine sono composti, generalmente, da una insieme di tool che vincolano lo sviluppatore. In questo modo Libgdx lascia allo sviluppatore una totale libertà sugli strumenti da utilizzare ed offre la possibilità di utilizzare operazioni di basso livello qualora fosse necessario.
Quando si crea un’applicazione con Libgdx si vanno ad implementare N progetti di cui un progetto core che sfrutta l’API fornita e che contiene gran parte del codice, ed N-1 progetti, uno per ogni piattaforma utilizzata, che contengono la restante parte di codice utile all’avvio dell’applicazione sulle diverse piattaforme.
Con Libgdx è possibile eseguire e debuggare il codice su desktop come una normale applicazione Java. Ciò ha un duplice vantaggio:
- Consente l’utilizzo di tutti gli strumenti e delle funzionalità supportate dalla Java Virtual Machine
- Riduce sensibilmente i tempi di sviluppo e di debug.
Per fare in modo che si possa scrivere un unico codice di base, però, è necessario che tutti i progetti abbiano libero accesso alle risorse che dovranno essere utilizzate. Abbiamo anche detto che la maggior parte del codice di un’applicazione Libgdx è scritta nel progetto core e, quindi, si potrebbe pensare di avere una directory interna a questo progetto contenente suoni, immagini e quant’altro possa essere condiviso fra le varie piattaforme. Tuttavia Android ha delle regole molto ferree per quanto riguarda l’utilizzo delle risorse e per tale motivo si utilizza la cartella assets del progetto Android per la condivisione dei dati.
I legami fra i diversi progetti sono gestiti tramite Gradle. Gradle è un sistema di creazione (build) e gestione (management) delle dipendenze. La gestione delle dipendenze avviene tramite un file che specifica i nomi e le versioni delle librerie che uno sviluppatore ha bisogno di avere nella propria applicazione. L’aggiunta, la rimozione o la modifica della versione di una libreria può essere ottenuta semplicemente modificando alcune righe di questo file. Il sistema di build aiuta con la creazione della propria applicazione e non è legato al particolare IDE (Integrated DevelopmentEnvironment) utilizzato.
Prima di Gradle era necessario configurare libgdx ogni volta che si creava un nuovo progetto. Tale configurazione consisteva di una serie di passi, per caricare le librerie e per creare le dipendenze fra i diversi progetti, che potevano costituire un procedimento abbastanza complesso e spesso fonte di errori. Il sistema di build di Gradle automatizza questo procedimento e permette a tutte le piattaforme di condividere la cartella assets del progetto Android.