• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

01. Introduzione a cocos2d, installazione e primo progetto

By IgnazioC | on 29 Giugno 2012 | 17 Comments
Corso programmazione videogiochi
corso-programmazione-videogame-cocos2d-01

Avete quindi deciso di imparare a creare giochi per iPhone e iPad, bene! Vi attende un po’ di studio, ma anche tanto tanto divertimento.

Lo sviluppo di un videogioco richiede tante competenze diverse: servono dei disegnatori, degli esperti di audio e dei creatori di contenuti; oltre che, ovviamente, dei bravi programmatori. Al programmatore sono richieste competenze non indifferenti perché se si vuol realizzare un videogioco da zero bisogna muoversi agevolmente con OpenGL ES e con tutti i framework di basso livello relativi al multimedia come OpenAL. Lavorare con queste tecnologie non è semplicissimo, ma fortunatamente (il corsivo è d’obbligo perché non si tratta di fortuna, il tutto è reso possibile da gente che ci lavora tutti i giorni) esistono alcuni framework che fanno per noi il lavoro più duro e ci permettono di creare videogiochi con semplicità e senza necessariamente conoscere OpenGL ES o avere a che fare con complicati calcoli di fisica.

In queste lezioni tratteremo Cocos2d, più precisamente la sua versione per il sistema operativo iOS che si chiama cocos2d for iPhone. Si tratta di un framework open source per la creazione di videogiochi che comprende una lunga serie di strumenti che vanno dalla gestione delle scene, dei menù, delle transazioni, la gestione dell’audio e molto altro ancora.

Il progetto non è nato però per questa piattaforma, nasce infatti per python, ma ha conosciuto il successo proprio grazie alla diffuzione dei device Apple.

Attualmente esistono porting di cocos2d anche per atri linguaggi come Ruby e Java (Android).
Tra i numerosi vantaggi presenti nell’utilizzare un framework come cocos2d va sottolineato che il suo sorgente, lavorando con OpenGL ES, viene eseguito dalla GPU e questo è molto importante perché lascia la CPU libera di fare altro mentre tutto il carico di lavoro derivante dalle animazioni viene asseganto alla scheda grafica.

Il progetto ha il suo sito ufficiale: http://www.cocos2d-iphone.org/ dove potete trovare una folta community di sviluppatori, tante guide http://www.cocos2d-iphone.org/wiki/doku.php/ e un’elenco delle applicazioni realizzate con questo framework http://www.cocos2d-iphone.org/games.

Alcuni giochi elencati, diciamolo francamente, farebbero venire voglia di abbandonare lo studio, ma ci sono anche tanti capolavori come il recente “The Numberlys” (App Store) oppure Zombie Smash (App Store) che sono state rispettivamente “app of the week” e “top paid app”.


01-introduzione-cocos2d-installazione-primo-progetto-01

01-introduzione-cocos2d-installazione-primo-progetto-02

Installazione

Potete trovare l’ultima release del framework sul sito ufficiale del progetto http://www.cocos2d-iphone.org/ nella sezione relativa ai Download. Il consiglio è come sempre quello di utlizzare la versoine definita “stable” lasciando le versioni unstable solo agli utenti più esperti che hanno voglia di provare delle nuove caratteristiche.

Al momento in cui scrivo la release stabile è la 1.0.1. Scarichiamo il file cocos2d-iphone-1.0.1.tar.gz in una cartella del nostro sistema operativo e scopattiamolo con un semplice doppio click, verrà creata la cartella cocos2d-iphone-1.0.1

Se avete voglia di vedere come può essere gestito un progetto complesso come cocos2d aprite il file cocos2d.xcworkspace, ma attenti a non modificare nulla! Il progetto Cocos2d-ios ha ben 67 targets, molti dei quali sono test (ricordate il nostro articolo su Unit-test, vero?). Assicuratevi di non aver modificato nulla e chiudete il progetto, passeremo adesso all’installazione.

Molti framework vengono distribuiti semplicemente come un insieme di file .h e .m da trascinare all’interno dei nostri progetti, ma vista la particolarità di questo framework viene fornito un programma che permette di aggiungere tre nuovi template ad XCode.
Il programma si chiama install-templates.sh ed è uno script bash. Per eseguirlo non dovete cliccarci sopra, ma bisogna eseguirlo da riga di comando.

