VoiD.net: the Developer's Log

VoiD.net dev worklog

Saturday, June 23, 2007

A ratos…

  • english
  • spanish

He estado trabajando en algunas cosas.

Primero, tuve un problema bastante grande. De repente, sin saber por qué, al ejecutar el programa no llegaba a 30fps apenas (normalmente corre a 60fps y de sobra). Me hice un profiler, comprobé y recomprobé todo una y otra vez… y tras mucho sufrimiento me di cuenta de la estupidez que causaba el problema. Resulta que es por tener el escritorio en 32 bit… cuando está en 16 bit va perfecto. Lo raro es que en pantalla completa también pasa lo mismo. En fin.

Por otro lado he optimizado algunas cosas. Por ejemplo, el Resource Manager, que es una clase que se encarga de ir cargando recursos, mantener los que se seguirán necesitando y liberar los que ya no se van a liberar, tenía una implementación usando listas dinámicas y ahora hice una nueva con un árbol AVL, para buscar rápidamente los recursos ya cargados. He cambiado algunas otras cosas por el estilo en pos de la eficiencia.

Por último el sistema de colisiones para impactos, los CZone ya está funcional. Cuando el muñeco pega, se crea su CZone con los parámetros ya calculados, del tipo de arma, potencia resultante del impacto, dirección, etc… ahora sólo queda que los personajes detecten estos CZones y hagan los chequeos correspondientes… y reaccionen.

