È da poco giunto nelle librerie il libro Sviluppare giochi 2D per iOS con SpriteKit e Swift, che insegna a sviluppare giochi per iPhone e iPad sia a chi è già un esperto programmatore che a chi si avvicina per la prima volta alla programmazione. Abbiamo intervistato i suoi autori: Antonio Agliata e Ignazio Finizio.

Antonio Agliata è docente a contratto presso l’Apple Foundation Program dell’Università degli Studi di Napoli “Parthenope” per l’Anno Accademico 2018/2019. È stato, inoltre, docente a contratto del corso di “Tecnologie Web” del Corso di Laurea Triennale in Informatica dell’Università degli Studi di Napoli “Parthenope” nell’Anno Accademico 2015/2016. Attualmente ricopre, inoltre, il ruolo di Project Manager presso la Bc Soft S.r.l.

Ignazio Finizio è professore a contratto, per l’Anno Accademico 2018/2019, di “Elementi di Informatica” per Ingegneria Aerospaziale e Ingegneria Meccanica dell’Università degli Studi di Napoli “Federico II”. È stato docente della iOS Developer Academy, partnership tra Apple e Università “Federico II” di Napoli, nel 2016/2017. È, inoltre, titolare di uno studio di progettazione informatica e Project Manager presso varie aziende.

Innanzitutto, partiamo dal titolo del vostro libro, che sembra spaventosamente complicato: “Sviluppare giochi 2D per iOS con SpriteKit e Swift”. Qual è il suo significato?

Per illustrare il significato del titolo del libro occorre partire dai termini tecnici presenti. I giochi 2D sono quelli a due dimensioni, dove le dinamiche si sviluppano su un piano e non in uno spazio tridimensionale. Si tratta dei giochi più diffusi sugli smartphone. iOS è il sistema operativo usato dagli iPhone e dagli iPad. Il termine SpriteKit è l’unione delle parole Sprite e Kit. Sprite, nell’informatica, è il termine che si attribuisce ad un’entità grafica che può compiere sullo schermo varie azioni indipendenti dagli altri oggetti della scena visualizzata, come, ad esempio, muoversi o collidere con altre sprite. Il termine Kit, nell’ecosistema Apple, indica solitamente un framework, ossia un “software di supporto” alla programmazione destinato alla gestione di aspetti specifici dello sviluppo di app. SpriteKit è il potente framework creato da Apple per aiutare gli sviluppatori a realizzare, in modo semplice e intuitivo, giochi 2D per tutti i dispositivi che appartengono all'ecosistema della mela. Swift è un linguaggio di programmazione di ultima generazione, made in Apple, orientato agli oggetti. È nato per lo sviluppo di applicazioni per i dispositivi della casa di Cupertino ed è stato presentato nel 2014. Si tratta di uno dei linguaggi più attuali, potenti, semplici e intuitivi a disposizione degli sviluppatori.

Quindi, in conclusione, il libro descrive come realizzare giochi a due dimensioni per iPhone e iPad mediante il framework SpriteKit, le cui funzionalità vengono sfruttate usando il linguaggio di programmazione Swift.

A chi si rivolge il vostro libro?

Il libro non è orientato solo a chi ha già una conoscenza approfondita del linguaggio Swift o, comunque, della programmazione, ma anche a tutti gli sviluppatori in erba e agli appassionati che muovono i primi passi nell’ambito della programmazione.

Il volume non intende essere un manuale del linguaggio Swift o di SpriteKit, né una raccolta di tutorial. Vuole, piuttosto, guidare il lettore in un percorso di apprendimento in cui le nozioni teoriche e la loro applicazione pratica procedono di pari passo, in modo da consentire l’acquisizione delle competenze teorico-pratiche necessarie per sviluppare autonomamente nuovi giochi che possano essere pubblicati sull’App Store Apple o per altre finalità, come, ad esempio, per partecipare alla WWDC, la selezione di studenti di tutto il mondo organizzata ogni anno da Apple.

Com’è strutturato il testo?

I primi 11 capitoli del libro sono dedicati alla programmazione in Swift e costituiscono la base fondamentale per comprendere e approfondire gli argomenti trattati nei successivi capitoli. La sintassi del linguaggio Swift, i suoi costrutti e le sue caratteristiche peculiari vengono illustrati gradualmente nel corso dei capitoli che vanno dal primo all’undicesimo. Si parte dai concetti più elementari, per arrivare alle caratteristiche più avanzate e interessanti di Swift. La presentazione di ogni concetto è corredata da esempi di codice che ne illustrano l’utilizzo e le particolarità.

