SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
Maurizio Moriconi
Cocos2d: creare videogiochi con facilità!


maurizio.moriconi@mobilesoft.it - MobileSoft
Chi sono
               Maurizio Moriconi                  maurizio.moriconi@mobilesoft.it




• CTO presso Mobilesoft                     • Co-founder
• Mobile Developer                          • Main Developer


              http://www.linkedin.com/in/bugman


              @bugman79


              http://www.facebook.com/maurizio.moriconi
Cocos2d
               Maurizio Moriconi                maurizio.moriconi@mobilesoft.it




• Framework per videogiochi 2D Open Source
• Nato inizialmente in Python e portato su altri linguaggi
• Versione Objective-c sviluppata da Ricardo Quesada
 (assunto da Zynga dal 2011)
• Basato su OpenGL ES 1.1 e 2.0
• Con più di 3500 giochi presenti nel solo Apple Store
Cocos2d ports
Maurizio Moriconi   maurizio.moriconi@mobilesoft.it
Esempi di successo
                    Maurizio Moriconi    maurizio.moriconi@mobilesoft.it


• Alice (iPad)
• The Elements (iPad)
• Tiny Tower
• StickWars
• Farmville
• Zombie Farm
• Foldify
Perché usare Cocos2d
                             Maurizio Moriconi                              maurizio.moriconi@mobilesoft.it




 • E’ gratis (no royalties)
 • E’ Open Source
 • 2D (ma usa openGL ES!)
 • E’ scritto in objective-C * ma meno tecnico
 • Si programma!
 • Ci fa concentrare sul gioco e sul design
* o altri linguaggi di programmazione (Java, C++, C#, JavaScript, Python)
Materiale e comunità
                 Maurizio Moriconi                maurizio.moriconi@mobilesoft.it




• Documentazione: http://www.cocos2d-iphone.org/wiki/doku.php/
• Forum: http://www.cocos2d-iphone.org/forum/
• API reference / Xcode Documentation integration
• Tanti esempi e tool esterni (CososBuilder ed altro)
• Varie pubblicazioni
Cocos2d Features
                         Maurizio Moriconi                               maurizio.moriconi@mobilesoft.it



•   Scene management (workflow)
•   Transitions between scenes
•   Sprites and Sprite Sheets
•   Effects: Lens, Ripple, Waves, Liquid, Twirl...
•   Actions (behaviors): Move, Rotate, Scale, Jump...
•   Basic menus and buttons
•   Integrated physics engine: Box2d / Chipmunk
•   Particle systems
•   Text rendering support
•   Tile Map support: Orthogonal /Isometric / Hexagonal Map
•   Parallax scrolling support
•   Sound support
•   Touch/Accelerometer (iOS)  
•   Fast Textures: Supports PVRTC textures, 8-bit textures, 16-bit textures and 32-bit textures
•   Ribbons
•   Shaders (versione 2.0)
Download ed installazione
           Maurizio Moriconi           maurizio.moriconi@mobilesoft.it




  http://www.cocos2d-iphone.org/download

https://github.com/cocos2d/cocos2d-iphone/tags


Ci sono template per Xcode!!

Stable Version: 2.0 / 1.0.1
Unstable Version: 2.1-rc / 1.1
Hello World
Maurizio Moriconi   maurizio.moriconi@mobilesoft.it
Hello World
Maurizio Moriconi             maurizio.moriconi@mobilesoft.it




                     Application Delegate

                      HelloWorld Scene

                         Intro Scene

                    Icone e SplashScreen

                        Librerie cocos2d
Hello World
            Maurizio Moriconi                    maurizio.moriconi@mobilesoft.it




                                                           Intro Scene


  Splashscreen




Hello World Scene               Game Center già configurato!!!
Maurizio Moriconi   maurizio.moriconi@mobilesoft.it




Show me the code...
Basic Concepts
                    Maurizio Moriconi       maurizio.moriconi@mobilesoft.it




Director
inizializza OpenGL ES e gestisce le scene

Scenes
pensiamole come una schermata di gioco

Layers
compongono le scene (vedi Photoshop)

Spites
vi dice qualcosa questa parola?? 8-)

Nodes
sono l’oggetto base di cocos2d
Scenes
              Maurizio Moriconi           maurizio.moriconi@mobilesoft.it



