Nuestro taller Subflash: Desarrollo de Videojuegos en Flash

danii . Miércoles 5 de septiembre de 2012. a las 09:55

Desarrollo Videojuegos en Flash

Después del mega resumen del Subflash Vigo que se curró Elad parece difícil que quede algo más que añadir, pero lo cierto es que yo quería escribir un post exclusivo sobre nuestra charla-taller sobre Desarrollo de Videojuegos en Flash. Primero, para darle un toque más personal al post con mis impresiones sobre la creación de la charla y el desarrollo de la ponencia, que quizás en un resumen más general del Subflash no tenían cabida, y segundo porque me parece casi obligatorio que esta charla, en la cual por primera vez formamos equipo los “robots” de Los Tiempos Cambian, tenga URL propia en este blog ;)

Como comenté al inicio de la charla, yo me apunté al Subflash con toda la ilusión del mundo de escuchar a una bestia del Flash como es Joan Garnet (al que admiro muchísimo) hablar sobre videojuegos y sin saber muy bien cómo me encontré delante de unas 40 personas dando esa misma charla… flipando, vamos.

Cuando Elad me propuso que si quería preparar una charla para este Subflash tras la cancelación del taller original de Joan Garnet apenas me lo podía creer. Por un lado, es una charla para el Subflash (una de mis aspiraciones a nivel profesional, que ya puedo tachar de la lista) y además con el añadido de que es sobre un tema que me encanta, el desarrollo de videojuegos – un tema de por sí muy interesante y que además creemos puede ser una alternativa a la programación de aplicaciones (web o mobile) muy viable en el mercado actual. Sin embargo, con apenas 3 días para prepararlo todo (las traspas, los ejemplos de código, la información adicional que dar durante la charla, etc) íbamos a necesitar un esfuerzo titánico de los dos para sacarla adelante. Elad por supuesto se ofreció a ayudarme en todo, y puede decirse que él me ofreció una mano y yo le agarré un brazo y parte de la pierna.

Hay que agradecer también al diseñador/ilustrador residente de nitsnets Ivo el curro para sacar a toda prisa el material gráfico customizado estilo robot de Los Tiempos Cambian para las demos.

Transparencias de la Charla

Demos y Ejemplos de la Charla

Durante la charla quisimos dejar claro que el ámbito de desarrollo de videojuegos es ENORME y que poco tiene que ver la programación de (por ejemplo) un juego de resolución de puzzles con un shoot’em up multiplayer en 3ª persona. Sin embargo, sí que hay algunos problemas comunes a los que un programador de videojuegos se va a enfrentar en la mayoría de sus proyectos, y quisimos centrarnos en éstos. Algunas de las cosas de las que hablamos fue eficiencia, user input, perspectiva, detección de colisiones, y por supuesto cómo abordar la programación de una Inteligencia Artificial para nuestro videojuego usando técnicas relativamente sencillas pero que dan gran resultado.

Sra. Bombilla Entorno isométrico as3isolib as3

Como ejemplo en el apartado de colisiones, utilizamos una demo sacada de este mismo blog, el Personaje en entorno isométrico, que nos servía muy bien para ilustrar la premisa de que además de detectar las colisiones hay que saber reaccionar a ellas adecuadamente.

Durante la charla además mostramos nuestra experiencia en casos reales para clientes como OCB Blackthinking con el que como ya hemos comentado alguna vez por aquí ganamos nuestro ansiado FWA. En particular nos decidimos por dos pequeñas demos que muestran dos maneras distintas de enfrentarse a un problema clásico de programación de la IA en videojuegos: el Pathfinding.

Pathfinding mediante matrices de adyacencia y enrutamiento, estilo SCUMM:

ejemplo subflash 2012 scumm actionscript 3.0 ocb blackthinking

En este ejemplo se puede ver el funcionamiento de SCUMM en ActionScript 3.0

