miércoles, marzo 31, 2010

Ya está aqui: Nvidia GF100

Al fin está al alcance de todos (bueno, es un decir) la nueva serie de tarjetas de gama alta de Nvidia.  Los modelos disponibles ahora son la 480 y la 470. Hay que aclarar, para los que han esperado mucho por ellas, que estos modelos iniciales aún no explotan toda la capacidad de la arquitectura GF100. Algunas secciones están deshabilitadas por problemas de fabricación, así que podemos esperar un poco más de los futuros vástagos de esta rama.
Ya andan los benchmark por ahí, comparando las GF100 con las HD5000. De lo que he leído me parece que por el momento la 5970 es la reina del segmento de gama alta, pues la GTX 480 apenas se le aproxima. Sugiero esperar un poco más, que en definitiva, el que espera lo mucho espera lo poco, hasta que Nvidia logre sacar modelos que realmente compitan con la 5970.

martes, marzo 30, 2010

Capturas de pantalla en Ogre

Me estaba resultando bastante molesto el tema de capturar pantallas en Linux, así que me di una vuelta por el foro de Ogre a ver qué había al respecto. Resulta que es muy fácil de implementar, con Ogre::RenderTarget::writeContentsToFile(). Aquí les muestro cómo crear muy rápidamente un nombre aleatorio y guardar una captura de pantalla a jpg:

int rnd1, rnd2, rnd3;
rnd1 = 0+(int)(9.0 * rand() / (RAND_MAX+1.0));

rnd2 = 0+(int)(9.0 * rand() / (RAND_MAX+1.0));
rnd3 = 0+(int)(9.0 * rand() / (RAND_MAX+1.0));
String tmpname =  "screenshot"+StringConverter::toString(rnd1)+StringConverter::toString(rnd2)+StringConverter::toString(rnd3);
win->writeContentsToFile(tmpname+".jpg") ;


Se aceptan sugerencias y mejoras.

lunes, marzo 29, 2010

Cambio de escenarios

Hoy he concluido la implementación básica del cambio de escenarios. Aún quedan errores, pero en esencia, funciona sin explotar la aplicación. Solo me queda pulir el proceso y probarlo a fondo. La idea actual que he definido con el resto del equipo es que tendremos locaciones divididas en áreas y puntos de transición hacia otras locaciones, al estilo de Fallout 2 y Dragon Age.
Ya estamos más cerca de una primera versión, tal vez un tech preview muy sencillo para poner a prueba el juego en un entorno más amplio. Solo falta definir el sistema de colisiones, que tenía pensado hacer con btOgre, pero desgraciadamente la falta de documentación y soporte por parte del autor no me han permitido tener un prototipo que funcione. Así que estoy pensando volver a probar MOC, que tal vez no sea un sistema de físicas completo, pero al menos me resuelve el problema de las colisiones y está mucho mejor documentado.
Y ya que hablamos de mapas, aquí les tengo una primera versión de cómo se ve nuestro mundo:

sábado, marzo 27, 2010

Metro 2033

La industria de los videojuegos se concentra en USA y Japón, eso lo sabemos todos. Por eso, cuando algún desconocido estudio polaco como CD Projekt lanza un título que obtiene el premio al RPG del Año, o un pequeño estudio argentino como NGD Studios se mete con éxito en el mercado de los MMORPGs con Regnum Online, o un título ruso tiene una acogida favorable, no puedo menos que alegrarme.
Me alegra porque demuestra que el desarrollo de juegos no es exclusivo de USA y Japón, si no que también puede prosperar dondequiera que haya un poco de inteligencia. Y no vamos a negarlo, también un poco de pasta para financiar el trabajo. Esto no debería ser nuevo, incluso acá, que no existe interés alguno en los videojuegos que no sean educativos, puedes encontrar gente interesada en el desarrollo de juegos y en experimentar con motores como Ogre o Irrlicht.
4A Games ha pegado bien con su juego Metro 2033, un FPS de horror que se desarrolla en el metro de Moscú, en un mundo post-apocalíptico. Lo más interesante es que 4A ha desarrollado su propio motor, que planean licenciar a otros desarrolladores. A juzgar por el trailer la tecnología es muy buena, de hecho, fue lo que me inspiró a trabajar un poco más en la implementación de IA para personajes de relleno en mi proyecto.