Mi auguro che tutti i lettori di questo corso sappiano che cosa sia la riga di comando, perché non si può realmente dire di conoscere un sistema operativo se non si è in grado di usarlo esclusivamente attraverso questo sistema. Estremismi a parte avviamo l’applicazione “terminale” e spostiamoci all’interno della cartella cocos2d-iphone-1.0.1. Per verificare in quale cartella ci si trova basta digitare il comando “pwd”, mentre per spostarsi nella cartella “prova” il comando da digitare è “cd prova”.
Quando siamo all’interno della cartella giusta assicuriamoci che xcode non sia aperto e digitiamo

sudo ./install-templates.sh

(occhio al punto prima dello slash)

Quando la procedura sarà terminata possiamo aprire XCode e, se tutto è andato a buon fine, vedremo una nuova sezione con tre nuovi template:


01-introduzione-cocos2d-installazione-primo-progetto-03
Il primo ci permetterà di creare un progetto base che utilizza cocos2d, il secondo oltre ad usare cocos utilizza anche il motore di simulazione fisica box2d. Il terzo è simile al secondo, ma al posto di utilizzare box2d utilizza chipmunk. Vedremo qualche differenza sui due framework più avanti nel corso.

Hello world

Creiamo adesso il primo progetto con cocos2d: il classico “hello world”.
Avviamo XCode, scegliamo di creare un nuovo progetto e selezioniamo la categoria “cocos2d”. In questo momento non ci servirà nessun motore fisico quindi scegliamo il template “cocos2d”.
Diamo un nome al progetto e salviamolo in una cartella sul nostro disco.
La creazione del progetto termina qui, infatti possiamo già eseguire il progetto sul simulatore


01-introduzione-cocos2d-installazione-primo-progetto-04
per verificare che tutto funzioni.
Una volta in esecuzione il progetto mostra questa interfaccia:


01-introduzione-cocos2d-installazione-primo-progetto-05
Il numero visibile nell’angolo in basso a sinistra indica il framerate corrente, cioè il numero di frame visibili in un secondo. Chiaramente i frame non sono divisibili quindi quel valore non deve essere considerato come “59 frame e 7 decimi di frame” ma piuttosto “il frame è rimasto visibile per 1 / 59.7 secondi”.

Ci si potrebbe chiedere come mai il framerate non sia stabile su 60 considerata la semplicità dell’interfaccia del “gioco”; una risposta esaustiva richiederebbe un’approfondimento non banale sui sistemi operativi, qui possiamo dire che il framerate oscilla perché il sistema operativo iOS non è un sistema operativo realtime e l’esecuzione dei processi è demandata ad un componente chiamato “schedulatore”. Lo schedulatore interrompe ciclicamente l’esecuzione del nostro processo per eseguire tutti gli altri processi del sistema operativo e queste interruzioni durano per un tempo brevissimo ma non prevedibile. Per questo motivo alcuni frame possono impiegare più tempo di altri ad essere aggiornati portando il framerate ad un valore leggermente più basso di quanto fissato. Ma non vi illudete, se nel vostro gioco il framerate scende a 15 fps non date la colpa allo schedulatore 😉 quella è solo colpa della complessità del vostro gioco!

Non impostate mai valori più alti di 60 perché sarebbe inutile, lo schermo dell’iphone ha una frequenza di aggiornamento fissata a 60Hz quindi non sarebbero visibili aggiornamenti con una maggiore frequenza. Inoltre in alcuni casi può essere più utile mantenere un framerate più basso, ma costante, piuttosto che uno altalenante.

Hello world in dettaglio

Non possiamo però concludere in questo modo il nostro approccio con il primo progetto cocos2d, vogliamo infatti vedere nel dettaglio com’è fatto questo template e come funziona.
Se diamo un’occhiata all’elenco delle risorse che sono state create vediamo davvero un gran numero di framework e di librerie importate, è stato proprio un bene avere un template, non credete?

