31 dic. 2004

31/12/04: La Era Digital

Diario de Guerra de Alejandro González, Alias "WaaghMan". Sexagesimosegunda anotación:

Con la llegada de la era digital, la humanidad ha logrado algo que hasta ahora no era posible: Mantener intactas las obras con el paso de los años.

Vale, hasta cierto punto: Un CD-ROM tampoco es eterno. Pero, a diferencia de las obras antiguas, si posees ese CD-ROM, podrás contemplar la obra como cuando era nuevo, sin pérdida de calidad.

Las obras de arte de la humanidad hasta ahora se estropeaban, gastaban y rompían, requiriendo trabajos de restauración cada cierto periodo. En el caso de un CD-ROM esta obra será cuestión de minutos, y al ritmo de la evolución tecnológica, en un dispositivo del tamaño de un DVD podremos guardar cientos de películas como las conocemos ahora.

Por supuesto, no todas las obras pueden ser almacenadas en formato digital: Esculturas, monumentos, pinturas, son ejemplos de esto. Pero la música, la literatura, el cine, son ejemplos de arte que podrán sobrevivir al tiempo para siempre.

Acaso no es esto un gran acontecimiento para la humanidad? :)
--------------------
Y la guerra sigue...

30 dic. 2004

30/12/04: Para que me encierren

Diario de Guerra de Alejandro González, Alias "WaaghMan". Sexagesimoprimera anotación:

Hoy tocaba turno completo de 9 a 9 en la beca de la universidad :). No me preocupaba mucho: Para ser doce horas, no se hacen muy pesadas, ya que se pasan hablando con la gente, realizando "trabajos" varios, etc.

En realidad, trabajo hubo poco, por no decir ninguno... Labra vino y me endiñó un par de proyectos para la web de la EUITIO, pero necesitaban el acceso con una contraseña que desconocíamos :P, así que nada.

Sí, soy un vago profesional :).

Hubo una buena sesión de ingeniería de caminos y puentes con el juego "Pontifex II". Hay que ver lo graciosa que puede ser la simulación física realista, con puentes originales e improvisados (y muy peligrosos :S).

Y la vuelta a casa fue bastante curiosa. No es que me encontrase con alguien o que presenciase algún acontecimiento importante. Simplemente, no paré de hablar solo en todo el camino!

Digamos que me sentía tan aburrido que necesitaba entretenerme... iba contando la gente que dejaba atrás (a mi nadie me adelanta a pie por la calle cuando voy solo), describiendo acciones con voz de comentarista, etc.

Estoy para que me encierren. Y aún quedan dos días más de beca: El 3 y el 4 de Enero de 2005. Aunque espero pasarlo bien también esos días.

Cambiando de tema, estando a día 30 de Diciembre por la noche, aún no tengo claro si haremos algo para la Nochevieja de mañana. Pero es que tampoco tengo claro qué se podría hacer: Ir de pubs, discotecas o similares, no me apetece en absoluto... y no veo muchas soluciones alternativas a esa. Prefiero no comentar las que se me han ocurrido aquí para conservar mi dignidad :P.

--------------------

Y la guerra sigue...

29 dic. 2004

29/12/04: Historias

Diario de guerra de Alejandro González, Alias "WaaghMan". Sexagésima anotación:

Atención, atención! Este blog ha sido actualizado! Jaleluya!

Cinco motivos de celebración tenemos...

1-Hemos llegado al post número 60 :).

2-Me he mudado a blogger. El motivo no lo tengo muy claro, simplemente me había cansado de diary-x, o me apetecía, o yo que sé.

3-Es navidad!

4-Tengo portátil nuevo!

5-Estamos actualizando el blog!



Siento actualizar tan poco. Simplemente, mi vida está resultando ser muy poco interesante últimamente. Dado que no tengo que ir a clase, donde el factor de aleatoriedad cotidiana es grande, y en el trabajo de webmaster tampoco suelen presentarse situaciones curiosas, no hay mucho que contar.





Así que entraré en uno de esos posts inspirados que resultan divertidos de leer y de escribir. El tema de este post surgió durante la lectura de un libro que cogí en la biblioteca de Lugones: Crónicas de la DragonLance, versión para coleccionistas. Trae los 3 libros de la trilogía en uno, con comentarios de los autores y referencias a otras obras posteriores.





No voy a hablar del libro en sí, sino de uno de los comentarios que decían, concretamente cuando los protagonistas llegan a un pueblo que ha sido atacado por un ejército, y no quedan más que restos humeantes y cadáveres poblando el asentamiento. En esa página, un comentario al pie del autor nos dice "En estos casos, lo mejor es dar pocas descripciones, y que sea la imaginación del lector la que describa los hechos. Cada lector ve una cosa diferente al leer las historias, así que una historia es diferente según quién la lea.".



Esas palabras me llegaron al alma, hasta tal punto que dejé a un lado el libro y corrí a apuntar la idea en un bloc de notas que dejé sobre el portátil, para ponerme a escribir este post al día siguiente.



Y es que entiendo perfectamente esas palabras. Yo soy un lector bastante particular: Lo que me gusta en un libro es que se desarrolle la historia, que los acontecimientos se sucedan: Las descripciones largas y detalladas sobre un emplazamiento o un personaje me parecen muy tediosas, y he llegado hasta a saltarme párrafos completos que no me interesaban para nada.



Algunos dirán que esa no es manera de leer un libro. Yo no estoy leyendo un libro, me están contando una historia. Y el escenario de la historia me lo imagino yo. Si me estoy imaginando a un personaje con el pelo moreno, se me hace muy difícil imaginarle con el pelo castaño porque lo diga la descripción. De hecho, eso es poco importante para el curso de los acontecimientos y saber cómo ese personaje salva a la princesa o mata al malvado mago.



Por supuesto, hay casos en que las descripciones sí son importantes, ya que algunos "pequeños detalles" pueden tener posteriormente relevancia, y en esos casos sufro una "excepción", teniendo que modificar mi idea del escenario para que encaje ese detalle.



No sé si los lectores más maduros criticarían o alabarían esta forma de leer libros: Estoy imaginándome la historia de forma diferente a como se la estaba imaginando el autor. Pero, a su vez, estoy imaginándome esa historia de forma que encaje en mi mente, para comprender mejor los acontecimientos.



Interesante post... a ver si le siguen otros :)

10 dic. 2004

10/12/04: Resumen

Diario de Guerra de Alejandro González Fiel, Alias "WaaghMan". Quincuagesimonovena anotación:

De nuevo actualizo el blog con basura sin interés... Shig.



-Hace 4 días se celebró la Sexta Party en mi casa :). Vicio intenso sin pausas durante 2 días y sus noches :).



-El proyecto Armistice se da por terminado y me pongo con la documentación



-Compro un portátil: Acer Travelmate 4002WLMi. Me llega el lunes siguiente :)

23 nov. 2004

23/11/04: Felices reyes magos :)

Diario de guerra de Alejandro González, Alias "WaaghMan".Quincuagesimooctava anotación:

Hoy hemos estado haciendo un repaso a los catálogos de juguetes que llegan a casa, llegamos rápidamente a una conclusión...





La industria de los juguetes para niños está estancada :).



En serio, el número de juguetes nuevos (no digo ya originales) respecto a hace unos 10 años se reduce a menos de un 50% del total.



La verdad es que entra la nostalgia al ver ese catálogo, cuando descubres ese juguete que tenías de muy pequeño (Gusiluz) o cuando rememoras esas emocionantes partidas al Risk.



También recuerdas esos injustos berrinches que cogías cuando no te traían lo que querías (Scalextric), y que ahora entiendes al ver que es carísimo :P.



Pero, a lo que iba, la mayoría de juegos ya existían hace 11 años, algunos incluso no han sufrido ni una remodelación de la caja. Ejemplos de esto son el Tragabolas o el Cocodrilo Sacamuelas, pero hay unos cuantos más...



Otros juegos sí que han sido remodelados, pero básicamente siguen siendo los mismos: El Monopoly, el Uno, el Atmosfear...



Hay que ver. Si esto se hiciese en algunas industrias que yo conozco, al carajo que se irían :s. Menos mal que los niños no entienden de eso, que si no...



Y el caso es que, como dijo mi madre, en estos últimos 10 años no ha habido cambios drásticos, pero en la década anterior si que los había habido, y muy grandes: Los coches teledirigidos, Scalextric, transformers, muñecas Barbie, etc.



Es lo que tiene ser joven :D.

22 nov. 2004

22/11/04: Cambios a mejor

Diario de guerra de Alejandro González, Alias "WaaghMan".Quincuagesimoséptima anotación:

Hace mucho tiempo que no escribo algo digno de mención, y creo que hoy no habrá excepción... pero pasemos a un resumen de hechos acontecidos.





1- Me voy (o van) a comprar un portátil :). Esto no implicaría realmente un cambio si no fuese porque el portátil pretende ser para trabajar.



2- Armistice tiene página web propia, así que las mejoras y cambios dejarán de aparecer en este blog :). Su enlace es http://petra.euitio.uniovi.es/~i0886062/Armistice



3- Hemos comenzado una campaña de rol masterizada por mí. Pretende ser una campaña corta mientras Roch (el máster usual) prepara la que llevamos un año (más o menos) jugando.



4- Parece que le estoy cogiendo el gusto a salir por la noche. No es que me emborrache ni que disfrute demasiado :P, pero me parece un cambio de aires en cierto modo interesante, ya que últimamente veo que lo voy necesitando.





Maldita sea, es tarde y no seguiré... pero de verdad, mañana intentaré hacer un post largo y profundo! :D

10 nov. 2004

10/11/04: Y duran, y duran...

Diario de guerra de Alejandro González, Alias "WaaghMan".Quincuagesimosexta anotación:

El sistema "Lista de pequeños retos" ha funcionado. Hoy, por tercer día consecutivo, estoy trabajando a destajo en el proyecto. Para agilizar las cosas, en los momentos "muertos" (es decir, cuando no estoy delante del compilador) apunto las cosas que faltan por añadir o que hay que mejorar, y las añado a la lista.



Además, si la forma de superar ese punto no es obvia, discurro una solución y la explico al lado.



De esta forma, cuando me siento delante del pc, está la mayor parte del trabajo hecho y sólo me toca teclear :).



Lista de cosas por hacer en estos momentos (en paréntesis las superadas hoy desde las 8.45 hasta las 11.00):



(-Disparos: Añadir potenciación a los disparos)

(-Tipos de daño: Añadir robo de vida/energía y daño basado en porcentajes)

(-Añadir regeneración de vida)

(-Mostrar los mapas correctamente)

-Hacer que funcione el Añadir jugador cuando se conectan después

-Hacer animaciones de los personajes

-Poner las animaciones de los personajes en el juego

-Muerte y reaparición de personajes

-Puntuaciones

-Actualización correcta de los estados de los personajes

-Desconexión y desconexión forzosa de personajes

-Menú de opciones durante el juego

-Sonidos

-Efectos de luz

-Icono del ejecutable

-Título de la ventana

-Calcular coste de los cuerpos

-Cambiar controles en el perfil

-Hacer funcionales los menús

-Añadir un interfaz durante el juego

-Poder configurar la velocidad de conexión

-Predicción de movimientos

-Tiempo de vida de los proyectiles

-Más mapas, Más cuerpos, Más armas



Como se puede comprobar, la lista es larga pero se reduce rápidamente (13% en dos horas).



Seguiremos informando :)

9 nov. 2004

