Dado el trabajo que estoy teniendo con irrlicht en este momento me he dado a la búsqueda de herramientas 3d para modelar, texturizar, animar, hacer niveles (bsp), etc, etc. Me he pasado por distintos foros (el de irrlicht, gamedev.net, stratos, solocodigo) y muchas veces se hacen post en este sentido, así que he empezado a reunir y probar unas cuantas.
Como he de coordinarme con el grupo, decidí hacer un pequeño wiki para reunirlas (!un wiki para reunirlas a todas y atarlas..). Apenas hay como unas 3 o 4 reseñas así que la invitación es para aquellos que sepan manejar una de estas herramientas (3ds Studio, Lightwave, Blender, irredit, visual editor, gile[s], wings, Maya, Modo, fragmotion, Poser, etc) a que dejen su aporte, al fin y al cabo es probable que en el futuro uno se beneficie de sostener el wiki.
Nvidia es uno de los proveedores de chip gráficos mas grandes del momento, con orientación principal hacia la industria del entretenimiento y como tal la de los videojuegos. En ese camino Nvidia ofrece continuamente un conjunto de herramientas y demostraciones de lo que se puede lograr con las tarjetas que ellos potencian (evidentemente) y de eso se trata el Nvidia SDk, de un conjunto de ejemplos que ilustran técnicas para lograr efectos espectaculares con un gpu, bien sea a través de de OpenGL o DirectX.
El Nvidia SDK sirve de referencia para aquellos que quieran sacar el máximo rendimiento de la tarjeta, ya que posee un conjunto vasto de ejemplos documentados, con sus respectivos códigos y ejecutables que van desde lo mas “básico”, como es texturas, sprites, glow, bump mapping y suavizado por normales, hasta algunos como Dynamic Ambient Occlusion, HDR Rendering y Realtime Raytraced Refraction, todo esto vía Hardware.
En el marco del GDC 2007 se han liberado nuevas versiones no solo de este, sino de sus otras utilidades: FX Composer 2, Shader Library, SDK 10, GPU-Accelerated Texture Tools, PerfHUD 5 y ShaderPerf 2. En el caso particular del SDK 10, el nuevo enfoque es hacia las tarjetas de generación 8 (Nvidia 8800) y la llegada de DirectX 10 para Windows Vista.
Estos son algunos Screenshots de los demos que mas me llamaron la atención:
Conquer Online es una mezcla de personajes 3d, fondos isometricos, arte al estilo de la China imperial y gente saltando como loca. Tambien tiene la particularidad de que posee muchos jugadores sin teclado, debido a que al menos en los 2 servidores en lo que jugué muy pocas personas usaban el sistema de chat. Hay que ver que en otros juegos es totalmente al revés, es decir, los GM tienen que moderar los chats para que las personas dejen de escribir tantas estupideces.
Gráficos Los fondos no son nada del otro mundo, aunque están bien dibujados, con un estilo particular, ya que no se crearon totalmente para emular el 3d, sino son mas bien con un estilo “hiper-realista” que tanto se ve en estos juegos isométricos.
Los personajes son aceptables, de hecho, como es común en los juegos en linea Free to Play, son mas bien poco detallados y tratan de destacar mas en el diseño. Particularmente, los personajes cambian de acuerdo a la armadura que lleven puesta y es posible cambiarles el look del pelo o el color, pagando una cierta cantidad de dinero o comprando pociones. También es posible por una cantidad mínima (500) adquirir un nuevo avatar para el personaje, con un npc que los ofrece.
Jugabilidad El juego tiene bastantes fallos, especialmente en cuanto al balance jugadores- monstruos, trabajo en equipo y uno que otro error en los niveles.
Personajes: Es posible escoger entre 5 diferentes profesiones: Guerrero, Troyano, Arquero, Taoísta de Fuego y Taoísta de Agua. Lo único diferente con respecto a las clases de otros juegos es el troyano, que es como un guerrero liviano con alta agilidad, de resto taoísta = mago, con las diferencia de estilo de ataque y que el de fuego cura, mientras que el de agua revive.
Misiones: Al principio el sistema de misiones es algo confuso, debido a que dan mucha información dentro del juego para completarlas (las pistas son algo vagas), por lo demás existen todo tipo de misiones, cargar cosas de un lado para otro, dedicarse un tiempo a la minería, derrotar uno que otro monstruo, CASARSE, etc. Hasta nivel 90 mas o menos hay bastante diversión (según cuentan, no pienso llegar a ese nivel ni loco) y después de eso, como en muchos juegos, está implementado el sistema de revivir.
Mascotas: Existen como summons y es bastante complicado, porque solo los personajes revividos pueden aprender esta magia, además de que van adquiriendo la capacidad a nivel 15 y 40. Además de esto hay mas bien pocos, un soldado que te acompaña y 5 mascotas diferentes.
Magias: Cada clase como siempre viene equipado con magias y skills diferentes, estando las de siempre, es decir, aumentar un cierto atributo (mas rápido, fuerte, certero, ágil, etc), algunas magias de echar rayos, fuego, curar,envenenar, fuegos mas grandes, rayos mas grandes y todas esas cosas. En realidad no hay muchas, ni tampoco muy variadas.
Pelea: Este es uno de los puntos débiles del juego. El sistema de peleas no es muy activo que digamos y posee muchos errores, especialmente a la hora de escoger un blanco, a veces se forman unas montoneras de personajes y monstruos, que termina uno curando a los monstruos e intentando atacar a los personajes. Además, después de un cierto nivel los monstruos se clasifican en 2 categorías, los que son mas débiles que el personaje y no ofrecen casi experiencia, o los que son tremendamente mortales y ofrecen la experiencia que uno esperaría para avanzar de niveles.
Bueno, agregando defectos al juego, algunos servidores tienen serios problemas de congestión y la mala tendencia de botarlo a uno constantemente, no sin antes mostrar un aviso de “problemas: servidor congestionado” que no hace sino aumentar la molestia. De hecho, el juego puede tardarse un rato en “darse cuenta” que no está enviando ni recibiendo datos, lo que se traduce en que uno salta de un lado para otro creyendo que ya huyo de los monstruos y resulta que uno sigue en medio de la pelea.
Ficha técnica:
Requerimientos mínimos: Windows 95/98/ME/2000 Pro/XP, Procesador de 800 MHz, 128MB RAM, Tarjeta de video de 16Mb,1 Gb de espacio en disco,Conexion de 56k o mas
Recomendados: No especificados. Evidentemente algo mejor que los mínimos
En algunos tutoriales anteriores de OpenGL se han mencionado de manera fragmentaria los conceptos de transformaciones:
En “Primeros Pasos en OpenGL” se mencionaba de manera general algunos conceptos relacionados con las transformaciones en OpenGL, específicamente la proyección. Es recomendable revisar y entender “Primeros Pasos en OpenGL” antes de aventurarse a leer el presente tutorial.
En los “Hola Mundo 3d en OpenGL” y “Hola Complicado Mundo OpenGL-win32” se utilizaron algunas transformaciones de proyección y viewport para ajustar la inicialización de la ventana, pero sin entrar mucho en detalle acerca de su funcionamiento.
Este tutorial explora los diferentes tipos de transformaciones en OpenGL, a saber:
Proyección: Trasforman una escena 3d “abstracta”, en una imagen plana que puede ser visualizada en una pantalla.
Viewport: Ajustan el producto de la proyección a las dimensiones de un rectángulo contenedor (ventana).
De vista: Que definen y afectan la posición desde la cual se visualizan las escenas tridimensionales.
Modelado: Sirven para manipular los objetos en la escena, permitiendo trasladarlos, rotarlos y deformarlos (escalarlos).
Modelo-Vista: Son la combinación de las dos transformaciones anteriores, que desde un punto de vista práctico son semejantes.
Una pregunta no recurrente, sino obligatoria a lo hora de hacer videojuegos es ¿Por donde empiezo?. Diferentes personas ofrecerán respuestas variadas a esta pregunta. Probablemente si se hace en un foro de programadores las respuestas podrían ser de la siguiente índole:
Lo primero que hay que hacer es programar, para eso hay que aprender c, c++ , c#, assembler o algo por el estilo
Lo que hay que aprender es un API gráfico como OpenGL o DirectX
Con DirectX y OpenGL nunca se puede terminar un juego decente, lo mejor es aprender a manejar una engine como Ogre, Crystal o Torque
Con una engine tampoco se termina nunca nada, todo eso ya esta echo y lo mejor es usar un programa como RPGMaker o FPSMaker en los que no es necesario saber programar
No, lo primero que hay que hacer antes de empezar con un MMORPG es coger un libro de algebra lineal y estudiar como loco hasta que entienda que es un sistema uniforme de coordenadas, luego coger otro libro de computación gráfica y programar su propio SDK de gráficos, luego hacer un clon de mario, tetris, pacman, galaga, un rpg pequeño, mediano y grande, un juego en linea pequeño, mediano y luego tal vez si un MMORPG (bueno, esta me la invente pero ganas no me han faltado de colocarla en los foros)
etc, etc etc
Así que, ¿realmente cuanto hay que saber de todo esto para realizar un videojuego?, una respuesta que me ha parecido muy acertada es la que ofrece a manera de analogía la primera edición de la OpenGL Superbible:
In reality, yes, you can get along just fine without understanding the finer mathematics of 3D graphics, just as you can drive your car every day without having to know anything at all about automotive mechanics and the internal combustion engine. But you’d better know enough about your car to realize that you need an oil change every so often, that you have to fill the tank with gas regularly and change the tires when they get bald. This makes you aresponsible (and safe!) automobile owner.
Richard S. Wright, Jr. - OpenGL SuperBible First Edition p.221-222
Respecto mi punto de vista es:
Los creación de software no solo consta de programación
Un videojuego no consta solo de gráficos “bonitos”, de hecho muchos pésimos videojuegos son solo eso, gráficos bonitos
Todo proyecto, sea puentes o software requiere de planificación, c, ogre, xmaker y todo eso son tecnologías de creación, no metodologías de desarrollo
Como todo en esta vida la creación de videojuegos se da por etapas, uno no puede mover los brazos y esperar levantar vuelo a los 5 minutos, o lo que es lo mismo, si uno no puede hacer un clon de pacman, ¿Realmente espera terminar un MMORPG?
Todo producto bien sea comercial o OpenSource está en constante desarrollo, posee fallas y limitaciones. No creo que sea necesario aprender cada pequeño detalle que determina el funcionamiento de SDK tan complejos como un motor gráfico o de videojuego (aunque es genial si lo logra), pero si no se tiene al menos una idea de como funciona, lo mejor es ponerse a rezar para que nunca fallen o se necesite de ellos mas allá de lo que ofrecen, porque en ese momento se estará “varado” en el sentido en que menciona la SuperBible.
Si no presta atención a la experiencia de otros, eso quiere decir que le gusta cometer errores que otros han cometido, lo que no está mal, pero consume tiempo y energía moral.
Como última señal es buena idea leer un poco, no solamente de programación y gráficos, sino también de manejo de proyectos, grupos, documentación en Ingeniería de Software y otros tantos temas que se pasan por alto, solo por el afán de ver resultados a través de la programación y el 3ds Studio.