sábado, diciembre 30, 2006

Feliz año nuevo

Hoy es mi último día en la oficina, así que aprovecho para desearles a todos los que pasan por aquí un feliz año nuevo y $A (sustituir la variable anterior por un arreglo conteniendo todas las cosas que deseas: dinero, salud, mucho sexo, etc).

jueves, diciembre 28, 2006

No te mueras para que veas cosas

Como dice alguien por acá. Que se puede ser intruso, pero sin olvidar la cortesía y los buenos modales.
Desde hace un tiempo el tráfico de spam se ha incrementado y las medidas que he implementado son insuficientes, pero en estos días los spammers al menos tienen la delicadeza de desearme unas felices navidades.

miércoles, diciembre 27, 2006

Manejo de entidades y jugadores

Hace un tiempo mencioné que que había un detalle por optimizar en el ciclo principal: el proceso de los jugadores. Los NPC reciben un refrescado o tiempo de proceso a razón de uno por cada vuelta de cliclo, si han transcurrido N segundos desde que fueron atendidos por última vez, y lo mismo para los personajes. Mantenía listas separadas de entidades de personajes y NPCs, aunque la estructura de datos es la misma. La razón es que la instancia de la clase Entity se guardaba como parte de la información de conexión de cada jugador.
Luego de razonar un poco me percaté que tal enfoque no era el correcto y que era trivial separar la información del personaje de la información de conexión del jugador, e integrarla a la lista de entidades. Aún no he puesto manos a la obra, pero debería tomarme apenas una hora reajustar todo.

lunes, diciembre 25, 2006

Elymuria

Para estar a tono con la ola de anuncios navideños y aunque no tenga mucho que mostrar, aprovecho para hacer oficial el proyecto Elymuria. Mis agradecimientos a Daysita por encontrarme el nombre, porque a mí no se me ocurrió nada que sirviera. El servidor y el cliente están en el repositorio. El wiki es un intento de página oficial que no funciona muy bien, por lo que se convertirá en la guía de usuario en un futuro bastante lejano.

sábado, diciembre 23, 2006

Google Code Hosting

Al fin me decidí a crear el proyecto en Google Code Hosting. Sourceforge está sobrecargado en exceso, Berlioz no acepta más proyectos de juegos y Savannah exige una serie de requisitos que hacen el proceso tedioso sin necesidad. Y ahora está de moda Google, así que ¿por qué no echarle un vistazo?
Para empezar diré que aún está un poco verde, muy lejos de las funcionalidades que proporciona sourceforge. Da la impresión de un conjunto de servicios amarrados entre sí con hilo viejo: SVN, control de miembros sin un perfil mínimo, una página de proyecto que no se puede cambiar complementada por un wiki con escasas explicaciones de cómo hacer las cosas y ya está. Eso es todo lo que Google tiene para ofrecer una alternativa a los veteranos en este campo.
De paso: http://code.google.com/p/elymuria

viernes, diciembre 22, 2006

Ryzom (otra vez)

Pues bien, al parecer la iniciativa de comprar Ryzom ha fracasado. Henos aquí con una comunidad con 170000 estacas en el bolsillo y que se ha quedado sin caramelos porque ni siquiera les dieron tiempo a mostrar la billetera.
De todas formas, bravo por ellos, por haber emprendido la lucha. Pero yo en su lugar, cogía esos 170k, el motor del juego (que es libre) y me dedicaba a crear un nuevo Ryzom mantenido por la comunidad.

miércoles, diciembre 20, 2006

¿Qué personaje de CF/fantasía eres?

Gracias a Daisita, por este test. Resulta que soy Gimli.

Which Fantasy/SciFi Character Are You?

Op-Center

Luego de una sobredosis de fantasía causada por la lectura consecutiva de Eragon, Crónicas y Leyendas de Dragonlance y al final Naciones Enanas, andaba en busca de algo radicalmente opuesto para despejar.
De alguna forma me cayeron en las "manos" un par de libros de la serie Op-Center de Tom Clancy. Aunque no era precisamente lo que buscaba de Clancy, el resultado es el mismo. En cierta forma me recuerda a La Conspiración, de Dan Brown, pero hay que aclarar que Clancy es un escritor con muchos más recursos. Hasta puede darse el lujo de revelarnos en las primeras páginas quiénes son los malos y qué pretenden hacer. Y aún así tenemos que seguir leyendo porque nos queda la duda de cómo se las va a arreglar el Op-Center para desbaratar el malvado plan.
Por supuesto, se agradecería que nos obviara las disquisiciones filosóficas acerca de la necesidad de hacer cosas incorrectas por el bien del país, pero supongo que eso sea inevitable.

jueves, diciembre 14, 2006

Astratega, primeras impresiones

Como había avisado la semana pasada, se ha iniciado una nueva partida de Astratega. Según el anuncio oficial es la versión 1.0, sin embargo me parece que aún seguimos con la beta 3. Para los que no lo han mirado, es un juego de estrategia basado en navegador.
De inicio, hay que criticar que no es tan claro e intuitivo como el OGame, ni en interfaz ni en modo de juego. Demasiados botones repetidos que hacen una misma cosa y algunos detalles son algo ambiguos. Es necesario consultar el tutorial muchas veces para familiarizarse con todo y aún así quedan dudas: ¿son acumulativos los efectos de las investigaciones? ¿los recursos están centralizados y disponibles en todos los planetas? El proceso de colonización es demasiado manual, ocupas un planeta y lo recibes sin habitantes, por lo tanto debes desviar población de alguno de tus otros mundos para poblar este. Sin embargo, no sólo debes enviar el transporte con población, sino que también debes dar a la orden de descargar el transporte o los obreros desplazados no cuentan a la hora de calcular el crecimiento poblacional. Con lo cual, se pierde tiempo valioso.
En fin, no acaba de convencerme, pero tengo entendido que la partida es lenta al principio pero luego se hace más dinámica y no alcanza el tiempo. Esperemos que sea así.