viernes, marzo 26, 2010

Vista isométrica

Hoy ve vuelto a retomar la proyección ortográfica para la vista isométrica. Hace tiempo hablé al respecto, y de hecho así fue como lo implementé en la primera versión, pero cuando el cambio a la rama 1.6 de Ogre tuve que eliminarlo porque no se veía igual que en la 1.4. De paso, una funcionalidad incorporada en la 1.6 me permitió agregar el zoom de forma muy fácil: Ogre::Frustum::setOrthoWindow.
setOrthowindow toma dos parámetros que son  el ancho y alto del área visible en unidades del mundo (no en píxeles). Lo siguiente:

camera->setOrthoWindow(150,100) ;

le indica a Ogre que muestre un área de 150x100. Aumentando esos valores ampliamos el área visible, lo cual es un zoom out. Al reducirlos,  hacemos un zoom in.

jueves, marzo 25, 2010

SRWare Iron

Ayer un colega me señalaba la existencia de SRWare Iron, un navegador basado en Chrome. Hoy además me mostró una comparación rápida entre ambos, al parecer SRWare Iron soluciona problemitas de privacidad y además me dice que es rapidísimo.

miércoles, marzo 24, 2010

Nuevo elemento

Hoy hemos incorporado un nuevo personaje al mapa, un elemento presente en casi todos los juegos y olvidado por los jugadores. Las hemos golpeado con mazas en los RPG de fantasía, desintegrado con un fusil de plasma en los FPS de ciencia ficción, saltado sobre ellas... en fin. Y con toda modestia, lo mismo la vemos en un humilde juego amateur que en un título AAA.
Démosle la bienvenida a la Caja de Madera!

Tío, esto no estaba aquí ayer...

martes, marzo 23, 2010

Cómo se hicieron las heridas de Left 4 Dead 2

Advertencia: esto es bastante avanzado (al menos para mí). No se apenen si al final se quedan sin entender nada.
Aquí pueden encontrar un enlace que a su vez referencia un documento de un empleado de Valve, bastante interesante para torturar tu cerebro, explicando a grosso modo cómo se lograron los efectos de heridas en Left 4 Dead 2. Intentaré explicar de qué va el asunto, más o menos como lo entendí yo. La idea es utilizar un elipsoide para calcular la parte de la geometría a remover, luego se adjunta un modelo con la herida a la malla original y se utiliza una textura proyectada. Además, interviene una tercera textura con la sangre.
Visto así, no parece tan difícil. Una lectura obligatoria, ahora que el desmembramiento y la destrucción de cuerpos en tiempo real se ha vuelto algo común, o más bien esencial, en los juegos. Por mi parte, he estado investigando acerca de la deformación de mallas en Ogre, eliminación de geometría, etc, aunque sin resultado aún.

Seguimos trabajando

Esto de trabajar con un artista se pone un poco complicado a veces. Los artistas demandan mucho del motor que uses, ellos siempre quieren que su trabajo se vea lo mejor posible, pero no siempre los motores pueden seguir el ritmo, o simplemente no cuentas en tu equipo de desarrolladores  con un mago de los shaders que pueda suplir las carencias.
El caso del normal mapping ilustra bien qué tan limitados podemos estar. Para tener un mapeo decente el artista tiene que trabajar doble: primero hacer un modelo de menos polígonos, quees el que se utiliza en el juego como tal y luego hacer uno con más polígonos, del cual se obtiene el mapa normal. Como me decía Ludovic, eso lo obliga a planificarse mejor a la hora de modelar, pues de la versión inicial tiene que obtener una segunda con más nivel de detalle.
Por el momento nos espera un largo proceso de pruebas hasta encontrar el método adecuado.

