Con la diffusione dei dispositivi mobile, e l'affermazione di sistemi come Google Play ed App Store su Android ed iOS, si è affermata sempre di più la figura dello sviluppatore di videogames indipendente (o indie game developer). Si tratta, sostanzialmente, di uno sviluppatore (o di un piccolo gruppo) economicamente indipendente, che sviluppa un gioco e lo distribuisce tramite i canali sopra citati, riuscendo (talvolta) a raggiungere un pubblico più o meno vasto.
In questa guida vedremo come diventare sviluppatori indipendenti di videogame per Android, partendo dalla progettazione del gioco,
per arrivare a pubblicare la propria app su Google Play. In particolare,
lo sviluppo del gioco sarà effettuato tramite le API Java per Android.
Durante la guida realizzeremo, a titolo di esempio, un shooter 2D
del genere space arcade, semplice, divertente ma soprattutto
molto utile per i nostri scopi.
Creare un videogame mobile: mille domande
Quando iniziamo a pensare alla
realizzazione di un gioco in ambiente mobile, ci scontriamo
con alcune problematiche tipiche dello sviluppo di un
videogame, nonchè dovute alle limitate risorse
dei sistemi mobile. Come trovare
una storia di successo? Dove posso trovare la grafica? La musica e
l'audio? Che strumento utilizzare? Costruisco un mio engine oppure ne
uso uno già esistente? Queste sono solo alcune delle domande
con cui chiunque, prima ancora di iniziare a sviluppare una game application,
deve confrontarsi.
Il primo step può essere quello di decidere su quale piattaforma basare il proprio
lavoro. In questa guida la scelta è quella di realizzare un
proprio engine, e tale decisione (sebbene apparentemente più
complessa) ci consentirà di comprendere aspetti tecnici che altrimenti verrebbero nascosti.
Un secondo problema riguarda la grafica della nostra app. Possiamo
affrontare questa questione in diversi modi:
-
contattare un grafico attraverso internet e commissionare il
lavoro, il che richiederà un certo budget, nonchè del tempo per
discutere i dettagli del lavoro; -
acquistare dei pacchetti di grafica. Il costo è contenuto
ma la stessa grafica potrà essere usata da altri game developer.
Un sito che fornisce servizi di questo tipo è Graphic River; -
utilizzare soltanto grafica gratuita e liberamente utilizzabile.
Possiamo attingere dalla miniera di Open Game Art con
la consapevolezza di dover eventualmente inventare qualcosa con il
materiale a disposizione. Se vogliamo seguire questo é un approccio,
l'idea migliore è forse quella di partire dalla grafica disponibile
e sulla base di essa inventare una storia; -
realizzare la grafica per conto proprio. Ciò non è
semplice, ma esistono tutorial che consentono di acquisire conoscenze
di base sulla grafica vettoriale sufficienti per la realizzazione di
semplici videogame. Si veda, ad esempio, la guida ad Inkscape,
disponibile su HTML.it.
Un discorso analogo è quello relativo a musiche ed
effetti sonori. In funzione del nostro budget, possiamo decidere ancora una volta
di acquistare file multimediali (ad esempio su Imphenzia),
o tentare ancora con Open Game Art (sezione
audio).
L'ultimo (ma non per importanza) problema da affrontare è forse
il più difficile: definire quella che viene chiamata
storyboard, e che può fare la differenza tra un gioco
comune ed uno di successo. Partendo da una storia
semplice che definisce l'ambiente di gioco e la sua dinamica, dovremo pensare
alla giocabilità, alla viarietà di situazioni ed aspetti
che possano tenere incollato al gioco il giocatore. Dovremo anche definire
personaggi, livelli ed interazioni.
La libreria grafica: OpenGL ES
Oltre ai problemi appena descritti, analizziamo brevemente in questa introduzione
anche un aspetto di carattere più tecnico, riguardante la scelta della libreria grafica
che adopereremo per realizzare il nostro engine: OpenGL ES.
Non utilizzeremo l'ultima versione disponibile, ma la 1.0,
perché desideriamo poter eseguire il gioco su un numero
più vasto possibile di dispositivi. Le API OpenGL forniscono
tutto ciò che serve per la computer grafica 2D e 3D.
Un aspetto particolarmente delicato quando progettiamo
videogame per dispositivi mobile, riguarda la necessità di tenere conto
della frammentazione dei dispositivi, e conseguente della varietà
di risoluzioni con le quali la nostra app dovrà essere compatibile.
Per gestire questo problema, OpenGL consente di realizzare il gioco
ragionando su una singola risoluzione target, ed immaginando che tutti i
dispositivi abbiano questa risoluzione. Sará infatti OpenGL ad
effettuare il ridimensionamento automatico di tutta la scena, sulla
base della risoluzione del dispositivo su cui viene eseguito il gioco.
Per lo sviluppo destinato agli smartphone, ad esempio, potremmo pensare
di utilizzare una risoluzione target di 800x480 pixel, che OpenGL ridimensionerebbe
in tutti quei casi in cui la nostra app venisse eseguita su un tablet.
L'unico problema starà nel fatto che le immagini potrebbero essere
ridimensionate verso risoluzioni maggiori di quella che avevamo in
mente, perdendo inevitabilmente di qualità.
Se il nostro target sono anche i tablet, è chiaro
che 800x480 non può essere una scelta ottimale, e dovremo
pensare ad una risoluzione intermedia alternativa che ci soddisfi, ad
esempio 900x540 o superiore.
La guida: requisiti preliminari
La guida che segue parte dal presupposto che il lettore abbia già una
conoscenza di base della programmazione Android. Per coloro che non
soddisfano questo requisito, rimandiamo alla guida allo sviluppo di
app Android, disponibile qui su HTML.it. Non ci soffermeremo,
quindi, su aspetti come la configurazione dell'ambiente di sviluppo,
limitandoci a specificare che lavoraremo su Eclipse, dotato del plugin ADT.
Gli esempi che seguiranno saranno sviluppati su Microsoft Windows,
ma possono facilmente essere adattati a Linux o MacOS.