Ir al contenido principal

Entradas

Mostrando entradas de febrero, 2010

Temblores

No, no es el título de la película de los gusanos. El caso es que me desperté hoy debido a una sacudida, lo cual viene siendo algo habitual (tres veces en menos de una semana). Esta fue particularmente fuerte y debe haber sobrepasado los 4 grados, aún no se anuncia oficialmente. De hecho, es tan común que ya ni siquiera se anuncia. Llego a la oficina y me entero de que hubo otro temblor, esta vez en Chile, y peor aún que el de Haití. Parece que el mundo se está acabando sin esperar al 2012.

Los servidores SQL ya no dan la cuenta

Hoy recibí esta noticia en twitter: Twitter se muda de MySQL a NoSQL. NoSQL es un término que identifica algunos nuevos servidores de bases de datos que no son relacionales o no usan sql. En este caso, migran a Cassandra, un sistema de almacenamiento hecho en Java.
Al margen del tema escalabilidad y costos, lo que me llama la atención es el futuro de MySQL. Hasta ahora su punto fuerte eran los sitios con gran volumen de tráfico, pero si estos sitios migran a otro servidor más eficiente, que sentido tendría para Oracle mantener vivo a MySQL? Sí, todavía muchos sitios pequeños lo seguirán usando, pero no los que pagarían por soporte.Estos sitios, si MySQL es abandonado, pues simplemente se pasarían a MariaDB, el fork libre y no se verían afectados.
En fin, así es la evolución del software, las soluciones aparecen y cuando dejan de ser útiles, pues tienen que cambiar o desaparecer.

La historia del RV870

Una lectura obligatoria. AnandTech nos regala otro excelente artículo narrando el proceso de creación del RV870, familia Evergreen, para los conocidos. Para los no conocidos, HD 5000. De veras lamento no haber visto uno así acerca de las interioridades de Nvidia.un mundo increíble, dodne no hay nada seguro hasta que la tarjeta llega al mercado y empieza a venderse.
Lo curioso es que a veces no nos percatamos que el hardware actual en realidad fue diseñado hace por lo menos dos años, no un par de meses antes de salir y que justo ahora se debe estar trabajando en las tarjetas que veremos en el 2012.

Cambio de título

Hoy he tenido que hacer un cambio drástico en el blog, motivado por un error que venía arrastrando hace tiempo. Como ven, he cambiado el título. El caso es que cuando creé el blog hace años, no tenía ni idea de seo, posicionamiento, ni de que algún día intentaría usar adsense para conseguir algo de dinero (que no lo consigo). Es por ello que cometí dos errores graves. Uno fue al escoger el nombre de dominio, que no contiene los términos que cubre el sitio. El segundo fue la escoger el título, que apunta al lenguaje equivocado, lo cual lo hice con toda intención en quel momento, pero que sin duda alguna es un error garrafal con vistas a lograr buen posicionamiento.
Es por ello que el blog está muy mal posicionado si se buscan en español los términos programacion juegos, pero si buscas game programming, está entre los primeros resultados de Google. Errores clásicos de novato, no me faltan ganas de iniciar mi propio blog sobre seo y adsense para hablar sobre mis experiencias. Eso y compa…

Sonido

Ayer reinicié el trabajo que abandoné hace tiempo para implementar el sonido con OpenAL. La programación de OpenAL no es complicada, es como un OpenGL, pero mucho más sencillo, pues las funciones son menos. La idea actual es muy sencilla: hay emisores o fuentes de sonido (sources de OpenAL), que son los que se encargan de reproducir y tienen una posición en el espacio, y hay buffers (buffers de OpenAL), que son los que contienen el audio como tal. Los emisores pueden reproducir cualquier buffer que les pases y estrán asociados a las entidades y todo lo que necesite emitir audio.
La parte del streaming es un poco más complicada, debido a un bug en las funciones de lectura de archivos de las bibliotecas ogg: en Windows no funcionan. Hay que programar funciones propias de lectura y la última vez que lo intenté no me funcionó.
El problema de OpenAL es que require un poco de programación extra, a diferencia de otras bibliotecas que pueden leer los archivos de audio ogg, mp3 o wav por sí m…