domingo, marzo 21, 2010

Otra sacudida

Ayer tuvimos la sacudida más fuerte que yo recuerde. Esta fue de 5.5 grados en la escala Richter y sucedió a las 2:08 de la tarde, mientras estaba aquí en la oficina. Me resulta difícil explicar lo impresionante que es sentir un temblor en un edificio alto, solo les diré que las paredes parecen moverse, o de verdad se mueven. Trabajo en una edificación antigua, que no tiene ninguna protección contra sismos, excepto paredes muy gruesas, que supongo que sea una desventaja a la hora de algún movimiento de más de 7 grados. Por suerte ya nos mudamos pronto.
Más tarde tuvimos otro, de 4 grados, aunque el reporte oficial menciona tres temblores perceptibles posteriores al de las 2 de la tarde y hasta las 5. Se han informado de daños ligeros en algunos edificios y las personas residentes en edificios han acampado fuera de ellos, al menos durante la tarde de ayer. Por mi parte, hemos tomado precauciones y a pesar de la fuerza del movimiento sísmico de ayer, no he notado nuevos daños en mi casa aparte de las grietas que ya estaban ahí.

sábado, marzo 20, 2010

Un 56% tiene Dx10

Leo en esta anotación que según una encuesta de Steam, el 56.5% de los usuarios ya tienen sistemas compatibles con DirectX 10/11. Dicho así, parece mucho, pero si también decimos que un 43.5% de los jugadores no tiene Dx10 aún,  pues también me parece una respetable cantidad de usuarios que no comprarán nuestro juego si solo se vende con un renderer basado en Dx10.
No dudo que esto se solucione a corto plazo, cuando Windows 7 demuestre que es un buen sucesor de XP y más jugadores migren a esta nueva plataforma, justificando el desarrollo de juegos que requieran Dx10/11.

viernes, marzo 19, 2010

Empezar en la industria del videojuego

En Vidaextra han publicado un breve resumen de una conferencia que duró nada menos que seis horas. Consejos de gente importante de la industria, que no está de más leer y tener como referencia obligada para los que quieren (o mejor dicho, queremos, porque yo también me incluyo) meterse en el negocio de los juegos. La primera parte aquí y la segunda aquí.

Normal mapping!

Ya funciona el normal mapping! El shader en cuestión es éste, y lo que me tuvo a punto de asesinar a alguien ayer (para que después no digan que los videjuegos no incitan a la violencia) fue el segundo mapa normal.El primero, que es el que ven en la imagen, es gris y con puntos. El segundo es más rojizo y no tenía el punteado que le da ese efecto de relieve, o tal vez sea el color.  El caso es que a pesar de la resaca que tengo justo ahora, se me ocurrió probar a cambiar de textura y ver qué pasaba.
Es la primera vez que pruebo el método y tengo que reconocer que el cambio es increíble, aún cuando hay algoritmos más avanzados, como el parallax mapping. Que dicho sea de paso, también está soportado por Ogre, la cosa es encontrar el shader adecuado. Los ejemplos incluyen un shader de offset parallax mapping, que es el más primitivo, si no recuerdo mal el más avanzado es occlusion parallax mapping. Por favor que alguien me corrija si ando desencaminado.

miércoles, marzo 17, 2010

Nuevo edificio

Hoy recibí una versión preliminar del edificio, incluyendo texturas. El primer modelo tuvo que ser desechado porque algunas cosas no funcionaban, éste que ven aquí es el segundo intento, que incluye textura y mapa normal. Me parece que no se ve mal, a pesar de que faltan detalles por agregar como las puertas y ventanas.
Aún o he podido probarlo en Ogre, aunque exporta bien, porque el exporter de Blender me genera referencias a shaders que dan error, a pesar de que están incluidos en el proyecto. Realmente esto fue algo que no me esperaba, que el exporter identificara la segunda textura como un mapa y me generara los materiales adecuados para usar bump mapping. Como mencioné anteriormente, el objetivo era usar normal map, pero requiere modificar el material a mano. Si esta vía genera el material apto para el uso, supongo que será mejor dejarla como está, aunque el método no sea tan avanzado.

