Ir al contenido principal

Entradas

Mostrando entradas de noviembre, 2005

Soporte de scripts

Bueno, en estos días el proyecto no ha estado muy activo. Alguien se ofreció para hacer el terrain renderer, pero no ha dado más señales de vida. Y he estado ocupado retocando un relato qeu escribí, para enviarlo a revisar al taller literario. Si sale algo que sirva lo liberaré bajo licencia Creative Commons.
Pero hoy le eché nuevamente un vistazo y pensé que ya que no se me ocurría nada, era hora de volver a instalar Lua y agregar soporte de scripting. Aún no lo he probado y solo agregué unas líneas. Espero incrementarlo pronto. Por otra parte, tal vez teng auna solución para el terrain renderer, y es posible que pase a triangle strips.

Reunión del Hospitality Club

Ayer por la tarde nos reuniomos los miembros del Hospitality Club en Santiago de Cuba. Kiell, de Alemania, Pradel y Franklin, de Haití, Sang (no sé como se escribe exactamente el nombre) y Suzanne de China, Lianne, Otoniel, yoandro, Leo y yo, de Cuba.
Compartimos una buena tarde, ahora tenemos planificado una sesión de comida china el próximo sábado. A mí me toca buscar el aceite y la salsa china.

Xbox e Internet Explorer

No suelo hablar de consolas porque no tengo, ni podré tener una. Pero un comentario en un post de Javi es bastante curioso. Rafa se pregunta si IE estará incluido en el sistema operativo de las Xbox. En definitiva, es una versión recortada de Windows.
Y bien, esto es todo lo que pienso decir sobre consolas por ahora.

xorg 6.8.99

Esta es la versión RC2 del xorg, que incluye soporte para los chipsets r300 de ATI (superiores a la Radeon 9200). No sé qué mala idea me dio de compilarlo y probarlo cuando instalé Centos. El caso es que me he encontrado con los problemas más raros que he visto en mi vida. Para empezar cuando estoy en modo gráfico no puedo cambiar a las consolas texto con Ctrl+Alt+Fkey. Y desde hace dos días para acá, solo puedo usar Xfce o KDE como root, aunque el lunes probé el Xfce en el runlevel 5 como usuario normal.
Por supuesto que cualquier poco deseo que tenía de recompilar xorg modular en mi futura instalación de Gentoo en casa se me han quitado por completo, creo que me iré por la variante del driver propietario de ATI y soportaré los fallos que tenga.

Convirtiendo de click a coordenadas 3d

Una de las cosas que más me preocupaban en todo este trabajo de medio hacer el motor gráfico era convertir las coordenadas del mouse a las coordenadas 3d de Open GL. Pregunté en todas partes, pero nadie me daba una respuesta precisa, sólo que había que usar gluUnproject y dependía de la matriz de proyección. Llegué a pensar que hacía falta toda una serie de cálculos complejos para eso.
Sin embargo, la respuesta estaba bien cerca en NeHe y es bastante sencilla.
Esto resuelve el problema en caso que tenga un motor pseudo isométrico, sin embargo para la vista planeada en el proyecto no me sirve, pues lo que necesito averiguar es si el rayo trazado desde el punto en pantalla atraviesa el mesh de un personaje u objeto. Podría usarlo de todas formas, pero el click entonces se comportaría raro pues deberíamos clickear sobre los pies del personaje para seleccionarlo.

Mundodisco

Aunque este blog no es exactamente sobre libros y soy una completa nulidad en materia de crítica literaria, de vez en cuando dejo caer alguna opinión sobre lo que leo. Hace un tiempo mencioné que había leído algunos de los libros de la serie de Mundodisco, gracias a que podía meterlos en mi pda.
Pues bien, leí 8 de ellos de un tirón. No voy a entrar en detalles, pero si no los has leído échales un vistazo. Terry Pratchet hace un buen trabajo y hacía un buen tiempo que no me reía tanto. La acción se mueve rápido, nada de largas parrafadas inútiles y sin embargo está todo lo que tiene que esta para comprender este singular mundo que viaja por el universo a lomos de cuatro elefantes montados en la gran tortuga A'Tuin.
Ahora estoy leyendo La rueda del tiempo, pero por el momento no le cojo el gusto. Si Orson Scott Card tiene el don de llenar montones de páginas con profundos debates filosóficos, Robert Jordan tiene el de alargar sus libros enriqueciendo las descripciones con detalles t…

Adiós a Fedora

