sábado, 28 de noviembre de 2009

Creación de game engine y editor de niveles.

En el mundo de los videojuegos la creación de un game engine no es una tarea sencilla, ya que para poder implementar un motor se requiere de conocimientos en diversas área técnicas, tales como el manejo de APIs gráficas (OpenGL, DirectX), sonidos, física, inteligencia artificial, y muchas otras.

A nivel de desarrollo amateur muchas veces conviene hacer uso de uno de los múltiples motores disponibles para poder llevar a cabo la implementación de un videojuego. Sin embargo, para las personas que desean hacer del desarrollo de juegos una actividad profesional (por ejemplo, como Ingeniero de Desarrollo), es altamente recomendado el poner en práctica los conocimientos de programación y de diseño de interfaces para programar un game engine y un editor de niveles.

Es así como desde hace algunos años he destinado tiempo de mis ratos libres para trabajar en un proyecto personal de desarrollo de un game engine 3D orientado a juegos en tercera persona. A pesar de haber estudiado Ingeniería Civil en Computación, esto me ha servido para refrescar y profundizar mis conocimientos en el área de modelamiento geométrico, física newtoniana, inteligencia artificial (máquinas de estados finitos, lógica difusa), y muchos otros conceptos que si bien pueden llegar a sonar un poco complejos y/o abstractos, se entienden muy bien al momento de aplicarlos en el computador y observarlos de forma visual.

A continuación publico una imagen del editor de niveles que he desarrollado, el cual permite entre otras cosas cargar modelos 3D en distintos formatos (COLLADA, 3DS/MAX, MD5, OBJ, etc), los cuales pueden ser posicionados en un mundo tridimensional (coordenadas X, Y, Z), y esta información es almacenada en formato XML como parte de un nivel de un juego.





Como dato final, puedo decir a modo personal que una de las cosas más complicadas en la creación de un editor de niveles es la usabilidad de las herramientas que uno dispone para que sean utilizadas por los diseñadores de los juegos, ya que la idea es que el editor sea lo más cómodo, fácil de usar y que no sature al usuario con múltiples barras de herramientas, botones y otros artefactos, pero siempre teniendo en cuenta que el editor no debe sacrificar el potencial de las múltiples funcionalidades que están disponibles para diseñar el videojuego.

miércoles, 25 de noviembre de 2009

¿Qué es un Game Engine?

Un Game Engine o "motor de juego" es una pieza de software que permite a los desarrolladores implementar los aspectos técnicos involucrados en un videojuego, tales como los gráficos, sonidos/música, detección de colisiones, y muchas otras tareas complementarias.

En la actualidad existe una serie de motores especializados en 2D y 3D, tanto de tipo comercial como del mundo open source, los cuales pueden ser usados por los desarrolladores para implementar sus videojuegos, ya sean de tipo FPS, RTS, u otra categoría.

La utilización de un game engine permite que los desarrolladores puedan centrar sus esfuerzos en la implementación de el o los videojuegos diseñados, ahorrando las tareas de tener que crear desde cero toda la infraestructura que soportará el universo del juego. Sin embargo, para que esto pueda resultar, en algún momento alguien tuvo que haber diseñado y programado el motor, lo cual es una tarea bastante compleja que puede llegar a tomar bastante más tiempo que el desarrollo de un solo juego.

Para facilitar la creación del mundo en un videojuego, los game engines proveen herramientas como editores de geometrías, editores de sistemas de partículas, etc., cuyo objetivo es proveer funcionalidades visuales que permitan a los desarrolladores ir observando en todo momento cómo se verá el juego al momento de ejecutarse.

Un buen sitio que permite revisar el estado del arte de los motores para distintos lenguajes de programación es DevMaster, en donde pueden encontrarse los motores pagados y gratuitos más populares para ser usados con diversos lenguajes, tales como C++, Java y otros.

Junto a esto, una excelente noticia fue la reciente liberación del motor Unreal Engine 3, el cual fue utilizado para crear los juegos Unreal Tournament 3 y Gears of War. Usando esta tecnología es posible que desarrolladores amateurs puedan experimentar gratuitamente (mientras sea sin fines comerciales) con herramientas de primer nivel para realizar su propias creaciones.