martes, marzo 16, 2010

Descarga de escenarios

El proceso de descargar los escenarios se ha puesto bastante complicado. El gran escollo aquí es que hasta la versión 1.6, Ogre no tiene una forma de eliminar el terreno, solo con SceneManager::clearScene(). Dicha función elimina todos los nodos y por lo que me parece, deja las entidades. Por lo cual es necesario recrear los nodos al volver a cargar un mapa. Y ahí está el problema, porque por alguna razón, cuando elimino un nodo, previa separación de las entidades adjuntas, no se hace efectiva la separación. Al intentar adjuntar la entidad otra vez al nodo recién creado me dice que ya se encuentra adjunta a un nodo o hueso.
Sin lugar a dudas, el terreno en Ogre ha sido uno de los elementos más deficientes en las versiones anteriores a la 1.7. Me resulta molesto que un detalle tan tonto tenga detenido todo mi trabajo.

lunes, marzo 15, 2010

Tiempo perdido

Hoy sí me he dedicado en grande a la tarea de la descarga del mapa actual, para de ahí pasar a cargar un nuevo escenario. Y me he encontrado con un serio inconveniente que me atrasa: los archivos que estoy modificando generan una serie de dependencias de compilación bastate larga, casi que hay que recompilar todo el proyecto. Eso, con un simple Celeron, toma casi un minuto. Así que un cálculo no muy preciso arroja que hoy he perdido entre 30 y 40 minutos solo compilando el proyecto. Se dice fácil, pero es una pérdida respetable de productividad.
En fin, esto es algo que está fuera de mi alcance, a menos que alguien me done un Core 2 Duo, así que tendré que seguir con lo que tengo.

domingo, marzo 14, 2010

Cambio de escenario

He iniciado el trabajo que servirá de base para el cambio de escenarios. No soy muy fan de los mundos donde puedes corretear por ahí en escenarios infinitos, amén de que no tengo ide a de cómo implementarlo, así que el diseño del juego se basa en mapas limitados con puntos de paso de un escenario a otro, e incluso encuentros aleatorios.
Esto se dice fácil, pero requiere reiniciar un montón de elementos de la escena y ocultar otros. Por ejemplo, las entidades NPC se desactivan, volviéndose invisibles, pero los elementos estáticos del mapa deben ser eliminados. Existe el caso especial en el que una entidad NPC pasa de un mapa a otro, pero eso es trivial. No debería ser una tarea compleja, pero sí conlleva mucho trabajo y pruebas.

sábado, marzo 13, 2010

Imágenes de juego de Fallout: New Vegas

En estos días he estado un poco ocupado y se me han pasado algunas cosas. Entre ellas las nuevas imágenes de Fallout: New Vegas. Recuerden que estamos (o estuvimos) en época de GDC y los desarrolladores lucen sus mejores galas. O screenshots, videos, etc. A propósito, Uncharted 2 arrasó con los premios de la GDC.
No podría decir lo mismo, de Fallout: New Vegas, que no pinta muy impresionante en el apartado gráfico. Les recuerdo que este proyecto usa el motor Gamebryo, típico de los productos de Bethesda, y más que usar el mismo motor casi parece una copia de Fallout 3. Incluso el estilo artístico es el mismo.
No obstante, no se juega Fallout por sus gráficos y como bien dicen en Vidaextra, lo mismo daría si saliera con gráficos de NES. En la mecánica de juego es donde se espera ver la mano de Obsidian y de algunos de los desarrolladores de la saga original. Autos destrozados? Pues no están ahí de adorno, si no para que conduzcas tu propio auto. Humor? Qué les parece un mutante con peluca?
En fin, habrá que esperar.

