"pubblica il tuo gioco sugli app store in pochi giorni"

52
<ugo landini> - <[email protected]> – <JUG ROMA> Pubblica il tuo gioco sugli App Store in pochi giorni ovvero “Guida pragmatica allo stato dell’arte del Mobile Game Programming” Saturday, March 5, 2011

Upload: ugo-landini

Post on 06-Dec-2014

4.362 views

Category:

Technology


2 download

DESCRIPTION

Intervento Codemotion del 5 Marzo 2001

TRANSCRIPT

Page 1: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Pubblica il tuo gioco sugli App Store in pochi giorni

ovvero “Guida pragmatica allo stato dell’arte del Mobile Game Programming”

Saturday, March 5, 2011

Page 2: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Per chi è questo talk

• Sei un bravo sviluppatore, e vuoi cimentarti nella programmazione di videogiochi 2D per Mobile• Non hai significative esperienze di programmazione

videoludica• Hai una buona idea ma non hai molto tempo a

disposizione per imparare nuove tecnologie• Vuoi divertirti, ma possibilmente vuoi anche

guadagnarci dei soldi :)

Saturday, March 5, 2011

Page 3: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Target

Saturday, March 5, 2011

Page 4: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Target

Saturday, March 5, 2011

Page 5: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Tool

• Tool nativi (SDK) per ogni piattaforma: gratuiti e con subscription per la pubblicazione sullo store• Mercato fluido ed in espansione• Nuovi spazi per tool che• abbassino il Time To Market• siano Cross Platform: iPhone in primis, Android e

poi a seguire tutti gli altri (eventualmente)

Saturday, March 5, 2011

Page 6: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

iPhone

• iOS (iPod/iPhone/iPad)• C, C++ o Objective C (OpenGL ES 1.1)• Framework di basso livello• Cocos2d, Cocos2dx, OOLong (3D)

• Framework di alto livello• Game Salad, Corona

Saturday, March 5, 2011

Page 7: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Android

• Android• C++, Java (OpenGL ES 1.1)• Framework di basso livello• Cocos2dx, Cocos2d-android, LibGDX,

AndEngine• Framework di alto livello• Corona

Saturday, March 5, 2011

Page 8: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Hardware

• L’Hardware è simile• OpenGL ES è il fattore comune

• Android è più frammentato• Molte versioni dell’OS, capacità molto diverse dei

dispositivi• Corona SDK ha recentemente annunciato di

supportare solo dalla 2.1 in poi

Saturday, March 5, 2011

Page 9: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Scelta del target

iOS ha la maggior parte del mercato applicativo Il rapporto con Android è circa 50:110.000.000 vs 200.000 per smartphone4.000:1 su Tablet (dati 25/02/2011)60.000 vs 16

Saturday, March 5, 2011

Page 10: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Scelta del target

• Android è un mercato emergente ma meno remunerativo• ma anche con meno concorrenza, e con la % più alta di applicazioni free

• Se lo sforzo del porting è eccessivo, in questo momento potrebbe convenire realizzare due giochi per iPhone che lo stesso gioco su entrambe le piattaforme• Usare tool cross platform se possibile

Saturday, March 5, 2011

Page 11: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Scelta del target

Saturday, March 5, 2011

Page 12: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Scelta del tipo di gioco

Saturday, March 5, 2011

Page 13: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Quale tipo di gioco?

• Molti giochi sono solo per specialisti di settore e hanno degli engine complicati• I Giochi per Mobile Indie Developer alle prime armi

sono altri:• Puzzle, Action• Physics• Platform, RPG

Saturday, March 5, 2011

Page 14: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Un gioco di successo: parte 1

• Un gioco di successo su Mobile oggi:• Ha una grafica colorata e stilosa, oppure molto

semplice e particolare• Un Gameplay specifico per il device (Giroscopio,

Accelerometro, Touch, ecc.)• Non è troppo impegnativo: Casual Gaming e non

Hardcore Gaming

Saturday, March 5, 2011

Page 15: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Un gioco di successo: parte 2

• Permette di giocare con gli altri sulla rete o perlomeno di condividere risultati, classifiche e simili (OpenFeint, GameCenter)• Ha dei livelli bilanciati e che vanno sbloccati man

mano: quasi banali all’inizio, ma intriganti• Deve essere immediatamente giocabile: test dei 30

