Usando bitmaps en Flash

[SWF]/wp-content/uploads/2008/06/test.swf, 400, 200[/SWF]

A partir de estos días estaré aprendiendo a utilizar Bitmaps en Flash. A diferencia de la programación usual en Flash, ej. dibujos vectoriales, la programación con bitmaps tiene sus particularidades. La idea es hacer cosas con un estilo pixel art. Lo retro es bonito. Estoy comenzando a leer, y conseguí una serie de 2 partes extremadamente básica para manipular Bitmaps en Flash, pero necesarias si no se conoce mucho del tema: Jugando con Pixels (I), y Jugando con Pixels (II). Sirve también la documentación Livedocs de Adobe: Las clases Bitmap y BitmapData.

Fomentando la Innovación con Brad Bird, de Pixar

The IncrediblesLa innovación es una cuestión muy curiosa. La innovación es algo que buscan las empresas, aunque suelen usarlo como un medio, para obtener un producto que los diferencie. Lo cierto es que la innovación es más bien un proceso, es algo que requiere estar encima de ello, dedicado, para poder obtener buenos resultados.

Además de ser un proceso, la innovación es riesgosa también. Implica sacar cosas que no sirven, pero también implica sacar cosas que pueden ser extremadamente exitosas. Y sin embargo, eso es algo que no se sabe mientras se está haciendo algo nuevo. El que está en esta actividad se guía por una suerte de intuición dada por la intensidad con la que está trabajando. Me refiero al estado de flujo.

En fin, todo esto viene debido a un resumen que leí de una entrevista a Brad Bird, director de las películas Los Increíbles y Ratatouille, en el que resume en 10 puntos qué se debe hacer para fomentar la innovación. Él habla de los animadores, por supuesto, pero son puntos igualmente válidos para un negocio que requiera innovar para seguir en el negocio. Los puntos son:

  1. Manejar a tus ovejas negras. Ovejas negras, aquellos que no están contentos con cómo se hacen las cosas, y quieren probar que tienen razón.
  2. La perfección es enemiga de la innovación. Cortar algunas esquinas es totalmente válido.
  3. Busca la intensidad.
  4. La innovación no ocurre en un vacío. (Esto me recuerda que me gustaría ver más gente discutiendo ideas, cualesquiera que sean)
  5. La moral alta hace barata la creatividad. Lo de siempre, gente feliz le sale la creatividad por los poros.
  6. No trates de «proteger tu éxito». No trates de «ir por lo seguro».
  7. Interacción (con otras personas) == Innovación. Es por esto que las universidad existen: para meter un montón de gente muy inteligente a discutir ideas.
  8. Alienta el aprendizaje inter-disciplinario.
  9. Deshazte de los enlaces débiles. Cito del artículo: «¿Qué retrasa a la innovación? — La gente pasivo-agresiva — aquellos que no se comunican de frente al grupo pero luego hablan mal a las espaldas — son ponzoñosos.«
  10. Hacer $$ no puede ser tu foco.

Pixar’s Brad Bird on Fostering Innovation

Tutorial de Pixel Art

Un simpático tutorial para hacer pixel art, sepas o no utilizar Photoshop, tengas o no habilidades para ilustrar. Su autor, Rich Grillati, de PixelJam, da unos cuantos tips para lograr las mejores formas con la menor cantidad de pixeles posibles. El Pixel art es muy práctico debido al estilo retro que le da a tu videojuego, y al relativo poco esfuerzo necesario para hacer algo agradable.

(Via TIGSource)

Fondos de películas animadas. Para inspiración.

Sencillamente Rob Richards agarró una buena idea y la puso en práctica.  Con una buena frecuencia, Rob en Animation Backgrounds publica uno o dos fondos que se utilizan en películas animadas de ayer y hoy, como Cenicienta, La Bella Durmiente, o el Correcaminos. Un excelente aporte para aquellos que necesitan de ideas para crear fondos para los juegos.

Justo lo recomendado si necesitas hacer fondos para juegos de aventura. Visita Animation Backgrounds.

Movimientos de personajes en Juegos RPG tipo Zelda, por Cristalab

Tutorial de Cristalab

Cristalab publicó un excelente tutorial en Flash y en español acerca de cómo lograr movimientos de personajes en un ambiente 2D, tipo juegos de RPG como Final Fantasy. El tutorial utiliza ActionScript 3, será que comencemos a movernos para esta versión los que aún estamos con AS2 😛

Foros de programación de juegos en español

He estado intentando ubicar foros de programación, específicamente de juegos, de hispanohablantes. Hasta ahora he ubicado los foros de Stratos-Ad, que está bien establecido, y con una buena cantidad de gente. De ellos mismos está el agregador Planet Stratos, con blogs de otros desarrolladores (100% recomendado). Si alguien me puede recomendar otro, puesbienvenido sea 🙂