9/11/04: Recuento

Diario de guerra de Alejandro González Fiel, Alias "WaaghMan".Quincuagesimoquinta anotación:

Bueno, por fin ha sucedido. Por fin me he concienciado y me he puesto a trabajar duramente en el proyecto. Y se nota. Con solo un día y medio de trabajo he hecho muchas cosas y he terminado (o perfilado) muchas partes del proyecto, unas más difíciles que otras.



Pero este post no pretende contar esos cambios (entre otras cosas porque, por extraño que parezca, no recuerdo qué hice ayer, sólo recuerdo que fue importante :S).



Entonces, de qué hablaré hoy? Pues hoy va un recuento de datos sobre el proyecto que pueden darnos una idea de su envergadura:



Y aquí van, divididos en las 4 partes del proyecto:

-TinyXML: No está hecho por mí, pero he de compilarlo.

Archivos .CPP - 4

Archivos .H - 2

Espacio ocupado por temporales (Modo Debug): 4,33Mb

Espacio ocupado por temporales (Modo Release): 537Kb

Espacio ocupado por la librería (Modo Release): 117Kb



-Engine: La parte del Engine que no depende de OpenGL (aunque sigue sin ser realmente genérica, ya que incluye clases que utilizan directX y otras que usan la API de windows. No pretendo que lo sea.):

Archivos .CPP - 22

Archivos .H - 29

Espacio ocupado por temporales (Modo debug): 9Mb

Espacio ocupado por temporales (Modo release): 6Mb

Espacio ocupado por la librería (Modo release): 521Kb



-EngineOGL: La parte que implementa OpenGL del motor.

Archivos .CPP - 11

Archivos .H - 10

Espacio ocupado por temporales (Modo debug): 21.2Mb

Espacio ocupado por temporales (Modo release): 6.97Mb

Espacio ocupado por la librería (Modo release): 761Kb



-Armistice: El juego en sí, y el gran tocho del proyecto

Archivos .CPP - 99

Archivos .H - 105

Espacio ocupado por temporales (Modo debug): 150Mb

Espacio ocupado por temporales (Modo release): 100Mb

Espacio ocupado por el ejecutable (Modo release): 420Kb





Como vemos, cantidades nada despreciables. Y lo que nos quede :).



Y, para terminar por hoy, contestaré a una pregunta: ¿Para cuando se podrán jugar partidas?





Pues, según lo que entiendas como "jugar partidas", ya se puede. Falta por hacer que funcione correctamente cuando hay más de dos jugadores (simplemente, aún no se avisa a los clientes de que se conectan nuevas personas). Falta por hacer que los jugadores puedan morir y ganar puntuaciones (aunque ya pierden vida). Faltan más variedades de armas y personajes (esto lo puede hacer cualquiera). Falta hacer que funcionen los atributos.Faltan animaciones para los diferentes movimientos. Falta el propulsor.



Pero lo básico (mapas, personajes que interactúan) ya está puesto :). Así que cuando queráis :).

2 nov. 2004

2/11/04: Contradicción

Diario de guerra de Alejandro González, Alias "WaaghMan".Quincuagesimocuarta anotación:

Veamos... La cosa es sencilla.





Soy una persona que se distrae con mucha facilidad. Enseguida pierdo la concentración de lo que estoy haciendo, y eso suele incurrir en a) Hago algo varias veces sin darme cuenta b) No hago lo que debería hacer c) Hago mal lo que está chupado.



Un ejemplo sencillo de esto puede verse por ejemplo a la hora de comer. Por un pacto no escrito, mi hermana pone la mesa y yo la recojo. Realmente es un pacto injusto, es más fácil poner la mesa que recogerla, pero por no pelearme, lo soporto. Pues el caso es que tras la comida, mientras recojo los platos y limpio la mesa, mis padres a veces hacen la tristemente famosa "ronda de preguntas". A veces son preguntas sobre qué he hecho hoy en el "trabajo", o qué tal llevo el proyecto, sobre las que puedo contestar (o mentir) fácilmente, sin desconcentrarme.



Pero otros días, son preguntas realmente insidiosas, de las que te hacen pensar e incluso dudar. ¿Cuáles son las siglas de TFT? ¿Qué es mejor, Plasma o TFT? ¿En qué consiste una partida de rol? ¿La gente que juega al rol contigo está desequilibrada? ¿Este móvil está bien de precio? ¿Se puede piratear CSD? ¿Qué le puede suceder al PC de mi compañero de trabajo que no funciona?



Etcétera. Estas preguntas, en su mayor parte, requieren pensarse la respuesta. Y eso me desconcentra hasta tal punto, que guardo el ketchup donde no es, o vuelvo a poner cosas ya recogidas en la mesa :|. En serio. Me hago un enorme lío.





Wow, me he ido por las ramas. A lo que íbamos, me desconcentro muy fácilmente y con catastróficas consecuencias.



Pues el caso es que eso me está sucediendo en este proyecto. Cualquier cosa me desconcentra, y sumado a la falta de motivación genérica, provoca que la cosa avance muuuy despacio.



Para evitar estas cosas, he decidido hacer un simple experimento que, espero, contrarreste las distracciones (ya que es imposible anularlas).



Al igual que me desconcentro fácilmente, soy una persona con mucha autoestima (esta mañana leí en una revista que los videojuegos aumentan la autoestima, y los recomendaban a los adultos). No es que me considere mejor que los demás, es que me esfuerzo en demostrarlo :).



Que nadie se lo tome a mal. No estoy diciendo que los demás sean basura comparados conmigo, ni mucho menos. Simplemente, ante los desafíos y similares, siempre intento superar al otro. Esto viene (y conlleva) de un terrible mal perder que tenía de pequeño (y sigo teniendo, pero en mucha menor medida).



De nuevo me lío. A lo que íbamos (again). El experimento consiste en plantearme pequeños retos que, uno tras otro, lleven a la consecución del proyecto.



Dicho así, parece sencillo (y en cierto modo lo es), pero el nº de pequeños retos, me temo que será demasiado grande. Pero bueno, con trabajo duro se irán completando...



Ahora mismo no tengo la lista a mano, pero ya hay unos 15 retos que superar.





Ahora, explicaré el estado actual del proyecto:



Recordemos:

-Menús funcionan, pero no hacen lo que deberían aún

-El servidor sirve y el cliente clientea.

-Los personajes se mueven y saltan, chocan y disparan, pero no reciben daños.



Últimamente:

-El cliente se une por IP. El servidor le indica el nombre del mapa, el nº de jugadores y su posición y cuerpo actuales. Una vez cargada la partida, el cliente escoje cuerpo y el servidor le dice dónde se ha de colocar. A partir de entonces, el servidor envía posiciones actualizadas del resto de clientes, y el cliente envía sus acciones, y posiciones actualizadas cada cierto intervalo de tiempo.





Últimos aspectos:

-El sistema de sincronización de cliente y servidor consiste en un sistema acción-evento. Esto quiere decir que el cliente envía acciones al servidor (me muevo, salto, disparo, etc.), y el servidor procesa la información. Cuando ocurra algo que afecte a ese jugador, se generará un evento (recibes impacto, mueres, ganas un punto, etc.) que se enviará al cliente para que lo procese.



Con ping 0, este sistema es ideal. Las acciones se enviarían de forma instantánea y la sincronización sería total. No es el caso. Dado que el ping puede ser variable, puede ocurrir que la acción envíada no se pueda efectuar, y el personaje no se comporte como debería. Esto se soluciona parcialmente con la previsión de movimientos usando el ping actual, pero no es suficiente, ya que pueden suceder cosas que el servidor y el cliente interpreten de forma diferente (por ejemplo caer verticalmente sobre un pico: Puede irse a la izquierda en el cliente y a la derecha en el servidor). Para evitar eso, también se actualizará la posición de los personajes utilizando los valores X e Y y enviándolos periódicamente.



Cuestión: ¿Quién actualiza los valores?

Respuesta: Ambos pueden. Por ejemplo, en el Half-Life es el servidor quien envía al cliente su posición verdadera. De esta forma, un cliente nunca podrá hacer trampas para mentir al servidor sobre su posición real, y no podrá hacer otra cosa que decirle que se mueve hacia una dirección concreta. ¿Desventajas? Con lag puede ocurrir que creas estar moviéndote correctamente, y de repente seas reposicionado en otro lugar. La acción puede volverse entrecortada y molesta.

Por tanto, en este caso se usará la actualización desde el cliente. Así, ocurra lo que le ocurra a la red, un cliente siempre verá su propia posición de forma fluída (aunque seguirá siendo el servidor quien determinará si sus disparos dan a los demás, etc). Esto conlleva el problema de que un programa en segundo plano podría modificar los paquetes enviados para engañar sobre la posición actual, pero eso es mucho suponer para un juego así :P.



Mañana más. Espero ponerme a saco con el tema... hay veces que creo estar dividido en dos :S

27 oct. 2004

27/10/04: Pereza

Diario de guerra de Alejandro González, Alias "WaaghMan". Quincuagesimotercera anotación:

Últimamente el proyecto ha estado pausado, demasiado pausado. La culpa es mía y sólo mía. El caso es que el motivo de esta pausa no es otro que el explicado arriba. dado que ya he terminado la parte "difícil", y sólo queda escribir mucho código, pues resulta bastante desesperanzador y no dan ganas de empezar.



De todas formas, esto cambia a partir de hoy.



Dicho así, podría parecer el típico "mañana lo empiezo, seguro". La diferencia es que, ahora, en el trabajo de por la mañana estoy separado del resto de gente, y por tanto no podré jugar con ellos :). Esta tarde reanudaré el trabajo y me pondré a ello concienciadamente.



Por otra parte y cambiando de tema, he comprado en eBay unas figuras de Hombres Lagarto para Warhammer, que deberían llegarme mañana o pasado. Tras esta remesa, pasará bastante tiempo hasta que compre más figuras. El ejército está bastante perfilado ya, y no le hace falta mucho más.



También informo de que este blog reanudará su actualización diaria (o casi), porque ahora me aburriré más por las mañanas :).

17 oct. 2004

17/10/04: Actualización

Diario de guerra de Alejandro González, Alias WaaghMan. Quincuagesimosegunda anotación:

Bueno, hace bastante que no me explayo hablando del PFC, así que ya toca, y de paso me organizo un poco las ideas.





Como se puede haber leído en un par de mensajes anteriores, en el juego ya se muestran los disparos, se cargan y muestran los mapas, y los personajes. Se detectan colisiones, existe un menú, y algunas cosas más.



En estos momentos estoy trabajando duramente en el protocolo de red, por así llamarlo. La teoría es sencilla: Suponiendo que se conoce la IP del servidor, un cliente se conecta a éste, y le hace una petición para entrar al servidor. Éste le contestará diciendo si puede (hay hueco en el servidor) o si no puede (se ha llegado al tope de jugadores).



En caso de que pueda, el servidor le da al cliente de paso el nombre del mapa que se está jugando, y (En teoría, aún no funciona esta parte) una lista con los archivos que el cliente debería tener para que pueda jugar bien en ese servidor (por ejemplo, los cuerpos de los jugadores que estén en ese momento jugando).



Una vez el cliente compruebe que posee esos ficheros y cargue el mapa, en teoría, debería mostrar la pantalla de Escoger Perfil, donde el jugador escogerá el que desee. Entonces, el cliente enviará el aviso de que va a introducir un personaje con los datos de ese perfil. Mientras el cliente escoge, el servidor le pasa los datos de los personajes en juego en ese momento.



