VoiD.net: the Developer's Log

VoiD.net dev worklog

Saturday, June 23, 2007

In spare minutes…

  • english
  • spanish

I’ve been working in several things.

First, I had a shocking problem. Suddenly, for no apparent reason, when running the game it couldn’t reach 30fps (when normally it easily runs at 60fps). I made a profiler, y checked and rechecked everything thrice… and after a lot of suffering I realized the stupid reason of the problem. It seems it’s due to having the desktop color depth on 32 bit… when it’s on 16 bit it runs perfectly. The strangest of all is it happens in fullscreen too. Whatever.

Changing terms, I optimized some code. For example, the Resource Manager, a class used for loading, keeping and freeing up resources when they’re no longer needed… it was based on dynamic lists, and now I did a new implementation using an AVL tree, to search faster for already loaded resources. I changed some other things in the lines of that one, in benefit of efficience.

Lastly, the impact collision system, the CZone is already functional. When the characters slashes, its CZone is created with calculated parameters for type of weapon, impact estimated power, direction, etc… only thing remaining, make the characters detect, make the proper checkings and react to those CZones.

And related to that last subject, the item system is finished too (although static information for about 99% of the items is not yet written, I have only Hit’s basic sword –Rusty sword– and some other basic item.

Summarizing, I changed some things in the core code that, although can’t be seen when running the app, make this little creature grow in robustness and maturity.

posted by ferminho at 22:38  

Sunday, June 17, 2007

Some advances

  • english
  • spanish

Slowly, in my studying breaks I’ve been developing a bit further the system I’m working on right now, and it is no other that an early combat system.

I have a primitive yet impact collision system, that unifies every attack, skill, explosions and everything that could hurt a character or that he had to react to… and when coding these “reactinons” I noticed an important thing I still hadn’t begun with: items and equipment.

As the equipment has an important role when deciding blockings, evasions, damages, counterattacks, etc, I had to begin working in this area and right now I’m with the weapons module.

Time ago I thought about having a fixed, “hardcoded” list of weapons, items, and so, or giving the possibility to the scripter of defining everything via script. I chose the first option, although when I started playing with that now, I chose both. There is a predefined weapon list (extendible to any kind of item – shield, accesories or objects) and it will be posible to define new weapons with the scripts. This is because actually all the information about each weapon is read from its particular instance of the Weapon class (talking in OOP terms), so it’s not really much cost to add one real-time with the specified atributes. Same goes for any object.

Depending on how much spare time I have, maybe I’ll have in a not very far future a test app with Hit hitting (no pun intended) his “shadow” and making him react.

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