Hoy tenía planificado migrar de Fedora Core 2 a CentOS 4.2. Luego de una larga lucha con el orden de los discos (tengo un SCSI y un IDE), logré arrancar una instalación mínima.
Ahora estoy batallando con la difícil tarea de rearmar el sistema a partir de esa instlación mínima, el mar de dependencias ya me tiene loco y el yum no funciona. El colmo es que para instalar dovecot tuve que instalar también mysql. Esa es una de las causas por la que me gusta mucho más gentoo.
Y aún me queda el jabber, pero eso será el lunes.

Formato de mapas

En estos días me he detenido para pensar en el diseño del formato de los mapas. Necesito (por ahora) un formato que permita especificar alturas como un heightmap, pero al mismo tiempo seguir siendo orientado a tiles. Como usaré XML debía optimizar dentro de lo posible evitar incluir la definición de tiles o ubicaciones vacíos, por lo que opté por una representación sparse (dispersa). O sea, el mapa incluye sólo las definiciones de los puntos que difieren del layout base.
El mapa xml sería más o menos así:
< x="100" y="110">Testing map< /map>
< -- Base texture -->
< id="1">marsh.jpg< /baset>
< id="2">rocky.jpg
<>
< x="10" y="12" h="4">
< x="10" y="12" texture="2">
< /tiles>
Y generaría una matriz final, que no sería sparse, así:
(1,0),(1,0),(1,0),(1,0),(1,0),(1,0),(1,0),(1,0),(1,0),(1,0)
(1,0),(1,0),(1,0),(2,4),(1,0),(1,0),(1,0),(1,0),(1,0)…

¡Windows Vista soportará enlaces simbólicos!

¡Qué gran novedad! Luego de muchos años de existir en los sistemas de archivos Unix, al fin NTFS incorporará enlaces simbólicos. De los de verdad, no ese invento malojero que son los accesos directos, como bien nos explican en la anotación que enlazo. Lo que no detallan es si tendremos dos categorías: duros y blandos. Para los no familiarizados, un enlace blando es solo un puntero al nombre del objeto. Si borras el objeto el enlace blando se queda perdido. Un enlace duro es un puntero al objeto en sí. Si borras un objeto, y existe un enlace duro a él, el objeto no desaparece pues en la tabla de archivos queda otro apuntador a esos datos (y si no es así que me corrija un profesor de Sistemas Operativos).

¿A dónde fue Google Analytics?

Como todo el mundo, me suscribí hace tre días al nuevo servicio Google Analytics. El primer día no funcionó. El segundo más o menos, pero sin estadísticas. Ayer vi que tenía algunas. Hoy resulta que al intentar acceder me redirige hacia la página de búsqueda.
Realmente Analytics ha arrancado con el pie izquierdo.

Modelos animados

Hoy finalmente me decidí a echar un vistazo a los tutoriales de archivos 3d con carga de animaciones incluida. Luego de revisar el tutorial de DigiBen (en gametutorials.com, que según veo hay que pagarlo ahora) y la implementación hecha por Gabor para Scourge (basada en ese mismo tutorial), me decidí finalmente por el primero. Tuve que hacer un trabajo extra porque el código no era portable, por suerte ya lo es y lo que más me preocupaba, que era el sistema de temporizado de los cuadros funciona, o al menos eso parece. Ahora estoy en proceso de implementar la carga de texturas.
De paso, aprovecho para recomendarles que sigan el trabajo de Dmitri, creo que va muy bien aunque modestamente considera que su motor aún es débil, yo le veo mucho potencial.

Tags: ,

Neverwinter Nights 2

Vía Gamespot recibí este artículo sobre la próxima versión de este clásico del rol, ahora desarrollado por Obsidian. Las imágenes del motor desarrollado por la compañía para esta entrega se ven interesantes, aunque por el momento no se aprecian innovaciones revolucionarias. Que dicho sea de paso, no son necesarias, porque este título vende por sí solo.

Tags: ,

Bienvenidos a la era del xml

Hace dos días me di a la tarea de implementar el soporte para xml en el proyecto. Para ello escogí TinyXml, que es muy fácil de integrar pues como no es una biblioteca sólo tienes que incluir algunos archivos y ya está.
De momento, la configuración del cliente (servidor al que se conecta y resolución de pantalla) se lee desde un xml. El archivo en cuestión es el siguiente:


< ip="192.168.1.1">< /server>
< x="800" y="600" bpp="32">Screen resolution< /screen>

Y se parsea con un código tan sencillo como este:

TiXmlDocument conf;
if (!conf.LoadFile("metalclient.xml")) {
//hubo algun problema
printf("Error loading config file.\n");
}
TiXmlHandle chandle(&conf);
TiXmlElement *cvalue=chandle.FirstChild("screen").Element();
if (cvalue->QueryIntAttribute("x",&Width)!=TIXML_SUCCESS) {
printf("Problem loading config value screen, check config file.\n");

Detectando dead links

Estuve investigando un poco y el sistema que me había inventado para detectar cuando un cliente o el servidor se quedan sin conexión es más o menos acertado. Es bastante sencillo, solamente se mantiene un registro por cada conexión activa del tiempo del último paquete recibido. Se chequea periódicamente cuánto ha pasado dese que hubo actividad de red por última vez y si excede un valor establecido entonces el enlace está muerto. Esto implica además que hay que enviar unos pings que mantengan la conexión viva.
Ya estoy trabajando en implementarlo.

El misterioso asunto de los blits acelerados

Desde hace un buen tiempo vengo buscando alguna forma de acelerar los blits de las superficies de SDL mediante Open GL. Uno de los problemas en Linux es que nunca obtienes un blit acelerado, por limitaciones propias del X. En cambio sí puedes obtener mejor rendimiento usando Open GL.
La solución más cómoda es convertir la superfice a una textura invirtiendo el orden de las filas o algo así (hay una función auxiliar para hacerlo en uno de los ejemplos que liberé y en casi cualquier demo que use SDL para cargar las imágenes) y luego aplicando esa textura sobre un rectángulo.
Luego de mucha insistencia, al fin me aclararon que este método, además del más sencillo es más eficiente que intentar usar glDrawPixels. Por tanto, es el utilizado en glSDL, la versión de SDL que utiliza funciones Open GL para acelerar estas operaciones y que con el tiempo reemplazará a la SDL actual. Este método es un poco más lento en las tarjetas Nvidia que en las ATI.

Feedburner, cambio en mis feeds

Dándome una vuelta por Mundogeek (soy punto fijo allí), descubrí Feed Burner. Aunque este blog no es muy popular ni nada de eso, por suerte cuento, que yo sepa, con al menos una suscripción en bloglines. Por favor, si usas algún agregador de feeds para leer esto, cambia la dirección a http://feeds.feedburner.com/dsgp, así podré llevar las estadísticas de acceso via feeds.

Otra actualización másActualización:

Hay disponible otra actualziación de planeshift. Es pequeña, pero incluye cambios al cliente y al Reino de los Muertos (donde tengo un personaje atascado porque no se ve absolutamente nada). Aunque solo son 8 megas se ha tomado mas de una hora en llegar al 50%.

Actualización: Lalentitud era culpa mía. Pero parecen haber archivos corruptos en el primer mirror, así que cambié al segundo y me reporta que son 22 megas, no 8 (puedes cambiar el mirror en la configuración del update, busca mirrors y pon en active cualquiera que no sea el 1).

Trabajo de diseño

En estos días he decidido hacer un poco del papeleo atrasado. Cuando pido ayuda lo primero que preguntan es si hay algún diseño hecho. Este asunto dle diseño tiene muchas variantes. A mí me ha sucedido que me he quedado con montones de ideas a medias porque simplemente no hay un buen motor y equipo de trabajo que las soporte. Otros prefieren tenerlo todo bien detallado en el papel antes de poner una sola línea de código.
De todas formas estaba trabado en algunas cosas y dediqué algo de tiempo a definir qué quiero y cómo lo quiero.
Por el momento he desechado la idea de un juego con ambientación ci-fi. El diseño es un poco más complicado (y si crees lo contrario pues dame una idea de cómo lo harías). Es mucho más fácil decir que tendrás orcos, si hay orcos tendrán que haber elfos y seguramente los enanos no querrán quedarse fuera. Habrá magia, obviamente. La magia se explica por sí sola, no tienes que exprimirte el cerebro para explicar científicamente por qué ciertas clases de jugadores…

Gripe aviar

La gripe aviar se extiende por el mundo. Ya se reporta la primera víctima en Francia.

Nueva tarjeta

Ayer traje a la oficina mi Radeon 9800 pro. Me costó algo de trabajo montarla, porque es bastante grande y además el sistema de enfriamiento ocupa bastante espacio. Resulta que la fuente no tiene cables suficientes para alimentar el fan porque ya hay montados dos discos duros, quemador y lector de DVD. Así que estoy tirando con los disipadores. No se calientan mucho, pero alcanzan cierta temperatura.
He intentado probarla con Half Life 2 y Vampires Bloodline. Ninguno de ellos ha funcionado y sospechosamente el error es el mismo, algo referente a vertex buffers. También Morrowind falló. Sin embargo, el Delta Force 5, Planeshift y Scourge corren bien.
Tendré que probar Anarchy Online y WoW, a ver, aunque estos últimos usan motores más ligeros.
En otro orden de cosas, ya Planeshift funciona. Lo probaré más a fondo hoy o mañana.

Planeshift y la última actualización

Me costó un poco de trabajo obtenerla y al fin pude probarla brevemente ahora. Al parecer siguen los problemas, no puedo atacar nada. En el forum se han reportado problemas similares, todos relacionados con los NPCs. A veces no pueden ser atacados, no responden a las agresiones o si lo hacen, es una respuesta mínima.
Habrá que seguir esperando.

Bump Mapping

¿Qué es bump mapping? Básicamente es una técnica que permite simular profundidad en una superficie plana alterando la iluminación que recibe dicha superficie. Esto permite lograr más nivel de detalle con menos polígonos. El bump mapping utiliza una imagen en escala de grises que representa la elevación.
En ciertos casos esto no logra los resultados adecuados, y en su lugar se utiliza normal mapping. El mismo emplea mapas de normales en vez de mapas de elevación. Al igual que en el bump mapping estos mapas normales se generan a partir de una versión con mayor número de polígonos. Al aplicar la textura sobre una variante del modelo con menos polígonos utilizando ya sea normal o bump mapping, obtenemos una representación mejor del modelo (si es que todo sale bien).

Tags: ,

La Guerra de los Buscadores

¿Cuál será el próximo paso de la competencia para desbancar al líder Google? Hasta el momento, la calidad de los resultados es el factor primordial para atraer usuarios. Sin embargo, según Gates esto podría cambiar. Entrevistado por Computing, Billy se fue de lengua acerca de Google, a quien calificó de competidor serio , pero no de amenaza. Tal como Microsoft viene anunciando desde hace un tiempo, se está trabajando en una tecnología de búsqeuda que ahrá a MSN Serach comparable a Google. Insinuó además que Google no había sacado nada original, refiriéndose a Gmail y Google Talk.
El boletín de Entireweb da además algunos detalles adicionales acerca de cuál podría ser el arma del futuro en esta guerra. Gates afirma que Google gana unos $50 anuales por cada usuario. Una vez que MSN logre superar a Google, podríamos ver algún tipo de incentivo por parte de los buscadores, ya sea contenido gratis o incluso un cheque. "La competencia por los usuarios ni siquiera ha empezado" dice…

Otro día de trabajo

Ya se me acabaron los Mundodisco. Eso me ha dolido. Así que para variar voy a entrarle a los Net Force de Tom Clancy.
Por otra parte, a pesar de las interrupciones hoy he avanzado un poco en eso del log in y log out. El problema del movimiento aún no se ha solucionado del todo. En general, el proyecto camina, aunque por supuesto que está muy lejos de ser algo. Espero mañana implementar algunas cosas como sincronizar los datos del jugador entre el cliente y el servidor. Y también agregar algunos parámetros más de configuración. Ya casi me he decidido por TinyXML como parser xml.
Si las cosas siguen a este ritmo, posiblemente a final de mes el servidor ya sea muy diferente. El cuello de botella sigue siendo el cliente.

Proyecto de Troika Games

El mundo no es justo, eso es una teoría comprobada. Si alguien que lea estas líneas ha jugado Fallout 1 o 2 sabe que este juego tiene dos efectos: a) es insoportable, largo y aburrido b) cambia tu vida completamente. En el caso b te quedas esperando que detrás venga una secuela. Un Fallout 3, no esa decepción que fue Fallout Tactics. Es lógico, además, desde el punto de vista del productor. Si tienes una franquicia así lo menos que puedes hacer es explotarla adecuadamente. Y si no estás en condiciones de hacerlo, pues debieras vendérsela a quien pueda lograrlo de la mejor manera posible.
De los equipos de trabajo que produjeron los primeros Fallouts (los que de verdad importan), nacieron dos compañías, si no me equivoco, Troika Games y Obsidian Studios. De Troika he probado Arcanum (mediocre) y algo más que no recuerdo ahora. De Obsidian no recuerdo tampoco si he jugado algo, aunque tienen buenos títulos.
En un principio iba a haber Fo 3, llamado proyecto Van Buren. Pero Van Buren fue c…

Ultimos avances

Después de luchar un poco con DevCpp, tuve que crear el proyecto nuevamente en Visual C .net por causa de una violación de segmento que no logro encontrar. El cliente ya funciona. Luego de un pequeño cambio, la cámara ya no se comporta igual. Aún la vista es isométrica, pero ahora sigue al personaje, aunque no es exactamente el efecto de tercera persona que quiero lograr.
He posteado algunas solicitudes de ayuda a ver si encuentro a alguien que se haga cargo de este asunto del cliente. Por el momento no hay respuesta.