Torque Game Builder
A menudo se plantea la discusión en foros y listas acerca de si es mejor crear un motor propio o desarrollar sobre uno ajeno, sea de uso libre 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 - principalmente los independientes - tenemos como opción.

El Torque Game Builder (TGB) es uno de los productos que ofrece GarageGames como alternativa para desarrolladores independientes que desean crear juegos 2D. Si lo que deseamos hacer es un juego 3D, entonces deberemos optar por otras alternativas que GarageGames nos ofrece, como el Torque Game Engine. También tenemos una versión de Torque Game Builder para crear juegos para XNA, llamado Torque X Engine.
CaracterÃsticas principales
El TGB es un editor de juegos que nos permite prototipar o, directamente, crear nuestro juego 2D con una muy alta productividad. A diferencia de un juego creado en Flash, nuestro juego no podrá correr en browser sino que deberá ser descargado e instalado, pero tendremos otras ventajas como ser un mejor acceso al hardware (ej: uso de joysticks, seteo de resolución, etc.)
La herramienta es básicamente un editor + un motor de juegos. En el editor, que en principio me recordó algo al Klik’n'Play, nos permitirá fijar - por layer - la ubicación de los objetos de nuestro juego (sprites, sprites animados, textos, partÃculas, etc.) y algunos comportamientos simples. Todo el código lo deberemos escribir en archivos de script asociados fuera del editor del TGB. El editor en todo momento nos muestra nuestro juego de un modo muy dinámico: los sprites animados se estarán animando todo el tiempo, las partÃculas nos motrarán su efecto en tiempo real y en cualquier momento podremos presionar el botón play para ver el juego en acción de un modo casi instantáneo.
Si bien el motor del juego se encuentra escrito en C++, el juego que escribiremos deberemos hacerlo 100% en Torque Script, aunque si poseemos el TGB PRO podremos modificar el motor o agregar clases C++ para luego utilizarlas desde el juego.
Figura 1. Un screenshot del editor
Ventajas y desventajas
¿Cuáles son sus principales ventajas? Veamos:
+ La licencia de desarrollador independiente posee un precio razonable de U$S 100 en su versión estandar y U$S 250 en su versión PRO (que incluye el código fuente del motor).
+ La herramienta permite editar animaciones, mapas de tiles, sistemas de partÃculas, zonas de colisión de objetos, comportamientos simples, etc.
+ Posee un editor de GUI con una buena integración con el lenguaje de script.
+ Posee un motor de fÃsica de cuerpos rÃgidos integrado, lo cual nos permitirá crear juegos donde los objetos puedan reaccionar de un modo realista a las colisiones contra otros objetos o contra el entorno.
+ Una vez interiorizados con las funciones del motor podremos avanzar en la creación de nuestro juego muy rápidamente.
+ Nuestro juego podrá ser ejecutado en PC/Windows, Mac y PC/Linux (este último de modo no oficial). Este no es un detalle menor, tengamos en cuenta que - dejando de lado Flash que es un producto que apunta a otra cosa - herramientas que nos permitan de un modo sencillo crear juegos multiplataforma no abundan. Crear un instalador a partir de los archivos que nos genera la herramienta es muy sencillo y no requiere de preinstalaciones (como .NET framework o JVM o MFC).
+ El set de funciones que podremos utilizar es bastante amplio y es posible agregar nuevas si poseemos el código fuente del motor (TGB PRO). Inclusive podremos crear juegos multijugador.
+ El lenguaje de script es simple y entendible por desarrolladores novatos, aunque también tiene sus contras que describo en el apartado de desventajas.
Y lo que considero que son sus principales desventajas:
- La documentación es escasa. Aunque recientemente ha mejorado (gracias a la Torque Development Network) sigue siendo bastante desordenada, es dificil encontrar ayuda para resolver problemas básicos y en la doc. de referencia falta explicar que hacen algunos métodos de ciertas clases que sólo están nombrados.
- Si bien el editor es bastante estable, no se encuentra libre de cuelgues y bugs de importancia considerable.
- El editor de sprites es demasiado simple. SerÃa mucho más útil contar con un editor más al estilo Flash, aunque no tan complejo, pero que permita armar animaciones a partir de partes de bitmaps y no tener que dibujar un frame entero para esto. La diferencia entre ambos sistemas es enorme y serÃa muy deseable que un editor de estas caracterÃsticas fuera un poco más profundo en este aspecto.
- La herramienta no incluye editor de código. Para esto podremos utilizar cualquier otro como el UltraEdit, PSPad, etc. Aunque es recomendable adquirir el Torsion por U$S 39.95 más, que es un editor simple creado especialmente para el Torque Engine y nos permite depurar por breakpoints, precompilar nuestro código, lanzar automáticamente nuestro juego desde allà mismo, etc.
- El tamaño de un juego simple nunca estará por debajo de los 5 Mb dada la cantidad de archivos que deberemos incluir (como el motor y librerÃas que él utiliza). Esto si bien no es mucho, dista en gran medida del tamaño de un juego simple realizado en Flash que seguramente estarÃa por debajo de 1 Mb.
- El lenguaje de script es propietario. En lugar de adoptar algún lenguaje de script conocido (como Lua, Python, Java) utiliza uno de su propia invención llamado Torque Script. Si bien cualquier programador VB, C, C++, Java, C#, etc. se pondrá al corriente con la sintáxis en poco tiempo, el lenguaje tiene algunas caracterÃsticas indeseables, al menos para mi, que procedo a citar:
– Las variables no requieren declaración. Aunque no es necesariamente algo malo, es una decisión de diseño que para mi criterio es incorrecta. No declarar variables sólo acarrea errores y es aceptable para lenguajes de script que apuntan a realizar tareas de un modo quick and dirty pero que no es bienvenida en la programación de un juego. Fijar el valor de una variable con identificador “%cantidadVidas” y luego querer recuperar el valor de la misma especificando “%cantVidas” no generarÃa ningún error. Esto es aún peor cuando el lenguaje apunta a programadores novatos, que adoptan vicios que luego son difÃciles de remover (al lenguaje BASIC se lo suele criticar precisamente por esta razón).
– No es un lenguaje orientado a objetos y si bien comparte algunas caracterÃsticas de la OOP, no se encuentra ni cerca de conformar al programador acostumbrado a programar con clases. Sin querer entrar en discusiones de diseño, la OOP se suele amoldar perfectamente a la estructura de un juego, dada la intuitiva asociación de elementos del juego con objetos del lenguaje.
– El lenguaje es type insensitive lo cual permite la generación de una gran variedad de errores. Para el lenguaje “20″ y 20 es lo mismo, no existe la declaración de tipo y todo tipo valor es intercambiable entre variables.
– No existe polimorfismo de funciones. Lo curioso es que el lenguaje permite crear una función con el mismo identificador que otra función preexistente; en este caso el lenguaje oculta la función anterior (aunque la cantidad de parámetros sea distinta). De más está decir que este comportamiento no es el esperable por un lenguaje bien definido.
Conclusión
El Torque Game Builder es una muy buena opción para desarrolladores independientes que deseen crear un juego 2D simple o no tan simple. Como todo motor de este tipo, posee limitaciones pero las mismas están mucho más lejos de las que en principio nos podrÃa llegar a parecer. Basta con descargar desde el sitio oficial los distintos juegos de ejemplo que fueron creados con esta herramienta.
Figura 2. Algunos juegos creados con TGB
En el futuro seguiré escribiendo acerca de esta gran herramienta, atacando temas puntuales de la misma que valgan la pena destacar.
~fuzzyLogic