secondi

Saturday, March 5, 2011

Page 16: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Scelta del fw/linguaggio

Saturday, March 5, 2011

Page 17: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Programmare nativamente

• Utilizzare il linguaggio nativo, senza aiuti e programmando direttamente in OpenGL è una strada lunga e perigliosa• Ovviamente i professionisti non fanno altro che

utilizzare - magari dopo un porting - le loro librerie, tool ed engine preesistenti: una strada non percorribile, non siamo mica i fratelli Carmack

Saturday, March 5, 2011

Page 18: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Corona e Cocos2D

• Corona• Lua, portabile e semplice, physics engine integrato,

discretamente potente, time to market, qualche limite tecnico e mancanza, licenza commerciale

• Cocos2d per iPhone• Objective C, libri e tutorial, standard de facto, open

source, estremamente potente, 2 Physics Engine, versione 0.99.x (quasi 1.0)

Saturday, March 5, 2011

Page 19: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Corona e Cocos2D

• La soluzione migliore - partendo da zero oggi - è usare Corona SDK• se e solo se le limitazioni di Corona permettono di

realizzare il gioco• In caso di gioco non realizzabile con Corona o di

gioco simile ad uno Starter Kit preesistente, Cocos2D

• Più tempo, non portabile su Android, ma portabile su Mac App Store

Saturday, March 5, 2011

Page 20: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Corona e Cocos2D: un confrontoCorona Cocos2D iPhone

Serve un Mac

Android

Mac App Store

Apprendimento

Performance

Velocità Sviluppo

Motore di Fisica

Comunità

Tool 3rd party

Maturità

Costo

Si (Beta per Windows) SiSi NoNo Si

Semplicissimo ImpegnativoDiscrete/Buone Eccellenti

Eccellente Discreta/BuonaBox3D Box3D/ChipmunkBuona EccellenteBuoni Eccellenti

Discreta OttimaFee Annuo Open Source

Saturday, March 5, 2011

Page 21: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Cocos2D per iPhone

Saturday, March 5, 2011

Page 22: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Cocos2D: alcune features

• Sprite ed Actions• Scrolling (anche con parallasse)• Scene e Transizioni• Effetti fisica con Box2D (C++) o ChipMunk (C)• (ma ci sono dei wrapper puri Objective C, SpaceManager)

• Tile Maps (TMX)• Particle System

Saturday, March 5, 2011

Page 23: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Cocos2D

• Objective C (ma si può usare Lua tramite Wax!)• C++ se si usa Box2D, C per Chipmunk gestione

memoria con release/retain (la Garbage Collection su iPhone non c’è ancora)• linguaggio in parte hi-level ed in parte low-level• talvolta si deve ricorrere a chiamate OpenGL

Saturday, March 5, 2011

Page 24: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Cocos 2D iPhone

Saturday, March 5, 2011

Page 25: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Cocos 2D iPhone

Saturday, March 5, 2011

Page 26: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Cocos 2D Demo

Saturday, March 5, 2011

Page 27: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Scelta dei tool per Cocos2D

Saturday, March 5, 2011

Page 28: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Come e da dove partire

• Giochi già fatti da cui partire (a pagamento)• Sapus Tongue, iPhone Game Kit, Starter kit vari

• Uno fra PhotoShop/PixelMator/Gimp/ecc.• Tiled• ParticleDesigner• ZwopTex• Audacity

Saturday, March 5, 2011

Page 29: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Corona SDK

Saturday, March 5, 2011

Page 30: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Corona

• Corona ha un approccio innovativo• LUA è un linguaggio di scripting molto utilizzato nel

gaming (WoW, ma anche Adobe Lightroom). • LUA è un interprete molto veloce, scritto in C, nato per

essere embedded, open source• Corona “semplicemente” implementa dei binding LUA

per un motore di fisica, Box2D, ed alcune funzioni OpenGL

Saturday, March 5, 2011

Page 31: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Vantaggi di Corona• Un semplice reload nel Simulatore per far ripartire il

gioco• Ciclo di sviluppo/test/deploy molto rapido• Semplice da imparare• Linguaggio funzionale, estremamente espressivo e

potente (closures, ecc.)• Linguaggio molto ben documentato e disponibile su

tutte le piattaforme

Saturday, March 5, 2011

Page 32: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Svantaggi di Corona

