inmensia |
Blog
Juan Mellado, 6 Marzo, 2010 - 10:30
- Antecedentes: Durante la primera quincena de enero estuve buscando información técnica acerca del desarrollo de juegos para Flash. Al final me quedó claro que tenía dos opciones. La primera era utilizar Adobe Flash CS4, que es el programa que vende Adobe para hacer desarrollos para Flash de una forma sencilla y productiva a través de una interface gráfica. La segunda era utilizar Flex 3, que es un framework gratuito de código abierto que publica la propia Adobe, y que incluye un compilador de línea de comandos y las librerías necesarias para desarrollar aplicaciones para Flash utilizando ActionScript, una apuesta clara de Adobe para captar programadores con experiencia en otros lenguajes de programación. La licencia de CS4 es un poco cara si no se piensa utilizar el programa con asiduidad, y la versión "trial" puede llegar a caducar antes de que se empiece a utilizar en serio el programa, algo bastante común para un proyecto "amateur". Así que me decidí por Flex, aunque no es una opción que recomiende a alguien que no tenga una experiencia previa en el desarrollo de aplicaciones. - Herramientas: Para empezar a programar con Flex lo mínimo que hay que hacer es descargarse e instalarse el Adobe Flex SDK 3.5. Como incluye un compilador de línea de comandos, los fuentes podrían escribirse en Notepad por ejemplo, y compilar con un ".bat". Pero lo mejor naturalmente es utilizar un IDE para la gestión integral del proyecto. En este punto hay dos opciones. La primera es utilizar Adobe Flex Builder 3, el programa de pago de Adobe que se encuentra disponible como una aplicación independiente, o como un plugin para Eclipse. Es más barato que CS4, y también tiene versión "trial", pero comparte sus mismos inconvenientes. La otra opción es utilizar FlashDevelop, un IDE gratuito que se ejecuta de forma nativa para Windows, y sobre algún tipo de máquina virtual para Mac OSX/Linux. Es bastante simple, y se echan en falta algunas opciones de IDEs más avanzados, pero ninguna con la que no se pueda vivir. Por útlimo, para ofuscar el bytecode del .SWF final resultante, se puede utilizar la versión "trial" de irrFuscator. Aunque lógicamente es que mejor instalarla cuando ya se tenga terminado el desarrollo, para que no expire. - Diseño: Inicialmente iba a programar un juego de tipo "Match 3" muy simplón. Y viendo el resultado final está claro que no he seguido ningún diseño ni guión preestablecido, simplemente he ido improvisando sobre la marcha. La idea central surgió haciendo un menú de opciones. Quería que se ejecutase algún tipo de efecto al seleccionar una de las opciones, y se me ocurrió implementar la típica cuenta atrás. Me gustó tanto el resultado que pensé que podía desarrollar todo un juego sobre ese efecto. Inicialmente las fichas se movían de forma aleatoria, su disposición por la pantalla era un tanto caótica, y en consecuencia la mecánica del juego resultaba bastante confusa. Al hacer que se moviesen de forma ordenada sobre un círculo el juego se simplificó muchísimo y mejoró su jugabilidad enormemente. Lo que es interesante comentar es que no era algo que tuviera previsto que pasara, simplemente lo probé y el resultado me sorprendió. Otro problema del diseño inicial era que un mismo número sólo aparecía una sola vez, por lo que era extremedamente fácil. La cuenta atrás apenas llegaba a la mitad de su recorrido total en la mayoría de los casos. Casi abandono la idea. Hasta que una noche que estaba viendo la televisión (verídico) se me ocurrió que un mismo número debería poder aparecer más de una vez y que la cuenta atrás no parase hasta que se eliminanse todos. En ese momento me convencí a mismo de que "tenía un juego". - Niveles: Es la primera vez que hago un juego de niveles, y es con diferencia la parte que más tiempo me ha llevado. Me propuse llegar a 50, pero finalmente se han quedado en 40, ya que me auto-impuse terminar el juego en la última semana de febrero, y ese era el número de niveles que tenía implementados en esa fecha. En total habré desechado unos 20 niveles sobre el total diseñados. Una cantidad bastante grande, ya que representa un 50% de los que finalmente tiene el juego. Hay algunos que podían haberse quedado, pero los eliminé porque no encajaban con el diseño del resto. El principal problema que me he encontrado, por mi total falta de experiencia y talento, es que lo que parecía divertido sobre el papel no lo era luego en la práctica. Y otro tanto ocurria con la dificultad, lo que para mi era muy difícil, otros se lo pasaban a la primera sin pestañear. En cualquier caso, he disfrutando mucho realizando el experimento este, y he aprendido algunas cosas sobre la marcha. - Desarrollo: El desarrollo ha llevado un mes y medio. Aunque lógicamente el tiempo real invertido es mucho menor. Algunas semanas apenas le habré dedicado 4 horas al proyecto, y otras habré llegado hasta 20. En total calculo que habré invertido unas 80 horas. Es decir, dos semanas completas, considerando una jornada de 40 horas semanales. No tengo ningún tipo de experiencia con CS4, pero creo que de haberlo utilizado el tiempo de desarrollo hubiera sido mucho menor. Utilizar Flex, por decirlo de algún modo, es la manera "hardcore" de programar juegos para Flash. Por algunos vídeos de tutoriales que he podido ver, lo que en CS4 se hace pinchando con el ratón sobre una película y cambiado un par de propiedas, en Flex hay que hacerlo escribiendo bastantes líneas de código en ActionScript 3. Para reducir el tiempo de desarrollo decidí no invertir demasiado tiempo en hacer gráficos, ya que me cuesta mucho dibujarlos y nunca quedo satisfecho con el resultado. En consecuencia, en Countdown no hay ningún bitmap. Todos los gráficos se generan mediante código. En este punto creo que utilizar CS4 hubiera sido más productivo, para tareas como la elaboración de las "claquetas" de los menús por ejemplo. Por lo demás, el uso de Flex no es muy distinto al de cualquier otra librería o API. - Distribución: Este era también un tema nuevo para mí. Hasta ahora, con mis juegos, me había limitado a publicarlos en mi propia web, y poco más. Tener un juego Flash terminado hacía que mereciese la pena comprobar como funciona la distribución en los grandes portales web. Decepcionante, muy decepcionante. Cada portal tiene su propio sistema, y normalmente es necesario registrarse previamente. Por no mencionar algunos términos de uso del servicio, que son lo más parecido a contratos de venta de tu alma al diablo que he visto. Entiendo que cada cual defienda sus intereses a capa y espada, pero la consecuencia de todo esto es que el proceso manual de distribución es realmente penoso. Al final he subido el juego en cuantos portales grandes, como Kongregate y Newgrounds, para conseguir un poco de "feedback" de jugadores anónimos acostumbrados a probar todo tipo de juegos Flash. En Kongregate el juego tiene actualmente un "rating" de 2.90 sobre 5. Y en Newgrounds un 2.46 sobre 5. Aunque en Newgrounds también le ha hecho unas cuantas "reviews" con un total de 7.8 sobre 10. Buscando automatizar el proceso de distribución encontré bastantes referencias en Internet a Flash Game Distribution, un portal que ofrece un servicio gratuito que permite alojar juegos Flash y que se encarga de la distribución. Subí el juego a primeros de semana, lo aprobaron ayer, y según la pagina de estadísticas, ya se ha distribuido automáticamente a más de 200 webs. Muy útil. - Monetización: En el foro de Flex/Flash de Stratos había leído bastantes posts sobre el tema, en particular de David Ferriz, que se dedica profesionalmente a ello a través de DevilishGames. De su lectura entendí que había tres líneas principales (y bastante sucédaneos): juego por encargo, esponsorización, y publicidad on-game. La primera vía evidentemente no era la mia, la segunda la descarté porque el juego no está lo suficientemente pulido y haría falta dedicarle un tiempo adicional que no me apetecía invertir, así que me decanté por la tercera opción. Sin lugar a dudas la opción más sencilla gracias a Mochi Media y su servicio de publicidad Mochi Ads. Por explicarlo de forma sencilla, es como el servicio Google AdSense, pero que en vez de obligarte a insertar una etiquetas HTML en tu página web, lo que se hace es obligarte a insertar una líneas de ActionScript en el código de tu juego. El mismo día que registré el juego, con un simple "preloader", me lo aprobaron y empezó a aparecer la publicidad sin ningún tipo de problemas. ¿Y genera grandes beneficios de forma inmediata? Por supuesto que no, a menos que se implemente en un juego con mucha visibilidad y un número enorme de visitas, del orden de millones, no de unos pocos cientos como el mio. Para ser realistas hay que pensar en esto como una carrera de fondo, muy a la larga, y siempre y cuando se consiga realizar una buena distribución "viral" del juego. - Críticas: La mayoría de comentarios que he recibido han sido positivos, destacando lo original de la propuesta, teniendo en cuenta que era mi primer juego Flash, aunque pueda llegar a ser un poco repetitiva. La principal demanda que me han hecho es la de inclusión de algún tipo de sonido y música de fondo. Y esto es curioso porque, mientras lo programaba, llegué a generar algunos sonidos bastante aceptables con sfxr, e incluso los integré en el juego, pero al final los quité porque no aportaban absolutamente nada al juego. Con música no probé, pero lo único que era capaz de imaginar era el sonido del tic-tac de un reloj aumentado de volumen a medida que terminaba la cuenta atrás. Como comentario adicional, comentar que la ausencia de ficheros de sonidos, y de gráficos como comenté antes, hacen que el juego apenas pese 30 Kb en su versión original, y 50 Kb en la que se incluye la publicidad. En cualquier caso, la crítica más negativa y repetida que le han hecho al juego es que le falta un sistema de puntuación y una ventana de felicitación al superar el último nivel. Si el juego hubiera sido desarrollado por una empresa que intenta vivir de esto, evidentemente hubiera sido un suicidio no implementar los habituales mecanismos de recompensa. Pero a mi la verdad es que no apetecía pasar mi tiempo libre implementando esas opciones, asi de simple. Además, cuando lees un comentarios diciendo que "lo jugaría si tuviera sistema de puntuación", da la impresión de que la única motivación es mostrar al resto lo buen jugador que se es. O sea, enseñarle al mundo el tamaño de nuestro e-pene. Vanidad, bendita fuente de ingresos.
Juan Mellado, 1 Marzo, 2010 - 15:24
A modo de balance, yo diría que la tendencia de este año ha sido la misma que la del anterior. Es decir, un claro descenso de los blogs registrados y menos posts. Los que persisten son sobre todo los que utilizan sus blogs para maximinar la promoción de sus proyectos, las empresas constituidas y los grupos que están en ello. Después le siguen referencias a productos o tecnologías, artículos técnicos y opiniones. Y los posts de carácter personal casi han desaparecido. Las redes sociales actuales están acaparando mucho trabajo que anteriormente sólo era imaginable que realizasen webs especializadas. Sobre todo por su naturaleza de "Planet de Planets", al permitir acceder desde un único sitio a grupos de interés muy distintos. Y todo ello a través de una misma interface, ya se la común o una personalizada, con cierta cantidad de valor añadido. Respecto a las tecnologias, en los últimos meses parece que XNA está teniendo bastante aceptación entre los grupos y empresas incipientes, aunque los resultados económicos no parecen estar acompañando. Yo creo que los que están empezando lo ven como una buena oportunidad de cubrir curriculum con un desarrollo en un tiempo razonablemente corto para consola. Mientras que los que llevan más tiempo y tienen su nicho muy bien definido están centrados en lo suyo, y esto es algo residual. Por mi parte, como mero aficionado, me agrada la idea de que exista esta posibilidad de desarrollar para una consola "grande" de forma legal y sin necesidad de realizar grandes inversiones, aunque da un poco de miedo pensar que el canal acabe saturado con tanto amateur. Y en cuanto a lanzamientos, parece que Novarama con su Invizimals es de lo más destacado del último año dentro del panorama nacional. Aunque supongo que cada uno tendrá su propia visión particular sobre esto. En fín, un año más. Gracias a todos los que hacéis posible la web, cada a uno a su manera, desde su propia perspectiva, y a Antonio Arteaga, por dejarme usar el nombre de Stratos. ¡Felicidades planetarios!
Juan Mellado, 27 Febrero, 2010 - 13:47
Countdown es el nombre del primer juego que escribo para Flash. Tiene una mecánica muy sencilla, y espero que resulte entretenido. Para los que no tengan tiempo de probarlo, pongo algunas imágenes: ![]() Espero escribir pronto otro post contando algunos detalles acerca del diseño y desarrollo.
Juan Mellado, 14 Enero, 2010 - 18:05
Un señor llamado Tobias Schneider se ha currado un runtime de Flash escrito 100% en JavaScript. Sin dependencias externas, todo en JavaScript. Sí señor, con un par. Y además ha tenido el detalle de llamarlo Gordon, por aquello de "Flash Gordon", se presupone. Para que nos entendamos, es como el plugin de Adobe que hay que descargarse e instalarse en el navegador para ejecutar los ficheros Flash. La gracia es que al estar escrito en JavaScript no hace falta descargar ni instalar nada, se procesa y ejecuta todo por parte del navegador, sin añadidos. Y esto lo hace "en teoría" totalmente independiente del sistema operativo o la plataforma en que se ejecute. O sea, si se tiene un navegador que pueda ejecutar JavaScript entonces se pueden ver ficheros Flash, dando igual que se esté en Windows, Unix, Mac, .... y se use Internet Explorer, Firefox, Chrome, ... ¿Y funciona? Pues parece que sí. El autor ha creado unas pocas demos. ¿Y tiene limitaciones? Pues por ahora bastantes. Sólo procesa ficheros de la versión 1 de Flash. Y teniendo en cuenta que la versión actual es la 10, pues como que más de uno va a echar en falta bastante cosas. En la página del proyecto hay una tabla con las etiquetas SWF soportadas. ¿Y funciona en todos los navegadores? Pues por ahora no. Hay una tabla de navegadores en los que se ha probado. Los básicos están, y llama bastante la atención que no lo hayan probado en IE. ¿Es de código abierto? Sí, mucho que cotillear ahí dentro. ¿Sirve para algo? En realidad no, ahora mismo no demasiado. Aunque indudablemente es una pequeña gran proeza técnica. Tener la posibilidad de ejecutar un fichero Flash en, por ejemplo, un iPhone, a más de uno le habrá dado algo que pensar. El tiempo dirá...
Juan Mellado, 10 Noviembre, 2009 - 15:55
Actualmente se encuentran desarrollando dos engines, llamados BrainWave (audio) y MindShake (gráficos/creación sencilla de juegos), con los que crear sus propios videojuegos, y que probablemente hagan públicos. A través de los posts de su blog se puede seguir el estado del avance de los mismos. ¡Bienvenidos! |