Me alegro que reaparezcas y que hables un poco sobre Torque.
Puntos a remarcar sobre tu nota:
* Editor: CodeWeaver (http://www.torquedev.com/), a mi juicio mejor que Torsion, es gratuito.
* El ser “type insensitive” puede ser una desventaja pero tambien una ventaja, depende muchisimo del contexto, y del momento. Como todo es una decision de diseño, que tiene sus causas y consecuencias, pero no creo que sea “per se” bueno o malo.
* Totalmente de acuerdo con vos en el peligro (y la incomodidad) que representan las variables sin declarar. Sin embargo (doy fe) la flexibilidad que aporta desde la consola, crear variables al vuelo, es grandiosa.
* Tal vez te malentendi, pero el lenguaje de scripting de Torque no “apunta a programadores novatos” (en todo caso, es solo marketing). Es simplemente una herramienta mas que el engine aporta para trabajar. Eso no significa que esté para que sea más fácil programar en Torque. Muchos de los problemas que le adjudicas, los relacionas con el hecho de ser usado por programadores inexpertos, cuando no es una herramienta para aprender a programar, sino todo lo contrario, es una herramienta que requiere ser investigada para su uso apropiado. De todas formas, es un lenguaje de fácil aprendizaje para aquel que domine C/C++.
Como nota al margen, la potencia como herramienta de un lenguaje de scripting para un game engine es tan importante que la mayoria de los engines AAA la estan implementando. La importancia de prototipar rapidamente es enorme: poder probar cambios sin recompilar esta basicamente impulsando el uso de lenguajes de scripting. Y no hace falta rehacer todo el trabajo: una vez el diseño terminado, se evaluan las partes que producen caidas de performance y se las porta al codigo interno del engine.
* Si bien se podrÃa decir que TorqueScript no es totalmente orientado a objetos, cabe destacar que los maneja: tiene plena capacidad de instanciar (y obviamente usar) objetos de clases declaradas apropiadamente desde el codigo fuente (me refiero al C++).
* Tambien destacar que cabe la posibilidad, de agregar otros lenguajes de scripting al engine, como los que vos mismo mencionas. Ya hay casos de lua, basic, python, entre otros.
P.D.: “Jacinto”, del comentario anterior soy yo, pero estaba en un lugar no apto para que supieran como firmo…
Muy bueno el CodeWeaver, me ahorraste U$S 40
Y como siempre muy valiosos tus comentarios, gracias!
~fuzzyLogic
Esos dos son los mas comunes, pero tambien tenes TIDE http://torqueide.sourceforge.net/ (un plugin muy desarrollado para JEdit).
Tambien hay (todavia sin debuging) un plugin para Eclipse cuyo nombre no recuerdo, y muchos otros con limitada o nula capacidad de debug: archivos de sintaxis para infinitos editores de texto tipo Ultraedit o N++
El plugin para Eclipse se llama TorquEDIT.
La url para bajarlo es http://opensource.kruxgames.com/torquedit/
Lo malo justamente es que todavÃa no tiene Debugging y parece que está medio colgado ya que no hay actualización desde principios de 2007
@Pragman, si llegas a andar por aca, te cuento. TorquEDIT lo agarro un programador y continuó y reescribio algunas partes de las que habian hecho en kruxgames. Ya tiene debuging, to-do list, watch y algunas cositas mas, pero sigue siendo algo incomodo en algunas cosas, por el simple hecho de ser una version muy temprana.
Tiene planeado seguirlo, aca tenes la direccion de la wiki del proyecto: http://augmentedvirtuality.pbwiki.com/FrontPage
De todas maneras, como dato al margen, las ultimas versiones de Torsion son sencillamente sorprendentes. Tiene CallStack!! En scripting!! …Fantabuloso. A mi juicio ya valen la pena los U$S40…