Blender 2.5 alfa 1

Si les parece que la espera por la versión 2.5 de Blender era larga, pues ya pueden sentir algo de alivio. Acaba de salir la primera alfa, que si no recuerdo mal es el primer release oficial. Hasta ahora la comunidad había estado probando los builds del svn, que es trabajo en proceso. Claro, que un alfa no es muy diferente, todavía deben quedar todo tipo de problemas raros por ahí, pero al menos algunos detalles ya están arreglados y otros han sido completados. Si no tienes nadia serio entre manos, puedes echarle un vistazo y colaborar reportando bugs o documentando. Pero si estás en medio de un proyecto, no te recomiendo que te arriesgues. Podrías sufrir pérdida de datos, explotes misteriosos, demencia, embarazos no deseados (sí, auque seas varón) y todo tipo de penalidades. Evita malestar para tu cuerpo y disgustos a tu familia y espera a que la versión oficial ya esté bien estabilizada.

Actualización: Error mío, esta es la segunda alfa, la primera fue alfa 0.

AMD Tootle

Un tweet de Sinbad (el creador de Ogre) llamó mi atención hacia esta herramienta de AMD. Tootle es Triangle Order Optimization Tool, una biblioteca de optimización de mallas que mejora las técnicas de preprocesado. Se está implementando soporte para la misma en MeshMagick, que es una de las herramientas de Ogre que permite manipular mallas: escalar, rotar, mezclar, etc.
Una herramienta que no conocía y muy bueno saber que Ogre mejora.

Reportes de bit.ly vs Google Analytics

En estos días he vuelto a las andadas con SEO, pues me he propuesto llevar el blog a Pagerank 5, lo cual lleva su trabajo. No todo el mundo tiene la suerte de que lo enlacen a montones y les lluevan los backlinks.
El caso es que he notado una discrepancia entre lo que me reporta bit.ly, que es el servicio de acortamiento de url que uso para postear en Twitter, y lo que reporta Google Analytics. Según el primero, los dos enlaces publicados el día 17 recibieron 13 clicks cada uno, en cambio el segundo solo vio 10 visitas ese día. Y Adsense en su informe muestra 13 impresiones de página.
Quién está en los cierto, bit.ly, Analytics o Adsense? Bueno, con el último no podemos discutir, lo que vio es lo que vio. Pero, cómo resolver la discrepancia entre los otros dos?
De paso, les aviso que el blog es dofollow desde hace un tiempo. Así que los enlaces a sus páginas en los comentarios cuentan como backlinks. Pero advierto que el spam será borrado de inmediato, aunque esté en anotaciones antig…

Programación multiplataforma

La programación multiplataforma tiene sus cosas. Vean por ejemplo el siguiente código:

class GuiSystem {
public:

protected:

    CEGUI::FrameWindow *talk[3];
};

GuiSystem::GuiSystem()
{
    //get some elements for auxiliar functions
    talk[0] = (CEGUI::FrameWindow*)getWindow("talk1");
    talk[1] = (CEGUI::FrameWindow*)getWindow("talk2");
    talk[2] = (CEGUI::FrameWindow*)getWindow("talk3");
}

void GuiSystem::addTalk(string msgtext)
{  
    talk[0]->setText(msgtext);
}

Lo anterior funciona correctamente en Linux. En cambio, en Windows, compilado con gcc 3, la función addTalk explota sin ningún mensaje. La solución fue mover la inicialización de los elementos a la función.

Nuevo motor: Anki Engine

