VoiD.net: the Developer's Log

VoiD.net dev worklog

Thursday, October 20, 2005

¡Funciona!

Pues por fin, tras no poco esfuerzo, he conseguido compilar y linkar correctamente mi pequeño módulo para Blitzmax que reconoce más de un ratón. Apenas funciona la inicialización, pero ¡Bueno! Reconoce los dos ratones y eso es todo un logro… El input de botones ahora mismo no funciona pero necesito dormir un poco. Mañana lo seguiré arreglando…

posted by ferminho at 22:24  

Wednesday, October 19, 2005

Esto es una ratonera

En estos tres días no he posteado nada porque no he tenido mucho tiempo realmente para hacer nada…

He avanzado un poco en programación pero no mucho. Por otro lado, sin embargo, he diseñado el sistema de manejo de personajes y su estructura de datos, el cual he llamado ACMS (¡Gracias Azazel por los consejos!).

Y lo realmente interesante… he estado pensando a fondo el tema del control. Quiero hacerlo lo más cómodo posible, pero tengo el problema de que deberían poder jugar dos jugadores a la vez, y apuntar con un solo ratón…

Me he comido bastante la cabeza en este aspecto, y creo que lo voy a hacer de un modo bastante comprensible. Aparte de dar opción a elegir entre varios métodos de control, voy a dar soporte para… ¡más de un ratón! (Al menos de momento en Windows® 2000 y Windows® XP). Estoy trabajando en un módulo wrapper para Blitzmax de CPNMouse, un fantástico driver y api open source que permite dicha posibilidad. Y si funciona bien, no sólo 2 jugadores, sino que pensaré en tener ¡Hasta 4 por lo menos! (Aún así va a ser difícil ponerse 4 jugadores con teclado y ratón a la vez… si tuviera algo similar para teclados… aunque lo más probable es que le eche un vistazo también al tema)

Si alguien está pensando que es una flipada… bueno, el wrapper tiene su miga, pero no lo veo imposible. La diferencia entre poner 2 jugadores, 3, ó4, en VoiD.net, tal y como lo estoy desarrollando… es trivial. La parte más “difícil” es tener que meter la configuración de los controles de 4 jugadores en el menú 😉

A ver si esta tarde consigo casi-terminar el wrapper.

posted by ferminho at 11:23  

Monday, October 17, 2005

Algunos bugs han muerto

Un fin de semana movidito, en el que he avanzado algo menos de lo normal, pero un poco sí.

Para empezar unos pocos bugs solucionados, sobre todo referentes a lo último que añadí; que no tuve tiempo de testear… de momento aseguraría que el motor es (casi)totalmente estable. No he tenido ningún problema todavía, pero claro, nunca se puede saber con total certeza…

Por otro lado empiezo a meterme con temas más serios. La pool de personajes ya está más o menos organizada… con un árbol binario (he cambiado varias veces de diseño porque todos tenían ventajas y desventajas), ordenado por los ID del personaje. Por otro lado, añadí algunas funcionalidades al ‘core’ (como por ejemplo más estabilidad para … pausar todo)…

Y lo que ahora mismo estoy haciendo, leer la configuración del archivo .INI… y como soy tan pijoteras, haciéndolo poco restrictivo (qué le vamos a hacer) y demás. Con suerte, el martes lo tengo con la configuración actual inicializable en el INI.

PD: me gusta mucho como están quedando los desplazamientos pseudo-logarítmicos (tanto de posición de cámara, zoom, distorsión de tiempo), creo que me han quedado justo como quería.

posted by ferminho at 00:46  

Friday, October 14, 2005

¡0.3a!

Anoche terminé los objetivos planteados para la 0.3a, aunque terminé un poco tarde y ya dejé para hoy postearlo… de hecho, terminé tan tarde que tampoco me dio tiempo a probar los últimos comandos que añadí…

La verdad es que el sistema de distorsión del tiempo tiene buen aspecto, pero hasta que no meta personajes en movimiento no podré testearlo a fondo…

Bueno, y ahora, ¿qué? De camino a la 0.4a … sin embargo el paso entre la 0.3a y la 0.4a no es tan “trivial” como el de la 0.2a a la 0.3a…

Con suerte, la 0.4a será la primera versión jugable. Tengo una parte un poco densa que desarrollar ahora, que es…

· El HUD (head-up display, si mal no recuerdo; es decir, los marcadores que van por delante con los puntos de vida y toda la información pertinente)…

