miércoles, mayo 26, 2010

Tres días y nada

Y después dicen que los videojuegos no incitan a la violencia. Pero justo ahora me siento bastante violento y con ganas de salir y matar a varios compañeros de trabajo. Para no perder la costumbre, esta migración a la 1.7 es bastante traumática. Al fin está instalado todo, pero ahora resulta que el renderer para Ogre de CEGUI se instala en dos lugares, en /usr/include y /usr/include/CEGUI/RendererModules/Ogre. Lo cual, no sería un problema grave si no es porque los .h en /usr/include usan referencias relativas a dos niveles más arriba (../../). O sea, que ellos están hechos para estar en /usr/include/CEGUI/RendererModules/Ogre.
Bien, qué remedio, les metí mano y los arreglé.  Ahora resulta que hay algunas cosas que han cambiado y no sé como se hacen, como cargar un Scheme.
en fin que no me faltan ganas de echar atrás todo y volver a la 1.6, lo cual es una solución muy temporal, porque en cuestión de 6 meses o algo así ya tendremos 1.7 en todas partes. La otra idea es pasarme a otro motor. De paso, que sea un motor completo, no solo de renderizado.

martes, mayo 25, 2010

El lamentable caso freeimage

Pues bueno, las cosas van así: Ogre 1.7 ya no utiliza devil, si no freeimage. Freeimage fue removida del portage a finales del año pasado. Por tanto, los usuarios de Gentoo tenemos que valernos por nuestros propios medios, o como dirían en los libros de Arturo Pérez Reverte: que cada perro se lama su órgano.
Esta situación no tiene solución a corto plazo por lo que veo. Me queda, si quiero migrar ya, instalar freeimage a mano.

domingo, mayo 23, 2010

Emergiendo Ogre 1.7

Desde hace un buen tiempo que espero que la rama 1.7 se incluya en el portage, sin embargo, a pesar de que ya vamos por la 1.7, aún no hay ebuild oficial. Hay que bajarlo del bugzilla, pero además hay algunos problemas, o al menos eso me parece a mí. Todo indica que el soporte para devil fue eliminado y ahora hay que usar freeimage, que por alguna razón tampoco está en el portage. Así que estoy enfrascado en la tarea de instalar freeimage desde un overlay propio, al igual que Ogre. Y cuál es el apuro por migrar a la 1.7? Pues obviamente, el nuevo sistema de terreno, que me permitirá crear mi propio editor de escenarios sin necesidad de usar un plugin externo, amén de algunas otras cosillas que facilitarán la carga y descarga de escenas (por ejemplo, ahora puedes decirle a Ogre que descargue el terreno sin necesidad de eliminar la escena completa).

viernes, mayo 21, 2010

Arboles

Adjunto algunas imágenes de los árboles en acción, vean también el contador de triángulos. No se advierte claramente que las hojas están hechas con texturas, o sea, un solo polígono abarca varias hojas. No obstante, de los dos árboles, unos es mucho más pesado que el otro, es el que dispara el conteo a 300k. Hay una forma muy burda de optimizar, que consiste en "estirar" el árbol, escalándolo en el eje Y, sacando del área visible la copa del árbol. En especial éste se presta, porque es de tronco recto, que por lo general suelen ser plantas altas.






Estos árboles y algunos otros pueden descargarse en formato blend aquí.

jueves, mayo 20, 2010

Contador de triángulos

Desde hace un tiempo tenía pensado incluir un contador de triángulos para observar el comportamiento de los modelos en el juego, así podía ir con una idea más precisa a la hora de establecer el número máximo de polígonos en las mallas. Obtener el conteo es fácil: window->getTriangleCount().
Los modelos que más polígonos tienen son los árboles, tres de ellos juntos alcanzan los 300k triángulos y los cuadros por segundo bajan a 100 o menos (en una Geforce 9500). Lo cual me hace pensar que podemos fijar el límite en esa cantidad, no más de 200k polígonos visibles para lograr unos 60 cuadros por segundo en una Geforce 9500/HD2000 con todas las opciones de calidad al máximo. Lo cual se consigue organizando adecuadamente el escenario, para no cargar demasiado toda el área o alguna parte en especial.
Y tengo que decir que me he quedado muy sorprendido, al parecer Ogre están muy bien optimizado, pues con menos que eso apenas alcanzo 20 cuadros en Regnum Online. Aún me faltaría hacer alguna prueba con las sombras activadas, pero eso será más adelante.

miércoles, mayo 19, 2010

The Ark en gráfica Intel

Ayer mi amigo Bloops tuvo la gentileza de dedicar su tiempo libre a probar el juego. En primer lugar me ayudó a descubrir archivos faltantes en el SVN y actualizarlos, y además probó que el juego corre en una gráfica integrada GMA 3100, bajo Linux. El framerate es de unos 40 cuadros por segundo, nada mal si tenemos en cuenta que no tenía (ni tengo) planes de soportar gráficas integradas Intel.
Otro detalle que conversamos fue añadir un fallback a los materiales que usan normal mapping, para que funcionen en dichas tarjetas sin soporte para shaders.

viernes, mayo 14, 2010

Nuevo hardware