CCScene




                                          Fonte immagine cocos2d Wiki




• Sono composte da uno o più layer
• E’ una sottoclasse di CCNode
• E’ possibile avere delle transizioni CCTransitionScene
Layers
              Maurizio Moriconi                                 maurizio.moriconi@mobilesoft.it



CCLayer


                                  Fonte immagine cocos2d Wiki




• Gestisce gli eventi di touches e l’accellerometro
• E’ una sottoclasse di CCNode
• Può essere semitrasparente
• Contengono gli Sprites
Nodes
              Maurizio Moriconi                     maurizio.moriconi@mobilesoft.it




CCNode
• E’ la classe base da cui derivano le altre
• Tutto quello che è disegnato è un NODO!
• Possono contenere altri nodi
• Eseguono Actions
• Alcune proprietà                Y#


  • Position
  • Z order                               Sperando che vi ricordate
                                            cosa sia un sistema di

  • Tag                                    riferimento cartesiano


  • ...
                                   0,0#
                                                                         X#
Sprite
Maurizio Moriconi   maurizio.moriconi@mobilesoft.it
Sprites
                         Maurizio Moriconi             maurizio.moriconi@mobilesoft.it




Creazione
CCSprite* ryu = [CCSprite spriteWithFile:@"0.png"];


Posizionamento                       (di base è 0,0)

ryu.position =     ccp( x , y );


Aggiunta al Layer
                                                       Sprite posizionato a 0,0
[self addChild:ryu z:1 tag:123];



Anchor Point
     di base è 0.5,0.5
Actions
              Maurizio Moriconi             maurizio.moriconi@mobilesoft.it




CCActions
• Sono gli “ordini” che possiamo dare ai nodi!
• Possono essere: istantanee o periodiche
• Si auto-rimuovono una volta terminate
• Si definiscono con un tempo, i movimenti o altre
azioni sono interpolate e gestiti in automatico!!!


   es. spostati fino a x,y in 2 secondi!!!
Actions
              Maurizio Moriconi                    maurizio.moriconi@mobilesoft.it




   Basic       Move, Scale, Rotate, Bezier, Hide, Fade,Tint..

Composition      Sequence, Repeat, Spawn, RepeatForever..

   Ease              Ease, EaseExponential, EaseBounce..

  Effects          Lens, Liquid, Ripple, Shaky,Twirl,Waves..

  Special                         CallFunc, Follow..
Actions in action!
                  Maurizio Moriconi                         maurizio.moriconi@mobilesoft.it




       CCMoveTo *moveToAction = [CCMoveTo actionWithDuration:duration
                                                    position:newPosition];
       [ryu runAction:moveToAction];




CCScaleTo *scaleToAction = [CCScaleTo actionWithDuration:duration scale:scale];

CCRotateBy *rotateByAction = [CCRotateBy actionWithDuration:duration angle:angle];

CCSequence *sequence = [CCSequence actions:scaleToAction, rotateByAction, nil];

[ryu runAction:sequence];
Maurizio Moriconi   maurizio.moriconi@mobilesoft.it




Show me the code...
Sprite Sheets
Maurizio Moriconi                                maurizio.moriconi@mobilesoft.it




    Super Mario All-Stars: Super Mario Bros. 2
Texture Atlas
                      Maurizio Moriconi                            maurizio.moriconi@mobilesoft.it



               Texture con dimensioni di potenze di 2
                      2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048


   Wasted memory

        Perchè usarle ???
1. Chiamate ad OpenGLES ridotte
2. Utilizzo della memoria ottimizzato
3. Si possono gestire sprite con diverse dimensioni
4. Ci sono tool ottimi come Texture Packer
   (o Zwoptex) per crearle
                                                                 Texture 256x256
Texture Packer
       Maurizio Moriconi        maurizio.moriconi@mobilesoft.it