Me enteré vía Phoronix de la existencia de un nuevo motor basado en OpenGL, desarrollado sobre Linux (aún no se ha compilado en Windows). La lista de funcionalidades es un poco imprecisa, excepto algunas esotéricas siglas como SSAO y etcétera que nos dicen muy poco (qué formato de archivos usa, qué texturas soporta). Me encuentro en proceso de bajar el svn, que por suerte aún Sourceforge no nos lo ha bloqueado. Luego les contaré mis experiencias, aunque anticipo que la documentación debe ser inexistente.
Encuentre los dos elemntos nuevos en la interfaz de usuario:

Cuesta abajo y sin frenos

Luego de una semana de vacaciones por enfermedad, ya he vuelto al trabajo. Otra vez a jugar con el interfaz de usuario, a ver si al fin incorporo las barras de salud y mana. No parece muy difícil usar los ProgressBar de CEGUI, así que debería tener resultados en un par de días lo más.
Por otra parte ya casi tengo a punto el scroll del texto en la parte superior de la pantalla. Es interesante, incluso hasta me hizo plantearme la posibilidad de eliminar la caja de mensajes del sistema en la parte inferior de la pantalla, que ya no se usa en los juegos modernos. La charla de los personajes se diferenciaría mediante colores de los mensajes del juego y solo necesitaría agregar algunas líneas más.

Obsidian hará el juego de La rueda del tiempo

Otra de Obsidian para hoy. No sé qué tan conocida será esta saga entre los asiduos del blog, pero recordarán que la mencioné hace años y además les dije que se convertiría en películas y videojuegos.
Para los que no la conocen, La Rueda del Tiempo (o The Wheel of Time) es una serie de 12 libros enormes de Robert Jordan, quien murió sin terminarla. Se suponía que el libro 13, que cerraba la saga, debía ser escrito por alguien según las indicaciones del finado. Y para ir al grano, el caso es que Obsidian ha recibido el encargo de desarrollar el videojuego. Como es de esperar, no hay más detalles, pero se espera que tratándose de Obsidian el género sea RPG.

Imágenes e información sobre Fallout: New Vegas

En NMA han publicado un resumen de imágenes y previews de Fallout: New Vegas. Echenle un vistazo a las páginas escaneadas, pero de todas formas les resumo parte de la información. La nueva rueda de órdenes para los miembros del grupo me gusta, hay 8 órdenes disponibles. El área de Nevada ha sido menoas afectada pro la radiación, aunque aún es un problema (tendremos un área de pruebas nucleares para explorar). Así que hay casas relativamente intactas, plantas y paisajes coloridos. El proceso de creación es muy similar al de Fallout 3, o sea, está integrado en la historia e incluso tiene una especie de GOAT. No se menciona la Hermandad de Acero, pero se supone que no falta, por lo demás se confirma NCR (New California Republic, para los que no jugaron los clásicos 1 y 2) y Caesar's Legion. Supongo que en el primer caso se refieran a los Rangers a los cuales podíamos unirnos en FO2, los segundos son esclavistas. Tendremos VATS, qué remedio. Habrá shows y juego, después de todo estamo…

Probando Google Buzz

Esta vez me he sumado a la moda desde sus inicios. Ayer por la tarde ya tenía el Buzz habilitado en mi cuenta de Gmail y pude buzzear y configurar un poco. La idea está curiosa, para mí es como una mezcla de twitter con facebook o un twitter con más funcionalidades. Puedes hacer algo de microblogging, publicar tus tweets, videos de Youtube, elementos compartidos de Google Reader y muchas otras cosas.
Por tanto, los buzz pueden ser más largos y ocupar más espacio en pantalla, eso al principio me chocaba e inconscientemente buscaba como ocultarlos o borrarlos. Es cosa de acostumbrarse y mirarlo como un lector de feeds y no como microblogging.
Hay que tener cuidado con el volumen de información que se genera, porque es muy fácil inundar a tus seguidores si produces muchos tweets, elementos compartidos y los etcéteras. Un poco de respeto hacia los demás nunca viene mal.

Días de gripe

De gripe o dengue, porque de los dos tenemos por acá. El caso es que me he pasado un día fatal ayer con el malestar, que por suerte va cediendo hoy. Aún cuando no he tomado medicinas, creo que me he recuperado bastante rápido.Una amiga me recetó una lista impresionante de medicamentos, pero desgraciadamente olvidó que las farmacias acá no están tan surtidas como en México.
Lo malo de estos días de enfermedad es  que no se avanza en el trabajo, apenas llegué a casa me metí en la cama. No hay quien piense en programar cuando el cuerpo se comporta como el de un viejo reumático, cuesta moverse y las articulaciones duelen. Pero bueno, mañana esta gripe solo será un mal recuerdo. Eso espero...

Para hoy, una imagen

Aquí está la ventana de inventario. Por el momento, muy sencilla.

Dragon Age completado

Ayer decidí tomarme unas vacaciones y jugar al Dragon Age: Origins, que lo tenía abandonado. Para mi sorpresa, cuando creía estar a mitad de juego, resultó ser que estaba muy cerca del final. Estos juegos de ahora no son como los de antes, apenas te estás emocinonado te dejan tirado.
Tal vez sea un poco tarde, pero aquí van mis consejos para pasarse este juego. El éxito en las batallas casi siempre depende de tener suficientes cataplasmas curativas. La dificultad en los combates muchas veces se debe no a un jefe extra fuerte, si no a que este jefe viene acompañado por una pandilla extra numerosa. Incluso, la pelea final contra el Archidemonio es larga, pero no difícil. Aviso, el Archidemonio es un dragón, y por tanto vuela. En las batallas finales puedes utilizar escuadrones de tropas auxiliares, recomiendo usar los magos o los arqueros elfos. en ocasiones el dragón se posa en lugares molestos a donde puede que la infantería no llegue o pierda mucho tiempo haciendo el trayecto.
En fin…

Un poco sobre drag and drop

Al final, tendré que crear mi propio widget de CEGUI. El caso es que aún no veo cómo lograr hacerle drag and drop a un elemento de un Listbox, ya que para poder hacerlo el widget debe estar incluido en un contenedor de DnD. Así que la única solución que veo es implementar mi propio listbox, pero con algunas mejoras, por ejemplo imágenes junto al texto y una tercera columna para indicar la cantidad de objetos o el nivel de la habilidad.
Por lo demás, el sistema de inventario va bastante bien, aunque es un trabajo largo y de muchos pequeños detalles. La posibilidad de recoger y equipar cosas es uno de los puntos clave de un RPG y hay que trabajarla a fondo, es probable que el diálogo de inventarios sufra rediseños en el camino, pero eso es inevitable. Hoy tengo pensado trabajar en la parte de equipar los objetos, lo cual no es tan sencillo porque no todos los objetos responden igual. No es lo mismo usar una espada que una revista porno, aunque al final termines agarrando algo con la ma…

Entendiendo los Listbox de CEGUI

Ya casi he logrado dominar los Listbox de CEGUI, que no ha sido fácil. La ventana del inventario ahora muestra una lista de nombres, en vez de los id. Solo falta un pequeño detalle con los eventos para lograr mostrar además la descripción del objeto, e incluso las imágenes. Igualmente ya puedo implementar el segundo paso de la creación de personajes, que ya debería estar pero he tenido un par de noches ocupadas. Espero después del descanso de hoy poder dedicarle el fin de semana a eso.
De paso, si no se habían enterado, ya está el trailer de Fallout: New Vegas, pueden verlo aquí. Se muestra poco, pero algo es algo.

Irrlicht 1.7

Ayer se liberó la versión 1.7 de Irrlicht. Si eres nuevo en esto de la programación de juegos, Irrlicht es un motor 3D que apunta a ser rápido y muy sencillo de usar. La nueva versión incluye algunas características interesantes como shaders de geometría y Multiple Render Targets, amén de mejor soporte para los .mesh de Ogre y compatibilidad con los NPK de Nebula Device.
Un buen motor para iniciarse, proque la curva de aprendizaje no es tna empinada. De hecho, creo que todos los motores deberían ser así.

