Hay game engines y hay game engines y hay game engines (PART I)

Hoy me salio un titulo extraño, sobre una decisión difícil y extraña que es necesaria tomar en los estudios, y que muchas veces se toman de forma errónea ( en mi modesta opinión).

El game engine como todos saben es una de las piezas vitales del proceso de crear un videojuego, y durante muchos años una de las partes mas caras del proceso, y que muchas veces dictaba la calidad de producción de un videojuego, y de alguna forma la liga en que el estudio jugaba.

No hace mucho un game engine podria costar de entre 0 euros y calquier cosa como  1 000 000. Dependiendo de cual tecnologia seleccionavamos, nuestro juego podria ser de una forma o de otra.

Esta diferencia en los precios y las funcionalidades de las mismas, o muchas veces su falta, hizo que durante muchos años uno de los eldorados del mundo de los videojuegos fuese desarrollar su propria tecnología, para de esta forma ser diferencial y competitivo en relación a otros estudios.

Cual son las posibilidades que tenemos a día de hoy?

A) Desarrollar su propria tecnología.

B) utilizar una tecnología opensource

C) utilizar una tecnología comercial (alto, medio y bajo coste).

A) Tecnologia propria: Hace unos años la respuesta a esta duda  no era demasiado difícil, si tenia que comparar un Unreal con un precio estratoferico, un tecnología opensource o de bajo coste, o desarrollar internamente, la respuesta era cuasi siempre desarrollar su propria tecnología, en la cual se podría incluir o no componentes opensource. Una de las razones por las cuales los estudios los hacían ( y todavía lo hacen) es:

i) teóricamente menor precio, lo que era verdad hace 10 años, pero que dejo de serlo en la actualidad, dado que las tecnologías punteras cuestan cuasi menos que lo que costaría un buen tecnologo; que este ultimo es un role difícil de encontrar, y que ademas pasamos a estar en sus manos por el control que ejerce sobre las funcionalidades del engine y sobre lo que entra o no en un juego

ii) Que es una inversión, porque después podrá ser vendida a otros estudios y de esta forma rentabilizar la inversión.Esta es una pequeña falacia, porque en la realidad hasta la fecha no he conocido a nadie que compre tecnologías de estudios de desarrollo, a no ser que sean muy especifica y innovadora, porque no es solamente una cuestión de desarrollarla, es también una cuestión de soporte, servicio, documentación formación, cosas que en la mayoría de las veces están fuera del alcance de pequeños estudios con uno o dos ingenieros desarrollando el game engine del estudio. Se ha utilizado sobre todo este argumento en business plans a inversores y business angels.

iii) Que permite ser diferencial, o por otras palabras que  permite incluir funcionalidades o características en la tecnología que otros estudios no tienen, o que las tecnologías comerciales no son capaces de implementar. Este punto, a pesar de que pueda parecer caricato y ridículo, no lo es realmente, y no son raras las ocasiones en que pequeños estudios si son capaces de innovar de forma radical y avanzar con unas características de tecnología que le den una ligera ventaja. Un ejemplo, muchos pequeños estudios empezaran a jugar con la capacidad de la GPU para poder ejecutar código mas complejo, y poder de esta forma aumentar la capacidad de las maquinas de aumentar la calidad de los títulos cuasi sin cambios. Esta funcionalidad bien aprovechada fue capaz de dar una pequeña ventaja a pequeños desarrolladores con su propria tecnología. Pero en la mayor parte de las ocasiones, no se consigue realmente una diferencia real.

iii) Mas económico. Este punto no siempre suele ser verdadero. En el pasado, si lo era, porque era necesario contratar a muchos tecnologos para conseguir ser mas caro que un Unreal, Gamebryo, Glacier, o otras de las tecnologías de mayor capacidad. No lo era relativamente a otras tecnologías de menor performance como podrían ser  Unigine, Torque, C4 y muchos otros engines menos reconocidos, mas económicos, pero capaces de proporcionar una base de desarrollo.

En la actualidad este punto es dudoso, dado que las principales tecnologías comerciales, han bajado mucho de coste y se puede adquirir por lo que nos costaría tener un programador trabajando anualmente en desarrollar nuestra tecnología. Compensa? No está clara la respuesta. Para mi y en mi experiencia a dia de hoy, no compensa desarrollar su propria tecnología. Pero hay todavía muchas empresas que la han desarrollado y que siguen apostando por continuar manteniendo la.

B) Tecnología Opensource.

El problema de las tecnologías opensource, por muy buenas que sean es que no soportan todas las plataformas de desarrollo. Hay tecnologías muy buenas como Ogre3D, Irrlicht, Nebula, Horde, Panda3d y muchas otras que no soportan otras plataformas mas lejos que el Windows y el MAC. Empiezan a aparecer algunas que soportan IOS y Android, pero siempre desde un punto de vista monolítico y no totalmente integrado. El soporte suele ser buena, dado que muchos de estas tecnologías tienen comunidades de usuarios muy fuertes y muy comprometidas con desarrollar la tecnología.

C) TECNOLOGIAS COMERCIALES.

Dentro de estas tecnologías tenemos un abanico muy amplio de tecnologías que es posible utilizar en el desarrollo de un videojuego, todo depende del tipo de videojuego, de su dimensión, de su “estandardización” o “innovación” y sobretodo de la capacidad financiera del estudio para hacer face a la compra de licencias que pueden representar un coste alto para la mayoría de los estudios.

Que tecnología utilizar? La respuesta no es muy clara dado no todos los engines son igual de apropiados para estilos diferentes de videojuegos, y lo que en un game engine podria ser razonablemente sencillo realizar, en otro se puede transformar en un bloqueo constante a la capacidad de sus usuarios y programadores de intentar hacer algo realmente diferencial.

Las diferencias entre  engines, no están solamente en las plataformas, están  el lenguaje de fondo utilizado para su desarrollo, de lo flexible de su marco de programación, y claro del soporte provisto por los ingenieros, para tener total constancia de todos  parámetros y elementos  y capaces de adaptar al máximo la capacidad del equipo para entender lo que se requiere de el. Está también en los interfaces que disponibilizan a los equipos para poder, así de esta forma, poder desarrrollar mejor su trabajo.

Como ejemplo: Unreal 3 es muy potente, pero los interfaces de usuario parecen no haberse actualizado hace años. Unity es mas fácil de utilizar, pero está mas limitado en las funcionalidades y el rendimiento que se puede exprimir del mismo.

Un ejemplo de la ultima versión de Unreal 3.

To be continued …