10 cosas que hemos aprendido desarrollando nuestro primer juego para Android
10/06/2013
0
No es fácil, pero sí divertido
Nuestra experiencia en el desarrollo de videojuegos con Android nos ha enseñado que ésto no es un camino de rosas. Desarrollar un juego es muy duro y no cuentes con que las descargas caigan del cielo. El primer consejo es que no desesperes, es difícil, pero en la dificultad está el reto. Esperamos que los siguientes consejos te ayuden a no meter la pata donde nosotros la metimos primero ;)
Además, no todo es pesimismo, el balance merece la pena. Cuando tengas el juego colgado de la Play Store y veas cómo tus descargas crecen (aunque sea poco a poco, y sólo con amigos y familiares), el esfuerzo habrá merecido la pena y lo querrás como a un hijo (y sé de lo que hablo).
Nuestra experiencia en el desarrollo de videojuegos con Android nos ha enseñado que ésto no es un camino de rosas. Desarrollar un juego es muy duro y no cuentes con que las descargas caigan del cielo. El primer consejo es que no desesperes, es difícil, pero en la dificultad está el reto. Esperamos que los siguientes consejos te ayuden a no meter la pata donde nosotros la metimos primero ;)
Además, no todo es pesimismo, el balance merece la pena. Cuando tengas el juego colgado de la Play Store y veas cómo tus descargas crecen (aunque sea poco a poco, y sólo con amigos y familiares), el esfuerzo habrá merecido la pena y lo querrás como a un hijo (y sé de lo que hablo).
1
Medir dos veces antes de cortar
Empápate de información antes de empezar. Compara entornos de desarrollo (por ejemplo, échale un vistazo al Android Studio, antes de empezar una relación de amor/odio con Eclipse). Mira videos y tutoriales: en 'developer.android.com' hay mucha información útil para empezar a trabajar. En general, las documentación de android, y los entornos de desarrollo facilitan mucho las cosas. Una buena planificación puede que te ahorre meses de trabajo en la dirección equivocada.
A modo de ejemplo: después de medir una vez y media (nótese que falta media), decidimos que el framework de android para creación de pantallas y dibujo (bastante elegante en el diseño, muy facilito) cubrían todas nuestras necesidades.
Nuestra primera-gran-crisis-de-desarrollo fue toparnos con los límites draconianos de una aplicación Android. 24 MB de memoria para toda la aplicación, incluidas las imágenes (poco más que mi viejo Spectrum :P). Hilamos muy fino para que todo funcionase con 24 MB, cargando y descargando imágenes según las íbamos necesitando. Nos sentíamos como los programadores del Sputnik. Aun así, superamos la primera-gran-crisis (somos unos fieras) y casi finalizamos el desarrollo.
Empápate de información antes de empezar. Compara entornos de desarrollo (por ejemplo, échale un vistazo al Android Studio, antes de empezar una relación de amor/odio con Eclipse). Mira videos y tutoriales: en 'developer.android.com' hay mucha información útil para empezar a trabajar. En general, las documentación de android, y los entornos de desarrollo facilitan mucho las cosas. Una buena planificación puede que te ahorre meses de trabajo en la dirección equivocada.
A modo de ejemplo: después de medir una vez y media (nótese que falta media), decidimos que el framework de android para creación de pantallas y dibujo (bastante elegante en el diseño, muy facilito) cubrían todas nuestras necesidades.
Nuestra primera-gran-crisis-de-desarrollo fue toparnos con los límites draconianos de una aplicación Android. 24 MB de memoria para toda la aplicación, incluidas las imágenes (poco más que mi viejo Spectrum :P). Hilamos muy fino para que todo funcionase con 24 MB, cargando y descargando imágenes según las íbamos necesitando. Nos sentíamos como los programadores del Sputnik. Aun así, superamos la primera-gran-crisis (somos unos fieras) y casi finalizamos el desarrollo.
2
OpenGL or not OpenGL
Nuestra segunda-gran-crisis-de-desarrollo la encontramos a escasas semanas de publicar la primera versión. Todo programado con el framework de Android y funcionando como la seda… en nuestros móviles. Entonces probamos el juego en una Nexus 10 (en teoría un maquinón), y todo iba a trompicones (WTF!): el problema era que la CPU de la tablet no podía mover imágenes tan grandes eficientemente.
Sólo había una solución para esta insuperable crisis: Vuelta atrás y a empezar con un nuevo motor gráfico basado en OpenGL (Ver consejo 1 :D)
Así entramos en el apasionante mundo de OpenGL. Valoramos varios motores gráficos, pero no parecían estar muy maduros, así que decidimos hacer nuestro propio motor. No podía ser tan difícil.
Las 2 primeras semanas fueron duras, muy duras. La frustración llegó a cotas inimaginables. La curva de aprendizaje era demasiado lenta. Acostumbrados a la elegancia de las librerías de Java renegábamos de OpenGL y su primitivismo. ¿Por qué era todo de tan bajo nivel? Además, consultando los foros de OpenGL descubrimos que los gurús deben de ser gente que fuma en pipa y no programa con código, sólo con palabras. Era desesperante ver como alguien tenía tu mismo problema y un gurú le contestaba abstractamente, sin ejemplos de código y el que hizo la pregunta respondía: It works like a charm!. Y pensabas: hijo de puta…
Pero con constancia todo llega y conseguimos domar poco a poco OpenGL (consejo 0, no desesperar). Todo iba super fluído en la tablet y ya no teníamos problemas de memoria ya que las imágenes se guardan en la memoria de vídeo. Así que muchas cosas se simplificaron.
Pronto liberaremos nuestro motor, cuando no nos avergoncemos del código.
Nuestra segunda-gran-crisis-de-desarrollo la encontramos a escasas semanas de publicar la primera versión. Todo programado con el framework de Android y funcionando como la seda… en nuestros móviles. Entonces probamos el juego en una Nexus 10 (en teoría un maquinón), y todo iba a trompicones (WTF!): el problema era que la CPU de la tablet no podía mover imágenes tan grandes eficientemente.
Sólo había una solución para esta insuperable crisis: Vuelta atrás y a empezar con un nuevo motor gráfico basado en OpenGL (Ver consejo 1 :D)
Así entramos en el apasionante mundo de OpenGL. Valoramos varios motores gráficos, pero no parecían estar muy maduros, así que decidimos hacer nuestro propio motor. No podía ser tan difícil.
Las 2 primeras semanas fueron duras, muy duras. La frustración llegó a cotas inimaginables. La curva de aprendizaje era demasiado lenta. Acostumbrados a la elegancia de las librerías de Java renegábamos de OpenGL y su primitivismo. ¿Por qué era todo de tan bajo nivel? Además, consultando los foros de OpenGL descubrimos que los gurús deben de ser gente que fuma en pipa y no programa con código, sólo con palabras. Era desesperante ver como alguien tenía tu mismo problema y un gurú le contestaba abstractamente, sin ejemplos de código y el que hizo la pregunta respondía: It works like a charm!. Y pensabas: hijo de puta…
Pero con constancia todo llega y conseguimos domar poco a poco OpenGL (consejo 0, no desesperar). Todo iba super fluído en la tablet y ya no teníamos problemas de memoria ya que las imágenes se guardan en la memoria de vídeo. Así que muchas cosas se simplificaron.
Pronto liberaremos nuestro motor, cuando no nos avergoncemos del código.
3
¿Qué haces para estar tan guapo? Lavar, aclarar, y repetir
Todos mejoramos mucho cuando nos ponemos ropa que nos sienta bien, en el mundo del videojuego los gráficos son una parte esencial del desarrollo. Busca un buen diseñador que sepa captar el estilo del juego y hacer gráficos consecuentes. Ten muy en cuenta el público al que va dirigido y boceta, boceta y vuelve a bocetar, pide opiniones y trabaja duro hasta que encuentres algo con lo que realmente digas: "ésto es lo que estaba buscando". Como dijo Picasso: "si viene la musa, que te encuentre trabajando".
Todos mejoramos mucho cuando nos ponemos ropa que nos sienta bien, en el mundo del videojuego los gráficos son una parte esencial del desarrollo. Busca un buen diseñador que sepa captar el estilo del juego y hacer gráficos consecuentes. Ten muy en cuenta el público al que va dirigido y boceta, boceta y vuelve a bocetar, pide opiniones y trabaja duro hasta que encuentres algo con lo que realmente digas: "ésto es lo que estaba buscando". Como dijo Picasso: "si viene la musa, que te encuentre trabajando".
4
Calcula el tiempo de desarrollo generosamente y multiplícalo por 10
Desde nuestra visión de un desarrollo calculamos el tiempo pensando en resolver los grandes problemas: cómo pintar con este color el blending sobre esta capa, cómo muevo este gráfico con easing y fuerzo al GC para que no dé tirones, etc. ésto, que en nuestra cabeza planificadora creemos que es el 90% del trabajo, en la práctica no supondrá más del 10%, y no porque al final todo sea más complicado de lo que pensamos, sino porque ese resto de cosas pequeñas en las que no habías pensado son un océano de tiempo que no acaba nunca: ajusta el tamaño del texto del botón que ha quedado grande, exporta, prueba… ay, no, 3 pixels más hacia abajo, exporta, prueba, cambia de tipografía, ajusta de nuevo el tamaño,… y así hasta el infinito.
Calcula tiempos de desarrollo más largos de lo que pensaste inicialmente si no quieres caer en la frustración de ver como te quedan mil tareas pendientes que no acaban nunca. Muy importante, haz una lista de las cosas pendientes y dales prioridad, termínalas de una en una hasta que no quede nada y el día menos pensado exportas la versión firmada para publicar.
Desde nuestra visión de un desarrollo calculamos el tiempo pensando en resolver los grandes problemas: cómo pintar con este color el blending sobre esta capa, cómo muevo este gráfico con easing y fuerzo al GC para que no dé tirones, etc. ésto, que en nuestra cabeza planificadora creemos que es el 90% del trabajo, en la práctica no supondrá más del 10%, y no porque al final todo sea más complicado de lo que pensamos, sino porque ese resto de cosas pequeñas en las que no habías pensado son un océano de tiempo que no acaba nunca: ajusta el tamaño del texto del botón que ha quedado grande, exporta, prueba… ay, no, 3 pixels más hacia abajo, exporta, prueba, cambia de tipografía, ajusta de nuevo el tamaño,… y así hasta el infinito.
Calcula tiempos de desarrollo más largos de lo que pensaste inicialmente si no quieres caer en la frustración de ver como te quedan mil tareas pendientes que no acaban nunca. Muy importante, haz una lista de las cosas pendientes y dales prioridad, termínalas de una en una hasta que no quede nada y el día menos pensado exportas la versión firmada para publicar.
5
Trabajo en backstage
Pero no todo son gráficos bonitos, coloridos y bien resueltos. El trabajo más importante se encuentra entre bambalinas (aunque el usuario medio lo ignora, los programadores somos unos incomprendidos). Todo lo que no se ve pero que se da por hecho: si eres un maquinón de la programación y todo funciona hiper-fluído, el usuario pensará que es lo normal. Por el contrario, si te dejas un pequeño leak, que lanza un force close en la pantalla 30 cuando los planetas se alinean en tu contra: el usuario desinstalará el juego y te mandará la factura del móvil que ha tirado por la ventana llevado por la frustración, o peor, te pondrá un mal comentario en Google Play. ¡Cuidadooo!
Pero no todo son gráficos bonitos, coloridos y bien resueltos. El trabajo más importante se encuentra entre bambalinas (aunque el usuario medio lo ignora, los programadores somos unos incomprendidos). Todo lo que no se ve pero que se da por hecho: si eres un maquinón de la programación y todo funciona hiper-fluído, el usuario pensará que es lo normal. Por el contrario, si te dejas un pequeño leak, que lanza un force close en la pantalla 30 cuando los planetas se alinean en tu contra: el usuario desinstalará el juego y te mandará la factura del móvil que ha tirado por la ventana llevado por la frustración, o peor, te pondrá un mal comentario en Google Play. ¡Cuidadooo!
6
Focaliza. El Diablo está en los detalles
Primero tienes una idea general, luego la vas desarrollando y por fin comienzas a programar. Entonces van surgiendo ideas nuevas. Empiezas a poder medio jugar y surgen nuevas "necesidades". ésta idea va a ser fantástica… mira, si añadimos ésto queda peluten. Pues ésto quedaría muy gracioso…
Al final veíamos que el desarrollo se extendía semana tras semana (puede que meses… al final perdimos la noción del tiempo). Nuestros amigos ya no nos tomaban en serio cuando decíamos que casi lo habíamos terminado… Hay que parar. Piensa en la idea original y cíñete todo lo que puedas. Las ocurrencias ya las podrás implementar en futuras versiones.
Primero tienes una idea general, luego la vas desarrollando y por fin comienzas a programar. Entonces van surgiendo ideas nuevas. Empiezas a poder medio jugar y surgen nuevas "necesidades". ésta idea va a ser fantástica… mira, si añadimos ésto queda peluten. Pues ésto quedaría muy gracioso…
Al final veíamos que el desarrollo se extendía semana tras semana (puede que meses… al final perdimos la noción del tiempo). Nuestros amigos ya no nos tomaban en serio cuando decíamos que casi lo habíamos terminado… Hay que parar. Piensa en la idea original y cíñete todo lo que puedas. Las ocurrencias ya las podrás implementar en futuras versiones.
7
Exaltación de la amistad
Como se suele decir los niños y los borrachos siempre dicen la verdad. Tú, como desarrollador puedes pasar semanas testeando el juego, que en los primeros 5 minutos que se lo dejes a tu sobrino de 7 años te sacará 20 bugs que ni se te habían pasado por al cabeza.
Además siempre viene bien un empujoncito a la hora de empezar y los amigos están para eso. Coge a todos tus contactos de Whatsapp y diles que se instalen tu juego, que es lo mejor que han probado jamás :D, en cuanto veas que las descargas fluyen (las primeras 100 son un subidón) les querrás más que nunca.
Como se suele decir los niños y los borrachos siempre dicen la verdad. Tú, como desarrollador puedes pasar semanas testeando el juego, que en los primeros 5 minutos que se lo dejes a tu sobrino de 7 años te sacará 20 bugs que ni se te habían pasado por al cabeza.
Además siempre viene bien un empujoncito a la hora de empezar y los amigos están para eso. Coge a todos tus contactos de Whatsapp y diles que se instalen tu juego, que es lo mejor que han probado jamás :D, en cuanto veas que las descargas fluyen (las primeras 100 son un subidón) les querrás más que nunca.
8
Promoción: Google no es malo, pero tampoco ayuda
Entonces un día decides que has terminado. Todo funciona perfectamente. Tienes una killer app que va a ser el bombazo después del Angry Birds, no por hacerte rico, sino por simple narcisismo. Entonces publicas tu aplicación. Consigues 4 descargas, entre ellas las tuyas. Algo falla, nadie está encontrando nuestra aplicación.
Así que consultas el Top Nuevos de Google Play Store y la desolación invade todo tu ser. Los nuevos tienen +1.000.000 de descargas la mayoría. Incluso una aplicación de un miserable pedo (si lo sé no invierto un año de mi tiempo libre). Las aplicaciones nuevas del último minuto no aparecen por ninguna parte. Tu flamante juego está perdido en el infinito y nadie puede conocerlo. Google no te ayuda, la promoción va de tu cuenta (¿bancaria?). Hay que buscarse la vida.
Entonces un día decides que has terminado. Todo funciona perfectamente. Tienes una killer app que va a ser el bombazo después del Angry Birds, no por hacerte rico, sino por simple narcisismo. Entonces publicas tu aplicación. Consigues 4 descargas, entre ellas las tuyas. Algo falla, nadie está encontrando nuestra aplicación.
Así que consultas el Top Nuevos de Google Play Store y la desolación invade todo tu ser. Los nuevos tienen +1.000.000 de descargas la mayoría. Incluso una aplicación de un miserable pedo (si lo sé no invierto un año de mi tiempo libre). Las aplicaciones nuevas del último minuto no aparecen por ninguna parte. Tu flamante juego está perdido en el infinito y nadie puede conocerlo. Google no te ayuda, la promoción va de tu cuenta (¿bancaria?). Hay que buscarse la vida.
9
Crea un blog con "10 consejos"
Así llegamos al último consejo. Crea un blog para promocionar tu juego. Con la cuenta bancaria en números rojos no quedan muchas alternativas, y la autopromoción te lleva a buscar todos los resquicios que encuentres para que tu juego sea conocido.
Sólo nos queda decir que esperamos que lo disfrutéis jugando tanto como nosotros desarrollándolo.
Gracias por jugar y a por el mejor tiempo!
Así llegamos al último consejo. Crea un blog para promocionar tu juego. Con la cuenta bancaria en números rojos no quedan muchas alternativas, y la autopromoción te lleva a buscar todos los resquicios que encuentres para que tu juego sea conocido.
Sólo nos queda decir que esperamos que lo disfrutéis jugando tanto como nosotros desarrollándolo.
Gracias por jugar y a por el mejor tiempo!