· El sistema de la “pool” de personajes (a ver como me apaño para manejar fácilmente los IDs desde script… todavía estoy pensándolo…)…

· El menú in-game ! Esto estoy planteandome aplazarlo para la 0.5… porque si no voy a tardar mucho más en tener personajes correteando por ahí (el menú no es algo trivial, es un menú a-la-RPGs como Final Fantasy®… es decir, con información detallada de los miembros de la party, comandos para hacer varias cosas, como usar items, cambiar equipo y hechizos… (uy, ¿dije hechizos? Quería decir H4X) etcétera. Quizá implemente sólo un menú temporal (al menos que pause el juego y muestre una ventana negra o algo, vaya).

· Todo el tema de cargar y crear personajes… aunque tengo una buena parte hecha (el lector de definiciones de personajes, los cuales siguen otro script más simple y son directamente interpretados -no hay un compilador que los traduzca a bytecode-)…y empezar a implementar una IA barata, al menos que reconozca si está siendo controlado por un jugador y por cuál… luego ya pensaré en hallar rutas por los waypoints.

¡Eso es todo por el momento! Me espera un buen lote de trabajo.

posted by ferminho at 11:35  

Wednesday, October 12, 2005

0.24a

Breve resumen de lo que hice hoy…

He corregido unos pocos bugs tontos en compilador e intérprete, en especial unos pocos relacionados con el sistema de etiquetas…

He añadido algunos comandos más, y he ampliado un poco mi programita de prueba para testearlo… ¡Todo funcionando correctamente!

Mañana espero poder meterle los comandos básicos para controlar la cámara (movimientos por posiciones absolutas en el mapa, zoom…) y probarlo, y de paso probar también los comandos de distorsión del tiempo, aunque algo tendré que añadir… porque ahora mismo sólo lo notaría por la animación de los tiles cutres y… duración de fades y cosas así.

(Y con suerte, tendré tiempo de empezar a grafiquear un poco más a fondo. Espero tener para fin de mes los bocetos de un personaje al menos a medias o 3/4)

posted by ferminho at 23:32  

Wednesday, October 12, 2005

0.23a

Antes de acostarme, pequeña actualización. Así quedó la cosa hoy.

Subimos a la version 0.23a, aún por implementar varias cosas para la 0.3a, pero a buen ritmo. A estas alturas cuento con 45 comandos para los scripts, y todavía quedan muchos por implementar. Creo que voy a tener que hacer un extenso manual para developers.

posted by ferminho at 02:47  

Tuesday, October 11, 2005

Decimoquinto cambio de resolución de los tiles

Mientras seguimos rumbo a la 0.3a (con unos cuantos añadidos, diría yo, importantes para el script), he decidido volver a cambiar la resolución de los tiles, de 40 a 32, y espero que sea la última vez que lo haga… porque entre otras cosas, ya tengo un montón de colecciones de tiles de prueba y por defecto de distintos tamaños…

El principal motivo es usar un tamaño potencia de 2 para facilitarle un poco más la cosa al motor 3D que funciona por detrás… son muchos tiles cargados en memoria a la vez y que han de ser reescalados a tamaño potencia de 2 (recordando que en el fondo son texturas).

De todos modos, es un poco perrería porque más adelante pienso realizar otra mejora que hará ésta prácticamente inservible… ¡Pero bueno!

posted by ferminho at 19:06  

Thursday, October 6, 2005

Revisión de efectos

Tras una generalizada mala acogida del efecto de agua por defecto actual, he incluido uno nuevo como el por defecto que creo que se acopla más a lo que mayormente gustaba (dejo los otros 3 anteriores también un poco retocados). He jugueteado un poco más con los blends de BlitzMax modificando su código fuente (el día que saquen nueva update tendré que copiar y pegar todo lo que modifiqué xD). Espero no tener que volver a tocar más eso xD

Por otro lado, he estado observando el impacto en rendimiento de cada uno de los efectos que hay hasta ahora. He optimizado un poco alguno de los demás, como el de calor y el de distorsión de fondo (pensando también en los pcs menos potentes y ampliando compatibilidad) y tengo planeadas varias optimizaciones más para cuando pueda (este fin de semana se presenta agobiante). Dejo también un screenshot de ejemplo de cómo queda más o menos el agua… con unos tiles decentes quedarí muchísimo mejor, a tener en cuenta que son de prueba hecho en menos de un minuto.

posted by ferminho at 11:26  

Monday, October 3, 2005

Un poco de historia

Aquí va un resumen sobre el desarrollo del juego hasta ahora, para ponernos en situación (¡Aviso! ¡Es un rollo!).

El concepto de VoiD.net nace por primera vez (¿Se puede nacer más de una vez?) en los comienzos de la primavera de 2004. Y no se parece en mucho al VoiD.net que es hoy.

En principio la idea era la de un wargame a la Final Fantasy Tactics®, Tactics Ogre® y similares (y fabulosos) juegos. Habría varios personajes, que irían subiendo nivel, podrían cambiar de clase, tendrían sus técnicas especiales, atributos, etcétera. Desde el primer momento, tuve claro que quería hacerlo con personajes basados en mis amigos del IRC, y un poco del argumento empezó a asomar. Comencé muy tímidamente a estructurar en papel un primer diseño (pensé en adquirir Blitz-3D y usarlo), y empecé a recopilar información. Esta etapa del desarrollo (que duró hasta el verano de 2004) fue un constante dejar/continuar. Era consciente de la envergadura del proyecto y (desgraciadamente) más consciente aún de mis limitaciones y mis experiencias anteriores con proyectos grandes en solitario.

Llegó el verano y me di un par de bofetadas (y otra de regalo). No tenía sentido estar con esa inseguridad que me hacía avanzar a trompicones. Así que me enfrenté por primera vez a mi “pesadilla” (dicho así suena como si realmente no me gustara hacer el juego, ¿Eh?). Evalué todas las partes del juego, lo que me costaría hacerlo, el tiempo de desarrollo. Los calculos salieron poco positivos y decidí cancelar el juego. Fin de la historia.

(Espera, si es el fin de la historia, ¿Por qué estoy ahora haciéndolo? Algo no cuadra)

Realmente no le di carpetazo al juego. Lo que tiró por tierra mis esperanzas de acabarlo fue (aparte de una dosis de realidad) la IA. Implementar una IA decente para un juego wargame con las posibilidades que le quería meter era algo descabellado… para una sola persona, con mi limitación de tiempo libre.

Pero claro, yo quería hacer el juego. Había empezado a diseñar el argumento, el mundillo que luego llegaría a convertirse en Void (oh, pero a estas alturas ¡Creo que aún no tenía nombre!), y me había empezado a encariñar. La verdad, es que es de los proyectos que más me han enganchado, sino el que más. Así que me volví a dar un par de bofetadas (esta vez más suave) y me espabilé. ‘¿Qué puedo hacer?’ … y también… ‘¿Qué me gusta hacer?’. La respuesta: un plataformas. Me encantan, y tengo algunas ideas antiguas bastante originales (o eso creo) reservadas para un plataformas. ¡Pues no se diga mas!

Sin embargo, un plataformas también es mucho trabajo. Descarté Blitz-3D, necesitaba algo mucho más simple y fácil para 2D (aunque Blitz-3D me hubiera venido de perlas con un sistema 2D-en-3D con overlays). La decisión fue Fénix, y me prometí, como requisito para acabarlo, (aunque más tarde me fallaría a mí mismo) no cambiar más de lenguaje. Fénix se acoplaba perfectamente a mis necesidades (o eso consideré en ese momento).

En ese verano me dediqué en profundidad al diseño del juego, tanto en aspectos técnicos como argumentales. La idea principal varió bastante, mezclándola un poco con una idea de otro juego muy antiguo que nunca llegué a empezar (aunque por supuesto, siempre dirán que me copié de Matrix®, que aunque me gusta, es una de esas películas que cuando sale te partes en cachitos, porque desde ese instante sabes que algunas ideas tuyas anteriores las calificarán de copias) y también un poco de inspiración fresca, otro tanto de inspiración fuerte en series, novelas, películas, que me gustan mucho (¡Que tampoco digo que no lo haga!)… y empezaron a construirse los cimientos de VoiD.net, el cual ya se llamaba así, por cierto. Me hice otra promesa, porque sabía que era necesaria para poder terminarlo. Que no cambiaría el argumento, los personajes que ya estaban decididos, etcétera. Sabía que el juego me llevaría (y me llevará) varios años posiblemente, y si cada vez me ponía a “actualizar el juego” a la gente del IRC de esa “época”, nunca iba a terminarlo, sería constantemente cambiar y cambiar y cambiar… (el proceso de incluir/hacer un personaje, ¡Je! no es algo que se hace en un día, ni 30, ni 60…)

En septiembre de 2004 comenzó la implementación bajo Fénix. Comencé con las herramientas (editor de mapas entre otros) y los formatos propios con sus respectivos editores. Entre ese mismo mes y octubre estarían terminados, y podría echar un primer vistazo a lo que sería la representación en pantalla de un mapa.

En los siguientes meses el desarrollo se enlenteció de un modo brutal. Había algo que no me cuajaba. Empecé con resolución 800×600. Hice algunos sprites, tiles, adecuados para la resolución. Aquello era mucho para Fénix. Podría haberlo optimizado para que corriera de un modo más decente, pero apenas era sólo el mapa de tiles, y todo lo que faltaba por delante de procesamiento, pintado, etcétera… Qué remedio. Bajemos la resolución a 640×480 (con lo que ello conllevaba, rehacer mis sprites, tiles temporales, y acostumbrarme a la nueva resolución…)

Así continué hasta casi terminado el otoño, realizando avances en los aspectos más internos del motor, cuando hice una estimación y me di de lleno contra la misma pared. Problemas de rendimiento. No me quedaba otra que bajar a 320×240, con mucho dolor. Al bajar a 640×480 me fastidió, pero a 320×240 cambiaba bastante el concepto del juego. Sin embargo, no tenía más remedio… rehice los tiles, cambié los tamaños, rehice algunos sprites de prueba (de hecho, esta vez tuve que cambiar de estilo de dibujo y me metí un poco a pixelart)…

Así que me di cuenta que llegó el 2005 y entre cambios y cambios constantes apenas había progresado, sino más bien era dos pasitos alante, uno atrás. Y vi la luz.

Salió la demo de BlitzMax, y un día por curiosidad lo bajé para probar. La demo me duró 3 días (aunque estaba limitada a 30 días de prueba) porque enseguida decidí comprarlo. El lenguaje perfecto para el tipo de juegos que me gusta hacer.

Tocaba romper la promesa. Pero estaba convencido que merec�a la pena (ahora, varios meses despu�s, considero que sin duda la mereci�). F�nix es genial, pero para este juego necesitaba BlitzMax�), que iba a ayudarme a aumentar no sólo el rendimiento en gran medida, sino tambi�n la velocidad de desarrollo. Y sin duda alguna.