Lasciamo lì le librerie e diamo uno sguardo all’elenco dei file:

  • AppDelegate.h /.m Questo è l’app delegate dell’applicazione, non dimentichiamo che anche se stiamo usando cocos2d un’applicazione iPhone è sempre un’applicazione iPhone quindi necessita dell’AppDelegate. I metodi di questa classe sono gli stessi delle applicazioni standard, ma la loro implementazione è particolare quindi la vedremo in dettaglio.
  • RootViewController.h /.m Questo è il principale (nonché unico) viewcontroller presente in tutta l’applicazione. Le diverse schermate del gioco non vengono gestite con più viewcontrollers ma con le scene quindi anche in progetti più grossi non sarà necessario avere altri viewcontrollers. In questo viewcontroller è stato fatto l’override dei metodi che si occupano della rotazione dello schermo. La rotazione dello schermo è un processo piuttosto oneroso in termini di risorse quindi sono state pensate più possibilità: nessuna rotazione per i device vecchi, rotazione gestita dal viewcontroller e rotazione gestita dal Director (ancora non sappiamo cos’è). Di default troverete le impostazioni per far eseguire la rotazione al viewcontroller, che è un’ottima impostazione per device di ultima generazione. Suggerisco di lasciare questa impostazione per il momento.
  • HelloWorldLayer.h /.m Il primo layer del nostro gioco. Parleremo più avanti dei layer e della loro creazione, ma potete immaginarli come i livelli di photoshop, sono delle aree trasparendi su cui disegnare gli elementi del nostro gioco. Una volta sovrapposti visualizzeranno il gioco nella sua interezza.
  • GameConfig.h si tratta di un file di intestazione (non è presente il .m) dove sono dichiarate molte costanti per la configurazione del gioco.

Il ciclo di vita

Esaminando il progetto d’esempio possiamo notare che per quando riguarda il file main.m non ci sono modifiche rispetto ad un’applicazione standard. Possiamo però notare che non è presente il supporto ARC.
La “magia” avviene invece all’interno del metodo dell’AppDelegate applicationDidFinishLaunching:
guardiamolo quindi in dettaglio:

- (void) applicationDidFinishLaunching:(UIApplication*)application
{
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //1
        
if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] ) //2
                [CCDirector setDirectorType:kCCDirectorTypeDefault];
CCDirector *director = [CCDirector sharedDirector]; //3
viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil]; //4
viewController.wantsFullScreenLayout = YES;
        
EAGLView *glView = [EAGLView viewWithFrame:[window bounds]  
pixelFormat:kEAGLColorFormatRGB565
depthFormat:0
];  //5
        
[director setOpenGLView:glView]; //6
        
[director setDeviceOrientation:kCCDeviceOrientationPortrait]; //7
[director setAnimationInterval:1.0/60]; //8
[director setDisplayFPS:YES]; //9
        
        
[viewController setView:glView]; //10
        
[window addSubview: viewController.view]; //11
        
[window makeKeyAndVisible]; //12
        
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; //13
[self removeStartupFlicker]; //14
[[CCDirector sharedDirector] runWithScene: [HelloWorldLayer scene]]; //15
}

# 1 Il metodo inizia come di consueto allocando un oggetto UIWindow che costituirà la window principale dell’applicazione.
# 2 Verifica se è possibile utilizzare le API CADDisplayLink (Apple CADisplayLink Class Reference) disponibile solo da iOS 3.1 in poi.
# 3 Instanzia un oggetto singleton della classe CCDirector. Questa classe, come un vero e proprio regista si occupa di gestire il passaggio tra le varie scene del gioco.
# 4 Inizializza il viewcontroller principale.
# 5 Crea una EAGLView: un oggetto utilizzato da cocos2d per visualizzare oggetti OpenGL.
# 6 Comunica al director qual è la EAGLView da utilizzare.
# 7 Qui ho rimosso la parte di codice che non verrebbe compilata con le opzioni di default, comunichiamo al director l’orientamento del device.
# 8 Impostiamo il framerate desiderato.
# 9 Scegliamo di visualizzare il valore corrente dell’FPS, utilissimo in fase di testing mostra infatti il numero in basso a sinistra che abbiamo visto nella foto precedente.
# 10 – 11 – 12 Operazioni comuni con la window e con il viewcontroller.
# 13 Settiamo il valore delle texture da utilizzare.
# 14 Elimina il flick se l’applicazione deve avviarsi solo in landscape. Viceversa avremmo inizialmente una visione in portait che viene subito cambiata da una in landscape.
# 15 Comunichiamo al director di visualizzare la scena della classe HelloWorldLayer, scena che viene richiamata tramite il metodo di classe scene.

Conclusioni

In questa lezione abbiamo imparato dove ottenere l’utlima versione di cocos2d e dove ricevere supporto. Abbiamo visto qualche esempio di applicazione realizzata con questo framework e infine abbiamo creato il primo progetto “hello world” analizzandolo in dettaglio.
Vedremo nella prossima lezione come apportare le prime modifiche al progetto per visualizzare ed animare i primi oggetti del gioco.

Share this story:
  • tweet

Tags: box2dchipmunkcocos2scorso cocos2dinstallare cocos2dprogrammare videogiochiprogrammazione videogameusare cocos2d

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • 9. Introduzione a Box2d: la fisica nei videogame

    3 Ottobre 2012 - 4 Comments
  • 6. Come aggiungere profondità ai nostri videgiochi in 2D

    27 Agosto 2012 - 3 Comments
  • 5. Le action in Cocos2D

    31 Luglio 2012 - 5 Comments

