Ir al contenido principal

Entradas

Mostrando entradas de febrero, 2006

Ogame

Llevo varios meses jugando Ogame en el universo 2. Aunque aún no llego al nivel de usar estrategias avanzadas como fleetsaving y emboscar flotas ajenas, creo que casi puedo considerarme un veterano. Ogame es un buen juego. Si descontamos el problema de que los más viejos tiene ventaja sobre los nuevos jugadores, si han aprovechado bien el tiempo.
Esta anotación no es una guía de cómo jugar Ogame, más bien algunos consejos para los que piensen iniciarse en él, ya que constantemente se están abriendo nuevos universos. Hay muy buenos tutoriales en el foro que indican cómo empezar.
Pues bien, manos a la obra.
Lo primero que necesitas es una alianza. Puedes jugar solo, pero a veces el mero hecho de pertenecer a una alianza rankeada entre las 10 primeras disuade al atacante.
Mi recomendación es que vayas directo hacia la construcción de colonizadores. Distribuye tus colonias en sistemas cercanos, de ser necesario múdate a sectores cubiertos por tu alianza, cerca de aliados fuertes. Puedes tene…

Es largo, cabezón, las mujeres lo agarran para jugar con él y yo tengo uno

No sean malpensados. Obviamente las mujeres juegan también con joysticks. Un amigo le habían dado un Logitech Wingman Extreme para venderlo. No hay mucho mercado para eso acá, así que el dueño se despreocupó y mi amigo ya me debía algunos favores, cuando me oyó hablar de que me hacía falta un joystick me lo regaló. Tiene 4 botones en el bastón, dos en la base, un disparador, una rueda de direcciones y una palanca de aceleración. Insiste en darme un error de calibración. Solo me resta probarlo en el Lock On Modern Air Combat, que lo tengo por ahí guardado en espera de reunir todo el hardware necesario y el tiempo para estudiar el manual de vuelo.

Los viejos tiempos de las consolas...

Desde los 90 que trabajé con el MS-DOS no me había visto obligadoa trabajar en la consola de texto. Sí la he usado mucho en Linux, pero no como entorno primario. Lamentablemente la PC de la casa solo tiene un monitor moncromático viejísimo, y por alguna razón Windows XP solo trabaja en modo a prueba de fallos (ni siquiera soporta 800x600) y el X no logra levantar. Así que he tenido que mover todo el entorno primario hacia el modo texto. De momento recompilé el mplayer con soporte para svgalib, sí, esa misma que removieron de las distribuciones hace años porque es insegura. Lo probé acá en la oficina y creo que por lo menos podré ver películas.
Estoy en proceso de instalar el famoso Emacs a ver qué tal me va.

REcursos, scene manager, etc

Estoy en un punto del desarrollo en que me he estancado un poco. He estado pensando (sano ejercicio ese, pensar, se los recomiendo) cómo guardar los recursos y hacerlos accesibles al scene manager para evitar busquedas innecesarias. El scene manager requiere una lista de nodos a renderizar, asi que tenerlos en una cache y además en la jerarquí de la escena es un desperdicio. Lo óptimo sería tener solamente un puntero al objeto. Aunque en una última sesión de ejercicio mental anoche, mientras veía un instructivo documental sobre las características de la cópula de gacelas y ardillas, me percaté que tal vez podría obviar la caché en el resource manager y tener solo los nodos necesarios, en el scene manager.

Xorg modular

Desde el viernes estuve ocupado con la tarea de migrar mi Xorg a la versión 7.0 modular, en Gentoo. El proceso no ha sido nada fácil, pero como todo en esta distro, la recompensa es que aprendes (o destruyes el sistema). Me he quedado con los drivers propietarios de ATI, porque no llegue a instalar el soporte para r300, que es el chipset de la Radeon 9800 pro que tengo en casa (más exactamente r350) . Lo gracioso de esto es que no podré utilizar al máximo la tarjeta, porque lo que tengo es un viejo monitor sin colores, que solo soporta 800x600. Así que nada de gimp, Milkshape o blender. Malamente me servirá para leer y programar un poco los fines de semana.
Tuve mis problemas con open gl, pero ya tengo creado un entorno de trabajo, excepto Ogre, que por alguna razón no compila una biblioteca.

Lua 5.1

Aunque aún no veo la noticia en el sitio oficial, a través de la lista de correo llegó el aviso de la salida de la versión 5.1 final de Lua. En caso de que no estés muy empapado en esto de la programación de juegos, te diré que en primer lugar no deberías estar leyendo este blog, y en segundo que Lua es un lenguaje de programación muy cómodo para incrustar en aplicaciones host, más rápido que cierto animalito largo, verde y resbaloso que se arrastra según algunos y fácil de aprender.

Spam

He estado recibiendo un volumen de spam verdaderamente insano en mi red. Hoy decidí que era hora de tomar medidas mas allá de un simple filtrado con spam assassin, así que hice las preguntas de rigor en la lista y luego las correspondientes búsquedas en internet.
De momento me decidí por usar RBL, que es un procedimiento muy sencillo. En postfix basta con agregar lo siguiente a main.cf:

smtpd_client_restrictions = reject_rbl_client sbl.spamhaus.org

La misma hace un chequeo del ip remitente contra la lista de spamhaus. También actualicé el spam assassin a la versión 3.1.

Más rotaciones y traslaciones

Pues sí, no andaba tan desencaminado. El modelo rota y se traslada como Dios manda, sin afectar el resto de la geometría de la escena. Hoy hice un alto en la tarea de ver Firefly y agregué un par de líneas de código y ya está.
Ojalá el resto fuera tan fácil como esto. No logro encontrar forma de controlar el rango de frames de la animación para mostrar solo la que me interesa y no todas las animaciones disponibles.

Firefly

Luego de una larga espera al fin tengo la serie completa. He hecho un alto en el trabajo para valorarla y tengo que decir que me ha gustado. EL capitán me recuerda a Han Solo, pero mucho menos "políticamente correcto". Malcolm Reynolds es un buen tipo, pero no tiene reparos en moler a un sujeto dentro de la turbina de su nave si la situación así lo amerita. Una pena que hayan cancelado la serie, porque de momento está en la lsita de mis series favoritas.

Traslaciones, rotaciones...

Luego de razonar cuidadosamente cómo implementar el renderizado del modelo en las coordenadas deseadas, y además rotarlo, llegué a la conclusión de que estaba completamente equivocado al respecto. Anteriormente lo había implementado sumando las coordenadas de destino a las coordenadas de los vértices del modelo. Esto me trajo problemas con el mapeo de texturas.
Sin embargo hay una forma más adecuada y es salvar la matriz, usar gltranslate para desplazar el modelo, glrotatef para rotarlo, hacer el proceso de renderizado sin modificar los vértices y luego restaurar la matriz.

La Esquina del Programador

Aunque aún me quedan montones de detalles por resolver, el cambio de isométrico a tercera persona está casi listo. He tenido dos días muy productivos, ayer y hoy. Espero poder robar un poco de tiempo la semana próxima, que viene bastante cargada de trabajo.
Prioridad #1: cambiar el actual sistema de mapas al basado en xml y mostrar una toma medianamente decente con los árboles y paredes que estoy haciendo.

Eternal Lands

Luego de unos meses sin tocarlo, me dio por probar nuevamente este juego. La última vez había experimentado unos problemas de latencia que al parecer, o eran culpa mía o ya se han solucionado.
La versión 1.2 no es muy diferente de lo que recordaba. Cuano lo jugué por primera vez me pareció un juego muy bueno. Aún me lo parece, solo que después de jugar Planeshift y Anarchy Online durante un buen tiempo, la vista isométrica pierde gran parte de su atractivo, especialmente cuando hay ciertos detalles que conspiran contra una experiencia grata. Tal como me señalaba Robert Aronson cuando discutíamos el diseño del proyecto, la vista isométrica no consigue el nivel de inmersión que la vista en tercera persona. Y no es que no se consiga un modo de juego atrayente, el problema es que en ocasiones resulta en exceso molesto perseguir al objetivo y acertarle con un click entre el follaje del bosque, por mucho que rotemos la vista.
Otro detalle es que para atacar debemos estar cerca del objetivo. …

Vista en tercera persona

Luego de un poco de trabajo logré implementarlo correctamente. La solución que usé no es la óptima, pero es que mis conocimientos de geometría y álgebra no daban para más. Un amigo me recomendó que usara matrices, pero hasta allá no llego por ahora. Creo que debería haber una solución que no implique el uso de dos ángulos. Si por casualidad algún matemático pasa por aquí y lee esto, por favor que deje sus sugerencias para optimizar. Ahora lamento profundamente haberme dormido en el aula.


Esto es puro teorema de Pitágoras. Hay que partir de que en cada paso, en cualquier dirección, el personaje se moverá una distancia de S puntos y la cámara estará ubicada C puntos detrás. El personaje se desplaza en X y Z (obviaremos Y por ahora, que es la altura). Si sabemos S y el ángulo alfa, podemos determinar a y b, lo mismo para la cámara, que rota alrededor de la posición del personaje, siempre apuntando a su espalda.
cam_x = C * cos(beta)
cam_z = C * sen(beta)
player_x = S * cos(alfa)
player_y = …

Langostas

Aquí está

Complaciendo peticiones...
La idea es utilizar el teorema de Pitágoras, ya que si tengo la longitud del paso S que es la hipotenusa, y el ángulo, es sencillo calcular el desplazamiento en X y Z, considerándolos como los catetos.
Al implementarlo me di cuenta que aunque la idea estaba correcta para el movimiento del personaje, no lo estaba para la rotación de la cámara. O sea, la cámara rota en sentido contrario al personaje. Y ahí se acabó mi conocimiento de geometría, al menos por el momento. Sé que la solución debe ser muy fácil, pero no la capto.
Además, como bien me señala un amigo, debería usar matrices. El opina que es más óptimo. Sin embargo mis escasos conocimientos no llegan hasta allá.

Vista en 3ra persona

Luego de romperme la cabeza con geometría durante un tiempo y gracias a la sugerencia de un amigo encontré el secreto detrás de la vista en tercera persona y el vector de dirección del personaje. He implementado un prototipo básico y solo me queda resolver el problema de rotar el modelo adecuadamente.

Arboles

Hoy dediqué unos minutos a probar L-System, un plugin de Blender para generar árboles.
El resultado no es una maravilla, porque luego tuve que exportarlos a 3ds, cargarlos en Milkshape y recrear los materiales. Vistos dentro de Blender se ven mucho mejor, porque las hojas no son rectángulos. Este primero en cuestión tiene un poco más de 3000 polígonos.