Ir al contenido principal

Entradas

Mostrando entradas de septiembre, 2010

Aprendiendo de otros: FreedroidRPG

Este es uno de los pocos RPG libres que han tenido la suerte de mantenerse activos. Y además han sido bendecidos con su inclusión en el programa Google Summer of Code. Cada 2 años más o menos le echo un vistazo y me complace ver que siempre hay nuevos detalles, tal vez no todos los que uno esperaría de dos años, pero siendo yo mismo un desarrollador aficionado, comprendo lo difícil que es mantener un proyecto, por no mencionar cambios innovativos.
Este año le tocaba, sobre todo porque algunas cosas interesantes se acometieron como parte del GSoC. El juego es bueno, sigue estable como siempre, y el único detalle molesto es el que siempre ha estado ahí: FreedroidRPG es muy lento. Me ha llevado toda una mañana completar un par de misiones iniciales. Luego de tres horas de juego en Mass Effect o Fallout tienes como mínimo 4 o 5 misiones completadas y una idea de qué va la historia.
Cualquier misión trivial (ve y consigue esto, ve y mata tal cosa) que tome más de 20 minutos debería ser red…

Splatting resuelto

Gracias a esta respuesta en el foro de Ogre, ayer logré solucionar el asunto del splatting con el nuevo sistema de terrenos.De paso, descubrí un nuevo detalle que me obliga a replantearme el diseño de los escenarios: el tamaño del terreno no puede ser muy grande o los parches de las capas adicionales se ven pixelados. Eso es porque cada punto del mapa alfa tiene que mapearse a una extensión muy grande. En mi caso, un mapa de 512x512 no es suficiente para un mundo de más de 8000x8000, y apostaría que 1024x1024 tampoco. Por tanto, debo usar escenarios más chicos o enredarme con el paginado de terrenos (y usar páginas chicas).
Otra cosa que me estoy planteando es rediseñar  la ventana de información de personaje y en vez de pestañas usar diálogos independientes.En general, pienso simplificar el interfaz de usuario y utilizar solo widgets básicos, así es más fácil migrarlo a un skin nuevo de ser necesario.

También logré actualizar Bullet a la 2.76 para MinGW y de paso compilar OgreBullet,…

Edición de video, según Linux

La semana pasada me correspondía un round más con la edición de video en Linux. Era hora de darle otra oportunidad a Cinelerra, que nunca me ha funcionado, y algún otro software. Cinelerra se mantuvo firme en su empeño de no funcionar, explotando cada vez que cargaba un clip, no importa el formato. Me fui por la variante Pitivi, que está en el portage, y para variar esta sí funciona.
Pitivi es un editor de video no lineal bastante sencillo, de hecho, demasiado sencillo. Su guía es el manual de usabilidad de Gnome, y ya sabemos cómo se las gastan los de Gnome. Así que no debe sorprender que la interfaz de Pitivi sea bastante escueta y ni siquiera tenga un menú contextual en lugares tan importantes como la pista de video/audio. No obstante me las arreglé para luego de unos minutos descubrir cómo cortar un pedazo de video y supongo que para algún trabajo de poca complejidad este software sea suficiente.
Una opción que debería probar también es OpenShot, sin embargo no está en el portage…

Mass Effect 2

Luego de un maratón que duró todo el día de ayer (casi todo el día, más exactamente), terminé Mass Effect 2. Hay algunos guiños curiosos al mundo de la informática que recuerdo: en tus mensajes puedes recibir spam e incluso llegué a recibir una variante de estafa. Hay un arma que no se puede duplicar porque está protegida por tecnología FRM (no les suena a DRM?) y en la base de los geth herejes, cuando ordenas a Legión que tome control de las torretas, en una de ellas el mensaje fue "Ejecutando sudo" (será que Legión usa Ubuntu?).
Y para los que aún no lo han jugado, un consejillo para que el pesado proceso de adquirir minerales no sea tan costoso. Los minerales son necesarios para las mejoras y por orden de abundancia son paladio, platino, iridio y elemento cero. El mayor error de principiante es escanear y obtener sin fijarse en la disponibilidad, que está indicada por el gráfico a la derecha. No gastes sondas si el pico de disponibilidad está por debajo de la tercera líne…