También mostramos una demo de un caso particular de Pathfinding, Pathfollowing, es decir, seguimiento de un camino. Nuestro ejemplo era una IA de una carrera de coches (de hecho, toros de almacén) realizado mediante una Máquina de Estados Finita (o FSM, Finite State Machine) en apariencia muy simple pero que tenía “truco”. LA teoría es que la IA siempre va encarándose hacia el siguiente checkpoint (los rectángulos grises sobre la pista). Podéis comprobar en la demo cómo he colocado una barrera (la banda roja) invisible para la IA y que no le permite alcanzar el siguiente checkpoint, y aunque supuestamente esto le impide continuar la carrera, en cuanto seguimos avanzando y la dejamos atras… algo pasa ;)

ejemplo subflash 2012 box2d topdown car game

Tenéis aquí el ejemplo que mostramos durante la charla en funcionamiento. Apretar click para que el rival (rojo) empiece a correr, con las teclas UP, DOWN, RIGHT, LEFT manejas a tu toro (el negro).

Como mucha gente se interesó además por la vista top-down de los coches, también mostramos una pequeña demo realizada en box2d de la simulación física del coche mediante ruedas y cuerpos conectados con ejes:

ejemplo subflash 2012 box2d topdown car game

Aquí se puede ver el funcionamiento del motor topdown creado para este juego.

Las demos completas de FlashPunk y Starling de la charla las publicaremos en breve en este blog junto con su código comentado para que lo podáis descargar y trastear con él.

UPDATE

Posts de las demos de minijuegos que presentamos durante la charla:

ejemplo subflash 2012 videogames flashpunk starling mobile

Por último, para que quedara patente la potencia de Starling mostramos un video ejemplo (que grabamos a una hora indecente de la mañana como podréis ver en el reloj de mi móvil) de un “minijuego” desplegado en mobile a un rendimiento increíble, 60 fps con un elevado número de animaciones y partículas simultáneamente en pantalla. Como dice Elad en el vídeo: ¡Tira la doble bomba!

Conclusiones

Desde mi punto de vista la experiencia de preparar un taller para el Subflash en tan poco tiempo fue agotadora, pero invertimos un montón de ilusión (a falta de tiempo), y espero que se notara en el resultado.

Por culpa de las circunstancias la charla no pudo estar mejor ensayada (o mejor dicho ensayada en absoluto, ya que hasta prácticamente el mismo sábado al mediodía no tuvimos las traspas finalizadas) y seguro que alguna incoherencia se nos escaparía por ahí, pero me quedo con que hubo gente que se animó a acercarse después de la charla o a la hora de la cena para comentarme que les había encantado FlashPunk y que las herramientas que ofrece para agilizar el desarrollo les parecían super potentes, o que le habíamos terminado de convencer de que Starling era la bomba para desarrollo mobile (!y lo es!) y estaban deseando ponerse a trastear con el framework (!os animamos encarecidamente!), o que simplemente que les había gustado tal o tal comentario. En este aspecto la sección sobre Inteligencia Artificial parece que llamó mucho la atención, dejando las siguientes dos perlas que gustaron bastante:

  • La programación de IA para videojuegos se basa en generar la ilusión de comportamiento inteligente, siendo ilusión la palabra clave. No tienen que ser inteligentes, solo parecerlo ;)
  • Las IAs hacen trampas, y punto. Hay que asumirlo.

Mucha gente diferente me comentó sobre cosas muy diferentes que les habían gustado de la charla, lo cual me lleva a pensar que entre Elad y yo logramos una especie de equilibrio mágico y acertamos en meter un poquito para cada uno. Os agradezco mucho el feedback ya que ésta es la primera charla que doy a un nivel “profesional” y me alegro de que las sensaciones fuesen positivas.

En resumen, una experiencia muy muy positiva y gratificante. Sinceramente, espero repetir algún otro año con otra charla para mi querido Subflash, pero eso sí, ¡con algo más de 3 días para prepararla! Muchas gracias a todos los asistentes y, una vez más, espero que os gustara.

Etiquetas: , , ,

2 Comentarios
» Feed RSS de los Comentarios

  1. marcos dice:

    Gracias por este post Dani, que vuelve a aumentar la calidad de la charla, si es que se podía aumentar!! Como diría nuestro amigos carlos: Nadie puede dudar que fue una charla “top” XD

  2. cmacias dice:

    Top ? Después de esto, es superTop … o era superPop ?
    De verdad, chapeau !!

Enviar comentario