UPDATE 1: No se me puede olvidar el foro de la IGDA Caracas, que aparentemente está muy muy quieto durante estos meses, pero espero que eso cambie.

UPDATE 2: Roberto compiló una excelente lista de foros en un solo artículo, y cito a continuación. Visita su blog y encontrarás otros tips de programación interesantes.

Foros en Español

Foros en Inglés

Herramientas para hacer juegos multiplayer en Flash

Si ya has hecho un juego para Flash, este artículo seguramente te interesará. Probablemente ya hiciste un juego para esta plataforma, y tienes curiosidad por incluir a varios jugadores en un mismo juego.

Hacer juegos multiplayer en Flash ciertamente requiere algo más que el editor de Flash, pues los compilados que se publican no poseen las capacidades necesarias para fungir de servidores. En otras palabras, no es posible hacer conexiones y obtener datos utilizando solamente los SWFs que saca Flash, debido a obvias restricciones de seguridad. En términos simples, no quieres estar recibiendo alegremente conexiones de otras partes del mundo mientras usas Flash en una página.

Conexiones a servidores de Flash
Los SWF que publica Flash no pueden conectarse a las computadoras de otras personas. Necesitamos un servidor que haga esta tarea.

Luego, la solución indicada es tener un servidor al que todos los SWFs se puedan conectar y desconectar. Inicialmente, Macromedia (ahora Adobe) lanzó el Flash Communication Server, luego rebautizado como Flash Media Server. Este servidor tiene excelentes características para desarrollar una aplicación multiusuario, ya que utiliza una versión del lenguaje Actionscript para el servidor. Ahora, estamos hablando de que una licencia cuesta varios miles de dólares.

Red5 logo Es entonces cuando podemos ver otras alternativas más económicas e igualmente útiles. La primera y más popular es el proyecto Open Source llamado Red5. Red5 es funcionalmente un clon de Flash Media Server, y está basado en Java. Requiere el ambiente de ejecución de Java (el JDK) para poder correr. Esto tiene varias implicaciones: es necesario saber bastante de Java para poder aprender los conceptos de Red5 y poder programar aplicaciones en este servidor. La otra implicación es que se requiere de una compañía de hosting que ofrezca hospedar aplicaciones en Java, cosa que sabemos no es tan común como los planes con ASP o PHP.

Con respecto al primer punto, sin embargo, Red5 ha resuelto el problema en parte ofreciendo maneras de interpretar varios lenguajes para hacer las aplicaciones. Javascript, Ruby y Python son algunos de estos lenguajes, por lo que se puede aprovechar el conocimiento que ya se tienen de estos y no tener que aprender Java.

Con respecto a la documentación, está todavía en desarrollo, y aunque hay muy buen material que viene con el servidor, hace falta organizarse, leerlo y digerirlo varias veces.

SmartFoxServer Lite logo Otra alternativa, ya comercial, es SmartFoxServer. Esta gente provee un servidor también basado en Java, pero la programación se concentra principalmente en los clientes, de acuerdo a lo leído en la documentación. Tiene también soporte para programar en Actionscript para el servidor. Su versión PRO, que es la que trae la mayor cantidad de características, tiene una licencia ilimitada por un costo mucho menor al Flash Media Server, y además ofrecen las versiones BASIC y LITE, siendo la BASIC mucho más económica y la LITE completamente gratuita. SmartFoxServer se publicita principalmente a través de la página gotoAndPlay(), en donde hay una variedad de juegos creados con su servidor, tutoriales, y un foro de soporte. En fin, no me parece una solución descabellada.

Probablemente hayan otros servidores por allí, pero al menos sé que Red5 está comenzando a formar una comunidad de gente, y es una alternativa totalmente factible para hacer aplicaciones multiusuario.

Unity: Desarrollo de juegos 3D en Macs

Unity Logo

Unity ya ha hecho algo de ruido dentro de la comunidad desarrolladora de juegos, principalmente por ser una herramienta basada en Macs, una plataforma que tradicionalmente ha desfavorecido el desarrollo de juegos.

Unity, sin embargo, ha tomado una aproximación bastante acertada al desarrollo de un juego. Es un editor predominantemente visual, incluyendo librerías físicas (provistas por PhysX), librerías gráficas que soportan modelos 3D de populares paquetes, y scripting basado en Mono, una implementación Open Source de .NET. Lo último, en cristiano, es que se pueden hacer scripts en el lenguaje de tu preferencia, que Unity lo va a entender. Promete también acceso fácil a los shaders.