El servidor debería (tampoco se hace aún, ya que no hay aún baremo de puntos) comprobar si la puntuación del cuerpo y el arma escogida no supera el límite impuesto por el creador de la partida, y en ese caso, añadir el jugador a la partida y avisar al resto de jugadores de que ha entrado otro más (Tampoco se hace aún).



Una vez dentro de la partida, la cosa es más sencilla: Cada cliente enviará cada cierto tiempo unos datos para sincronizar las cosas, con información de su posición y su estado. Además, en cada modificación al estado (comenzar o dejar de moverse, saltar, disparar, etc), se enviará un aviso al servidor. De esta forma la sincronización total se puede hacer cada más tiempo, y se ahorra ancho de banda.



Lo ideal para estas cosas sería que servidor y clientes incluyesen predicción de movimientos. El motivo es sencillo: Desde que un cliente envía sus datos hasta que el servidor los recibe, pasa un tiempo. Entre ADSLs este tiempo es de alrededor de 50ms, en LAN es desdeñable. Pero si la conexión está ocupada, este tiempo crecerá. En realidad, es fácil hacer esa predicción: Se calcula el tiempo de retardo del envío (la mitad del ping), y se calcula la nueva posición del personaje aplicando el estado recibido durante ese tiempo.



Es decir, si el personaje se estaba moviendo a la derecha, lo movemos a la derecha durante 50ms. De esta forma su posición, sin ser la ideal, estará mucho más cercana a la posición real que si no hiciesemos nada.



Tal y como está el proyecto en estos momentos, el mayor problema es la orientación a objetos. No lo considero un fallo del diseño (al menos no un fallo grave), simplemente el controlador de Red tiene que manejar demasiadas cosas del juego (cambiar personajes de sitio, manejar los mapas, añadir jugadores, etc.), de forma diferente si son cliente o servidor, y hay demasiados métodos repetidos porque los atributos son demasiado diferentes, a pesar de que hacen lo mismo.



De todas formas, una cosa la tengo clara: Una vez consiga que se pueda crear una partida de un número de jugadores mayor de 2 en la que los jugadores se puedan disparar y matar, y todo vaya correctamente y sin fallos, pausaré el desarrollo. Será momento para limpiar el código, añadir comentarios y pulir ciertos procesos. De esta forma espero que el código quede mucho más claro, sea más rápido y quede más bonito :).





Tiempo estimado hasta esa pausa: Una semana, si mi hermana no me da mucho la vara :S. Dos si lo hace :P.

16 oct. 2004

16/10/04: Recuerdos

Diario de guerra de Alejandro González, quincuagésima anotación:

Hoy estaba leyendo el manga de Naruto, y en él el autor hablaba de cosas de su infancia, como cuando dibujaba historias de Doraemon o se vio atacado por un grupo de monos salvajes.



En ellas, contó que el primer juego de NES al que jugó era el Dragon Knight, un juego de rol, y que le costaba mucho porque no acababa de entender todos los menús y opciones que aparecían.





Esto me hizo recordar mi primera andadura en los videojuegos (o al menos la primera que recuerdo).



No recuerdo qué edad tenía, pero eran menos de 7 años, ya que a esa edad me mudé de Oviedo a Madrid, y esa historia sucedió en oviedo. Posiblemente sería con 6 años de edad.



Mis padres me habían comprado una Nintendo al terminar el curso, "por sacar buenas notas"(Las notas eran simplemente un P.A.++ , un P.A.+ y el resto P.A.).



Tras que mi padre la enchufase y conectase al monitor, introduje el cartucho del Super Mario Bros y pusimos una partida a dos jugadores, mi padre y yo.



Y, en mi primera partida de Super Mario Bros, batí un record. Así de simple. Es imposible morirse más rápido de lo que lo hice yo. Nada más salir, apreté el botón de correr y el de caminar a la derecha, hasta que choqué con el primer enemigo que aparece.



Siempre recordaré esta anécdota, ya que me parece muy graciosa. Creo que hasta lloré (aunque de esto ya no estoy muy seguro).



Otra anécdota que recuerdo era cuando había una feria en el parque cercano a donde vivía. Había puestos de tiro al blanco, coches de choques, un gusano, una casa del terror, y alguna cosa más. Por aquel entonces, yo "coleccionaba" coches Majorette. No me daban paga, pero cada semana mi padre me compraba un cochecito, siempre en el mismo kiosko. Por supuesto, hacíamos carreras con esos coches en las múltiples cuestas del colegio al que iba. No recuerdo por qué, pero el caso es que yo tenía un cinturón de Majorette, rojo y amarillo, con riñonera para guardar los coches. Pues cuando iba a los coches de choque, siempre llevaba ese cinturón. Creía que me daría suerte y podría ganar al resto de participantes (eran coches de choque infantiles, así que podía montar solo). Por supuesto, en los coches de choque no se gana, ya que no hay forma de contar quien ha recibido menos golpes y dado más. Pero lo que sí sucedía era que no me daban muy a menudo, y propinaba muchos empujones por el lateral. Lo atribuía a ese cinturón, mi cinturón de la suerte :).



Yo era muy llorón de pequeño, así como muy violento (o eso dicen mis padres). Cuando íbamos al parque, yo pegaba a todos los niños de mi alrededor, incluso mordía. O eso dice mi madre.



Según fui creciendo, y muy posiblemente debido a la pérdida de amistades en la mudanza a Madrid, fui amansándome, hasta el momento actual.



Reconozco que no soy una persona sosegada y complaciente, pero tampoco soy una amenaza pública. Supongo que no soy el más indicado para describirme en este aspecto, y a veces soy ligeramente ofensivo, pero lo hago casi sin darme cuenta, guiado por mi inocencia :P. Me refiero a ofensivo en gestos y palabras, no a golpear...

15 oct. 2004

26/9-15/10: Resumen

Mierda. Había escrito un largo texto explicando las cosas que me habían sucedido entre estos días en los que no escrito, pero un pequeño error mío ha llevado todo ese texto al traste. Así que al carajo, un resumen corto:





-PFC: He trabajado poco: Animación del tipo caminando, Gráficos del personaje aceptables, colisiones y respuesta a las mismas, disparos, movimiento del personaje, y en estos momentos estoy trabajando en el proceso de conexión entre cliente y servidor. Puede parecer mucho, pero en dos semanas me daba tiempo a mucho más.



-Sucesos: El viernes pasado, este pc se puso enfermo :\ . Se colgaba irremediablemente si se intentaba ver un video. Estuve casi dos días completos intentando solucionar el problema, para que al final se arreglase solo metiendo y quitando una tarjeta gráfica diferente :S.



Además, un par de días después, a Pc viejo se le jorobó la fuente de alimentación. Por suerte, no me salió caro ya que pude sustituirla por una de las que no se usaban en la beca.



-Trabajo:

En la beca hemos currado como tontos, para poner a punto los laboratorios rápidamente. Han surgido ciertos problemas, y tenía un miedo atroz por que no me tocase el turno de mañana, pero al final todo ha salido (o está saliendo) aceptablemente.



-Warhammer:

He comprado unos gélidos hombres lagarto, y están pintados y montados, preparados para ser barnizados. Además, he conseguido que Brenes y Guzmán, dos buenos amigos, echen una partidita para ver si les gusta o no el juego :).





Maldita sea, con lo lindo que me estaba saliendo el otro texto...

10 oct. 2004

10/10/04: La explanada de la muerte

Diario de Guerra de Alejandro González, Alias "WaaghMan".Quincuagesimoprimera anotación:



La lluvia caía a mares, como afiladas agujas. Diminutos hilos de agua recorrían los surcos entre las escamas del general Hombre Lagarto, mientras éste oteaba el horizonte.



Hace unas horas, un único superviviente eslizón de un grupo de exploradores había vuelto con una advertencia: Un ejército de No-Muertos se acercaba a la ciudad-templo. De alguna forma, habían conseguido controlar la mente de un pequeño grupo de altos elfos que estaba buscando nuevas rutas comerciales. El propósito de este ejército parecía claro: Se dirigían directamente a la ciudad-templo, donde descansaban los restos momificados de muchos Saurios poderosos, muertos hace milenios.



La ciudad-templo no estaba preparada para organizar una defensa capaz de detener el avance no muerto. La única opción era la retirada. Se organizó un pequeño destacamento para contener el avance enemigo todo lo que fuese posible.



El general sonrió. Hacía poco, había combatido en una situación similar, y había conseguido sobrevivir, tras cumplir su misión y salvar a los habitantes de Tetloc-Itzá. Nunca había combatido con altos elfos, pero esperaba que el control mental de los no muertos redujese su capacidad de combate. Ya había combatido con anterioridad contra los No Muertos, incluso había derrotado en persona a un vampiro del clan Necrarca. Confiaba en detener el avance enemigo con facilidad.



Cuando consiguió distinguir las nubes de polvo en el horizonte, su corazión dió un vuelco. Este ejército no se parecía en nada al que había derrotado con anterioridad. Los No Muertos avanzaban sin hacer ni un solo ruido, en un silencio sepulcral que sólo anunciaba muerte.



Los Altos Elfos, pese a su control mental, parecían estar perfectamente conscientes. El general se resignó. El combate seria difícil, pero era necesario defender su posición.



Sus fuerzas no eran muy numerosas, pero estaban decididas a luchar y morir para defender la ciudad. Contaba con un regimiento de lanceros y dos de eslizones, las dos salamandras, cuya agresividad era apenas contenida por sus batidores, y un chamán eslizón.



El ejército enemigo, por lo que podía distinguir, estaba formado por un grupo de caballeros no muertos, un gran grupo de esqueletos y otro de zombis, una cohorte de tumularios, y liderando esta hueste, un nigromante y un vampiro del clan Dragón Sangriento.



Los elfos, menos numerosos, constaban de un regimiento de arqueros, un lanzavirotes, un hechicero, y un gran regimiento de caballeros segadores, comandados por el general alto elfo.



La mera vision de tantos caballeros en ese ejército le hizo estremecerse. Tendría difícil defender su flanco derecho.



Sin previo aviso y continuando su camino, los no muertos se acercaron a su objetivo, mientras los elfos disparaban con toda su potencia de fuego al regimiento de saurios.



Por suerte, el control mental les hacía bastante inefectivos, y cayeron pocos saurios. Los no muertos no disponían de armas de largo alcance, así que por el momento no debería preocuparse de sufrir muchas bajas a sus manos.



Su ejército se movió como sólo se puede hacer con años de experiencia en combate. Los saurios intentaron alejarse del lanzavirotes y los arqueros, mientras los eslizones se cubrían tras los muros de la ciudad para defenderse de los disparos. Su ejército tampoco tenía armas de largo alcance, así que deberían esperar pacientemente y contraatacar cuando fuese el momento propicio.



Los no muertos se acercaron aun más. El nigromante demostró su dominio de las artes oscuras haciendo aparecer unos esqueletos de la nada. Los altos elfos continuaron disparando a las fuerzas de los hombres lagarto, mientras su gran regimiento de caballeros se acercaba a gran velocidad.



En un intento por frenar al enemigo, unos valientes eslizones abandonaron la protección de los muros para entorpecer los movimientos de los no muertos. A su vez, las salamandras dispararon su ácido corrosivo contra los esqueletos, pero no llegaban tan lejos.



Los eslizones del flanco cercano a los elfos se escondieron tras los muros y dispararon a los caballeros segadores, sin mucho éxito. El chamán eslizon también intentó hacerles daño invocando un rayo atronador, pero no les causó ningun efecto.



La mitad del ejército no muerto se detuvo para combatir con los eslizones que habían avanzado, mientras la otra mitad seguía avanzando en silencio. El vampiro Dragón Sangriento no pudo contener más su rabia y atacó a los saurios por el flanco, causando dos bajas.



Los elfos continuaron su avance y dispararon con todo lo que tenían, sin causar daños muy graves a las fuerzas de los hombres lagarto.



El combate estaba volviéndose más duro a cada paso. Los saurios consiguieron derrotar al vampiro gracias a su número, y éste se deshizo literalmente. En ese momento, los saurios no pudieron ni celebrarlo, ya que los caballeros se acercaban a gran velocidad. Pero los batidores, conocedores del respeto que imponen las salamandras entre las criaturas mortales, las colocaron en la entrada al pueblo para defenderla.



Hicieron bien, ya que los caballeros segadores fueron incapaces de cargar contra esas criaturas por el acobardamiento que sintieron.



Mientras, los caballeros no muertos mataron a más de la mitad de los eslizones que habían avanzado. Los eslizones huyeron, y los caballeros dieron media vuelta para proseguir su avance. Ese momento lo aprovecharon los eslizones, que se reagruparon y cargaron contra el general no muerto. Aunque no consiguieron matarlo, le hirieron de gravedad, y su superioridad numérica hizo el resto: El nigromante se deshizo como había hecho el conde vampiro. Sin el vínculo mágico que les mantenía en el mundo de los vivos, el ejército no muerto comenzó a derrumbarse justo en el momento en el que conseguían entrar en el pueblo.



Los caballeros segadores pudieron por fin superar su miedo y atacar a las salamandras, que destruyeron sin dificultad. Continuaron su imparable carga y chocaron contra los saurios, a los que también hicieron trizas.



El general, por el bien de su pueblo, decidió enfrentarse a los caballeros y al general alto elfo. Cargo contra ellos, y mató a un par de enemigos, sin sufrir heridas. Tras ello, desafió a un combate personal al general alto elfo, que aceptó. El intercambio de golpes fue largo y extenuante, pero al final el saurio escamadura derrotó al comandante alto elfo. Después de ello, continuó combatiendo con los caballeros, que poco podían hacer contra su resistente armadura. Al final, los altos elfos se recuperaron de su control mental debido a la muerte del nigromante, y se retiraron antes de que muriesen todos.



Los restos que aún estaban en pie del ejército de no muertos intentaron entrar en el pueblo, pero sin el apoyo mágico de su invocador, no podían moverse muy rápido, y se hicieron pedazos antes de llegar. Sólo un regimiento de esqueletos maltrecho llegó a adentrarse en la ciudad, atravesando literalmente al chamán eslizón que se interpuso. Pero para cuando llegaron, la ciudad estaba desierta. El general hombre lagarto había conseguido salvar la ciudad, y de paso detuvo la amenaza al matar al nigromante. En pocas horas, el ejército no muerto no sería más que un recuerdo, y los altos elfos, tras recuperarse de su control mental, se retiraron a su tierra natal.

25 sept. 2004

25/9/04: Primer Contacto

Diario de Guerra de Alejandro González, Alias "WaaghMan". n-ésima anotación:



El primer ataque de los muertos de risa



Jugadores: Yo y Hector

Ejércitos: 1000 puntos de Hombres Lagarto vs. 1000 puntos de No Muertos (usando lista de ejército experimental).

Escenario: Batalla Campal (Aniquilación Total)





El bando No Muerto estaba compuesto por:

-Vampiro Neonato del clan Necrarca con la estirpe negra de Nekherara (le hace hechicero de nivel 1).

-Espectro

-20 Zombies con portaestandarte y músico

-16 esqueletos con lanza, armadura ligera, escudo, portaestandarte y músico

-12 Zombies con portaestandarte y músico

-16 necrófagos

-14 Lobos espectrales

-5 Caballeros negros montados en pesadilla con armadura pesada, escudo, barda y lanza de caballería. Incluyen portaestandarte y músico.



El bando Hombre Lagarto estaba compuesto por:

-Saurio Escamadura con Desove sagrado de Sotek (+1 ataque al cargar), Escudo Hechizado (+2 a la tirada de salvación), armadura ligera, y embrujo del guerrero jaguar(Movimiento 22).

-Chaman eslizón de Nivel 2

-2 Salamandras

-12 exploradores eslizones con jabalina y escudo

-12 eslizones con cerbatanas

-16 Saurios con lanza y escudo, portaestandarte, músico y Gran Guerrero Saurio

-16 Saurios con arma de mano y escudo, portaestandarte, músico y Gran Guerrero Saurio



Campo de batalla:

-Un campo de batalla de 80 cm de ancho por 100 de largo, con las zonas de despliegue separadas 60cm entre ellas. En cada zona de despliegue, una colina en el medio. En uno de los laterales, dos colinas y una valla olbicua, en el otro una valla oblicua y dos pilares horizontales.



Despliegue:

-Todas las unidades en el fronal casi directamente. Las que no justo detrás. Los exploradores eslizones desplegaron entre las dos colinas de un lateral.





Desarrollo del combate:

-Los primeros en mover fueron los No Muertos. Todos los que estuviesen a 30cm o menos del general podrían efectuar el movimiento de marcha. En el primer turno esto se cumplía para todas las unidades menos el espectro y los necrófagos, pero estos últimos no son no muertos y por tanto también pudieron avanzar deprisa. De esa forma, el ejército no muerto se acercó sin miedo (y sin inteligencia) hacia el enemigo.



El vampiro Neonato intentó lanzar el único hechizo que conocía (Mirada de Nagash, proyectil mágico), pero no consiguió hacerlo.



De esta forma terminaba el primer turno No Muerto.



-El primer turno de los hombres lagarto tampoco fue muy movido. El ejército al completo avanzó, al no disponer de más armas de proyectiles que las Salamandras y los eslizones. Los exploradores intentaron rodear a los necrófagos (aunqeu fue mala idea como ya se verá), corriendo hasta estar detrás de ellos.



En la fase de magia, el chamán consiguió lanzar con éxito el cometa de Cassandora sobre una zona un poco más adelante de donde se encontraba el grueso de los no muertos, para detener su avance o dañar seriamente sus fuerzas.



En la fase de disparo, los eslizones que no eran exploradores dispararon sus cerbatanas. Muy pocos podían disparar, y estaban a largo alcance, así que no consiguieron ningún efecto. Pero las salamandras también dispararon, y acabaron con tres caballeros negros gracias a unas lamentables tiradas de salvación .



-El siguiente turno de los No Muertos fue muy efectivo para ellos. Para empezar, el cometa no cayó en ese momento, sino que se hizo más grande (y potencialmente más peligroso).



Los caballeros cargaron contra las salamandras, para vengarse de su ataque, y los necrófagos cargaron contra los exploradores eslizones (al ser hostigadores, podían hacerlo sin problemas). Los eslizones no superaron el chequeo de miedo, y huyeron por patas, saliendo del campo de batalla para no volvérseles a ver.



El ejército no muerto siguió avanzando, procurando no quedarse muy cerca del cometa. El vampiro intentó de nuevo lanzar su hechizo, y esta vez lo consiguió, pero fue dispersado por el chamán eslizón.



El combate entre las salamandras y los caballeros terminó en un empate que fue desempatado por el músico de los caballeros. Las salamandras superaron el chequeo de desmoralización, y el turno no muerto terminó.



-Los Hombres Lagarto, tras el chasco por la caída de sus eslizones, se decidieron a reparar su error y declararon carga con las unidades de saurios. Ninguna de las dos estaba a la distancia necesaria, y las cargas fueron fallidas.



La unidad de eslizones restante se retiró antes de que sufriese el mismo destino que sus companyeros.



El chamán intentó lanzar su rayo atronador sin éxito. El combate entre las salamandras y los caballeros terminó de nuevo en empate.



-Era el momento de pasar a la acción. El cometa siguió sin llegar aún, y los no muertos declararon carga con los lobos espectrales, los zombies y el espectro contra los saurios que antes habían fallado. Ambas unidades superaron sus chequeos de miedo y aguantaron el embate.



El vampiro intentó por enésima vez lanzar la mirada de nagash, y de nuevo falló.



El combate entre los saurios con lanza y los y los lobos espectrales terminó en masacre. De los 14 lobos que había, 7 fueron destruidos, a cambio de dos hombres lagarto. Como consecuencia, los Lobos fueron derrotados en el combate, y por ello perdieron otros 6 lobos, quedando uno solamente.



El otro combate (Saurios vs. Espectro y Zombies) estuvo más igualado, con ninguna baja provocada por los no muertos, y una por parte de los hombres lagarto. El combate terminó en empate y ambos bandos tenían músico, así que nadie resultó vencedor.



Por fin, el combate entre salamandras y caballeros terminó, con una victoria por parte de los caballeros, que persiguieron y alcanzaron a las salamandras que huían.



-En el turno de los hombres lagartos, el general cargó contra los caballeros que derrotaron a las salamandras. El hechicero no consiguió lanzar ningún hechizo, y la fase de disparo no tuvo nada digno de mención.



En el combate, los saurios aniquilaron a los lobos espectrales; El general mató a un caballero y el combate terminó en empate; y los hombres lagarto causaron numerosas bajas a los zombies, que se vieron casi aniquilados por completo. El espectro (que estaba en el mismo combate), aunque no era posible impactarle directamente, podría ser destruido si era derrotado en combate.



-Por fin, el cometa llegó, e impactó a tres unidades de los no muertos. Esos impactos destruyeron a una unidad de zombies, dañaron gravemente a otra, y eliminaron la mitad de la unidad de necrófagos, que huyó hacia la seguridad de sus cementerios.



Tras eso, el señor vampiro decidió esperar el ataque final de los hombres lagarto tras una valla para tener ventaja en el combate. De nuevo falló su hechizo, como no...



En el combate del espectro, los hombres lagarto le derrotaron, y aunque no fue impactado, su esencia se difuminó por completo.



El general hombre lagarto eliminó al último caballero negro y se preparó para el combate final...



-Era el momento del último ataque de los hombres lagarto. Los saurios cargaron contra los esqueletos y los zombis que quedaban. El combate contra los zombis fue un éxito, pero no ocurrió lo mismo con el de los esqueletos. Éstos resistieron lo suficiente para vencer el combate, provocando la huída de los saurios, que persiguieron y aniquilaron.





(No entiendo muy bien cómo sucedió la parte final ya que no encajan los acontecimientos)



El general hombre lagarto cargó contra el general no muerto y le destruyó en un sólo turno. Tras esto, el regimiento de zombies se desvaneció y la amenaza no muerta con él .

24 sept. 2004

24/9/04: Ya basta!

Diario de Guerra de Alejandro González, Alias "WaaghMan". Cuadragesimoséptima anotación:



Bueno, vale. Ayer fue divertido, pero hoy nos hemos pasado. Un total de cinco partidas al Age Of empires en un día me parecen excesivas. He tenido victorias aplastantes y derrotas humillantes, y he descubierto cómo juega un pr0 del Age Of Empires... dios, éramos seis y el chaval podría haberse cargado a todos los nuestros en un 5vs1, creo yo :P. Usaba los aztecas... debería probar qué tal son :S.





De todas formas, ya basta, estoy hasta las narices de ese juego. Estoy llegando a la obsesión (y eso que sigue sin gustarme). Menos mal que hoy es viernes y así me despego de eso durante al menos dos días :S.



Mañana, batalla introductoria de warhammer... espero que no sea una pifia y venga poca gente... hay demasiada gente que no confirma si v a a venir o no...


23 sept. 2004

23/9/04: Vikingos

Diario de Guerra de Alejandro González, Alias "WaaghMan". Cuadragesimosexta anotación:



Como predije, hoy ha habido un intenso vicio al Age Of Empires por la tarde. Por la mañana trabajé intensamente en el PFC, ya tengo terminada la carga de los cuerpos (me queda la parte de las animaciones).





Las partidas fueron interesantes, una victoria sorprendentemente sencilla la primera, y otra algo más reñida :). Voy mejorando, y ya he encontrado civilización preferida :). Esos vikingos, con sus barquitos y sus guerreros que se regeneran, son muy chulos :).

22 sept. 2004

22/9/04: Algo en común

Diario de Guerra de Alejandro González, Alias "WaaghMan". Cuadragesimoquinta anotación:





De nuevo, hoy tocaban 12 horas de trabajo en la beca.



Por suerte, hubo un cambio respecto al Lunes. Hoy vino Costa (un becario de por la mañana) a echar una partidilla al Age Of Empires, y ahí encontramos un denominador común: Todos jugamos una partidilla (ganamos por los pelos :P), que aunque a mí no me encantó (ese juego nunca lo hará), al menos hizo que se pasase el tiempo más rápido.



Así que, creo, mañana jugaremos bastante a ese juego... soy un paquete, pero aprendo rápido :).

21 sept. 2004

21/9/04: Vagancia again

Diario de Guerra de Alejandro González, Alias "WaaghMan". Cuadragesimocuarta anotación:



Hoy, día de San Mateo, no he salido tampoco :S. En realidad no me importa mucho, pero estoy molesto porque pretendía hacer bastante trabajo del PFC. Por desgracia, no ha sido así :S. Me vicié al Painkiller y no tuve ganas de hacer el proyecto, así que nada.



Y es que últimamente no tengo muchas ganas de trabajar :S.

20 sept. 2004

20/8/04: Tedio

Diario de guerra de Alejandro González, Alias "WaaghMan". Cuadragesimotercera anotación:



Buf. Hoy he estado trabajando 12 horas, de 9 a 9, en la beca. No ha sido una completa pérdida de tiempo, pero sí ha sido una parcial pérdida de tiempo :S.



He trabajado algo en el PFC, la primera parte de la carga de cuerpos y extremidades :).



Hay que reconocer una cosa... a pesar de estar 12 horas junto a otras dos personas, apenas hemos intercambiado frases :S. Simplemente, creo que no tenemos nada en común :S. Y no soy tan social como para generar conversaciones durante tanto tiempo :).

19 sept. 2004

19/9/04: Frikicios

Diario de Guerra de Alejandro González, Alias "WaaghMan". Cuadragesimosegunda anotación:



Hoy me he levantado bastante pachucho de la cama... tengo la garganta fastidiada y toso de vez en cuando. Además de un dolor de cabeza bastante majo. Así que hoy paso de ordenadores y me tumbo en la cama a leer un rato.



En este momento me surge la duda de ¿qué leer?. Las posibles respuestas se podrían dividir en tres:



-Libros: Todos los que tengo los he leído entre una y cinco veces.

-Comics: Tengo muchos, pero me los sé todos casi de memoria :S.

-Revistas: Mmmmm vale.



Dado que ultimamente estoy aficionándome de nuevo al warhammer, decido subir y echarle un ojo a la montaña de White Dwarfs que tengo (todos los números entre la 18 y la 72). Cojo una al azar y me pongo a leerla.



En ese momento recuerdo cómo conocí el mundillo de Warhammer y Games Workshop. La verdad es que fue una cosa muy curiosa, y seguramente pocas personas lo conocieron de esta forma.



En ese momento debía de tener unos doce o trece años. Vivía en Madrid, pero estaba de vacaciones de semana santa en Asturias.



Al lado del portal donde vivían mis abuelos había un kiosko (creo que ahora ha cerrado). A veces entraba a comprar mortadelos o chucherías.



Un día que entré, una revista me llamó la atención por su imponente portada: Salían bichos con enormes dientes y armas más grandes que ellos, de piel verdosa y con pinta de ser peligrosos (más tarde supe que se trataba de Gazgkhull Thrakka y su séquito). En su portada ponía WHITE DWARF nº12.



Debido a mi timidez latente y lo pequeño que era el kiosko, no me veía con fuerzas a abrir y hojear la revista delante del tendero, así que salí.



Durante cinco días, entraba siempre que podía a mirar la revista. Intentaba desde fuera y a través del escaparate conseguir ver la parte de detrás, para ver si aprendía más cosas de aquella pequeña joya.



Al final, no pude aguantar más y le pedí a mis padres que me comprasen la revista. Una vez la tuve en mis manos, me sentí amubrado por la sorpresa: Estaba viendo las figuras del Cruzada Estelar magníficamente pintadas! Me leí de pe a pa la revista (de hecho, ese día eché la pota en el coche de mi padre por culpa de ella), y cada vez me gustaba más el mundillo. Le enseñé a todos mis amigos la revista, con su informe de batalla entre altos elfos y skavens, con reglas tan profundas que los lanzallamas podían incendiarse solos o la rueda de la muerte perder el control.





Pasado un tiempo, mi madre me compró una caja en la que venían 10 altos elfos, 5 con arco y 5 con lanza. Los monté y jugué los minicombates que venían en una hoja de inicio rápido, pero necesitaba dos cosas: Oponentes y dinero, mucho dinero...



Tales cosas nunca llegaron, y fui olvidándome del tema poco a poco hasta que, un año después, encontré en el mismo kiosko (y por las mismas fechas) la revista White Dwarf nº 18 ( en esos momentos era bimestral). En ella salían los nuevos elfos silvanos, y un trepidante informe de batalla de Necromunda. Ahí vi la solución: Con necromunda bastaba con tener las figuras que venían en la caja para jugar, no necesitaría comprar un caro ejército. Además, sería fácil encontrar gente con la que jugar si les explicaba de qué iba la cosa...



Bueno, eso fue la teoría. En la práctica, la caja de necromunda cumplió su cometido, pero se hizo difícil encontrar oponentes. Sólo a un amigo le interesaba la cosa, y jugué una campaña con él, enfrentándonos en repetidas ocasiones (en vacaciones incluso llegamos a jugar dos batallas diarias). Al año siguiente jugamos al Necromunda y al Blood Bowl, y al siguiente. Después la comunicación desapareció y no he vuelto a ver a ese amigo de las vacaciones :S.



Sé que vive en Gijón, y creo que está estudiando Informática, así que es posible que le vea el año siguiente. Serán muchas las cosas de las que podremos hablar, pero yo ya lo he catalogado como "viejo amigo".



Y, para desgracia mía, pierdo muy facilmente la comunicación con los "viejos amigos" :(.



Siguiendo con el tema del Warhammer, diré que, una vez me mudé a Barcelona, hice un ejército de Orkos de WH40K para jugar batallitas con algunos amigos, pero el tema se dejó de lado para jugar a Vampiro :S (el primer juego de rol serio al que jugué). Y, poco después, me mudé de Barcelona a Asturias, donde conocí a un gran grupo de amigos que aprecio mucho (quizás porque comparten muchos de mis gustos, pero yo opino que es más por su personalidad), y jugamos primero al RochSystem, después al Dungeons & Dragons, y ahora intentaremos compaginar Warhammer y D&D si somos capaces...



Me gustaría continuar con el tema, pero se hace tarde y tengo sueño, así que dejaremos parte para mañana (quizás una parte naranja, con más ideas y menos hechos).

18 sept. 2004

18/9/04: Pausas

Diario de Guerra de Alejandro González, Alias "WaaghMan". Cuadragesimoprimera anotación:



Últimamente tengo el PFC bastante abandonado, quizás porque nunca me siento realmente dispuesto a continuar el trabajo, quizás porque las partes que me gustaban ya están casi terminadas. En cualquier caso, la cosa ha de continuar.



Hoy he trabajado poco (muy poco), y he continuado donde lo dejé: El tema de las texturas y la forma de representarlas. Ya había conseguido una manera rápida de mostrarlas, pero aún había un problema, y era que cada pieza requería reservar espacio en memoria para ella. Esto quiere decir que, si hay veinte trozos de pared idénticos, se ocupará veinte veces más memoria de la necesaria. Inadmisible.



La solución es lógica y simple: Hacer un contenedor que cargue las texturas en memoria y que, si pretendemos cargar una textura que ya está en memoria, pues no la carguemos.



El problema es que esta operación, al menos como la he hecho, no es lo más eficiente: cuantas más texturas haya cargadas, más costará comprobar si cierta textura está en memoria o no.



Para los entendidos, diremos que estoy usando un array y una búsqueda secuencial asociada al string del nombre de archivo de la textura. Lo mejor sería usar una tabla hash, pero esto requeriría trabajar en ella, y de todas formas el acceso a este contenedor sólo se haría durante el periodo de carga del mapa, así que no me parece que vaya a ser muy necesaria.



Eso es todo lo que he hecho hoy del PFC... es poco, pero al menos aseguramos que los mapas se muestran bien y rápido. Lo siguiente deberá ser hacer los jugadores :).

17 sept. 2004

17/9/04: La defensa de Tetloc-Itza

Diario de Guerra de Alejandro González, Alias "WaaghMan". Cuadragésima anotación:



(Este informe de batalla se da desde el punto de vista de mis tropas, aunque pretende ser objetivo en las descripciones).



En las lejanas junglas de Lustria se encuentra la ciudad-templo de Tetloc-Itza. Su emplazamiento al norte del continente le hace una ciudad siempre amenazada por las regiones vecinas: Las siempre acechantes arcas negras de los elfos oscuros y el propio Reino del Caos.



Es por ello que siempre hay unidades de exploradores en las inmediaciones, para localizar al enemigo.



Y hacen bien, porque un día como cualquier otro, una alianza entre el Caos y los elfos oscuros planeó conquistar Tetloc-Itza: Los elfos oscuros se quedarían con los ciudadanos que sobreviviesen como esclavos, y el caos ganaría terreno en su plan de dominación mundial.



Los eslizones, experimentados exploradores y hábiles corredores, se dieron prisa en avisar al pueblo, que se preparó para evacuar al mago Slann y el grueso de la población a un lugar seguro. Mientras se hacía, un pequeño destacamento de tropas se encargaría de defender el sitio y aguantar el máximo tiempo posible. Sabían que iban a morir, pero estaban decididos a proteger la ciudad. El valiente escamadura Tinchi-Huinchi y su hermano Klolec se ofrecieron voluntarios para comandar esa fuerza de contención.



Una vez se prepararon a las tropas, los exploradores tomaron posiciones más avanzadas para sorprender al enemigo e intentar entorpecerle.



No pasaron ni dos horas antes de que la fuerza de ataque combinada entre elfos y caos llegase a las cercanías de la ciudad. Su mera visión era escalofriante: Dos regimientos de ballesteros, Bárbaros a caballo, Caballeros del caos elegidos, dos regimientos de guerreros del caos, diablillas de slaanesh, mastines del caos, caballeros gélidos, dos hechiceras, un engendro del caos, un paladín del caos sobre una montura demoníaca, y 24 lanceros.



Las fuerzas de los hombres lagarto eran más reducidas, pero habían sido escogidas entre los más valientes de la ciudad: 4 regimientos de eslizones (dos de ellos exploradores), dos salamandras con su dotación, dos regimientos de saurios, 5 terradones, un chamán eslizón, y los hermanos Tinchi-Huinchi y Klolec.







El combate fue duro, la superioridad numérica de la alianza maldita era patente, y los hombres lagarto no tendrían ninguna posibilidad de acabar con ellos, pero su misión era entorpecerlos.



La mejor actuación por parte de los hombres lagarto la tuvo, sin duda alguna, una unidad de exploradores eslizones que, valientemente, avanzó hasta la retaguardia del ejército enemigo, entorpeciendo y desconcentrando a las tropas enemigas para ganar tiempo.



A su vez, otra tropa de eslizones avanzó hacia unos ballesteros elfos oscuros, con la intención de eliminarlos o entretenerlos. Tras un combate bastante decisivo, los eslizones decidieron que volverían a casa para luchar otro día, pero debían de tener barro en sus pies, porque tan sólo huyeron 6 cm (6 cm en 5D6, en mi opinión la peor tirada de huída de la historia de warhammer).



Los terradones, por su parte, atacaron a los mastines del caos y tras el ataque se replegaron, para después atacar a los ballesteros que habían vencido a los eslizones. No les causaron muchos daños.



Mientras tanto, el grueso de tropas enemigas, pese a ser entretenidas por los eslizones, se estaba acercando a la ciudad. Los primeros en llegar fueron los caballeros, que cargaron contra Tinchi-Huinchi, quien valientemente aguantó la posición. Los caballeros consiguieron herir al héroe, a cambio de una baja provocada por éste.



Los lanceros hombres lagarto, decididos a ayudar a su líder, cargaron por el flanco de los caballeros para destruir a los invasores, pero no causaron daño alguno. El combate se prolongó durante mucho tiempo, sin que pareciese que alguno de los bandos dominase la situación.



En ese momento, uno de los regimientos de guerreros del caos llegó, junto al engendro del caos.



Los guerreros cargaron por el flanco de los lanceros que estaban en combate con los caballeros, y se unieron al combate por la ciudad. El engendro, grande como era, no cabía y no tenía más remedio que atacar al segundo regimiento de saurios para hacer hueco y poder entrar en la ciudad.



A la carga del engendro se unió el general del caos y su montura demoníaca. Rápidamente acabaron con los saurios, y el engendro consiguió entrar en la ciudad.



Mientras, los terradones se unieron al combate principal, atacando a los caballeros del caos y causando dos bajas. Los caballeros seguían sin ser derrotados.



Al final, la unión de los guerreros y los caballeros del caos fue demasiado para los hombres lagarto, y se vieron obligados a huir, dejando sólamente un pequeño grupo de eslizones para defender la ciudad.



Por suerte, en ese momento la población ya había conseguido evacuar la ciudad, y aunque Tetloc-Itza fue temporalmente conquistada por el Caos, los Hombres Lagarto tardaron poco en reconquistarla. Otra vez será...

16 sept. 2004

16/9/04: El viaje más largo

Diario de Guerra de Alejandro González, Alias "WaaghMan". Trigesimonovena anotación:



Ayer por la noche tuve que ir a recoger a mi hermana, que volvía de un concierto de Andy & Lucas, y en el camino me pararon para hacer el test de alcoholemia (mi primer test de alcoholemia). Estoy orgulloso de decir que pasé el test con un sobresaliente :). Ni siquiera un temblor o atisbo de nerviosismo. Claro que, el hecho de saber que no podía dar positivo era un gran aliciente :).



Hoy he ido por la mañana de nuevo a la universidad, primero a la EUITIO para pedir un certificado, y después a la escuela de ingeniería de gijón para preguntar allí sobre el tema de la prematricula. De nuevo sin éxito, me dijeron que el tipejo que podía decirme algo no volvía hasta el lunes :S. Me he tragado 45 minutos de coche para nada :S.



Una vez llego a casa, de trabajar hay pocas ganas, así que a matar gundams. Por la tarde, sigo matando gundams porque mi hermana coge el Ultimate Pc y no puedo hacer el PFC. Cuando me deja, me pongo a trabajar como un poseso. Consigo hacer que se muestren mapas cargados de archivo en pantalla, PEEEERO, se muestran a 4 fps :|. Mierda.



Veamos, hay que arreglar eso...



1- Por cada pieza de mapa no se puede cargar una nueva textura, o nos quedamos sin RAM y es lento de cojones

2- Aun siendo la misma textura, hacer 172 llamadas a DibujarTextura llevan mucho tiempo



Así que la solución fue hacer que fuese una sola textura que se mostrase muchas veces llamando a un sólo método. Con eso conseguíamos 150 fps, aun eran pocos. Tocaba pelearse con las cosas de OpenGL para intentar mejorar la eficiencia.



Tras bucear en google, descubro un consejo que dice que no borre la pantalla en cada frame si no es necesario, ya que puede ser lento. Quito esa parte y gano 20 fps más, no está mal. Sigo leyendo y veo mejoras menores, como reducir el filtrado de texturas o desactivar ciertas características que no estemos utilizando, como la niebla. Pero tras probar esas cosas, no se gana ni un solo fps, así que lo dejo así.



Sé una forma de mejorar mucho la eficacia, pero requeriría que cada textura tuviese su propio archivo, en vez de poder estar contenida en un pack como están ahora, así que si no es necesario no lo haré :). Por otra parte, de esta forma la iluminación es muy efectiva, y de la otra sería inexistente. Además, si se juega a 800x600 se aumenta mucho la velocidad, si es necesario la reduciré en la versión final :).



Y mañana, batalla de WarHammer. Intentaré acordarme de sacar fotos :).

15 sept. 2004

15/9/04: Mala mañana

Diario de Guerra de Alejandro González, Alias "WaaghMan". Trigesimooctava anotación:



Hoy por la mañana he ido a la universidad para A) intentar encontrar a Aquilino y B) Informarme y, si es posible, prematricularme en cuarto para comenzar cuando presente el proyecto.



Ninguna de las dos ha podido ser :S. Al menos he podido conseguir el Painkiller, lo grabaré mañana.



Por otra parte, y olvidándonos de eso, la cosa no ha estado mal del todo. Sobre el PFC he trabajado en los mapas, como dije que haría una vez me cansase de hacer menús. Ya se cargan los archivos XML tanto de mapas como de patrones. Aún no hay representación gráfica de los mismos, pero se guardan en memoria y será fácil mostrarlos. Mañana toca.



Todo eso por la mañana. Por la tarde me vicié de mala manera a un juego llamado Liberation Army, similar al Dinasty Warriors, en el que comandas un ejército de cientos de guerreros montado en un mecha al estilo gundam. Está muy guapo porque puedes desarrollar diferentes tipos de estrategia según el piloto que lleves, y has de tener cuidado de por donde estás siendo atacado para ir a ayudar, etc. Además, según el autor, puede llegar a haber 300vs300 guerreros simultáneos (sin contar con los reservas, que pueden ser más de 1000), aunque yo no he pasado de 270vs280.



Una pega es que el juego nunca acaba. Si ganas, conquistas territorio y las batallas son más difíciles. Si pierdes, dejas territorio y las batallas son más fáciles. Si llegas al 100% de territorio, la batallas no serán más difíciles.



De todas formas, no es fácil llegar a ese 100%. Yo he conseguido llegar, tras una enorme racha de victorias, al 91%, pero entonces me machacaron :).



Una putada, el viciarse a un juego que nunca termina :S

14 sept. 2004

14/9/04: La historia

Diario de Guerra de Alejandro González, Alias "WaaghMan". Trigesimoseptima anotación:



Hoy he apagado pronto la luz de mi habitación, por dos motivos: 1- Mi madre quiere que me levante antes de las 12 :S y 2- No tengo material de lectura que no haya leído aún :S.



Pero eso no quiere decir que me durmiese pronto, ni mucho menos. Tras apagar la luz, mi desquiciada mente se puso a trabajar. Primero en la siguiente fase del PFC una vez terminados los menús (posiblemente la carga de mapas), y después en cosas más creativas.



Al final lo que decidí es pensar en el trasfondo histórico del juego. No es que vaya a tener mucha trascendencia en el desarrollo del juego, pero nunca está de más.



Así pues, aquí va la historia que boceté por la noche...



"Estamos a mediados del siglo XXI. Año 2054 para ser más exactos. El planeta acaba de sobrevivir a una guerra mundial/civil como jamás ha habido alguna. El propio futuro de la madre Tierra se encuentra en peligro. Pero expliquemos la historia desde el principio. Todo comenzó dos años atrás...



Año 2054. La ciencia ha avanzado mucho en los últimos 70 años. El planeta lleva 30 años en una relativa paz, y la esperanza de vida es cada vez mayor. De hecho, la superpoblación es un grave problema, y a éste ritmo puede comenzar una guerra sólamente para hacer hueco...



Es en este momento cuando Sturm Schneidel, un famoso científico, hace el descubrimiento más importante desde el fuego: Una forma de obtener un flujo constante de energía de forma permanente. Los fundamentos físicos y químicos de el sistema son demasiado complicados para explicarlos en menos de 100 páginas.



El sistema es muy eficaz, pero presenta un problema: Las llamadas células de energía perpetua (CEP) no pueden superar el tamaño de una mochila, o el sistema de contención de energía se sobrecargaría y provocaría una enorme explosión de proporciones atómicas.



Para demostrar la viabilidad de las CEP, el propio Sturm Schneidel construyó un traje personal (denominado Traje Autónomo, T.A.) y levantó objetos de toneladas de peso.



En esos momentos, la noticia fue retransmitida a todo el planeta. Una pequeña nación gobernada por un dictador vio en esas CEP el traje de combate ideal, que le permitiría dominar el planeta entero.



Para apoderarse del traje, enviaron a un agente que asesinó al científico y se apoderó de los planos y el T.A. experimental.



Sturm Schneidel, como un genio que era, había previsto tal eventualidad, y para evitar el abuso de la tecnología, había modificado los planos de las CEP. La versión que robó el agente, aunque funcionaba, no estaba bien protegida contra las vibraciones y golpes que podría sufrir la unidad, y tras un castigo moderado, la unidad podría comenzar a fallar e incluso explotar.



Desconocedores de este fallo, se producieron enormes cantidades de versiones mejoradas del T.A: El Traje Autónomo de Combate o T.A.C.



Esta versión del traje, además de incluir la CEP, tenía un arma que acumulaba la energía proporcionada por la CEP y la soltaba en forma de plasma ardiente hacia el objetivo.



De todas formas, antes incluso de comenzar un ataque formal, las naciones más poderosas consiguieron copias de los planos de los T.A.C. gracias al espionaje.



Para superar a los T.A.C, se diseñaron versiones aún más potenciadas de los trajes: Concretamente los Trajes Autónomos de Combate Propulsados (T.A.C.P.) . Estas versiones incluían, además del arma de plasma, un propulsor que permitía al usuario propulsarse cortas distancias a gran velocidad.



El supuesto ataque sorpresa de la pequeña nación fue un completo fracaso, y pronto todos los responsables fueron detenidos.



Por desgracia, en el caos de la batalla, muchas unidades T.A.C y T.A.C.P. se perdieron, y algunas de estas unidades llegaron a manos de personas con aspiraciones a dominar el mundo.



Las naciones vencedoras no tuvieron más remedio que superar en tecnología a los T.A.C.P. y para ello diseñaron los T.A.C.T. , Traje Autónomo de Combate Táctico. Incluía las mejoras del T.A.C.P. y un sistema de armamento genérico que permitía acoplar armas muy diferentes al traje. De esta forma, los cañones de plasma fueron rápidamente superados por armas como el LPR (Lanzador de Proyectiles Rebotantes) o el Cañón Lich, que provocaba fugas de energía en la CEP del objetivo.



Pero, una vez más, en estos combates más trajes se perdieron, y parece que el problema, en vez de disminuir, crecía.



Se llegó a un punto en el que una de cada tres familias poseía un T.A.C., y los utilizaban para atacar o defenderse de otros asaltantes.



Se llegó a tomar una decisión importante: Se diseñaría un nuevo traje, pero estaría genéticamente programado para que sólo una persona pudiese utilizarlo. De esta forma, no sería posible el robar la unidad. El traje se denominó T.A.V. , Traje Autónomo Versátil, y fue el cénit de la tecnología basada en CEP.



El traje era una versión ampliada del TACT, que permitía sustituir fácilmente partes del traje por otras para proporcionar más protección o velocidad según la situación requiriese.



De esta forma, se formó un grupo de élite a los que se les asignó un TAV personal e intransferible, y fueron enviados a la caza y destrucción de los trajes dispersos por el mundo.



Las misiones se cumplieron rápidamente y con muy pocas bajas. En menos de un mes, el mundo había sido limpiado de trajes autónomos. Pero esto no detuvo las guerras que habían surgido. Y difícilmente se conseguirían detener.



Tras ver las catastróficas consecuencias de los trajes autónomos, se detuvo su producción y los planos de las CEP fueron archivados.



Surgió un problema: Los TAV pertenecientes al grupo de élite. Los pilotos no estaban dispuestos a devolverlos para que fuesen desmantelados, y los gobernantes no estaban dispuestos a dejarles marchar para que no se copiase la tecnología.



Llegaron a un acuerdo, el proyecto Reunión: Se construiría un estadio especial en el que los TAV demostrarían su capacidad enfrentándose unos con otros. De esta forma, poco a poco irían destruyéndose y se solucionaría el problema.



La retransmisión de estos combates tuvo tal acogida, que la guerra acabó pronto: Las familias dejaban los combates para ir a casa a ver el programa.



La compañía de comunicaciones encargada de la retransmisión se convirtió en la más poderosa de la nación, y como tal ejerció su poder para recuperar los planos de las CEP. Pronto se dedicó a construir más TAV a pilotos que previamente hubiesen superado un duro examen de conducta.



El proyecto Reunión se convirtió en un fenómeno de masas y pasó a denominarse MetalWarriors. El mundo nunca sería el mismo.

"



Bueno, eso es todo. Hay bastantes fallos de continuidad y algunas partes deberían explicarse un poco más en profundidad, pero en general me gusta como ha quedado... Quizás debería explicar un poco mejor los problemas del fallo en las CEP, y cosas así...


13 sept. 2004

13/9/04: Menús

Diario de Guerra de Alejandro González, Alias "WaaghMan". Trigesimosexta anotación:



Los menús del juego están casi terminados. Aún quedan algunas secciones, pero no es más que cuestión de tiempo.



Una característica muy chula de estos menús es que tienen efectos de luces pululando por ahí, y los textos quedan muy bien con estos efectos de luces, además de que les da un toque personal.



Por supuesto, las secciones en este momento no tienen ningún efecto. Sólo la navegación entre menús está hecha. El resto será fácil de hacer en su momento.



Aquí tenéis el link para la descarga de estos menús. Yo tengo alrededor de 240 fps :). A ver qué os parecen.

12 sept. 2004

12/9/04: Multi-Casting

Diario de Guerra de Alejandro González, Alias "WaaghMan". Trigesimoquinta anotación:



Hoy ha sido un día extraño. Me lo he pasado en su mayor parte viendo capítulos de Ranma (mis padres no dormían en casa, y en una noche el emule terminó 5 capítulos de ranma mas otros tantos de variadas series); y programando cosas para el PFC.



Bueno, eso de "programando cosas" es muy relativo. Realmente, sólo ha sido una "cosa" la que me he pasado casi todo el día programando.



Como no tenía muchas ganas de continuar lo de los menús, y como el siguiente menú que tocaba era el de "unirse a partida", que debería mostrar una lista de partidas creadas, me puse a pensar cómo haría para hacer un buscador de partidas en red local.



No es cosa fácil, el TCP no permite otra cosa que no sea hacer un intento de conexión para cada ip de la subred (al menos que yo sepa), y en ese caso también haría falta determinar la subred en caso de que haya diferentes interfaces (ADSL y Ethernet por ejemplo).



Así pues, pensé en hacer un broadcast, cosa que dimos en Redes, pero resulta que TCP tampoco permite eso (y es lógico, dado que si con un sólo socket te conectas a muchos clientes, no sabrás después de quién son los datos y cosas así).



Al final, me decidí por ir programando un socket UDP, que permitiría hacer un escaneo de la red local más rápidamente (además permite el broadcast).



Mientras lo programaba (y tras superar dos errores extraños que me costó mucho solucionar, relacionados con cierta librería de windows), vi que también había soporte para Multicast.



Para los que no lo sepan, el Multicast consiste en grupos que se forman y que al enviar un mensaje a ese grupo, todos los miembros reciben una copia (bueno, no es seguro al 100%, dado que se basa en UDP).



Así que una vez conseguí hacer un "Hola, mundo" en UDP, me puse a programar el multicast.



Primero un error molesto (relacionado con las librerías de windows antes mencionadas), que también me costó solucionar, pero al final corregí.



Después un error incomprensible, que solucioné de pura casualidad... Me explico.



El problema era que aunque enviaba el mensaje, el receptor (o receptores) nunca lo recibían. Muy raro, no había ningun aviso de error en los métodos ni nada parecido.



Tras mucho probar (MUCHO probar), apagué el ordenador de al lado (lo había encendido para probar el UDP de un pc a otro). Y entonces funcionó :|.



Es decir, el multicast no se envía los datos a si mismo en una LAN. No puedes hablar contigo mismo si estás conectado :S. Una vez descubierto el fallo, probé a hacer el multicast entre dos pc's y funcionó.



Así que al final la solución para buscar servidores es...



1-El servidor se une a un grupo de Multicast, junto al resto de servidores de la red local.



2-Cuando un cliente hace una búsqueda de servidores, envía un mensaje a ese grupo. En principio lo recibirán todos los servidores (estamos en una LAN, no suele haber paquetes perdidos), y contestarán al emisor con los datos de partida, etc. Por último, el cliente se enviará a sí mismo el mismo mensaje (por si hubiese un servidor creado en ese mismo Pc).

Y ya está, todo debería de funcionar y el mundo sería un lugar más feliz.



Veamos si en la práctica es cierto lo del lugar más feliz.



Mañana no creo que pueda trabajar tanto, pero intentaré terminar algunos controles y menús más...

11 sept. 2004

11/9/04: Promesas cumplidas

Diario de Guerra de Alejandro González, Alias "WaaghMan". Trigesimocuarta anotación:



Como prometí ayer, hoy he trabajado bastante en el PFC.



Dado que ya había terminado un Engine funcional y bastante chulo, me he puesto a programar los menús del juego.



Como datos interesantes están los siguientes:



1-Los menús utilizan controles más o menos genéricos, al estilo Delphi o Java. Obviamente no llegan a la potencia ni a la cantidad de éstos, pero evitan repetir mucho código. En este momento he terminado cuatro controles diferentes: Uno para introducir texto, otro para escoger valores numéricos, un botón normal, y un selector de archivos.



2-El encargado de controlar la interacción entre menús es independiente de cómo trabajen éstos, lo que nos permite que cada menú sea completamente diferente (no es que lo vaya a hacer así pero se puede :)).



3-Los textos del juego se guardan en un fichero de texto, así que elegir el idioma será sencillo :).





Si queréis podéis probar el estado actual del programa bajándooslo de aquí. Va ocupando cada vez más, como es lógico...



No todas las opciones están habilitadas por el momento. Las que no lo estén simplemente no harán nada :).

10 sept. 2004

10/9/04: De compras

Diario de Guerra de Alejandro González, Alias "WaaghMan". Trigesimotercera anotación:



Hoy me siento hasta mal y todo. Sigo sin hacer ni un poquito del PFC :(. Por la tarde me habría puesto si no hubiese surgido plan, pero así fue y fuimos a Media Martkt, FNAC y al cine a ver La Terminal.



La película es buena y no se hace pesada a pesar de desarrollarse todo el rato en la terminal del aeropuerto :).



Al terminar el día, mi cartera estaba ya seca :). Ahora toca ahorrar durante una temporadita para no tener que pedir dinero a los demás :).



Y mañana, lo prometo, seguiré trabajando en el PFC.

9 sept. 2004

9/9/04: Centímetros cúbicos

Diario de Guerra de Alejandro González, Alias "WaaghMan". Trigesimosegunda anotación:



Hoy por la mañana vicié como un cosaco al Doom 3, y estoy a puntito de terminarlo. Por la noche fui con mis padres a una presentación de nuevos modelos en el concesionario Fiat (para que hubiese gente), y allí tenían una réplica de un coche de rally (porque resulta que este sábado comienza el rally Príncipe de Asturias), además de que estaban dos de los 4 pilotos del equipo Fiat. El coche era un Fiat Punto amarillo, muy chulo (coste del kit de llantas, parachoques, etc. para un Fiat Punto normal: 1.500 €). Mi padre estuvo hablando con el copiloto de cosas como el cambio de marchas (que era secuencial y no requería embrague), cómo conseguían doscientos sesenta caballos con sólo 1.600 centrímetos cúbicos, y cosas así.



Mientras, yo escuchaba y callaba, como suelo hacer :).



Por cierto, del PFC hoy tampoco he avanzado ni un poquito (bueno, escribí algo más de análisis, pero nada digno de mención)

8 sept. 2004

8/9/04: Vagancia

Diario de Guerra de Alejandro González, Alias "WaaghMan". Trigesimoprimera anotación:



Hoy debería haber trabajado un poco más en el PFC, pero la verdad es que como era fiesta y como ya había terminado el Engine, no tenía muchas ganas, así que vicié bastante al Doom 3 (tampoco fue todo el rato). Está guapo, aunque por la mañana no tiene mucha gracia jugarlo. Y no da tanto miedo y canguelo como dicen algunos. En las primeras misiones sí, porque temes quedarte sin munición y los bichos son molestos.



Pero una vez superas eso, te acostumbras y pierdes el miedo. Ya no te asustas al ver a un bicho, sino que le endiñas un escopetazo y carril :).



Por la tarde estuve jugando un rato al CS con el clan (por cierto, ahora tenemos servidor público), que hacía tiempo que no entrenaba con ellos. La cosa no fue del todo mal, y el entrenamiento esta vez tuvo sentido (aunque seguimos siendo muy malos).



Ahora mismo, lo que más anhelo es echar una buena partida de Warhammer... a ver si se acaba el periodo de exámenes :S

7 sept. 2004

7/9/04: Mala suerte

Diario de Guerra de Alejandro González, Alias "WaaghMan". Trigésima anotación:



Hoy ha sido un día movidito pero no muy productivo. Me levanté pronto para ir a la universidad a hacer varias cosas:



1-Entregar los papeles para la solicitud de la beca



2-Hablar con Aquilino del PFC



3-Preguntar un par de dudas en secretaría sobre el PFC



4-Copiar el Doom 3 al disco duro que llevé



Cuando salí a las 7 de la tarde, sólo los puntos 1 y 4 se habían realizado :). Supongo que fue culpa mía por no quedar con Aquilino a una hora concreta, ni enterarme de sus horarios de tutorías, y por no hacer cola delante de secretaría, pero el punto 3 no era muy urgente.



Además, por si fuese poco, estuvimos echando en la beca una partida al Age Of Empires 2, y fui el primero en perder. No es que haya tenido mal perder (soy demasiado malo a ese juego como para enfadarme si pierdo), pero es que me molesta mucho que tras dos horas jugando acabe aniquilado en un momento.



No entiendo como nadie se da cuenta de que los juegos de estrategia están mal enfocados, lo que cuenta debería ser la estrategia y no la cantidad de tropas ni de edificios...



En fin, por la noche instalé y probé el Doom 3. Puedo jugar con alta calidad a una resolución de 1024x768, pero a veces va a tirones y mejor juego con calidad media a la misma resolución. Va fluido en general,menos cuando hay muchos imps y sus fastidiosos efectos de luces :S.

6 sept. 2004

6/9/04: Trabajando duro

Diario de Guerra de Alejandro González, Alias "WaaghMan". Vigesimonovena anotación:



Hoy ha sido un día de trabajo duro en el que he hecho muchas cosas, unas más fáciles que otras.



Como dije ayer, comenzé por programar la clase móvil, que fue una pijada muy simple, como lo era en la asignatura de Física en la ESO :).



Después le tocó el turno a la clase DetectorColisiones, que no tuvo demasiadas dificultades porque fue simplemente adaptar el código feo del LittleEngine original a la versión super-chula-orientada-muy-bien-a-objetos del nuevo motor.



Se supone que tendré que añadirle lo de las elipses, pero por el momento lo dejo así.



Después, le tocó el turno a la clase Texto, que también fue simple de hacer cogiendo gran parte del código del LE original.



Tras eso, y con un programa muy chulo llamado Bitmap Font Builder, me monté una fuente bastante guapa, y hice unas cuantas pruebas de las cosas a ver si tiraba.



Entonces, me dio por visitar la web del autor de ese programa, y encontré un juego en OpenGL llamado disasteroids 3D, con código fuente incluido. Lo descargué a ver si veía alguna técnica chula que pudiese aplicar en el motor, y vi que el juego era basurilla en cuanto a jugabilidad, pero los efectos gráficos estaban bien conseguidos.



Mirando el código vi que gran parte se conseguían simplemente deformando y coloreando texturas, cosa que se puede hacer sin problemas en mi motor, y utilizando iluminaciones.



Así pues, decidí hacer mi motor compatible con la iluminación :).



Esto no es tan fácil como parece, y tras programar durante un buen rato las cosas, al probarlas no funcionaba bien. Tras pelearme otro buen rato y encontrar el motivo, me di cuenta de que la iluminación no funcionaba como debería. Es decir, funcionaba como debería en un juego 3D, pero no en uno 2D.



La cosa es simple: La iluminación se basa en que partes de una oscuridad total, y vas iluminando zonas aplicando fuentes de luz.



En el caso de las texturas, si haces esto muchas de ellas quedarán muy desmejoradas al no tener volumen, y la cosa no sería bonita. Tras mucho romperme la cabeza con la interminable lista de parámetros y variables, llegué a una solución parcial: La escena comienza iluminada a tope (más fácil de decir que de hacer), y las luces lo que hacen es proyectar sombras de los colores que no poseen (es decir, una luz roja lo que hace es proyectar sombras verdes y azules).



Esto también es costoso, y sigue sin ser del todo efectivo, porque al iluminar sobre un color oscuro no se ilumina, sino que se oscurece aún más. Pero en general es suficiente.



Otro fallo es que como una textura son sólo dos triángulos, la iluminación es mucho más efectiva en los bordes que en el centro, porque en el centro no hay vértices. Podria programar las texturas para que tuviesen más vértices y así la iluminación sería mejor, pero entonces requerirían al menos 4 veces más triángulos para mostrarse :S.



Así que por el momento así queda. Tenéis el diagrama UML aquí y el programa de ejemplo, que me da unos 800 fps, aquí



Ahora marcho a cenar. Toy cansado pero contento :).

5 sept. 2004

5/9/04: Cántaros

Diario de Guerra de Alejandro González, Alias "WaaghMan". Vigesimonovena anotación:



Así es como está lloviendo hoy :). No parece un día muy alegre, pero al menos no hace calor.



Como siempre, poco que contar hay. Sobre el PFC, he terminado las clases Socket y una clase Cámara, que da mucho más juego que la función de zoom incluida en el LittleEngine anterior.



Además, se han encontrado dos bugs en el engine. El primero era que al cambiar a otra aplicación y volver al juego, éste no se redibujaba correctamente. Esto ya ha sido solucionado.



El segundo bug, originado por una posible solución al primero, también ha sido solucionado. Se debe a que DirectInput pierde el control del dispositivo cuando cambias de ventana, y hay que comprobar si se recupera este control si se ha perdido.



Así pues, en estos momentos creo que disponemos de un motor estable, eficaz y bien diseñado, que permitirá que el proyecto siga adelante sin dificultades.



Los problemas más gordos en estos momentos del proyecto los veo en...



1-El juego en LAN. No será facil coordinar correctamente cliente y servidor

2-Las animaciones. No será fácil hacerlas (aunque mostrarlas sí lo será).



Para terminar definitivamente con una versión funcional del engine, me queda por hacer...



1-La clase Móvil (que simplemente es un interfaz para objetos uniformemente acelerados)



2-La clase DetectorColisiones (que espero que pueda utilizar elipses y lineas, ya que los personajes tendrán unas cajas de colisiones en forma de huevo).



3-La clase Texto, que servirá para mostrar texto en pantalla.



Una vez terminado esto y el análisis, me pondré con el juego de verdad, comenzando por los menús (como debería ser y nunca hago :) ).

4 sept. 2004

4/9/04: Progresando

Diario de Guerra de Alejandro González, Alias "WaaghMan". Vigesimooctava anotación:



Hoy he continuado el trabajo, pero no demasiado tiempo. He terminado la clase Textura, y ya se pueden cargar texturas en el engine (sólo TGA por el momento).



No he hecho nada de análisis hoy, y la clase Socket ha quedado a medias porque mi padre me pidió que me quitase :S.



De todas formas, para llevar tres días la cosa chuta de maravilla. El engine está muy cercano a terminarse, y su facilidad de uso sólo es comparable a su efectividad :). Por cierto, una nota interesante... el ejecutable de prueba de ayer, si lo pongo a pantalla completa, da alrededor del doble de frames por segundo que si se pone en modo ventana. Para que os hagáis una idea de lo importante que es no jugar en modo ventana si se puede evitar :).



Por otra parte y cambiando de tema... seguimos con los entrenamientos del clan squad forces :). La cosa sigue yendo igual que siempre. Perdemos el 100% de los partidos que jugamos. Me pregunto si no seré gafe y por mi culpa perderán. El caso es que siempre tengo las mejores puntuaciones en frags (sé que no lo es todo pero ayuda).



Por último, hoy he cogido el coche para ir a Parque Principado a comprar un manga de Naruto y DVD's vírgenes. Eso no sería digno de mención si no fuese porque es la segunda vez que cojo el coche desde que volvió del taller. Va perfectamente, lo cual es bueno :).

3 sept. 2004

3/9/04: Taking it seriously

Diario de Guerra de Alejandro González, Alias "WaaghMan". Vigesimoséptima anotación:



Hoy no he trabajado tanto como ayer. Mi hermana estuvo casi toda la mañana en el pc donde tenía las cosas del trabajo, y aún no he configurado bien los permisos, así que no podía acceder desde el otro Pc. Así pues, gran parte de la mañana me la pasé mirando videos de el rellano :S.





Por la tarde la cosa mejoró. Hice lo del ratón que me había olvidado ayer, hice una clase Log para guardar las cosas interesantes a un fichero (eso tras pelearme durante mucho tiempo con el código para intentar redirigir la salida cout sin usar linea de comandos, sin éxito), y programé el Engine para Open GL (crear y destruir ventanas).



Puede parecer poco, pero la cosa chuta bien. La forma de uso del engine es todavía más simple que el LittleEngine original. Además, a diferencia de en éste, usaré llamadas a OpenGL desde otras clases, para simplificar el diseño y mejorar la velocidad de juego.



Si os interesa algo, podéis encontrar el diagrama de clases Aquí. El color morado indica que la ha clase ha sido programada y en principio no se piensa modificar más. El naranja que ha sido programada pero es muy probable que se tenga que ampliar. El amarillo que se ha escrito el .H y el verde que no se ha hecho nada con ella aún.



Por otra parte, también si os interesa, podéis bajaros de aquí el programa de prueba.



Lo que hace es crear una ventana, inicializar directinput y opengl, y hacerse con el control del ratón (no lo podréis usar fuera de la ventana). Después se queda haciendo nada hasta que pulséis escape. En ese momento se cierra. Se guardará en el archivo log.txt información sobre el rendimiento que ha tenido la ejecución en vuestro pc. A mi me da 1343 fps. Es bastante exacto.



Mañana, texturas y un poco más de análisis :), y si da tiempo, sockets :).

2 sept. 2004

2/9/04: ¡Albricias!

Diario de Guerra de Alejandro González, Alias "WaaghMan". Vigesimosexta anotación:



Hoy ha sido un buen día :), aunque un poco monótono. Por la mañana me levanté relativamente pronto tras pocas horas de sueño.



El culpable de esas pocas horas de sueño ha sido el libro "Dune. La casa Harkonnen". No he llegado a terminarlo del todo, pero gran parte de las subtramas ya se han finalizado. Me ha gustado mucho el libro, y espero poder coger pronto la continuación en la biblioteca :) :).



Bueno, tras despertar, desayunar, asearme, vestirme y hacer la cama, me puse manos a la obra con el PFC. Primero, continué con el análisis, explicando el proceso de conexión entre cliente y servidor, y parte de las animaciones.



Una vez me cansé de escribir con el word, pasé a hacer el diagrama de clases preliminar, de forma bastante completa. No tuve demasiados problemas con el diseño porque ya lo tenía bastante pensado, pero hasta entonces no lo había puesto todo junto en el mismo sitio.



Una vez terminada esa parte, y tras comer y un descanso de un ratito, me puse a programar interfaces de algunas clases, y el código de dos partes del engine: El sonido y la entrada por teclado (MIERDA, Ahora que lo pienso, no tengo hecho nada para entrada por ratón!!! Vale, ya sé que hacer mañana).



He conseguido que se comporten de una forma muy adecuada, mejorando las versiones utilizadas en el LR2, traduciendo comentarios y nombres de variables, utilizando excepciones, etc.



A este ritmo, espero poder tener dentro de un par de semanas una versión ejecutable :). Pero tampoco hay tanta prisa. Voy a concentrarme en que el código sea correcto y esté bien documentado.



Por otra parte, y esta es la mejor noticia, me he pasado al 100%, total y absolutamente, sin duda alguna, sin que nadie pueda decir lo contrario, el Tony Hawk 4. Es una gran noticia. Estoy muy muy contento :D.