A partire dal 12° capitolo, viene illustrato lo sviluppo di giochi 2D con SpriteKit. Le caratteristiche salienti di SpriteKit e le possibilità che offre agli sviluppatori vengono mostrate mediante l’analisi dettagliata di tre giochi completi, realizzati con SpriteKit mediante il linguaggio di programmazione Swift. Gli esempi che servono ad approfondire i costrutti del linguaggio Swift e le caratteristiche di SpriteKit prendono spesso spunto dal codice di questi tre giochi. Gli argomenti trattati e i relativi esempi proposti sono organizzati secondo un crescente grado di difficoltà, al fine di favorire un progressivo avvicinamento del lettore a tecniche e approcci gradualmente più complessi. I tre progetti che vengono sviluppati hanno lo scopo, inoltre, di illustrare come scrivere e strutturare un programma che sia facilmente manutenibile e aggiornabile. Nel testo, si cerca di porre l’accento sulle tecniche da utilizzare per sfruttare adeguatamente le peculiarità di SpriteKit e per produrre codice efficiente.

I tre giochi sono stati strutturati in modo da consentire di affrontare argomenti caratterizzati da livelli di difficoltà progressivamente più elevati.

Quali sono i giochi che vengono illustrati?

I nomi dei giochi sono: Flowers, Teetering e Traffic.

Lo scopo di Flowers è quello di abbinare, in una griglia di fiori, elementi dello stesso colore e di raccoglierli. In ogni livello di Flowers, si dovranno raggiungere gli obiettivi fissati per passare al livello successivo. Le regole su cui è basato Flowers sono molto semplici e per ogni livello c’è un obiettivo differente. Per raccogliere un fiore basta toccarlo. Il fiore toccato viene raccolto insieme a tutti gli altri fiori dello stesso tipo e colore che gli sono vicini. L’analisi dettagliata di Flowers consente di affrontare i concetti elementari che sono alla base della realizzazione di un gioco per iPhone e iPad con Swift e SpriteKit. Oltre a mostrare come posizionare gli elementi grafici sullo schermo, viene illustrato come effettuare un’animazione, come far compiere azioni diverse al gioco quando l'utente tocca lo schermo in punti diversi, come realizzare e gestire vari livelli di gioco e molti altri concetti essenziali per realizzare un gioco completo.

Nel gioco Teetering, per passare al livello successivo, si devono controllare i movimenti della pallina inclinando lo smartphone, farla girare intorno agli ostacoli, evitare le buche e raggiungere il traguardo. Teetering è una sfida attraverso labirinti sempre più difficili da superare.

L’analisi di Teetering permette di familiarizzare con vari concetti di difficoltà medio alta legati alla realizzazione dei giochi. In particolare, consente di acquisire dimestichezza con l’uso di alcuni importanti sensori dell’iPhone e dell’iPad, di introdurre i concetti fondamentali della fisica nei giochi 3D con Swift e SpriteKit e di impostare e gestire correttamente le collisioni tra oggetti. Serve, inoltre, a familiarizzare con gli strumenti visuali di SpriteKit, integrati nell’ambiente di sviluppo fornito dalla Apple.

Nel gioco Traffic si deve avanzare nel traffico superando le altre auto che si trovano lungo il percorso. Con Traffic si impara come spostare gli oggetti sullo schermo, come effettuare lo scorrimento dello sfondo e come gestire un piano di gioco anche molto più grande di quello mostrato sullo schermo dell'iPhone o dell’iPad. Si illustrano, inoltre, alcune tecniche avanzate per migliorare la qualità dei giochi 2D su iPhone e iPad e per rendere uniforme il funzionamento dei giochi sui vari dispositivi.

Che giochi si possono realizzare grazie a questo libro?

