cocos2d: creare videogiochi con facilità!

42
[email protected] - MobileSoft Maurizio Moriconi Cocos2d: creare videogiochi con facilità!

Upload: maurizio-moriconi

Post on 22-Jun-2015

713 views

Category:

Technology


1 download

DESCRIPTION

Cocos2d è un framework opensource per lo sviluppo di videogiochi 2d, integra al suo interno: - animazioni, transizioni, gestione menù - gestione di sprite, textureAtlas, Tile - due motori fisici (Box2D and Chipmunk) - un sound engine - un sistema particellare Noto principalmente su iPhone (con 2500+ giochi sullo Store) è ormai presente su linguaggi e piattaforme differenti (C++, C#, java e Javascript, HTML5). Il talk presenterà tutte le principali componenti presenti su cocos2d condendo il tutto con qualche esempio pratico su piattaforma iOS.

TRANSCRIPT

Page 1: Cocos2d: creare videogiochi con facilità!

[email protected] - MobileSoft

Maurizio Moriconi

Cocos2d: creare videogiochi con facilità!

Page 2: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

Chi sono

• CTO presso Mobilesoft• Mobile Developer

• Co-founder• Main Developer

http://www.facebook.com/maurizio.moriconi

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

@bugman79

Page 3: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

Cocos2d

• 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

Page 5: Cocos2d: creare videogiochi con facilità!

• Alice (iPad)• The Elements (iPad)• Tiny Tower• StickWars• Farmville• Zombie Farm• Foldify

[email protected] Moriconi

Esempi di successo

Page 6: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

Perché usare Cocos2d

• 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)

Page 7: Cocos2d: creare videogiochi con facilità!

• 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

[email protected] Moriconi

Materiale e comunità

Page 8: Cocos2d: creare videogiochi con facilità!

• 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)

[email protected] Moriconi

Cocos2d Features

Page 9: Cocos2d: creare videogiochi con facilità!

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

[email protected] Moriconi

Download ed installazione

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

Ci sono template per Xcode!!

Stable Version: 2.0 / 1.0.1Unstable Version: 2.1-rc / 1.1

Page 11: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

Hello World

Librerie cocos2d

Icone e SplashScreen

Application Delegate

Intro Scene

HelloWorld Scene

Page 12: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

Hello World

Splashscreen

Intro Scene

Hello World Scene Game Center già configurato!!!

Page 14: Cocos2d: creare videogiochi con facilità!

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-)

Nodessono l’oggetto base di cocos2d

[email protected] Moriconi

Basic Concepts

Page 15: Cocos2d: creare videogiochi con facilità!

CCScene

[email protected] Moriconi

Scenes

Fonte immagine cocos2d Wiki

• Sono composte da uno o più layer • E’ una sottoclasse di CCNode• E’ possibile avere delle transizioni CCTransitionScene

Page 16: Cocos2d: creare videogiochi con facilità!

CCLayer

[email protected] Moriconi

Layers

Fonte immagine cocos2d Wiki

• Gestisce gli eventi di touches e l’accellerometro• E’ una sottoclasse di CCNode• Può essere semitrasparente• Contengono gli Sprites

Page 17: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

Nodes

CCNode

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

• Position• Z order• Tag• ...

Sperando che vi ricordate cosa sia un sistema di riferimento cartesiano

0,0# X#

Y#

Page 19: Cocos2d: creare videogiochi con facilità!

Creazione

[email protected] Moriconi

Sprites

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

ryu.position = ccp( x , y );

Posizionamento (di base è 0,0)

Anchor Pointdi base è 0.5,0.5

[self addChild:ryu z:1 tag:123];

Aggiunta al LayerSprite posizionato a 0,0

Page 20: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

Actions

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!!!

Page 21: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

Actions

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..

Page 22: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

Actions in action!

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

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

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

[ryu runAction:sequence];

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

Page 24: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

Sprite Sheets

Super Mario All-Stars: Super Mario Bros. 2

Page 25: Cocos2d: creare videogiochi con facilità!

Texture con dimensioni di potenze di 2

[email protected] Moriconi

Texture Atlas

2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048

Texture 256x256

Wasted memory

1. Chiamate ad OpenGLES ridotte2. Utilizzo della memoria ottimizzato3. Si possono gestire sprite con diverse dimensioni4. Ci sono tool ottimi come Texture Packer (o Zwoptex) per crearle

Perchè usarle ???

Page 27: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

Gestire i controlli

- (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

Page 29: Cocos2d: creare videogiochi con facilità!

Scelta tra 2 motori Fisici:• Box2D• ChipMunk

[email protected] Moriconi

Physics engine

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

Page 30: Cocos2d: creare videogiochi con facilità!

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

[email protected] Moriconi

Box2d

http://box2d.org

Page 31: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

ChipMunk

Caratteristiche:• scritto in C • sviluppato da Scott Lembcke (Howling Moon Software)

• openSource e multipiattaforma• esistono versioni a pagamento

http://chipmunk-physics.net

Page 33: Cocos2d: creare videogiochi con facilità!

CocosDenshion

[email protected] Moriconi

Sound Engine

• 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

Page 34: Cocos2d: creare videogiochi con facilità!

Play a sound

[email protected] Moriconi

SimpleAudioEngine

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

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

Play a music

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

Preload a sound

Preload a music[[SimpleAudioEngine sharedEngine] preloadBackgroundMusic:@"mario-music.mp3"];

Page 35: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

CDAudioManager e CDSoundEngine

CDSoundEngine

• E’ usata anche da SimpleAudioEngine

• Permette di gestire più tracce di lunga durata

• Utile se serve suonare più suoni contemporaneamente

• Sound Engine basato su OpenAL

• Gestisce fino a 32 suoni contemporanei

• Permette effetti come:• Pitch• Pan• Gain

Page 36: Cocos2d: creare videogiochi con facilità!

Il tempo è tiranno...

[email protected] Moriconi

Alcune features

Vediamo alcune features al volo...

Page 37: Cocos2d: creare videogiochi con facilità!

CCMenu

composto da Menu Item

[email protected] Moriconi

Menu

Page 38: Cocos2d: creare videogiochi con facilità!

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

[email protected] Moriconi

Particle system

CCParticleFire *fire = [[CCParticleFire alloc] initWithTotalParticles:100];[fire setLife:20];[fire setAutoRemoveOnFinish:YES];fire.position = ccp(size.width/4,size.height/2);[self addChild:fire];

Page 39: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

Tile maps

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

Ortogonali

Isometriche

Page 40: Cocos2d: creare videogiochi con facilità!

[email protected] Moriconi

Altre ancora...

Parallax Scrolling

Ribbons

Shaders

BitMapped Font

Cocos Builder

Game Center

Page 41: Cocos2d: creare videogiochi con facilità!

Cocos2d è uno dei tanti mezzi...

il resto ce lo mettete voi...

[email protected] Moriconi

Cocos2d

Page 42: Cocos2d: creare videogiochi con facilità!

Donald Knuth “The Art of Computer Programming”

[email protected] Moriconi

Programmare è un arte!

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.