• Se mancano dei binding per funzionalità di base non implementabili in Lua, si fa complicata• Ci sono ancora dei bug• Esempio: le funzionalità di Tiles (TMX) sono

implementate da una libreria esterna (Lime, in beta)• su device ci sono problemi di performance per via

della mancanza di culling nativo

Saturday, March 5, 2011

Page 33: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Svantaggi di Corona

• Ci sono dei giochi non realizzabili con Corona• da capire il prima possibile per passare eventualmente a Cocos2D

• La maturità dei tool a corredo non è (ancora) paragonabile a Cocos2D• C’è un fee annuale da pagare

Saturday, March 5, 2011

Page 34: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Corona e Lua

Saturday, March 5, 2011

Page 35: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Corona e Lua

Saturday, March 5, 2011

Page 36: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Uso di Tiled Maps con Lime

• Lime è una libreria LUA per gestire mappe costruite con Tiled (TMX files)• Lime non solo carica e visualizza le mappe, ma può

gestire le proprietà dei Tiles mappandole direttamente su oggetti del motore di Physics• I livelli e come gli oggetti agiscono nel mondo fisico

sono dunque creati visualmente con Tiles, senza scrivere *una* riga di codice

Saturday, March 5, 2011

Page 37: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Uso di Tiled Maps con Lime

Saturday, March 5, 2011

Page 38: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Corona e Lua

Saturday, March 5, 2011

Page 39: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Corona Demo

Saturday, March 5, 2011

Page 40: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Scelta dei tool per Corona

Saturday, March 5, 2011

Page 41: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Come e da dove partire

• Tiled• Lime• attenzione che al 05/03 ha ancora problemi di performance sui device!

• Particle Candy • purtroppo Corona non è compatibile con Particle Designer

• ZwopTex• Uno fra PhotoShop/PixelMator/Gimp/ecc.

Saturday, March 5, 2011

Page 42: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Mi serve un grafico???e un musicista?

Saturday, March 5, 2011

Page 43: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

La Grafica, un tasto delicato

• Se si ha accesso ad un grafico, utilizzarlo :)• Sforzarsi in ogni caso di costruire la propria grafica• Si può proseguire nella programmazione del gioco con una grafica non

professionale, anche per poi trasmettere meglio al grafico stesso cosa si vuole ottenere

• L’icona è fondamentale: è l’elemento più visibile• L’icona da sola vale probabilmente il 50% delle vendite iniziali• Non avrete una seconda possibilità di fare una prima impressione!

Saturday, March 5, 2011

Page 44: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

La Grafica, un tasto delicato

• Realizzare un gioco che non ha bisogno di una grafica complicata e realizzarsela da soli• The Impossible Game, o i vari basati su Stick

Figures• Giochi basati su mappe con tiles

• Possibile reperire risorse free online

Saturday, March 5, 2011

Page 45: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Risorse free online

• Risorse free: • http://reinerstileset.4players.de/• http://tango.freedesktop.org• http://freesound.org

Saturday, March 5, 2011

Page 46: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Ok, ho finito il gioco, e ora?

Saturday, March 5, 2011

Page 47: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Pubblica il tuo gioco sull’App Store in pochi giorni

• Sembra tutto finito. Ora si deve:• Giocare il gioco, guardare gli amici giocarlo,

perfezionarlo: deve essere professionale• Submit all’App Store: e aspettare pazientemente• Cercare di ottenere il massimo numero di review:

creare un video, mandarlo a riviste e blogger per recensirlo

Saturday, March 5, 2011

Page 48: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Risorse per Cocos2d

Saturday, March 5, 2011

Page 49: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Pubblica il tuo gioco sull’App Store in pochi giorni

• http://www.cocos2d-iphone.org/• http://www.learn-cocos2d.com• http://cocos2dbook.com/• http://www.iphonegamekit.com/ • https://github.com/probablycorey/wax

Saturday, March 5, 2011

Page 50: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Risorse per Corona

Saturday, March 5, 2011

Page 51: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Pubblica il tuo gioco sull’App Store in pochi giorni

• http://developer.anscamobile.com/• http://www.lua.org/

Saturday, March 5, 2011

Page 52: "Pubblica il tuo gioco sugli app store in pochi giorni"

<ugo landini> - <[email protected]> – <JUG ROMA>

Questions and Answers

Saturday, March 5, 2011