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.