Aprendiendo de los demás: Venetica

Debo haber mencionado varias veces que me interesaba en especial probar un par de juegos comerciales hechos con Ogre: Torchlight (manténganse en sintonía, porque vienen Torchlight 2 y el ya anunciado MMO, ambos con Ogre) y Venetica. Mis experiencias con el primero fueron muy gratas. De haber vivido en otro país los desarrolladores tendrían mi dinero, sin duda alguna, porque creo que lo merecen y además merecen seguir haciendo buenos juegos.
El segundo, aunque estaba en mi poder desde hace varios meses, se había retrasado. La referencia que tenía no era muy buena, aunque venía de un jugador acostumbrado a títulos de altos vuelos. Hay que reconocer que la calidad gráfica de Venética en cuanto a modelado de personajes no es excelente, quedando incluso por debajo de Drakensang. Sin embargo sorprende por sus escenarios (y la pregunta que me asalta es: cómo rayos los hacen?) y tiene elementos como secuencias cinemáticas, etc.
Qué se puede aprender de Venetica? Pues un detalle que echo en fa…

Bullet 2.77

No logro encontrar confirmación de esto, pero un post de opengl.org menciona que esta nueva versión incluye soporte para ropas mediante OpenCL, contibución hecha por AMD (pero que funciona en tarjetas ATI y Nvidia, y también en hardware de Apple). Una jugada inteligente para serrucharle el piso a CUDA. Lo ideal sería que optimizaran también el cálculo de colisiones, o puestos a pedir, todos los cálculos posibles.

Targets Linux en CodeBlocks

Anoche dediqué un buen rato a crear los targets para Linux en Code::Blocks. Esta tarea la tenía pendiente desde hace rato, porque todo iba bien con scons. Pero al reinstalar me encontré que no podía instalar kate, mi editor favorito, debido a un raro problema: emerge me pide que cierto paquete tenga un flag activado y desactivado a la vez. No me calenté más la cabeza y decidí usar Code::Blocks.
El proyecto actualizado ya está en el SVN, así que ahora pueden usar tanto scons como Code::Blocks para compilar. Recuerden que este último no autodetecta las dependencias, así que si alguna falta o algún camino está mal puesto, hay que deducirlo al estilo Visual C: por los mensajes de error.
Además hoy inicié la integración de Caelum. Luego de ver el demo me quedé impresionado con el efecto y decidí incluirlo. Lo que no sé es cuándo lo tendré funcionando como debe ser.

Direct3D 10/11 en Linux

Phoronix informa que ya tenemos soporte para Direct3D 10/11 en Mesa. Un nuevo state tracker de Gallium3D ha sido enviado al repositorio, con un soporte inicial para esta API. Supongo que el mayor beneficiado será Wine, que ya no tendrá que traducir las llamadas a D3D a OpenGL. De hecho, el autor lo pone todo como si fuera la mar de sencillo y se deshace en elogios acerca de lo bien diseñada que está Direct3D. Veamos si en la vida real resulta tan trivial tener una adecuada implementación de esta API que nos permita jugar títulos como  Metro 2033 o Dirt.

Postgresql 9

Han lanzado la versión 9.0 de PostgreSQL, el servidor de bases de datos relacionales libre más avanzado. Para variar, los comentarios en Barrapunto son bastante informativos y los insultos escasean, por esta vez les recomiendo su lectura si están en esto de las bases de datos. Llevo usando Postgres unos cuantos años (cuando empecé MySQL no existía) aunque no he hecho nada serio, y con serio me refiero a aplicaciones que manejen cientos de operaciones. Cuando mucho, dos o tres inserciones en un día. Así que no puedo opinar mucho al respecto, excepto que no comparto la opinión de que MySQL sea más fácil de instalar y administrar. Las veces que he tenido que hacerlo, ha sido una verdadera tortura. No considero que MySQL sea una mierda definitiva, pero si vas a empezar en esto de las bases de datos, valora Postgres primero.