Ya está aquí mi nueva tarjeta de video: una Gigabyte HD5770 con 1Gb de memoria. Incluye un sistema de enfriamiento que según ellos debe reducir la temperatura hasta 18 grados menos, algo importante cuando la temperatura ambiente habitual es 30-32 grados. Lo malo es que aún no he podido probarla personalmente, pues no tengo PC  ahora, así que tuve que dársela a un amigo y hacer una prueba rápida con el renderer DirectX 11 de Metro 2033. Con todas las opciones al máximo a una resolución de 1900 alcanza unos 23-24 cuadros por segundo, un poco decepcionante, pero la GTX275 no hace mucho más. Así que podríamos culpar al motor del juego, que es ruso (mi amigo lo calificó como el nuevo Crysis). Y créanme que acá sabemos un poco de motores rusos.

jueves, mayo 13, 2010

Nuevo motor: Blendelf

A pesar de tener unos días ocupadísimos en los que apenas paso media hora en mi oficina, encontré hace unos días un nuevo motor basado en OpenGL: Blendelf. A primera vista lo encuentro muy bueno, es un framework bastante interesante y aunque parece orientado a Lua, también puede usarse desde C++. Por desgracia no he logrado compilarlo aún, pues no usa ningún sistema de compilación como autotools, cmake o scons.
Blendelf ofrece un par de funcionalidades importantes out-of-the-box: física (con Bullet) y GUI (propio, aunque me parece que limitado, por el momento). También se agradece que implemente normal/parallax mapping, así que no hay que romperse la cabeza para implementar los shaders. Un detalle que se echa en falta es más exportadores, porque solo incluye uno para Blender y la mayoría de los artistas disponibles usan 3D Max.
Un punto bueno y malo a la vez es que usa OpenGL, así no hay que preocuparse por versiones específicas de los shaders y además el motor se optimiza para un solo API, pero eso nos deja sin DirectX, que no está de más tenerlo como renderer secundario con vistas a un posible port a Xbox. En fin, que si alguien tiene tiempo, le recomiendo echarle un vistazo y que de paso publique sus impresiones al respecto.

viernes, mayo 07, 2010

Ryzom libre? Para qué?

Voy a extenderme un poco acerca del tema que ya está en todas partes, ya que al parecer la masa común de jugadores no entiende el por qué de la movida o los beneficios (léanse los comentarios en Massively).
A ver, cuál es la ventaja de liberar dos millones de líneas de código de calidad que te han costado un mundo? El caso es que la mayoría solo ve el trato en una dirección: que puedes coger el código y el arte y montar un server propio, que automáticamente le hará la competencia al juego original. Y las cosas no son así de sencillas. En primer lugar necesitas crear un montón de contenido, porque la base de datos del juego sí que no es libre. Tienes que crear mapas, personajes, misiones, etc. Después, tienes que resolver el problema del hosting, que cuesta dinero y tiene unos requerimientos altos, en dependencia de cuántos jugadores  soportes. En fin, que lo que la gente ve muy fácil yo no lo veo tanto, a menos que tengas un equipo con dedicación y una comunidad dispuesta a echarte una mano con el financiamiento.
En cambio, se ignora la otra dirección del trato: como el código es AGPL, Winch Gate se beneficia de las contribuciones de la comunidad. Analicemos otra vez: la comunidad recibe gratis el código de un famework profesional, surgen 10-12 servidores privados (con 100-200 usuarios?) que hacen poca mella en la comunidad oficial, en cambio la compañía recibe algunas contribuciones para mejorar el código, ahorrándose algunos programadores. Me parece a mí que es un negocio redondo... para Winch Gate.

jueves, mayo 06, 2010

Ryzom liberado bajo licencia abierta

En una movida sorprendente, la compañía detrás del MMORPG Ryzom acaba de liberar el código fuente y el arte del juego. Y me refiero a todo el código fuente (alrededor de 2 millones de líneas de código): cliente y servidor. El código está bajo licencia AGPL mientras que el arte bajo CC. Excepto el sonido y música, de los que Winch Gate no tiene los derechos, el resto del arte está disponible, unos cuantos gigabytes de texturas y modelos. Por el momento, y supongo que definitivamente, está excluido el contenido del juego, para evitar la fragmentación de la base de usuarios del servidor original.
Aún quedan detalles como por ejemplo las herramientas de creación de mundos, pero se está trabajando para migrar el proceso a software libre ocmo Blender.

miércoles, mayo 05, 2010

La importancia de un CD de arranque Linux

Usualmente mi herramienta favorita es el Hiren Boot CD, que tiene de todo para manejar particiones, reparación, etc. Tengo en el arsenal un System Recue CD, que es basado en Gentoo, pero lo uso para tareas muy específicas relacionadas con Linux, como reajustar particiones. Ayer me vi en la necesidad de recuperar unos documentos que alguien había protegido con un programa que bloquea el acceso a las carpetas y tuve que acudir al SysRescue. Monté la partición ntfs en modo de escritura y saqué los documentos del laberinto de carpetas ocultas que crea el programa en cuestión y asunto resuelto.
El SysRescue CD no es complicado de usar. Solamente necesitas saber leer e interpretar las instrucciones del inicio que explican cómo levantar el entorno gráfico y de ahí lo demás es puro click de ratón. Claro, que ayuda tener unas nociones mínimas de Linux.