viernes, marzo 12, 2010

Ni glow, ni decal

Pues ninguno de los dos métodos me funciona. Al parecer el shader GLSL del glow tiene sus cosas, porque  no compila en mi GT9500. Además al seleccionar la entidad la pantalla se pone negra y no veo más nada. Estoy en proceso de probar el demo original a ver qué sucede.
Intenté usar el método descrito aquí para implementar un decal basado en una malla, pero tampoco funciona. No obstante, tendré que revisar a fondo, porque la idea subyacente es muy sencilla: se crea un ManualObject,  se le adjunta al objeto seleccionado y se ubica a la altura del terreno. Algo tan sencillo debería funcionar, así que tendré que revisar con cuidado qué es lo que hice mal.
Por el momento seguimos con el bounding box de toda la vida, hasta que mis conocimientos de Ogre me permitan hacer algo más profesional.

jueves, marzo 11, 2010

OpenGL 3.3 y 4.0

La información está en Phoronix y en el sitio oficial. Ya tenemos la versión 4.0 de la especificiación y además también una actualización para la rama 3. Apenas hemos tenido tiempo de acostumbrarnos a la versión 3 y en algunos casos ni siquiera tenemos soporte y ya está lista la próxima versión. Al parecer los de Khronos se están poniendo para las cosas antes que las cosas se pongan para ellos.
Hay mun montón de adiciones, mayormente en el campo de los shaders, y más interoperabilidad con OpenCL.

martes, marzo 09, 2010

Stencil glow

En los foros de Ogre me encontré un ejemplo de cómo hacer un stencil glow (es como un brillo alrededor de una malla) que estoy estudiando para implementar la selección de entidades. Hay otra forma de hacerlo y es mediante un decal en el terreno, asociado a la entidad seleccionada. En verdad, este segundo método es mejor y si no ando muy errado no requiere shaders, pero no he hecho una búsqueda exhaustiva al respecto y el stencil glow ya está ahí, solo hay que adaptarlo. Lo cual no quiere decir que sea un trabajo fácil, pero en verdad, no hay trabajos fáciles cuando se trata de hacer un juego.Habrá que ver el resultado final del glow.

sábado, marzo 06, 2010

Modelando para juegos

En estos días he tenido que interesarme un poco más por el proceso de creación de arte 3D para proyectos en Ogre. Tengo un artista trabajando en modelos arquitectónicos, pero sin experiencia en modelado para juegos. El caso es, que por lo menos en Ogre, el script de exportación no soporta todas las funcionalidades que un artista 3D tiene en su herramienta. Hay límites de polígonos, texturas, modificadores aplicables a los materiales, etc. Como meida de seguridad, hemos asumido que solo puede contar con las técnicas básicas y materiales sencillos.
Aún nos quedan una buena cantidad de pruebas por delante para saber hasta dónde podemos llegar y qué nivel de realismo podremos alcanzar. Por el momento el primer edificio exporta bien y se ve, aunque aún no tengo el material y además esperamos poder utilizar normal mapping. Hay todo un conjunto de posibilidades como edificios grandes con interiores explorables y espero que muchas otras cosas aparezcan por el camino.

viernes, marzo 05, 2010

Lo prometido es deuda.
 
  
  
  
 

Estas son algunas de las imágenes que tomé ayer de Regnum. A pesa de que hubo una actualización hace dos días, ésta no es la esperada renovación del motor que NGD ha estado anunciando y que además incluye mejores modelos (se habla de un salto de 1000 a 6000 polígonos para los modelos de personajes). Ese es uno de los detalles visuales más deficientes del juego, que tiene unos escenarios bastante aceptables, sin embargo las animaciones y modelos dejan mucho que desear.
Dicha renovación debería empezarse a probar hoy y de más está decir que la espero con entusiasmo. Lo cual no es muy compartido, pues la mayoría de los jugadores de Regnum Online abogan por mejoras de balance y prefieren el actual motor, que funciona en tarjetas viejas. Obviamente es de esperarse que el nuevo, a pesar de implementar LOD, pida un poco más para mover los polígonos extra.