Particiones ext4 en Windows 7

Uno de los detalles iniciales que me molestaba al instalar Windows 7 era el acceso a mis particiones ext4. Anteriormente usaba ext3 y ext2fsd para leer y escribir desde Windows XP. Sin embargo, una búsqueda inicial me decía que ext2fsd no funcionaba en Win 7. Pero no es así.
El gran problema de este software no es Win 7, si no algunas características de ext4 que aún no están implementadas. De hecho, ahora estoy usando la versión 0.48, que no es exactamente la última, pues luego se liberaron ligeros cambios referentes al acceso a archivos grandes, y tengo que decir que estoy complacido.
Para que funcione, solo debemos desactivar los extents, una característica de ext4 que aumenta el rendimiento, especialmente en archivos muy grandes. Lo molesto del caso es que esto debe ser hecho al formatear con el siguiente parámetro: -O ^extents. El síntoma habitual de una partición ext4 con extents es que los directorios aparecen vacíos. En ese caso, ya sabes que tienes que arreglarlo, o renunciar …

Integrando la física

Ya estoy en proceso de integrar la física en el juego, con vistas a la primera tech preview (que espero sea antes de diciembre). He decidido dejar las pruebas y lanzarme de lleno con OgreBullet en el proyecto, aprender sobre la marcha. Por el momento el resultado no es mucho, porque solo ha sido un día de trabajo, veré si el fin de semana las cosas mejoran. De momento, los objetos se crean en el mundo físico de Bullet y descubrí la causa de un problema raro: las cosas aparecían amontonadas en el mismo sitio. La solución es fijar la posición después de crear el objeto en Bullet.
Inicialmente la física tendrá dos funciones: colisiones y raycasting más preciso. Más adelante supongo que habrá ragdoll, objetos rodando por las pendientes y cosillas como impactos que derriben a los personajes, etc.
Los afortunados dueños de una Geforce 8000 o superior, recuerden que pueden tener detección de colisiones en Bullet aceleradas con CUDA, cosa que aún no tengo idea de cómo hacer. Los demás, a esp…

Encuesta sobre gráficos en Linux

Como todos los años, Phoronix ha realizado una encuesta entre sus lectores sobre los gráficos en Linux. Los resultados son interesantes en algunos aspectos, por ejemplo Nvidia y ATI van muy parejas en cuanto a cuota de usuarios, con ligera ventaja para la primera. Otro detalle significativo es que mientras los usuarios de Nvidia en su mayoría usan el driver propietario, excepto un 5% que usa Nouveau, casi la mitad de los de ATI usan el driver libre (en este caso, la mitad más grande).
Las resoluciones más comunes son entre 1280x1024 hasta 2560x1600 (sin incluir esta última), algo a tener en cuenta al diseñar la distribución de elementos en la pantalla y valorar el rendimiento. Así que 1200 parece ser la nueva resolución mínima, en estos tiempos de monitores LCD >20 pulgadas (y yo aún con un trasto CRT de 17, qué vergüenza). Sin embargo, los usuarios de Linux parecen estar más interesados en usar estas resoluciones altísimas para ver películas que para jugar a esos clásicos de toda …

De terrenos y sonidos

Hoy he dedicado el día a implementar el splatting en el terreno. Splatting es la técnica que permite usar una imagen RGBA como mapa de mezclado  para aplicar una o varias texturas sobre una superficie. El nuevo sistema de terrenos de Ogre permite hacerlo sin necesidad de acudir a shaders externos, como antes. Sin embargo, esto no es tan trivial como debería, ni está documentado tan claramente como debería. De hecho, pienso que las nuevas funcionalidades ameritan dos demos separados, uno para las posibilidades de manejo de los materiales, como el splatting y otro para la modificación del terreno.Por el momento la base está implementada, falta lograr que funcione correctamente.
Lo otro que trabajé fue el sistema de sonido, abandonado desde el inicio del proyecto. El sistema de sonido usa OpenAL para la reproducción de audio posicional y ogg-vorbis para los archivos de sonido. Esta fue una idea que nunca llevé muy lejos y requiere un estudio y rediseño a fondo.

