"Pubblica il tuo gioco sugli app store in pochi giorni"
1. Pubblica il tuo gioco sugli App Store in
pochi giorni
ovvero “Guida pragmatica allo stato dell’arte del Mobile Game Programming”
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
2. 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 :)
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
5. 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)
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
6. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
7. Android
• Android
• C++, Java (OpenGL ES 1.1)
• Framework di basso livello
• Cocos2dx, Cocos2d-android, LibGDX,
AndEngine
• Framework di alto livello
• Corona
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
8. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
9. Scelta del target
iOS ha la maggior parte del mercato applicativo
Il rapporto con Android è circa 50:1
10.000.000 vs 200.000 per smartphone
4.000:1 su Tablet (dati 25/02/2011)
60.000 vs 16
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
10. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
11. Scelta del target
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
12. Scelta del tipo di gioco
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
13. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
14. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
15. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
16. Scelta del fw/linguaggio
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
17. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
18. 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)
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
19. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
20. Corona e Cocos2D: un confronto
Corona Cocos2D iPhone
Serve un Mac Si (Beta per Windows) Si
Android Si No
Mac App Store No Si
Apprendimento Semplicissimo Impegnativo
Performance Discrete/Buone Eccellenti
Velocità Sviluppo Eccellente Discreta/Buona
Motore di Fisica Box3D Box3D/Chipmunk
Comunità Buona Eccellente
Tool 3rd party Buoni Eccellenti
Maturità Discreta Ottima
Costo Fee Annuo Open Source
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
21. Cocos2D per iPhone
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
22. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
23. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
27. Scelta dei tool per
Cocos2D
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
28. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
30. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
31. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
32. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
33. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
34. Corona e Lua
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
35. Corona e Lua
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
36. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
37. Uso di Tiled Maps con Lime
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
38. Corona e Lua
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
40. Scelta dei tool per Corona
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
41. 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.
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
42. Mi serve un grafico???
e un musicista?
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
43. 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!
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
44. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
46. Ok, ho finito il gioco, e
ora?
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
47. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
48. Risorse per Cocos2d
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
49. 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
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
50. Risorse per Corona
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
51. Pubblica il tuo gioco sull’App Store in pochi giorni
• http://developer.anscamobile.com/
• http://www.lua.org/
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011
52. Questions and Answers
<ugo landini> - <ugo.landini@gmail.com> – <JUG ROMA>
Saturday, March 5, 2011