jueves, marzo 04, 2010

Nvidia Geforce GT9500

Desde hace un par de días tengo en pruebas mi nueva GT9500. De paso, les recomiendo, por casi el mismo precio podrían adquirir la GTX240. Tengo que decir que la diferencia en la calidad del al imagen fue notable, saltaba a la vista en cuanto la puse y levanté el X. La configuración fue muy sencilla y todo funcionó perfecto desde el primer momento.
Me he vuelto a aficionar al Regnum Online (en especial cuando descubrí que tengo 2000 ximerin que no sé de dónde salieron) y pensé tenerles algunas capturas de pantalla, pero por alguna razón no funcionaron. También estoy en espera de una actualización de Eternal Lands, que Radu anunció en su blog hace unos días, que incluye modelos mejorados (seguimos en espera del nuevo motor 3d que se prometió hace un año).
También pude probar el proyecto y asegurar la consistencia del SVN. El rendimiento es bueno aunque incomparable al de la HD4770, alcanzo unos 100 cuadros como promedio en pantalla completa. No es para tirar cohetes, pero no me esperaba más. Al final, fue un obsequio y no podía exigir mucho.

miércoles, marzo 03, 2010

Todo en Linux

Ayer me di a la tarea de armar todo lo necesario para el trabajo con Blender en Linux, porque a fines de semana debo recibir modelos nuevos. Las herramientas de línea de comandos no están disponibles para descarga en versión Linux (si tienes el fuente pues no es necesario) y el CEGUI Mesh Viewer tampoco. Lo primero tiene fácil solución, la herramienta más importante, que es el OgreXMLConverter, viene en los fuentes de Ogre. Compilarlo es trivial, y si has compilado el fuente de Ogre, ya debe estar listo. Si no, solo vas al directorio donde está (después de ejecutar el configure de Ogre) y haces un make.
CEGUI Mesh Viewer está en el svn de los add-ons, en cambio su compilación no funciona. Nada que no pueda solucionarse creando a mano un SConstruct, aunque esto quedó para después.

martes, marzo 02, 2010

Capturas de pantalla en Xfce 4

Un post rápido para explicar cómo resolví el problema de las capturas de pantalla en Xfce. Esto era algo que me venía molestando desde hace tiempo y la solución es simple. La aplicación a usar es xfce4-screenshooter y solo necesitas crear un atajo de teclado (Configuración/Teclado/Application shortcuts) que ejecute:

xfce4-screenshooter -f -h

La opción -f captura la pantalla completa, mientras -h evita que salga el cuadro de guardar.

Volviendo a MSVC

Ayer un candidato a miembro del equipo retomó el trabajo con Visual C++. Así que descubrí montones de pequeños detalles que no funcionan como por ejemplo algunso return faltantes,que solo generan advertencias en gcc. También resultó que advirtió algunos fallos y además me me percaté de que el svn no estaba tan actualizado como debía.Por suerte ya debería estar funcionando como debe ser.
He tomado debida nota de que debo dedicar algún tiempo a trabajar otra vez con Visual C (tengo que actualizarme a VC Express 2008) y mantener un mínimo de actualización. Igual que el svn, debo garantizar cierta consistencia y actualización periódica.

lunes, marzo 01, 2010

Ogre 1.7

Ya está aquí la versión final de la rama 1.7, Cthuga. Hay algunos arreglos desde la  RC1, pero el mayor atractivo es el nuevo renderer de terreno. Por el momento no he probado la nueva rama, ya que no hay mantenedor para el SDK de Code::Blocks, pero en cuanto tenga algún resultado les hablaré al respecto.