Y bueno relacionado con lo anterior, el sistema de items también está terminado (aunque falta la información del 99% de los items, sólo tengo la espada básica de Hit –Espada oxidada– y alguno básico más.

En resumen, he tocado varias cosas internas que, aunque no se pueden ver al ejecutar la aplicación, hacen crecer en robustez y madurez a este pequeño engendro.

posted by ferminho at 22:38  

Sunday, June 17, 2007

Algunos avances

  • english
  • spanish

Muy despacio, en los ratos de descanso de estudiar para los exámenes he ido desarrollando un poco la parte con la que estaba ahora, que no es otra que los comienzos de un sistema de combate.

Tengo un todavía primitivo sistema de colisiones por impacto, que englobaría todos los ataques, técnicas, explosiones y cualquier cosa que pueda dañar y a la que un personaje tenga que reaccionar… y a la hora de implementar estas reacciones me he dado cuenta de un factor que aún apenas había empezado: los ítems y el equipo.

Dado que el equipamiento interviene a la hora de decidir bloqueos, esquivas, daños, contraataques, etc, he tenido que empezar esta parte y ahora mismo estoy con el módulo de armas.

Hace un tiempo me planteé si tener una lista fija de armas, ítems, etc “hardcoded” o si dar la posibilidad de definir todo mediante los scripts. Me decidí por la primera opción, aunque ahora al meterme a jugar con ello, he optado por ambas cosas. Hay una lista de armas (extendible a cualquier tipo de ítem – escudo, accesorios u objetos) predefinidas y también otorgaré la opción de definir armas nuevas por script. Esto es así ya que realmente toda la información de cada arma se lee de la instancia particular de la clase Weapon, y no cuesta mucho añadir una más en tiempo real con los atributos especificados. Lo mismo para cualquier objeto.

Dependiendo de cuánto tiempo libre disponga quizá tenga en un futuro no muy lejano a Hit pegándole a su “sombra” y haciéndole reaccionar.

posted by ferminho at 15:52  

Tuesday, February 6, 2007

Entre exámenes

Bueno, y mientras uno sobrevive los exámenes que van cayendo (en cualquier sentido que pueda tener la expresión) en ratillos libres y descansos voy haciendo alguna cosa.

Hit sigue moviéndose con más o menos desparpajo por el mapa, y poco a poco le voy metiendo más movimientos. Quiero ponerme hoy (que tengo algo de relax hasta el siguiente examen) a meter los de ataque, por emocionarme un poco más al corretear por ahí.

Lo ultimo que he implementado ha sido un nuevo cambio del VNM, el formato del mapa. He cambiado la estructura de la informacion de “iluminación” de los tiles. Esto es algo que metí al cambiar de Fenix a Blitzmax porque era realmente una tontería – en opengl al pintar un quad a la tarjeta gráfica le da igual que la pintes a color 255,255,255 (color real) o a un porcentaje distinto, y pensé que meter la posibilidad de alterar el color (a un porcentaje menor, eso sí, no mayor) no costaba nada y podía mejorar el aspecto del mapa.

Ahora he unificado un poco más esa sección de los mapas, y he aplicado lo que llamo Dynamic Lighting que en 2D es un poco tonto, simplemente que las entidades (objetos, personajes…) se ven afectados por esa información de iluminación. El resultado final, y dejo de enrollarme, es que con muy poco esfuerzo mejora algo la ambientación y la variedad del mapa. De hecho da la posibilidad de hacer fácilmente varias versiones de un mapa, en plan, atardecer, noche, día… y para interiores oscuros también puede molar. Satisfecho con el resultado vamos, aunque sea un poco caserillo.

En cierto modo como la iluminación es por tiles y se nota el cambio brusco de iluminación de un tile a otro (aunque procuro evitarlo suavizando la iluminación con una especie de herramienta “blur” que metí en el editor) me recuerda al ACABAN en cierto modo ^^

posted by ferminho at 12:54  

Tuesday, January 23, 2007

Briconsejo

Supongamos que se da el siguiente caso:

– Programas algo que funciona. No, en serio, funciona bien, mola.
РRealizas algunos cambios y deja de funcionar tan bien. Vale, peta. No sabes qu̩ has tocado para que deje de funcionar.
– Te cansas de buscar el error y decides ponerte a terminar otra parte del proyecto y retomarlo más adelante el error.

¡Error! Nunca hacer eso. Resultado:
– Pasan meses. Se difumina en tu memoria el hecho de que había algun cambio que rompía todo. Sin embargo, no hay problemas para recordar lo bonito y bien que quedaba al principio.
– ¿Eh? ¿Peta?
– Tras una ardua sesión de exterminación de bugs, finalmente todo vuelve a la normalidad.

Si lo hubiera corregido en su día no habria tenido tantos quebraderos de cabeza ^^U pero en fin, ya vuelve a funcionar todo… Tricycle, tileado, y demás.

Y he ido metiendo algo, para que ya… aparezca Hit en el mapa ^^ (¡yuju!). Aunque eso sí, se me desmorona, se le caen las piezas XD no me dio tiempo a mucho más, pero suena a algún bug tonto.

En resumen, ¡esto marcha!

PD: ¡100 posts ya! no callo ni bajo el agua…

posted by ferminho at 09:28  

Monday, January 22, 2007

Diario de un programador melancólico

El título del post promete para una buena historia, pero realmente no voy a contar nada muy trascendental *oh*.

He vuelto a coger el código del (para hablar en terminos pr0) “VoiD Engine” (*applause*), y como ya predije, con muchas ganas, aunque con poco tiempo. Para empezar ni compilaba, a saber en qué estado dejé los últimos cambios (suspiro). No estaba completa la conversión del sistema de música a la MaxMod de REDi (que ya comenté en otro post hace tiempo, que soporta streaming de OGG entre otras cosas), y algunas otras cosas andaban a medias.

En fin, la cosa es que al verlo me he sentido muy mal por haberlo dejado así, creo que debo estar empezando a desarrollar algun tipo de afección hacia ese código o algo así… esto puede ser un problema xD
Pero tiene su parte buena, en poco tiempo he vuelto a encontrarme muy cómodo programando y no he tenido problema en volver a cogerle el hilo. Reconozco que el código es algo peculiar, porque he optado por mezcla de POO y programacion estructurada intentando que prevalezca un nivel razonable entre eficiencia y legibilidad… y bueno, el resultado realmente creo que está bastante bien. Aunque en todo el tiempo que llevo con esto, ya me valdría si no fuera así.

Y ahora, despues de todo este amor propio~hacia mi propio código (¡mmmmmuak! xD), hechos objetivos.

He arreglado varias cosillas que como dije, estaban a medio de una migración a sistemas nuevos… he retocado un poco la entidad CHAR que lleva a los personajes (aún le queda bastante a la pobre, pero ya tiene prácticamente todo el esqueleto hecho) y preparado el sistema de grupos+party+”CHAR pool”, conceptos de los que hablé por encima en otro post y tampoco merece la pena que entre en detalle.
Y en resultados, tengo algunos problemillas de visualización, creo que también debido a cambios que hice a última hora antes de dejar el código para ponerme a animar… algunos tiles no se ven, y el Tricycle (pobrecito) peta también por problemas de gráficos. Algo me hace pensar que cambie el formato del VGP y voy a tener que empaquetar de nuevo los gráficos de prueba (creo que sólo es eso).

Bueno, me he enrollado mucho para bastante poco, pero es que creo que voy a estar unos días un poco más inactivo, que se acercan las deadlines de las prácticas y también hay que sacar tiempo para clases, estudiar y … el curro, claro.

Saludillos

posted by ferminho at 14:25  

Friday, January 19, 2007

Hit 1.0

Seré breve. Todos los movimientos base de Hit estan acabados. Incluso con uno más de regalo a última hora.

Hora de volver a teclear código y a darle vida a ese esqueleto 😉

posted by ferminho at 10:46  

Thursday, January 18, 2007

Últimos retoques al poeta

Ya sólo quedan cuatro míseras animaciones básicas de Hit, que hoy terminaré en 5 minutos. Al fin después de mucho esfuerzo y retoques se va acercando el momento de ver al personajillo éste correteando por la pantalla, y no será por falta de ganas…

Hoy tuve que retocar todas las animaciones que había hecho porque, cazurro de mí, estuve calculando mal los tiempos de animación. Muy mal que ni yo mismo conozca bien el formato VBA xD Realmente fue una tontería; al calcular el tiempo de cada animación no tuve en cuenta que el último frame no se contabiliza (dura 0 ms salvo si tiene activado el loop la animación, en cuyo caso sí toma su duración para calcular cuánto tarda en saltar al primer frame de nuevo)… sólo tuve que hacer algunos reajustes en animaciones no cíclicas.

Por otro lado he ido planteando ya la nueva versión del formato VBA, a la cual le voy a incorporar la posibilidad de asociar un sonido a un frame. Así la sincronización de sonidos de pasos, golpes, etc dependerá de la animación y no de unos tiempos fijos hardcodeados que me obliguen a hacerlos coincidir con las animaciones.

posted by ferminho at 08:56  

Monday, January 15, 2007

Casi, casi, casi

Faltan apenas 4 o 5 animaciones para terminar la “parte básica” de Hit y volveré a programar, que lo tengo un poco olvidado ya el código. Un par de las animaciones son más bien “posturas” para los vehículos así que básicamente, en un rato más que me ponga lo tengo acabado. Posiblemente amplíe alguna animación más “base” para las posturas.
Por otro lado, faltarían animaciones para las habilidades especiales (skills) del personaje, en este caso de la clase Poeta de Combate (efectivamente, la clase de Hit). Pero eso lo dejaré para despues del control básico.

Sea como sea, eso significa que en breve (cuando tenga un ratejo entre prácticas y estudio y clases y trabajo ^^) empezaré a programar la parte de la lógica del control de personaje, y la posibilidad de crear personajes y añadirlos a la party* y al equipo actual** y a los controlables*** (toma asteriscos) desde script (volver a coger el código del compilador e intérprete, ah, ya me hacía falta, que ilusión ^^).

Así que rumbo a la demo…

*Party : supongo que ya lo mencioné; en el juego puedes llevar a más de un personaje. Tienes una party de la cual puedes ver el estado de cada pj, habilidades, etc, que no necesariamente coincide en todo momento con el equipo actual**
**Equipo actual: son los personajes que, en el mapa y script actual, “van contigo”. Todos tienen el mismo tag de “equipo” y seguirán al líder que normalmente es el que está siendo controlado por el jugador. No necesariamente todo el equipo actual son controlables***, ni son de la party*, es decir que por ejemplo puedes llevar en tu equipo personajes “masilla” (soldados, carne de cañón) que no aparecen en tu party pero te acompañan temporalmente y luchan de tu lado… etc.
***Controlables: son los personajes dentro de tu equipo actual que el/los jugador/es pueden elegir para manejar. En tiempo real se puede cambiar de personaje elegido entre todos los controlables. A veces será sólo 1, a veces varios y a veces ninguno (durante -algunas- cutscenes, por ejemplo).

Peazo de tocho XD

posted by ferminho at 09:57  

Monday, January 8, 2007

Sustillo y adelante

¡Hit ya tiene todas las animaciones de golpear! Salvo las de los golpes aéreos que son dos más. Está quedando muy chulesco, y ya le queda menos para corretear por las dunas grises de Void.

Aquí una minimuestra de la animacion de correr, sin el arma, que uso de avatar el foro de DIVsite:

Hit!

Por otro lado, el “susto” viene porque cuando llevaba unas cuantas animaciones, al insertar una nueva el VBAedit cascaba. Me asusté bastante porque un bug a estas alturas podría haber sido fatídico… pero al final resultó ser una tontería que corregí, junto a algunos otros bugs que encontré de casualidad, y de paso mejoré el rendimiento del editor (porque se nota mucho cuando está abierto de fondo) para que no acapare tanta CPU.

Así que poco a poco…

posted by ferminho at 08:03  

Monday, October 9, 2006

Vacas flacas

Hace un tiempo que no posteo nada, así que voy a explicarme un poco al menos.

Todavía sigo con el pc de sobremesa roto, y entre eso y el poco tiempo no he hecho mucho del juego últimamente. Hice un movimiento o dos de Hit (que gracias a dios lo copié al portátil poco antes de petar el pc) pero poco más.

Del poco tiempo que he tenido he aprovechado mas para retocar más cosas de ACABAN y bueno, como si no fuera poco me he metido a otro proyecto que espero terminar en no más de un mes, para el concurso de desarrollo de juegos de Booleansoup.

Cuando tenga cositas para mostrar las pondré por aquí. VoiD.net andara un poco parado este mes pero luego seguiré dedicado exclusivamente a ello.

posted by ferminho at 11:46  

Wednesday, August 30, 2006

Descubrimiento

Hoy en un rato estuve mirando los foros de Blitzmax y descubrí dos cosas. Por un lado una nueva actualizacion con unas cuantas mejoras y arreglos, que se agradece (la 1.22).

Y por otro… he echado un ojo a la librería MaxMod de REDi que ya está bastante avanzada, y soporta streaming de OGG entre otras cosas (hace de wrapper de openAL y tambien soporta mod/xm para los cuales Blitzmax nativamente no tiene soporte). Lo cual es… genial. Siempre ha sido en Blitzmax un problema los tiempos de carga de OGG en ordenadores relativamente antiguos, lo cual obligaba a tener pantallas de carga de sus más de 10 segundos para cargar un par de músicas… y gracias a esta librería (que rápidamente he acoplado ya a mi módulo de sonido) ya no habrá problema ^_^ los OGG se cargan y reproducen instantáneamente.

¡Así que genial!

posted by ferminho at 15:10  

Tuesday, August 29, 2006

Pocas cosas

He hecho un par de concepts (¡el concepto es el concepto!) y alguna animación más en un rato libre… he avanzado unos detalles más de la historia, he retocado los trasfondos de algunos personajes… y le he añadido al VBA la posibilidad de especificar una nueva duración para una animación al reproducirla. Esto me ha surgido al hacer las animaciones de contraataque, ataque, etc… no sabía si fijar un mismo tiempo de animación (en el cual el pj no puede hacer otra cosa y es lo que tarda en llevar a cabo la acción) para todos los pjs, y al final decidí que, como lo diseñé en un principio, debería variar dependiendo de la DEX (destreza) del pj y la clase.

Es decir, cada clase tiene un tiempo base para realizar cada tipo de acción (aunque realmente creo que sólo variaré las de ataques, contraataques y esquivas) y aparte se ve ligeramente modificado por la DEX (tendrá que ser leve el bonus para que al subir mucho la DEX no sea el pj un torbellino xD).

Con esta modificación que le hice al hacer un ChangeAnim se puede especificar una nueva duración para la animación y au 😉 todo manejado por el VBA (como debe de ser, joven).
En fin, a seguir empollando ._.

posted by ferminho at 11:45  
Next Page »

Powered by WordPress