¿Motor propio o ajeno?
Existe una controversia que se hace presente de manera bastante frecuente en foros de desarrollo de juegos y listas de discusión. Esta controversia tiene que ver con la elección - antes de comenzar a desarrollar un juego - de utilizar un motor de juegos creado por nosotros mismos o un motor de juegos realizado por otra empresa (licenciado por una cierta suma de dinero o algún de uso libre).
Existen argumentos muy interesantes esgrimidos por ambos lados, veamos cuales son los argumentos a favor de quienes piensan que es mejor desarrollar su propio motor.
Argumentos a favor (de crear un motor propio)
. En el proceso de crear un motor se aprende mucho. Esta opinión es particularmente controversial ya que es rebatido con el argumento que el objetivo es realizar un juego y no - necesariamente - aprender a crear un motor. De este modo también podrÃamos plantear otro objetivo, previo de desarrollar el juego, que es crear nuestro propio lenguaje de script para el motor en cuestión, ya que también aprenderÃamos muchÃsimo.
. Es posible desarrollar un motor con las caracterÃsticas necesarias y suficientes para el juego especÃfico que deseamos crear. Este, en mi opinión, es el mejor argumento de todos, aunque no siempre es válido; todo depende del juego que queramos crear. Si deseamos crear un FPS clásico, no tendrÃa sentido realizar nuestro propio motor, hay muchÃsimos motores orientados a realizar este tipo de juegos. Ahora si deseamos crear un FPS donde toda parte del mapa pueda ser destruido, elegir un motor basado en árboles BSPs serÃa un error. De este modo podrÃa ser cierto que crear un motor sea necesario para crear el juego que tenemos en mente.
Existen otras razones que se pueden observar en los programadores, que aunque no son esgrimidas sà son ciertas, como que por ejemplo:
. Usualmente un programador prefiere realizar algo de cero que tomar el trabajo creado por otra persona, aprenderlo a utilizar y eventualmente modificarlo. De este modo, uno se muestra mas tendiente a crear un motor de juegos que aprender a utilizar uno realizado por otra persona.
. No es fácil tener claro qué motor es ideal para nuestro tipo de juego. Muchos motores tienen muchÃsimas caracterÃsticas que no nos interesan y tal vez algo muy simple, que nos vendrÃa perfecto, no está presente. Por otro lado, muchos motores poseen un costo que se encuentra por encima de nuestras posibilidades.
Argumentos en contra (de crear un motor propio)
. Usualmente el proyecto del juego queda totalmente olvidado. Crear un motor de juegos es una tarea compleja que requiere mucho esfuerzo y trabajo. Es común que estos proyectos lleven muchos meses y además requieran la realización de software complementario (como plugins para programas de diseño 3D o editores).
. El proyecto del motor nunca termina. Siempre es necesario agregar una funcionalidad más o arreglar un determinado bug. Si un programador espera “terminar” definitivamente el motor para empezar el juego estará años y años y nunca llegará al punto en el cual diga “ok, ahora el motor está terminado, empecemos con el juego”.
. Los conocimientos necesarios para crear un motor “decente” son muchos. Usualmente los programadores novatos eligen crear su propio motor sin tener siquiera noción de la dificultad que tendrán que enfrentar.
. Crear un motor sencillo y con un objetivo bien determinado podrÃa ser posible. Sin embargo, en muchas ocasiones el o los programadores afrontan la creación de un motor juegos muy ambicioso, mucho más de lo que el grupo de trabajo realmente podrÃa crear.
Conclusiones
En pocas palabras, existen argumentos de un lado y del otro. Como suele suceder no existe una receta o un consejo que sea válido para todos los casos y la decisión correcta depende casi siempre de los siguientes interrogantes:
. Cantidad de programadores y conocimientos que poseen. ¿Tienen relación al tipo de software que deseamos crear?
. El tipo juego que deseamos crear. ¿Realmente no existe un motor idóneo para crear dicho juego? ¿No estaremos reinventando la rueda?
. ¿Tenemos claro cuanto tiempo nos llevará crear el proyecto? ¿Será necesario crear herramientas relacionadas (plugins, exportadores, editores)?
Por último, les dejo un link a una entrevista a Markus Mäki y Petri Järvilehto de Remedy, el estudio de desarrollo que se encuentra detrás del esperadÃsimo Alan Wake y quienes fueron los autores del Max Payne. La entrevista está muy buena y tocan en parte el tema que tratamos en este post.
~fuzzyLogic