È possibile realizzare qualsiasi gioco a due dimensioni. Non esistono grandi limiti alle possibilità offerte da SpriteKit. Giochi d’azione, di strategia, Arcade e qualsiasi altro tipo di gioco a 2 dimensioni possono essere realizzati grazie a questo straordinario framework della Apple. Molte delle funzionalità, solitamente necessarie per realizzare un gioco, possono essere implementate in modo semplice grazie agli strumenti che SpriteKit mette a disposizione dello sviluppatore, ossia, per dirla in termini più tecnici, grazie alle classi e ai metodi del framework. Creare un’animazione, spostare un oggetto sullo schermo, verificare se un oggetto ha urtato un altro, una volta acquisite le dovute competenze, risulta molto semplice con SpriteKit. Il framework della Apple dispone, inoltre, di una straordinaria caratteristica che abbiamo ampiamente illustrato nel libro: la capacità di simulare la fisica. SpriteKit offre, cioè, la possibilità di attribuire agli oggetti che animano un gioco comportamenti che simulano le leggi della fisica. Grazie a questa caratteristica, è possibile fare in modo che tali oggetti siano soggetti alla gravità, all’attrito, reagiscano alle collisioni con altri corpi rimbalzando o compenetrandosi con essi, subiscano l’effetto di forze o di impulsi applicati. In pratica è possibile realizzare ambienti e scene che emulano il mondo reale, con oggetti che hanno un peso, un volume, che sono soggetti alla forza di gravità e che possono avere, in queste scene virtuali, comportamenti che simulano quelli degli oggetti reali.

I giochi sono l’unica tipologia di app che è possibile realizzare mediante le competenze acquisite con questo libro?

Il libro si propone, innanzitutto, di insegnare a programmare o di perfezionare le tecniche di programmazione usando il linguaggio Swift, linguaggio che la Apple ha presentato e adottato per lo sviluppo di qualsiasi tipo di app, non solo di giochi.

Anche per quanto riguarda SpriteKit, i giochi non sono l’unica tipologia di app che è possibile realizzare mediante le competenze acquisite su questo framework. È sempre più diffusa nel mondo informatico, infatti, la tendenza a realizzare app non ludiche che adottino il paradigma della “gamification”, ossia dell’utilizzo di elementi mutuati dai giochi e delle tecniche di game design in contesti esterni ai giochi. Ad esempio, ci sono molte app didattiche che insegnano le discipline più disparate, dalle lingue alla matematica alle scienze, facendo uso di meccanismi tipici dei giochi. Tendono, cioè, a incentivare l’impegno dello studente usando, durante le lezioni, meccanismi tipici dei giochi, come bonus, punteggi che si incrementano con il procedere della lezione, premi, sorprese e personaggi di fantasia che forniscono supporto morale e materiale allo studente, incoraggiandolo e, talvolta, fornendogli qualche suggerimento.

Prima abbiamo visto che le competenze acquisite su questo libro potrebbero essere utili per partecipare alla WWDC. Ma in cosa consiste la WWDC?

La WWDC è una conferenza che riunisce tutti gli sviluppatori Apple del mondo, che ha una durata di 5 giorni, di solito si tiene nel mese di giugno in California. Negli ultimi due anni si è tenuta San Jose. Durante questa conferenza vengono presentate tutte le novità high-tech dei dispositivi Apple e anche le novità del linguaggio Apple Swift e dei Kit di supporto allo sviluppo. Qualsiasi appassionato della tecnologia, giovane o adulto, almeno una volta nella vita, dovrebbe partecipare a questo evento, quasi unico nel suo genere.

Come può il vostro libro aiutare un neofita a coltivare il sogno di partecipare a una conferenza così importante?

La partecipazione è molto ambita da parte degli studenti di alcune scuole e degli atenei italiani (non solo di discipline scientifiche). Sono previste delle scholarship e travel assistance per gli studenti che intendono cimentarsi nella realizzazione di un prototipo di app (solitamente entro il mese di aprile), mediante il playground (modalità di sviluppo interattiva su iPAD). Spesso, sono premiate le app di giochi, quindi, questo libro potrebbe dare le linee guida per lo sviluppo di giochi e fornire la possibilità a qualsiasi studente di cimentarsi in questa avvincente sfida.

Nello scenario del mondo professionale, un neofita che legge questo libro e impara a realizzare un gioco 2D può avere maggiori possibilità di trovare un lavoro?

La risposta è assolutamente si. Anzi, oseremmo dire che può diventare un professionista divertendosi. Le competenze di sviluppatore acquisite possono essere molto apprezzate in vari contesti aziendali. Inoltre, potrà anche lavorare a progetti, personali o condivisi con altre persone che condividono gli stessi obiettivi e la stessa passione. Esistono tantissimi esempi di storie di giochi realizzati per smartphone, che poi sono diventati virali.

Quindi, buono sviluppo di giochi 2D a tutti con gli strumenti ed i device che Apple mette a disposizione.