http://www.codeandweb.com/texturepacker
Gestire i controlli
                  Maurizio Moriconi                        maurizio.moriconi@mobilesoft.it


    - (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

    - (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

    - (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

    - (void)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;



• Ogni layer può ricevere comandi
                           (touch, mouse, tastiera)


• Facile da implementare!!!
• Implementazioni di Joypad OpenSource
Maurizio Moriconi   maurizio.moriconi@mobilesoft.it




Show me the code...
Physics engine
           Maurizio Moriconi           maurizio.moriconi@mobilesoft.it



  Con un motore fisico si delega la gestione delle
animazioni mappando Sprite con oggetti della fisica



Scelta tra 2 motori Fisici:
  • Box2D
  • ChipMunk
Box2d
             Maurizio Moriconi           maurizio.moriconi@mobilesoft.it



Caratteristiche:
 • scritto in C++
 • sviluppato da Erin Catto (Blizzard Entertainment)
 • openSource e multipiattaforma




                                 http://box2d.org
ChipMunk
               Maurizio Moriconi              maurizio.moriconi@mobilesoft.it



Caratteristiche:
 • scritto in C
 • sviluppato da Scott Lembcke (Howling Moon Software)
 • openSource e multipiattaforma
 • esistono versioni a pagamento




         http://chipmunk-physics.net
Cocos2d Templates
Maurizio Moriconi   maurizio.moriconi@mobilesoft.it
Sound Engine
              Maurizio Moriconi           maurizio.moriconi@mobilesoft.it




CocosDenshion
• Libreria audio iOS e Mac OS X
• Si può usare al di fuori di Cocos2d!!
• Alto e basso livello
• Supporta molti formati tra cui:
  • Caf
  • Aiff
  • Wav
  • Mp3
SimpleAudioEngine
                  Maurizio Moriconi                         maurizio.moriconi@mobilesoft.it




Play a sound
        [[SimpleAudioEngine sharedEngine] playEffect:@"mysound.wav"];



Play a music
   [[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"mario-music.mp3"];




Preload a sound
     [[SimpleAudioEngine sharedEngine] preloadEffect:@"mysound.wav"];



Preload a music
  [[SimpleAudioEngine sharedEngine] preloadBackgroundMusic:@"mario-music.mp3"];
CDAudioManager e CDSoundEngine
                    Maurizio Moriconi                   maurizio.moriconi@mobilesoft.it



CDAudioManager
• E’ usata anche da SimpleAudioEngine
• Permette di gestire più tracce di lunga durata
• Utile se serve suonare più suoni contemporaneamente


CDSoundEngine
• Sound Engine basato su OpenAL
• Gestisce fino a 32 suoni contemporanei
• Permette effetti come:
   • Pitch
   • Pan
   • Gain
Alcune features
           Maurizio Moriconi    maurizio.moriconi@mobilesoft.it




Il tempo è tiranno...




Vediamo alcune features al volo...
Menu
         Maurizio Moriconi   maurizio.moriconi@mobilesoft.it



CCMenu
composto da Menu Item
Particle system
                  Maurizio Moriconi                     maurizio.moriconi@mobilesoft.it



Sistema particellare, alcuni effetti:
  • fuoco
  • pioggia
  • neve
  • galassia
  • molti altri....

CCParticleFire *fire = [[CCParticleFire alloc] initWithTotalParticles:100];
[fire setLife:20];
[fire setAutoRemoveOnFinish:YES];
fire.position = ccp(size.width/4,size.height/2);
[self addChild:fire];
Tile maps
                     Maurizio Moriconi         maurizio.moriconi@mobilesoft.it




Basate sul concetto di Tile
• riuso della grafica
• possibilità di assegnare status a dei tile
• editor esterni per creare “mondi”
                                               Ortogonali




                                               Isometriche
Altre ancora...
         Maurizio Moriconi         maurizio.moriconi@mobilesoft.it




Parallax Scrolling           BitMapped Font



    Ribbons                  Cocos Builder



    Shaders                  Game Center
Cocos2d
     Maurizio Moriconi       maurizio.moriconi@mobilesoft.it




Cocos2d è uno dei tanti mezzi...

   il resto ce lo mettete voi...
Programmare è un arte!
                Maurizio Moriconi          maurizio.moriconi@mobilesoft.it

Our discussion indicates that computer
programming is by now both a science
and an art, and that the two aspects
nicely complement each other.
[...] We have seen that computer
programming is an art, because it
applies accumulated knowledge to the
world, because it requires skill and
ingenuity, and especially because it
produces objects of beauty. A
programmer who subconsciously views
himself as an artist will enjoy what he
does and will do it better. Therefore we
can be glad that people who lecture at
computer conferences speak about
the state of the Art.

            Donald Knuth
“The Art of Computer Programming”

Weitere ähnliche Inhalte

Ähnlich wie Cocos2d: creare videogiochi con facilità!

Kinect and brave new applications
Kinect and brave new applicationsKinect and brave new applications
Kinect and brave new applicationsIgor Antonacci
 
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013Alberto Sarullo
 
Gam01 introduzione a kinect
Gam01   introduzione a kinectGam01   introduzione a kinect
Gam01 introduzione a kinectDotNetCampus
 
2012.05.24 sviluppare videogames...
2012.05.24   sviluppare videogames...2012.05.24   sviluppare videogames...
2012.05.24 sviluppare videogames...Marco Parenzan
 
DotNetCampus 2014 - Introduzione a Kinect
DotNetCampus 2014 - Introduzione a KinectDotNetCampus 2014 - Introduzione a Kinect
DotNetCampus 2014 - Introduzione a KinectMassimo Bonanni
 
Gam03 facciamo volare il nosro drone
Gam03   facciamo volare il nosro droneGam03   facciamo volare il nosro drone
Gam03 facciamo volare il nosro droneDotNetCampus
 
Provarsi i vestiti con il kinect
Provarsi i vestiti con il kinectProvarsi i vestiti con il kinect
Provarsi i vestiti con il kinectEmanuele Bartolesi
 
Applicazioni Windows Store con Kinect 2
Applicazioni Windows Store con Kinect 2 Applicazioni Windows Store con Kinect 2
Applicazioni Windows Store con Kinect 2 Massimo Bonanni
 
IoT Saturday 2019 - Custom Vision on Edge device
IoT Saturday 2019 - Custom Vision on Edge deviceIoT Saturday 2019 - Custom Vision on Edge device
IoT Saturday 2019 - Custom Vision on Edge deviceAlessio Biasiutti
 
Custom vision on edge device
Custom vision on edge deviceCustom vision on edge device
Custom vision on edge deviceAlessio Biasiutti
 
Meetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure FunctionsMeetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure Functionsdotnetcode
 
Sviluppo di un videogioco multuplayer a microservizi
Sviluppo di un videogioco multuplayer a microserviziSviluppo di un videogioco multuplayer a microservizi
Sviluppo di un videogioco multuplayer a microserviziGiovanniBertoncelli
 
Automation Night (Docker)
Automation Night (Docker)Automation Night (Docker)
Automation Night (Docker)Giuliano Latini
 
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOSMVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOSDan Ardelean
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModelDotNetMarche
 

Ähnlich wie Cocos2d: creare videogiochi con facilità! (20)

Kinect and brave new applications
Kinect and brave new applicationsKinect and brave new applications
Kinect and brave new applications
 
Spring20 Javaday
Spring20 JavadaySpring20 Javaday
Spring20 Javaday
 
Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013Lego vs Ruzzle @ codemotion 2013
Lego vs Ruzzle @ codemotion 2013
 
Gam01 introduzione a kinect
Gam01   introduzione a kinectGam01   introduzione a kinect
Gam01 introduzione a kinect
 
2012.05.24 sviluppare videogames...
2012.05.24   sviluppare videogames...2012.05.24   sviluppare videogames...
2012.05.24 sviluppare videogames...
 
DotNetCampus 2014 - Introduzione a Kinect
DotNetCampus 2014 - Introduzione a KinectDotNetCampus 2014 - Introduzione a Kinect
DotNetCampus 2014 - Introduzione a Kinect
 
Gam03 facciamo volare il nosro drone
Gam03   facciamo volare il nosro droneGam03   facciamo volare il nosro drone
Gam03 facciamo volare il nosro drone
 
Provarsi i vestiti con il kinect
Provarsi i vestiti con il kinectProvarsi i vestiti con il kinect
Provarsi i vestiti con il kinect
 
Applicazioni Windows Store con Kinect 2
Applicazioni Windows Store con Kinect 2 Applicazioni Windows Store con Kinect 2
Applicazioni Windows Store con Kinect 2
 
Mashlight
MashlightMashlight
Mashlight
 
m-v-vm @ UgiAlt.Net
m-v-vm @ UgiAlt.Netm-v-vm @ UgiAlt.Net
m-v-vm @ UgiAlt.Net
 
IoT Saturday 2019 - Custom Vision on Edge device
IoT Saturday 2019 - Custom Vision on Edge deviceIoT Saturday 2019 - Custom Vision on Edge device
IoT Saturday 2019 - Custom Vision on Edge device
 
Custom vision on edge device
Custom vision on edge deviceCustom vision on edge device
Custom vision on edge device
 
Meetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure FunctionsMeetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure Functions
 
m-v-vm @ Xe.Net
m-v-vm @ Xe.Netm-v-vm @ Xe.Net
m-v-vm @ Xe.Net
 
Kinect : Just for fun?
Kinect : Just for fun?Kinect : Just for fun?
Kinect : Just for fun?
 
Sviluppo di un videogioco multuplayer a microservizi
Sviluppo di un videogioco multuplayer a microserviziSviluppo di un videogioco multuplayer a microservizi
Sviluppo di un videogioco multuplayer a microservizi
 
Automation Night (Docker)
Automation Night (Docker)Automation Night (Docker)
Automation Night (Docker)
 
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOSMVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModel
 

Cocos2d: creare videogiochi con facilità!

  • 1. Maurizio Moriconi Cocos2d: creare videogiochi con facilità! maurizio.moriconi@mobilesoft.it - MobileSoft
  • 2. Chi sono Maurizio Moriconi maurizio.moriconi@mobilesoft.it • CTO presso Mobilesoft • Co-founder • Mobile Developer • Main Developer http://www.linkedin.com/in/bugman @bugman79 http://www.facebook.com/maurizio.moriconi
  • 3. Cocos2d Maurizio Moriconi maurizio.moriconi@mobilesoft.it • Framework per videogiochi 2D Open Source • Nato inizialmente in Python e portato su altri linguaggi • Versione Objective-c sviluppata da Ricardo Quesada (assunto da Zynga dal 2011) • Basato su OpenGL ES 1.1 e 2.0 • Con più di 3500 giochi presenti nel solo Apple Store
  • 4. Cocos2d ports Maurizio Moriconi maurizio.moriconi@mobilesoft.it
  • 5. Esempi di successo Maurizio Moriconi maurizio.moriconi@mobilesoft.it • Alice (iPad) • The Elements (iPad) • Tiny Tower • StickWars • Farmville • Zombie Farm • Foldify
  • 6. Perché usare Cocos2d Maurizio Moriconi maurizio.moriconi@mobilesoft.it • E’ gratis (no royalties) • E’ Open Source • 2D (ma usa openGL ES!) • E’ scritto in objective-C * ma meno tecnico • Si programma! • Ci fa concentrare sul gioco e sul design * o altri linguaggi di programmazione (Java, C++, C#, JavaScript, Python)
  • 7. Materiale e comunità Maurizio Moriconi maurizio.moriconi@mobilesoft.it • Documentazione: http://www.cocos2d-iphone.org/wiki/doku.php/ • Forum: http://www.cocos2d-iphone.org/forum/ • API reference / Xcode Documentation integration • Tanti esempi e tool esterni (CososBuilder ed altro) • Varie pubblicazioni
  • 8. Cocos2d Features Maurizio Moriconi maurizio.moriconi@mobilesoft.it • Scene management (workflow) • Transitions between scenes • Sprites and Sprite Sheets • Effects: Lens, Ripple, Waves, Liquid, Twirl... • Actions (behaviors): Move, Rotate, Scale, Jump... • Basic menus and buttons • Integrated physics engine: Box2d / Chipmunk • Particle systems • Text rendering support • Tile Map support: Orthogonal /Isometric / Hexagonal Map • Parallax scrolling support • Sound support • Touch/Accelerometer (iOS)   • Fast Textures: Supports PVRTC textures, 8-bit textures, 16-bit textures and 32-bit textures • Ribbons • Shaders (versione 2.0)
  • 9. Download ed installazione Maurizio Moriconi maurizio.moriconi@mobilesoft.it http://www.cocos2d-iphone.org/download https://github.com/cocos2d/cocos2d-iphone/tags Ci sono template per Xcode!! Stable Version: 2.0 / 1.0.1 Unstable Version: 2.1-rc / 1.1
  • 10. Hello World Maurizio Moriconi maurizio.moriconi@mobilesoft.it
  • 11. Hello World Maurizio Moriconi maurizio.moriconi@mobilesoft.it Application Delegate HelloWorld Scene Intro Scene Icone e SplashScreen Librerie cocos2d
  • 12. Hello World Maurizio Moriconi maurizio.moriconi@mobilesoft.it Intro Scene Splashscreen Hello World Scene Game Center già configurato!!!
  • 13. Maurizio Moriconi maurizio.moriconi@mobilesoft.it Show me the code...
  • 14. Basic Concepts Maurizio Moriconi maurizio.moriconi@mobilesoft.it Director inizializza OpenGL ES e gestisce le scene Scenes pensiamole come una schermata di gioco Layers compongono le scene (vedi Photoshop) Spites vi dice qualcosa questa parola?? 8-) Nodes sono l’oggetto base di cocos2d
  • 15. Scenes Maurizio Moriconi maurizio.moriconi@mobilesoft.it CCScene Fonte immagine cocos2d Wiki • Sono composte da uno o più layer • E’ una sottoclasse di CCNode • E’ possibile avere delle transizioni CCTransitionScene
  • 16. Layers Maurizio Moriconi maurizio.moriconi@mobilesoft.it CCLayer Fonte immagine cocos2d Wiki • Gestisce gli eventi di touches e l’accellerometro • E’ una sottoclasse di CCNode • Può essere semitrasparente • Contengono gli Sprites
  • 17. Nodes Maurizio Moriconi maurizio.moriconi@mobilesoft.it CCNode • E’ la classe base da cui derivano le altre • Tutto quello che è disegnato è un NODO! • Possono contenere altri nodi • Eseguono Actions • Alcune proprietà Y# • Position • Z order Sperando che vi ricordate cosa sia un sistema di • Tag riferimento cartesiano • ... 0,0# X#
  • 18. Sprite Maurizio Moriconi maurizio.moriconi@mobilesoft.it
  • 19. Sprites Maurizio Moriconi maurizio.moriconi@mobilesoft.it Creazione CCSprite* ryu = [CCSprite spriteWithFile:@"0.png"]; Posizionamento (di base è 0,0) ryu.position = ccp( x , y ); Aggiunta al Layer Sprite posizionato a 0,0 [self addChild:ryu z:1 tag:123]; Anchor Point di base è 0.5,0.5
  • 20. Actions Maurizio Moriconi maurizio.moriconi@mobilesoft.it CCActions • Sono gli “ordini” che possiamo dare ai nodi! • Possono essere: istantanee o periodiche • Si auto-rimuovono una volta terminate • Si definiscono con un tempo, i movimenti o altre azioni sono interpolate e gestiti in automatico!!! es. spostati fino a x,y in 2 secondi!!!
  • 21. Actions Maurizio Moriconi maurizio.moriconi@mobilesoft.it Basic Move, Scale, Rotate, Bezier, Hide, Fade,Tint.. Composition Sequence, Repeat, Spawn, RepeatForever.. Ease Ease, EaseExponential, EaseBounce.. Effects Lens, Liquid, Ripple, Shaky,Twirl,Waves.. Special CallFunc, Follow..
  • 22. Actions in action! Maurizio Moriconi maurizio.moriconi@mobilesoft.it CCMoveTo *moveToAction = [CCMoveTo actionWithDuration:duration position:newPosition]; [ryu runAction:moveToAction]; CCScaleTo *scaleToAction = [CCScaleTo actionWithDuration:duration scale:scale]; CCRotateBy *rotateByAction = [CCRotateBy actionWithDuration:duration angle:angle]; CCSequence *sequence = [CCSequence actions:scaleToAction, rotateByAction, nil]; [ryu runAction:sequence];
  • 23. Maurizio Moriconi maurizio.moriconi@mobilesoft.it Show me the code...
  • 24. Sprite Sheets Maurizio Moriconi maurizio.moriconi@mobilesoft.it Super Mario All-Stars: Super Mario Bros. 2
  • 25. Texture Atlas Maurizio Moriconi maurizio.moriconi@mobilesoft.it Texture con dimensioni di potenze di 2 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 Wasted memory Perchè usarle ??? 1. Chiamate ad OpenGLES ridotte 2. Utilizzo della memoria ottimizzato 3. Si possono gestire sprite con diverse dimensioni 4. Ci sono tool ottimi come Texture Packer (o Zwoptex) per crearle Texture 256x256
  • 26. Texture Packer Maurizio Moriconi maurizio.moriconi@mobilesoft.it http://www.codeandweb.com/texturepacker
  • 27. Gestire i controlli Maurizio Moriconi maurizio.moriconi@mobilesoft.it - (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; - (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event; - (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; - (void)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event; • Ogni layer può ricevere comandi (touch, mouse, tastiera) • Facile da implementare!!! • Implementazioni di Joypad OpenSource
  • 28. Maurizio Moriconi maurizio.moriconi@mobilesoft.it Show me the code...
  • 29. Physics engine Maurizio Moriconi maurizio.moriconi@mobilesoft.it Con un motore fisico si delega la gestione delle animazioni mappando Sprite con oggetti della fisica Scelta tra 2 motori Fisici: • Box2D • ChipMunk
  • 30. Box2d Maurizio Moriconi maurizio.moriconi@mobilesoft.it Caratteristiche: • scritto in C++ • sviluppato da Erin Catto (Blizzard Entertainment) • openSource e multipiattaforma http://box2d.org
  • 31. ChipMunk Maurizio Moriconi maurizio.moriconi@mobilesoft.it Caratteristiche: • scritto in C • sviluppato da Scott Lembcke (Howling Moon Software) • openSource e multipiattaforma • esistono versioni a pagamento http://chipmunk-physics.net
  • 32. Cocos2d Templates Maurizio Moriconi maurizio.moriconi@mobilesoft.it
  • 33. Sound Engine Maurizio Moriconi maurizio.moriconi@mobilesoft.it CocosDenshion • Libreria audio iOS e Mac OS X • Si può usare al di fuori di Cocos2d!! • Alto e basso livello • Supporta molti formati tra cui: • Caf • Aiff • Wav • Mp3
  • 34. SimpleAudioEngine Maurizio Moriconi maurizio.moriconi@mobilesoft.it Play a sound [[SimpleAudioEngine sharedEngine] playEffect:@"mysound.wav"]; Play a music [[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"mario-music.mp3"]; Preload a sound [[SimpleAudioEngine sharedEngine] preloadEffect:@"mysound.wav"]; Preload a music [[SimpleAudioEngine sharedEngine] preloadBackgroundMusic:@"mario-music.mp3"];
  • 35. CDAudioManager e CDSoundEngine Maurizio Moriconi maurizio.moriconi@mobilesoft.it CDAudioManager • E’ usata anche da SimpleAudioEngine • Permette di gestire più tracce di lunga durata • Utile se serve suonare più suoni contemporaneamente CDSoundEngine • Sound Engine basato su OpenAL • Gestisce fino a 32 suoni contemporanei • Permette effetti come: • Pitch • Pan • Gain
  • 36. Alcune features Maurizio Moriconi maurizio.moriconi@mobilesoft.it Il tempo è tiranno... Vediamo alcune features al volo...
  • 37. Menu Maurizio Moriconi maurizio.moriconi@mobilesoft.it CCMenu composto da Menu Item
  • 38. Particle system Maurizio Moriconi maurizio.moriconi@mobilesoft.it Sistema particellare, alcuni effetti: • fuoco • pioggia • neve • galassia • molti altri.... CCParticleFire *fire = [[CCParticleFire alloc] initWithTotalParticles:100]; [fire setLife:20]; [fire setAutoRemoveOnFinish:YES]; fire.position = ccp(size.width/4,size.height/2); [self addChild:fire];
  • 39. Tile maps Maurizio Moriconi maurizio.moriconi@mobilesoft.it Basate sul concetto di Tile • riuso della grafica • possibilità di assegnare status a dei tile • editor esterni per creare “mondi” Ortogonali Isometriche
  • 40. Altre ancora... Maurizio Moriconi maurizio.moriconi@mobilesoft.it Parallax Scrolling BitMapped Font Ribbons Cocos Builder Shaders Game Center
  • 41. Cocos2d Maurizio Moriconi maurizio.moriconi@mobilesoft.it Cocos2d è uno dei tanti mezzi... il resto ce lo mettete voi...
  • 42. Programmare è un arte! Maurizio Moriconi maurizio.moriconi@mobilesoft.it Our discussion indicates that computer programming is by now both a science and an art, and that the two aspects nicely complement each other. [...] We have seen that computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better. Therefore we can be glad that people who lecture at computer conferences speak about the state of the Art. Donald Knuth “The Art of Computer Programming”