¿Alguno con Mac le ha dedicado algún tiempo a probar este programa?

Tutoriales de colisiones, OpenGL e Irrlicht en completo español en Black Byte

Ilustración de Black Byte

Los tutoriales de OpenGL en español son esfuerzos poco comunes, y por ello deben ser apreciados. Black Byte tiene en su página una serie de tutoriales de OpenGL con información bien completa, desde algunos fundamentos de proyecciones, hasta cómo sacar un contexto OpenGL en una ventana de Windows, pasando por GLUT, convenciones de la librería y animaciones. También incluye un tutorial de Irrlicht, un motor 3D de fácil uso.

Fundamentos del Diseño de Juegos: 6 Trucos Gastados Utilizados en Juegos. ¿Cómo los reemplazamos?

Super Paper Mario

CRACKED.com ofrece un artículo muy bueno con 6 ejemplos de trucos de diseño utilizados en muchos juegos que deben irse, ya sea por fastidiosos, por ser ya un cliché, o porque han sido reemplazados por algo mejor. El listado lo presento a continuación de forma resumida, con un par de vueltas que sí podrían ser tomados en cuenta a la hora de hacer un juego:

  • Ácido, pozos de lava o fondos con puyas: Utilizados ampliamente en Mario Bros., Sonic o Prince of Persia. En el artículo recuerdan educadamente que, en la realidad, estar tan solo cerca de un pozo de lava te puede cocinar vivo. No recuerdo algún juego de plataforma que tome esto en cuenta. Un truco más para el repertorio de cosas que sí se pueden usar.
  • Enemigos o poderes que no tienen ningún sentido: frutas y pastillas son las grandes armas de un personaje para enfrentar fantasmas. Por lo general son objetos absurdos que no guardan relación con la realidad, a menos que pienses que consumir hongos realmente dobla tu tamaño. Supongo que estos elementos eran utilizados en su momento para presentarlos grandes y resaltantes, y así saltar las limitaciones gráficas de una consola. Realmente no veo cómo esto pueda estar gastado, si hay juegos que han logrado innovar sobre esto (pensando en Katamari Damacy, uno de mis juegos favoritos de todos los tiempos).
  • Passwords largos e ininteligibles: De cuando los cartuchos no tenían espacio para salvar juegos. Gracias al cielo que han sido reemplazados. Aún así, el tema de cómo y cuándo dejar al jugador guardar un juego despierta pasiones.
  • Enemigos que siguen un patrón repetitivo: En su momento no lo ví, pero el último jefe de Sonic 2 es de lo más predecible. Los patrones pueden ser más largos, pero lo cierto es que eso le recuerda al jugador que está jugando un juego. Sin embargo, pienso que patrones bien elaborados calan mejor que una mala inteligencia artificial.
  • Cuchillas rotativas/Bloques que caen: El punto que más risa me da. Definitivamente los jefes de los niveles jamás tenían que salir de sus fortalezas, por la cantidad de trampas que habían. Esto me da una idea buenísima: ¿qué tal un juego donde un jefe de nivel debe salir de su nivel y… [completen la idea 😉 ]
  • Puntos: Creo que los puntos no se van a alejar en un buen tiempo. Es la manera más objetiva de medir cómo lo hizo un jugador.

También incluyeron otros puntos que casi lo logran:

  • El vendedor más grande del mundo: Aquél que está en medio de una montaña solitaria y tiene de todo para el jugador. Pienso en un juego de estrategia donde eres el vendedor y debes manejar el tiempo entre conseguir esos peligrosos objetos y atender clientes.
  • Paredes invisibles o puertas pintadas: Frustran al jugador. Gran causal de abandono de un juego. Al igual que los enemigos con patrones repetitivos, le recuerdan al jugador que solo está haciendo eso: jugar un juego.
  • Salto múltiple: Físicamente imposible.
  • Capacidad infinita de carga: Siempre a la orden del día. Agarra ese piano, no importa lo grande que sea
  • Incapacidad de nadar: Esto siempre me molestó de los dos primeros Grand Theft Auto. Los personajes se ahogan, literalmente, en un vaso de agua.
  • Plataformas que flotan sin razón aparente: Auténticos monumentos que desafían la física.

En fin, léanse el artículo, y les lanzo una pregunta:

Dados estos trucos gastados en el diseño de videojuegos, ¿cómo les ponemos vida nueva?, ¿qué giro le damos para que sean nuevamente frescos?, ¿qué juego pensarías hacer en base a esto?

(PD: Las ideas que doy son sólo eso, ideas. Eres libre de tomar prestado algo de este artículo, o los comentarios e implementar lo que quieras con eso. No necesitas pedir ningún permiso.)