Lecciones aprendidas en desarrollo de apps aplicado
los juegos
Roberto Brevé
•1997 Scream
•2000 Icoms
•2008 Blipea
•2011 Class.io
•2012 Freelance iOS Dev
DEBERIA HACER UN JUEGO
Así que querés ser un indie game
developer?
Acepto El Reto
QuickTime™ and aGIF decompressor
are needed to see this picture.
iPhone - Android - PC - Web - FlashXBox - Nintendo - PlayStation
Como comienzo? Que plataforma uso?
TODAS LAS PLATAFORMAS!!
Elegí primero, en la que más comodo te
sentís
Plataformas actuales
• iOS
•Android
•Web
•PC
iOS
iOS Developer Program$99 / Año
iPhone o iPad> $300
Mac mini> $600
Ventajas iOS
•App Store (compra inmediata)
•Mercado atractivo (los usuarios si compran)
•Poca fragmentación (retina, non-retina)
•Buenas herramientas de desarrollo (xcode) y buena documentación
•Excelentes engines de desarrollo
Desventajas iOS•Tiempo de aceptación en el appstore es muy tardado
•Objective-C es complejo de aprender
•Puede ser caro para iniciar
•Muchísima competencia
•Difícil darse a conocer
•Sistema de reviews malo (no te dejan responder, te pueden atacar con 1 star reviews)
•Apple es estricto
Herramientas para hacer juegos en iOS
•Cocos 2D (Grátis)
•Box2D / Chipmunk (Engine de Física)
•Corona SDK
•Unity 3D
Android
PC> $600
Muchos Androids
Ventaja Android
• Java : Lenguaje familiar
•Aceptación en el Marketplace es rápido
•PC o Mac
•Eco sistema más abierto
•Mercado mayor, teléfonos más baratos
Desventajas Android
•Fragmentación
•Eco sistema demasiado abierto (te clonan los juegos)
•Piratería
•Pocos con$umidore$
•Modelo basado en anuncios
Web
•HTML 5
•Flash
• Java
Ventajas HTML 5
•Lenguaje familiar: Javascript
•Tecnología emergente (el futuro?)
•Fácil de aprender e iniciar (muchos tutoriales)
•Código fuente abierto
•Corre en la mayoría de los browsers
•Chrome, Safari, Firefox en PC o Smartphone
Desventajas HTML 5 / Javascript
•Puede ser lento en algunos smart phones
•Problemas de compatibilidad / touch
•Recursos Limitados
•Código fuente esta expuesto, hay que usar técnicas para esconder el código.
Engines para HTML 5
• Impact JS http://impactjs.com/
•Crafty JS http://craftyjs.com/
•LimeJS http://www.limejs.com/
•Cocos2D-javascript http://cocos2d-javascript.org/
Flash está muerto
JAVA???
Minecraft
Minecraft
•Notch sacó versión clásica al público en el 2009 en Alpha
•Poco a poco fué mejorandolo con actualizaciones automáticas
•En el 2011 vendió casi 2 millones de copias
•$33 millones en ingresos
•En el 2013 vendió 9 millones de copias
•En XBOX Live vendió 1 millón, 1er dia 400mil jugadores online
•Minecon (conferencia solo de minecraft)
OK. Ya elegí mis herramientas, y
ahora?
Que relación tienen estos dos objetos?
Retrocedamos un poco
Antes de empezar a codear [self checkForTileCollisionWithCharacter:self.dude withLayer:self.bgTile.hazards withBlock:^{ [self characterDie:0]; }]; [self checkForTileCollisionWithCharacter:self.dude withLayer:self.bgTile.door withBlock:^{ [self goToLevelMenu]; }]; // [self setViewpointCenter:self.dude.bear.position];
}
-(void)setViewpointCenter:(CGPoint) position { CGSize winSize = [[CCDirector sharedDirector] winSize]; int x = MAX(position.x, winSize.width / 2); int y = MAX(position.y, winSize.height / 2); x = MIN(x, (self.bgTile.tileMap.mapSize.width * self.bgTile.tileMap.tileSize.width) - winSize.width / 2); y = MIN(y, (self.bgTile.tileMap.mapSize.height * self.bgTile.tileMap.tileSize.height) - winSize.height/2); CGPoint actualPosition = ccp(x, y); CGPoint centerOfView = ccp(winSize.width/2, winSize.height/2); CGPoint viewPoint = ccpSub(centerOfView, actualPosition); self.bgTile.tileMap.position = viewPoint;}
-(void) moveEnemies:(NSMutableArray *) enemies time:(ccTime )dt{ for (Character *enemy in enemies){ [enemy update:dt]; enemy.bear.position = enemy.desiredPosition;
Pensemos que vamos a hacer?
QuickTime™ and aGIF decompressor
are needed to see this picture.
Acción - Aventura - Estrategia - 2D - 3D - Casual - Word game - educativo - música - carrera
Que tipo de juego hago?
Depende •Tus gustos y experiencia
•Capacidad (programar, gráficos, sonido)
•Limitaciones
•Conocimiento del mercado
•Tus objetivos
Quiero hacerme rico
Hmmm no es tan fácil
•20% de los desarrolladores ganan el 97% de todas las ganancias del app store.
•1% gana un tercio de todas las ganancias
•25% hacen más de $30 K dolares
•20% hace menos de $200
•25% hace entre $1000 - $10,000
Fuente: http://www.streamingcolour.com/blog/2011/09/28/results-ios-game-revenue-survey/
Primero estudiemos
La grán mayoría de los
juegos son malísimos y aburridos
Porque son malos?•Errores comunes:
• Te obligan a leer la historia sin saltarla
• Te hacen volver a comenzar cuando te matan (GTA)
•Tenés que ser japones para poder jugarlo
•Tenés que dedicarle 20 horas al día
•Aburren rápido (muy difíciles o muy fáciles)
•Las empresas de juegos quieren hacer plata y usan tácticas sucias para hacer los juegos más adictivos.
Tácticas súcias
Logros / Niveles / Medallas
Skinner Box
Skinner Box!
Skinner Boxoperant condition chamber
•Creado por el Psicólogo B.F. Skinner
•La caja tiene una palanca y un recipiente de comida
•El raton puede apretar la palanca para obtener comida
•Cuando obtiene comida, el ratón comienza impulsivamente a apretar la palanca hasta quedar satisfecho.
•Los humanos no tienen libre albedrío, una acción humana es consecuencia de esa misma acción.
Otras tácticas
•Te obligan a usar redes sociales, a poner un status en tu twitter o fb
•El juego es grátis, al inicio es fácil, después de hace complicado y te obligan a comprar armas para poder pasarlo
•Fácil - Difícil -> nueva arma -> Fácil -> Difícil -> nuevo escudo ...
•Clones de otros juegos con pequeñas variaciones
Quitemole las tácticas a esos juegos
•Diablo sin gráficas, sin loot, sin niveles...
•COD sin achievements, sin premios, sin super armas
•Un Slot Machine que nunca ganes ni perdas dinero y sin decoraciones
Juegos buenos sin esas babosadas?
Pero hay buenos juegos
•Braid
•Limbo
•World of Goo
•Machinarium
•Sword & Sorcery
•Portal
Espectativas emocionales, nuevos géneros.
•Sentimientos al COD
•poderoso, enojado, frustrado
•Sentimientos al jugar BRAID, Limbo
• inteligente, relajado, intrigado, miedo
Reclasificación de Generos?
• Juegos de Terror (Amnesia)
•Divertidos (Cloning Clyde) http://www.youtube.com/watch?v=KtGYnJo_cqg
•De Pensar (Room, Braid, de aventura)
•Pensar en libros y películas (drama, suspenso etc..)
OK Ya se que hacer...a codear!
MVP (Minimum Viable Product)Algo fácil, rápido simple de programar
que ayuda a evaluar si será un juego que vale la pena seguir desarrollando o no.
VALIDA TUS HIPOTESIS
Prototipo Simple•1. Hacer un prototipo simple sin gráficas, elegir un
lenguaje que podes programar, flash ok, html ok
•Prototipo de Braid http://youtu.be/ISutk1mauPM?t=27m6s
•Prototipo de super meat boy http://www.newgrounds.com/portal/view/463241
•2. Enviarselo a sus amigos
•3. Verlos jugar
•4. Tomar Notas
•5. Corregir y volver a hacer otro prototipo (volver a 2)
Data
A/B Testing
•Hacer 2 Grupos de jugadores A y B
•Hacer una versión con pequeñas variaciones del juego en cada grupo
•Medir
•Analizar cual de los dos tiene mejor resultado
Análisis de Datos
•Google Analytics
•Crittercism https://www.crittercism.com/
•Flurry http://www.flurry.com/
Prototipo Funcionó
•Elegir una plataforma más seria iOS o Android
•Contratar diseñador gráfico , músico
•Sacarlo al público
• ????
•Profit!
•Comenzar a portar tu juego a otras plataformas