Porté parte del código de manera fácil, especialmente las interfaces para mis formatos. Diseñé en poco tiempo un formato propio para las colecciones de gráficos (el de Fénix no me valía por no tener capa de alpha). En menos de un mes tenía un maptest inicial que visualizaba mapas creados con el editor de mapas que hice en Fénix (¡Genial!). Y el resultado era sorprendente. Le metí cosas fácilmente que en Fénix hubiera resultado en un impacto terrible en rendimiento (¡El motor 3D que funciona por detrás en BlitzMax era justo lo que necesitaba!)… y me puse de lleno. La etapa de desarrollo se aceleró, el juego se consolidó mucho en el diseño (cuando ves que salen las cosas bien, ¡La ilusión y las ganas de trabajar se multiplican!) y avancé mucho en todos los aspectos.

Y acabando un poco todo este rollo (¡Por fin!), a día de hoy, el motor (VoiD Engine) no está ni mucho menos acabado, pero de la parte de representación hay un gran trecho (todo lo más importante) terminado. Hay un importante número de módulos importantes funcionales, como es el Resource Manager, las interfaces para los formatos propios de colecciones de gráficos, de definición de personajes, bueno,¡El compilador de scripts tambien! (en su version 0.21a, a la par que el intérprete, esto es, el juego en sí, VoiD.net).

Hasta hace unos días no habia módulo principal, sólo maptests y herramientas que invocaban módulos del motor. Ahora, ya hay un módulo principal que inicializa todo y (para ir probando) lee un archivo de script prefijado (donde voy haciendo pruebas), y lo interpreta correctamente, aunque claro, de momento no permite demasiado el script. Por eso es una 0.21a.

Creo que es un buen momento para empezar el worklog en serio, y por ello… lo he hecho (Je). Iré también posteando más curiosidades sobre el juego, más aspectos del argumento, técnicos… (siempre sin spoilers, claro) para ello las distintas categorías.

¡Eso es todo! ¡Menudo rollo que he soltado!

posted by ferminho at 15:10  
« Previous Page

Powered by WordPress