Cantidad de polígonos

Cuál es el número adecuadao de polígonos para un modelo? Al menos en Ogre, 17 mil polígonos parecen ser un número bastante difícil de manejar si tienes varias entidades con esa cantidad visibles a la vez, sin instancias. En el foro, la cantidad que recomiendan oscila entre 5000 y 10000, incluso se dice que la diferencia entre uno y otro no es notable. Además, otro número a tener en cuenta es el de batches, que son los pases que se dan para mostrar un objeto (mi personaje actual tiene unos 15).
Todos sabemos que un número alto de polígonos es lo que hace más real a un modelo (una buena textura ayuda mucho también). Sin embargo, según lo que he podido leer, 17-20 mil ya son demasiados, incluso para muchos títulos comerciales. El único que parece superar este límite es Mass Effect: según esta lista, Sheppard con toda su parafernalia alcanza los 25 mil (hay dudas acerca de si el nanotraje de Crysis, con 67 mil es un modelo del juego o solo para cinemáticas) y algunos juegos de carreras se…

Más imágenes

Ultimas imágenes:
Los FPs están bajos porque estoy usando una versión del modelo con Subsurface aplicado, lo que eleva enormemente el conteo de polígonos. Si además agregamos la sombra, no es de extrañar que mi 9500GT se arrastre vergonzosamente.
Hay detalles que desgraciadamente no se aprecian, como el mapeo normal del baúl y los ojos del personaje, que aún no he podido integrarlos.

Exporter de Ogre y subsurf

Uno de los problemas que siempre había tenido con el exporter de Ogre para Blender era con el modificador subsurface. El caso era que en el momento de convertir la malla de xml a mesh, se producía un error, si el objeto tenía armature, o sea, estaba (o sería) animado. Hoy al fin encontré la solución al problema.
Para utilizar correctamente el modificador primero debemos aplicarlo, luego en el momento de exportar hay que desactivar la opción Aplicar modificadores. Bl modelo resultante conserva el Subsurf que ya ha sido aplicado por Blender, e incluso los nuevos vértices están asociados al esqueleto y se animan debidamente.

Gentoo, ¿cada día más difícil?

Tengo que decir que Gentoo no deja de sorprenderme. Esta es una distribución que no es apta para novatos, pero parece que se están superando en su empeño de hacerla casi imposible de usar. Llevo ya varios años utilizando Gentoo y poco a poco el proceso de instalación se ha ido convirtiendo en algo habitual para mi, que podía hacer casi con los ojos cerrados. Lento, pero sin dificultades. Sin embargo, resulta que ahora al problema del portage se suma que la instalación no arranca. El error en cuestión ya lo han debatido en el foro y todos los hilos comparten la misma falta de solución.
El caso es que durante el arranque el sistema intenta hacer un chequeo de las particiones y ahí fsck.ext4 da el palo: la partición no es válida. Si arrancas con otro sistema verás que la partición está ahí y el mismo fsck la reporta como correcta.
Todo parece indicar que tendré que buscarme otra distribución.

Calculate Linux

Ayer fue mi primera experiencia con Calculate Linux. Y tengo que decir que ha sido una de las peores. Había descargado el CLDX, que es un LiveDVD de instalación con Xfce. Sin emabrgo, al arrancar, no me levantó Xfce, ni tampoco lo pude levantar después. Al parecer no soportaba mi tarjeta HD5770, que requiere Catalyst 10.5 si no recuerdo mal. En cambio sí podía levantar un shell gráfico.
El gran problema vino a la hora de instalar. Al inicio, no da ninguna explicación de cómo instalar desde el shell, así que me tomó algo de investigación descubrir que el instalador parece ser un programa llamado calculate. Este instalador, sin consultar ni solicitar confirmación alguna, se lanzó a reparticionar y formatear mi disco duro como le dio la gana, desapareciendo en un segundo información y trabajo acumulado durante años.
Afortunadamente mi trabajo más importante está acá en la oficina: el juego y las novelas en las que estoy trabajando. Sin embargo, muchas pruebas de concepto se han perdido…