Nombres y apellidos en japonés

Hace un tiempo me interesé acerca del orden de los nombres y apellidos y el método para decidir el apellido en Japón. Aunque las cosas no me quedaron muy claras en esto último. Resulta que los japos ordenan diferente a nosotros: primero va el apellido y después el nombre, como bien sabe cualquiera que haya visto dos o tres capítulos de anime. Si prestan atención durante los diálogos en japonés en Héroes, verán que a Hiro (el que más comúnmente es nombrado por su calificativo completo) se le dice Nakamura Hiro, aún cuando en el subtitulaje en inglés se invierte. El hijo o hija tomaba el apellido del clan más importante, ya fuese el del padre o de la madre y el emperador no tiene apellido. Es el gobierno el que define los kanjis que se pueden utilizar para nombrar personas. Otro detalle curioso es que antaño las mujeres solo aprendían a escribir en uno de estos dos alfabetos, el hiragana. De ahí que existan muy pocos nombres masculinos escritos en este alfabeto, por considerarse como al…

Cuándo llenaremos un blu-ray?

Hace poco se debatía en el foro de Mangahunter cuándo los juegos llenarán un Blu-ray. Mi apuesta fue que en dos años (o sea, 2012), aunque nadie estuvo de acuerdo con esa fecha. Es que ya en el 2009 teníamos juegos que ocupaban 2 DVDs, como Star Wars: The Force Unleashed. Y no dos DVDs normales, si no de los grandes, 14GB en total. Arrancamos el 2010 con la noticia de que Mass Effect 2 ocupa dos también, pero eso no es nada comparado con la versión para Xbox de Final Fantasy XIII, que se espera que ocupe tres DVDs. Y eso que según sus desarrolladores se removió contenido suficiente para hacer otro juego. A juzgar por eso, pronto los Final Fantasy vendrán en discos duros de un terabyte.
Es que la calidad gráfica demanda espacio de almacenamiento y de eso se trata en los últimos títulos: imágenes más realistas, escenarios más grandes, etc.  Aunque la mecánica de juego no haya avanzado gran cosa desde Diablo 2, comparativamente hablando.

Otro bug resuelto

Por un par de días estuve persiguiendo un bug que en realidad no existía y que ha atrasado mi trabajo de mala manera. El caso era que ya implementé la creación de los personajes y ahora los atributos son los que se asignan durante la distribución inicial, al igual que las habilidades iniciales. De momento ésas no están completas, así que si quieres pelear no queda más opción que crear un abanoa, que son los que reciben ataque y defensa como bonificación de raza. El personaje recién creado es muy débil para luchar, especialmente contra algunos NPC del mapa qe no habían sido ajustados. Como aún no he implementado el manejo de la muerte del jugador, pues cada vez que golpeaba a alguien el resto del grupo del agredido me daba una paliza y el programa se quedaba perdido.
Lo jodido de esto era que el error se producía en diferentes lugares y rastrearlo fue trabajoso. Las capacidades de depurar scripts en Lua son limitadas, muchas veces lo más que podemos hacer es poner textos para saber en …

Trabajando con Imagesets

Este fin de semana no pude hacer lo que tenía planificado, por un raro problema con los Listboxes: no puedo seleccionar los items. En espera de encontrar la solución, tuve que dedicarme a otras cosas. En este caso, entender cómo funcionan los Imagesets.
Una de las cosas chocantes al principio en CEGUI es que no puedes asignar directamente una imagen a algo. Las imágenes se definen en los Imagesets, que son archivos xml que describen la posición y tamaño de la imagen dentro de otra mayor, que contiene todas las imágenes que vamos a utilizar. Nada de archivos independientes, hasta donde he podido comprobar. Pero aparte de la dificultad de meter todas las imágenes en una sola y encontrar las coordenadas precisas, no es muy complejo. Las imágenes se ajustan mediante las propiedades y se referencian así: "set:nombre-imageset image:nombre-imagen". Sí, poco pesado, pero así es CEGUI.