domingo, diciembre 10, 2006

Se inicia nueva partida de Astratega

Astratega.com ha iniciado hoy una nueva partida, esta vez con la versión 1.0 del juego. Aún estás a tiempo de registrarte, hay pocos jugadores y todos están a casi el mismo nivel, pero supongo que esa situación cambiará dentro de pocas horas.
Y como pueden ver, esta anotación es la primera que hago con Blogger Beta. Al fin recibí la posibilidad de migrar el blog, veremos como me va.

jueves, diciembre 07, 2006

Ryzom

A través de esta anotación en linuxjuegos.com supe que este juego online permite jugar gratis sin límites. Así que me di a la tarea de bajarlo, algo nada fácil pues son 1.7 Gb. El sitio oficial promete toda clase de maravillas, incluyendo la posibilidad de crear tus propios hechizos.
Para empezar, no es solo una descarga grande. El juego pide además 7 Gb para instalarse, pero afortunadamente no es necesario descargar mucho más aparte de la instalación, solo 10 Mb de actualizaciones. El proceso de creación de la cuenta es sencillo, aunque por alguna razón el url de activación llegó a mi correo en Yahoo varias horas después, mientras que a gmail llegó en cuestión de segundos.
Empezaré con las cosas que no me gustan. El sistema de manejo de latencia consiste en detener el juego con una molesta ventanita, lo cual puede convertirse en una molestia con líneas saturadas. El motor gráfico, impresionante, aunque este calificativo se aplica solo a sus requerimientos. En mi ATI Radeon Express 200M onboard fue necesario bajar todos los parámetros al mínimo para poder al menos mover el personaje.
Sin embargo, los gráficos no son algo en lo que me fije mucho cuando de juegos online se trata. El apartado de modo de juego puntea más alto en mi apreciación y aquí Ryzom se desempeña bastante bien. La interfaz es intuitiva y el sistema de habilidades se asimila en poco tiempo. Un punto en contra es que aunque al principio escogemos una profesión: mago, guerrero, artesano o recolector, esto no influye en lo absoluto en el desarrollo posterior del personaje. Simplemente desarrollamos las habilidades que más usamos.
La parte de creación de objetos está muy bien lograda. No existen recetas predefinidas, cada material que podemos obtener, ya sea por recolección o de las presas muertas, puede emplearse en diferentes partes de objetos y proporciona características específicas al objeto resultante.
Tal vez el proceso de recolección pueda parecer complicado para el gusto de algunos. Existen diferentes habilidades o formas de cosechar recursos, aunque hubiese sido más claro que todas ellas tributaran a un solo método. En el procedimiento actual, existen varias habilidades de cosechado, cada uno con un propósito específico, por ejemplo Gentle harvest, Ground stability, etc.
Como ya dije, a partir de las habilidades mágicas aprendidas puedes crear nuevos hechizos, pero hasta ahora no he logrado combinar algo que supere las acciones predefinidas.
En fin, es un juego que vale la pena jugar si puedes permitirte la descarga y una tarjeta gráfica decente.

martes, diciembre 05, 2006

Quadtrees

Había mencionado hace un tiempo los quadtrees y dije que hablaría acerca de ellos y por qué son tan importantes a la hora de manejar listas de entidades. Según la wikipedia, un quadtree es una estructura de datos en forma de árbol en la que cada nodo puede tener hasta cuatro hijos. Se utilizan para particionar un espacio bidimensional subdividiéndolo recursivamente en cuatro cuadrantes o regiones. En este caso nos interesa su aplicación en indexación espacial, o dicho en lenguaje más claro, para determinar si dos puntos están cercanos entre sí.
Supongamos que tenemos un área o mapa de nuestro juego y comenzamos dividiéndolo en cuatro sectores:
A su vez, cada uno de estos sectores es subdividido otra vez:

y así sucesivamente (que para eso está la palabrita recursivo por ahí arriba), hasta que tenemos nuestro mapa dividido en regiones de tamaño X, cada una de las cuales es un nodo de nuestro árbol. Dadas tres entidades de nuestro juego, A, B y C, necesitamos notificar de cualquier cambio en alguna de ellas a sus vecinos. ¿Cómo encontrar las entidades cercanas sin recorrer toda la lista? Aquí es donde entran en escena los quadtrees. Como muestra la imagen siguiente, solo tendríamos que recorrer nuestro árbol y tomar todas las entidades que se encuentren en el mismo sector.

En el caso anterior, A y B son vecinos, están en el mismo sector, así que teóricamente deberíamos encontrarlos en el mismo nodo. Tal búsqueda debería además dejar fuera a C.
Así que, sin recorrer toda la lista de entidades, tenemos los vecinos de A.
Sin embargo, las cosas pueden complicarse, como podemos ver en este último dibujito:

No hay dudas de que este tío llamado D es tremendo inoportuno. Es vecino de B, ¡pero no está en el mismo cuadrante! Es como para mentarle a su progenitora. Resolver este problema lo dejo como ejercicio intelectual para el lector. O sea, que no tengo ni puta idea de cómo lidiar con él, a menos que cada cuadrante guarde un puntero adicional al cuadrante vecino.
Otro detalle, no sé cuánto CPU consuma la importantísima tarea de mantener el árbol organizado. Hay que recordar que cuando una entidad se desplaza, debe quedar en el nodo correcto.