Me encanto la nota.
Conozco muchas personas que con el afán de hacer su propio motor para su juego, terminaron sin tener ni un motor ni un juego.
Para mà es claro que el problema reside mucho más en el interés de programar por programar que por una decisión consciente de los programadores sobre si les conviene usar un motor o hacer el propio.
El argumento de “quiero aprender” o “necesito un motor donde todo está hecho de arcilla deformable” son racionalizaciones para justificar el que uno esté programando por programar.
Más allá de cualquier reparo técnico, el problema del “motor” no es el core, sino las herramientas para generar contenido para el motor. Hay mucho código y necesidad de conocimientos ahà que lo que es evidente para gente que no tiene mucha experiencia.
En la actualidad, crear un engine desde cero solo se justifica si es por fines experimentales, o como bien mencionas en el artÃculo, de finalidad estrictamente delimitada (y acotada).
Emprender la creación de un motor moderno, solo es abordable por empresas de gran calibre, y aun asi, no siempre justificado. Un motor, es una plataforma en permanente evolucion y requiere un equipo completo para mantenerlo. Además la amplitud de conceptos que abarca en la actualidad es tan enorme que el equipo encargado debe contar con especialistas de distinta indole -grafica, red, fisica, manejo y creacion del contenido (graficos 2d, 3d y audio…), etc., etc.-
Es un tema sensible en Argentina, donde se ven las dos posturas. Particularmente veo como un desperdicio de tiempo y dinero las empresas locales abocadas e trabajar en su propio engine. Con la maduración de motores de bajo costo y la evolución de motores open source, el tema economico dejo de ser una escusa.
Yo no estoy de acuerdo en que sea una perdida de tiempo. Al fin y al cabo el desarrollo de un motor es una estrategia de negocios tan valida como hacer un juego. De hecho, a un desarrollo decente le podria ir bastante bien en paises como el nuestro, ya que el precio seria bastante competitivo.
Los motores open source y los de bajo costo dicen mas de lo que hacen… se aprovechan de la ignorancia de la mayoria y se jactan de utilizar tecnicas y arquitecturas que no proveen y por lo general son bastante limitados.
De todas maneras en los paises como el nuestro (en este momento) se nos hace imposible invertir en la licencia de un motor AAA para hacer un juego, ya que la gran mayoria no contamos con la experiencia o la fuerza de trabajo necesarias para aprovecharlo =o(
Mhhh Juan Manuel, la verdad no coincido en nada de lo que decis. En principio por supuesto, es valido como opinion, pero no creo que deba ser enunciado como hechos.
Por empezar una estrategia de negocios, para ser valida, debe ser viable, no es una cuestion arbitraria como a vos te parece, y eso es justamente el punto que discutiamos. Para ser viable se debe poder desarrolar en tiempo y forma un producto competitivo al nivel de los que ya hay en el mercado y ademas contar con alguna ventaja. En economia a esto se lo llama “entry barrier”, y en la industria de los videojuegos la entry barrier es fundamentalmente el engine y su contexto. La verdad es que esa conjuncion de situaciones, sumada a la cuasi total inexperiencia local en un mercado ya dominado por corporaciones, hace que hablar tan ligeramente, sobre basar una estrategia de mercado en la creacion de un engine, no sea mas que una fantasia del momento.
Lo que decis sobre los motores open source y de bajo costo es incorrecto, asi nomas. Tenes ejemplos como el Test Drive Unlimited, cuya tecnologia esta basada en Illricht; y por supuesto siempre esta Torque, que despues de juegos como el Tribes 2, de contar con la arquitectura de red mas reconocida en cualquier engine, y de ser adoptado por empresas como Vivendi y NCSoft (para un mmorpg!!) es inentendible tu opinion.
Por otro lado creo que los que realmente se aprovechan de la ignorancia de la mayoria son los que venden productos similares por cientos de miles de dolares, ponderando ventajas que pasan mas por el marketing que por la realidad.
Por lo demas, aun estoy en desacuerdo con tu ultimo parrafo, ya que en principio el valor de un engine AAA (de los que vos decis), es en realidad una nimiedad para muchos de los grupos empresarios argentinos, y tampoco es necesario que la mayoria pueda aprovecharlo, basta con la gente correcta.
Lo unico necesario para que la plata aparezca es empezar a pensar con un poco mas de madurez sobre desiciones que no tienen que ver con un juego en si, sino que son inherentes a la capacidad de llevar un proyecto adelante. Hasta que no sentemos cabeza y aprendamos a subir la escalera mirando el escalon que tenemos adelante y no el ultimo, siempre nos vamos a quedar soñando con nuestro propio engine.
Novak, por supuesto que fue una opinion. No queria herir suceptibilidades.
Con respecto a tu primer punto, veo perfectamente viable que el mercado latinoamericano, donde es imposible costar un motor de ultima generacion (me refiero a Unreal Engine 3 y a la tecnologia de id software), se inserte un producto de “similares” caracteristicas a un precio accesible para ese mercado (y lo digo con todas las comillas posibles). El mercado latinoamericano no esta dominado por esas corporaciones, sencillamente porq no es un mercado para ellos. Yo personalmente lo veo como un nicho bastante tentador (sumado a mi gusto personal por desarrollar ese tipo de productos. Y con respecto a la “cuasi total experienciencia local” que mencionas, seguramente no estas al tanto de los grupos de investigacion locales (principalmente universitarios) que se dedican al ambito de la computacion grafica y que seguramente podrian (con los recursos necesarios, claro) hacer un producto de calidad.
Con respecto a los motores open source, olvide aclarar que los estaba comparando con los engines AAA. Respeto lo que decis de Torque (que es un engine comercial), pero no es un engine de la categoria a la cual me referia y de hecho no existe ningun engine open source que entre dentro de dicha categoria.
Finalmente estoy de acuerdo con que hay que encarar los proyectos con profesionalismo, pero te repito que en mi opinion, un video juego es un proyecto tan valido como un engine, siempre y cuando (como vos bien decis) se desarrolle con el profesionalismo necesario.
Bueno parece bueno, vamos acercando posiciones. No es que hayas herido ninguna susceptibilidad, sino que tu primer post sono muy duro, y sin demasiada explicacion, pero ahora entiendo un poco mas tu forma de verlo. De hecho me parece barbaro poder debatir este tema de forma mas madura.
Con respecto a lo del costeo de un engine de los que mencionas, mi opinion sigue siendo la misma. Un Unreal Engine 3, tenes versiones (fully-functional) desde los USD8.000, y la version “promedio” en los USD200.000. Eso es plata chica para muchisimas empresas de nuestro pais, y creo que todos lo tenemos claro.
Lamentablemente el mercado latinoamericano si, esta dominado por corporaciones (Microsoft, Sony, Nintendo), y otra vez no entiendo porque opinas lo contrario. Por otro lado, es al reves, latinoamerica es una localizacion del mercado tecnologico de mucho mas dificil ingreso para una pequeña empresa, por muchisimas razones, que tienen que ver con la economia e idiosincracia zonal, y no viene al caso explayarse al respecto.
Lo de la inexperiencia, me parece que es un hecho, sobretodo si hablamos de grupos de investigacion (que los hay) en contraposicion a una industria formada, que despego de la etapa investigativa hacia la productiva 10 o 15 años atras. Entiendo que haya amores locales, pero lamentablemente, no se comparan con la experiencia adquirida por una produccion masiva internacional de multitud de empresas durante decada y media.
Ademas, pense que coincidiamos en el tema experiencia, guiandome por tu post: “…no contamos con la experiencia o la fuerza de trabajo necesarias para aprovecharlo =o(…”
Me decis que Torque es comercial, y lo es, pero cae indiscutiblemente en la categoria de bajo costo, la que tanto yo, como vos mismo nombramos. Y si de Open Source hablamos, te recomiendo que entres a www.rabcat.com, y vas a ver la participacion de la tecnologia Irrlicht en juegos como Alone in the Dark, GTA Vice City y Test Drive Unlimited (entre otros).
Si coincido con vos, en que de entrar al mercado de los engines, se deberia atacar el sector de demanda standard en cuanto a cualidades, pero donde tenga gran peso el costo de la tecnologia. Es un sector creciente, pero una vez mas, opino que es mejor decantarse por lograr un producto propio a partir de uno Open Source o uno de bajo costo, que emprender la creacion desde cero.
La unica razon que se me ocurre sea tal vez la que tiene mas que ver con un gusto o sueño personal, en cuyo caso te aplaudo de pie, si pasa por ese lado. En serio. Creo que de esa forma se han hecho grandes logros.
Pero notas la diferencia no? No se puede hablar de viabilidad, ni de mercado, ni de nada parecido, porque depende terriblemente de la voluntad y tenacidad de los que lo lleven adelante, y ya no tanto (o no solo de) factores economicos-estrategicos.
Estuve leyendo un poco lo que se fue escribiendo y en varias cosas coincido con ambos (JMA. NOVACK) y en otras no.
Estoy de acuerdo en que la decision de desarrollar un engine se acerca a una estrategia agresiva y de alto riesgo pero no hay que quedarse con que el objetivo sea unicamente el desarrollo y comercializacion del producto en si. Si ese fuera el caso, el riesgo es muy alto y me inclino hacia una solucion de bajo costo, ya sea comercial u open source, utilizandolo o extendiendolo mediante un desarrollo in house.
Existen otros factores colaterales los cuales hacen que el desarrollo de un engine sea una estrategia comercialmente viable. El desarrollo de esta tecnologia (y cualquier otra) consolida al equipo de trabajo exponiendo muchos aspectos importantes como el conocimiento y la organizacion para llevar adelante proyectos de esta magnitud.
En resumen, utilizar el desarrollo del engine como vidriera de los logros del equipo, logrando posicionarse en la industria a traves del reconocimiento.
De esta manera el engine pasaria a ser un medio para disparar el crecimiento de la empresa, retroalimentado el proceso, formando un ciclo evolutivo. Es una puerta de entrada.
Mhh complejo de llevar adelante, pero ciertamente valido.
Tenes el enorme problema del sostenimiento economico del equipo de trabajo (no me imagino un emprendimiento de este tipo a modo part-time, compartiendo el desarrollo del engine con otras actividades), pero de lograrse, los resultados son prometedores.
Bueno de paso cañazo. Ya que se podria decir que llegamos a un punto de acuerdo :D, propongo que la gente de Aquadize (excelente nombre) haga un review del Fusion Engine y lo aporte a fuzzyGameDev.
Cabe aclarar que hasta que surgio este post, y mas bien a raiz del debate posterior, es que conoci esta empresa y su trabajo, asique no estaria de mas que armaran una nota contando un poco sobre el engine (y la verdad si tienen tiempo y ganas estaria genial un postmortem).
Que dicen?
Hacemos el review entonces ^_^. Ni bien lo tengamos finalizado nos ponemos en contacto asi lo publicamos. Slds. ciriuz.
[…] o no. La idea aquà no es volver a plantear este tema (que también se trató brevemente en este post), sino comentar las caracterÃsticas de una de las alternativas que los desarrolladores - […]