Nuevo exporter de Ogre para Blender

El exporter de Ogre para Blender ha recibido una actualización, aunque los cambios parecen pocos, son importantes. En especial uno de ellos me había golpeado: el problema con las tangentes cuando no hay materiales (oficialemtne: cuando no hay información UV). No he podido comprobar si el problema con el modificador Subsurf se ha corregido. Para objetos sencillos parece funcionar, pero una prueba rápida en el modelo del personaje me da problemas.
El autor ha aclarado las dudas respecto a la versión 2.5. El trabajo aún no se ha iniciado, pues el API no se ha declarado estable. En cuanto lo haga, iniciará un nuevo exporter desde cero para la versión 2.5.

Un RPG sin objetos

Ayer les mencionaba de pasada que el sistema de ítems es esencial para un RPG. Pero todo es posible, así que hoy voy a hacer un ejercicio mental para diseñar un RPG sin objetos que recoger. De paso, voy a hacerlo con un universo conocido, y del cual dije una vez que sería el universo más complicado para hacer un MMORPG.
El universo en cuestión es el de Bleach, ese manga/anime, que todos conocemos. O casi todos. Obviaré aquí los detalles de la trama, baste con saber que un juego basado en Bleach debería dejarnos jugar como shinigamis o Arrancar. Ahora bien, tanto los shinigamis como los Espada no se caracterizan por el uso de objetos. Cada shinigami nace con un arma: su zanpakutoh. El poder de un shinigami viene mayormente de ahí. Una zanpakutoh tiene 2 liberaciones: shikai y bankai, y tal vez uno o dos poderes más que son únicos de cada shinigami. En el caso de los Arrancar, el equivalente es Resurrección (así en español) y otros poderes como Cero o Gran Rey Cero. Sin duda, pensarán: …

Equipar objetos en el personaje

Un RPG no es nada sin esta característica, todos queremos ver cómo nos queda esa armadura de escamas de dragón, la nueva túnica de mago, la espada de fuego, o lo que sea. Los jugadores  de RPGs somos muy pacotilleros. Un RPG que no tenga esto, mejor que busque una forma de obviar todo el sistema de ítems, que es la base de los CRPG tradicionales.
Ayer hice unas pruebas para ver cómo implementar lo anterior en Ogre. La idea es muy sencilla: adjuntar los objetos a huesos del esqueleto. La prueba rápida consistión en ponerle un yelmo al personaje, para ello utilicé el hueso "head", al cual le adjunté una malla cargada previamente en una Entity. Mediante la función attachObjecToBone podemos adjuntar una entidad al esqueleto de otra, simplemente indicándole el hueso al cual queremos unirla. Las entidades adjuntas siguen la animación del hueso, según me comentó alguien en el IRC que afirma haberle puesto una espada en la mano al robot de los demos de Ogre. Sí, sabemos que el robo…

Unigine anuncia oficialmente Oil Rush

Hoy Unigine Corp. ha anunciado oficialmente Oil Rush, un juego de estrategia en tiempo real basado en su motor propietario. El juego viene desarrollándose internamente desde el 2009, y me parece a mí que es un intento por colocar un producto en el mercado que muestre la potencialidad de Unigine. El mismo saldrá para Windows, PS3 y Linux, en una apuesta que algunos considerarían bastante arriesgada. Sin embargo, me parece que aparte de cómo se comporten las ventas en Linux, el punto a demostrar aquí, en mi opinión, es que Unigine permite un desarrollo multiplataforma sin costes adicionales. La mayoría de las compañías desarrollan primero para Windows y luego encargan a alguien que porte el juego, o cual encarece el proceso y usualmente el título llega tarde.