Author Description

17 Responses to “01. Introduzione a cocos2d, installazione e primo progetto”

  1. 29 Giugno 2012

    01. Installare cocos2d e primo progetto | Corso gratuito di programmazione videogame per iPhone e iPad - iPhone Italia Blog

    […] oggetti di un gioco. Siete pronti quindi per partire? Allora non vi resta altro che seguire il seguente indirizzo e iniziare il vostro corso di programmazione […]

  2. 29 Giugno 2012

    Vivi Capena | News e info da capena e i suoi cittadini

    […] oggetti di un gioco. Siete pronti quindi per partire? Allora non vi resta altro che seguire il seguente indirizzo e iniziare il vostro corso di programmazione […]

  3. 29 Giugno 2012

    matteo

    ottimo! grazie per il corso…. ogni quanti giorni ci saranno le lezioni? grazie

  4. 29 Giugno 2012

    01. Installare cocos2d e primo progetto | Corso gratuito di programmazione videogame per iPhone e iPad « DiscoveryInfos – Breaking news from the world

    […] oggetti di un gioco. Siete pronti quindi per partire? Allora non vi resta altro che seguire il seguente indirizzo e iniziare il vostro corso di programmazione […]

  5. 29 Giugno 2012

    Carlo

    Bella guida, la seguirò ogni settimana.

  6. 29 Giugno 2012

    Edoardo

    Ciao, mi potete dare un link in cui imparare le nozioni di objective c richieste per il corso??? Va bene il corso di Devapp?

  7. 30 Giugno 2012

    01. Installare cocos2d e primo progetto | Corso gratuito di programmazione videogame per iPhone e iPad | Tutto App

    […] oggetti di un gioco. Siete pronti quindi per partire? Allora non vi resta altro che seguire il seguente indirizzo e iniziare il vostro corso di programmazione […]

  8. 30 Giugno 2012

    ignazioc

    guarda sul forum si è parlato spesso di manuali per iniziare e risorse online, prova a dare un’occhiata.

  9. 30 Giugno 2012

    Jacopo

    Benissimo complimenti per la guida, spiegata nei minimi particolari 😀 La seguirò sempre anche se comunque le prime guide come queste bisognerebbe farle tutte insieme in un intera settimana perché sono facili da apprendere! 😀
    Ancora Complimenti!

  10. 30 Giugno 2012

    ballaco ilupi

    ciao, ma per forza ci va un mac.? su pc non si puo’ utilizzare..?

  11. 2 Luglio 2012

    ignazioc

    io utilizzo la versione di cocos per iOS quindi serve un mac. considera però che cocos è multipiattaforma quindi se vuoi sviluppare per androdi+cocos puoi usare windows o linux.

  12. 4 Luglio 2012

    Mario

    Ciao, esiste un emulatore di xcode per windows?

  13. 4 Luglio 2012

    Ignazioc

    hum..no.

  14. 20 Luglio 2012

    Alessandro

    Scusate il ritardo, ma non riesco ad installare Cocos.

    Grazie mille per l’attenzione.

  15. 8 Agosto 2012

    Samuele

    Appena iniziato a seguire le guide..
    Ho visto che sul sito cocos2d è disponibile la versione 2.0
    Ho provato a fare sul terminale lo stesso codice però sulla cartella della versione 2.0, ma non funziona.. me lo fa fare solamente con la 1.0.1

    Cambia qualcosa se utilizzo la precedente?
    Se si, è possibile fare il tutto sulla 2.0?

    Grazie, e Ottimo sito Complimenti! 🙂

  16. 5 Settembre 2012

    Salvo

    Buongiorno a tutti!!’
    Avrei bisogno di una delucidazione;
    Quando faccio nuovo progetto su cocos2d
    Tra i file AppDelegate.h /.m,HelloWorldLayer.h /.m ecc. Mancano le righe
    “RootViewController.h /.m.” ed
    GameConfig.h ???
    qualcuno mi saprebbe indicare qualè il problema??
    E come risolvere!!
    Grazie!!

  17. 30 Novembre 2012

    Fede

    Come mai quando creo un progetto con cocos v1.0.1 lo schermo è in posizione verticale invece che orizzontale? anche selezionando dal menù del progetto la modalità landscape mi ruota il simulatore ma la scritta rimane ancora come se l’iphone fosse in posizione verticale

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO