VoiD.net: the Developer’s Log

VoiD.net dev worklog

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  

Thursday, October 13, 2005

VoiD.net… ¿La novela?

Esto es una curiosidad sólo…

Hace un tiempo empecé un Resumen.txt donde pretendía hacerme un guión general, con un orden cronológico de eventos predefinidos, opcionales, bifurcaciones en el argumento, etcétera, porque ya llegado un momento es un volumen de datos en la cabeza que se olvida la mayor parte de ellas…

Pero me enrollé demasiado, empecé a entrar en mucho detalle y cuando quise darme cuenta, estaba escribiendo más bien una novela que un resumen…

Despues empecé un resumen de verdad (el cual, aún no está acabado pero yo diría que está al 70% aproximadamente), pero el Resumen.txt se quedó así, cubriendo una buena parte de la introducción del juego en modo-novela…

Quién sabe si lo continuaré, la verdad es que me gustaría pero no tengo mucho tiempo, y quiero antes tener bien fijado el argumento… pero quizá dentro de algún tiempo…

posted by ferminho at 15:49  

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  

Monday, October 10, 2005

Formato del worklog

He cambiado el formato del worklog… me he puesto un poco más ‘serio’, digámoslo así. Estoy haciendo algunas pequeñas reformas y añadidos.

Me da vergüenza decir por qué me ha dado por hacerlo… probé a ver qué tal traducía Google® la página y me estuve riendo un buen rato de la traducción absurda. Luego me di cuenta de que buena parte de las absurdeces eran porque no había puesto acentos, y me sentí mal.

Pronto postearé cosas más interesantes.

posted by ferminho at 11:44  

Friday, October 7, 2005

¿Cómo es el juego?

¿Qué es? ¿Un shoot’em up? ¿FPS? ¿Estrategia? ¿Tiene multiplayer? ¿Admite expansiones?…

Bueno, algo he dicho ya anteriormente pero aquí un breve resumen…

– Plataformas 2D (sidescroller)

– Multipersonaje : puedes llevar a varios personajes a la vez y cambiar entre uno y otro en tiempo real. Los que no están seleccionados son controlados por la IA.

– Scripted : el motor no tiene el juego “hardcoded”, sólo es un motor que lee scripts y un menú; por defecto lee la campaña standard, pero puedes indicarle cuál leer. Con lo cual, es fácilmente expansionable.

– Scripted, sí, pero potente : los scripts no están pensandos para ser simples líneas que ponen personajes en un sitio y el objetivo es llegar al final de nivel para cargar el siguiente… pretenden ser potentes y permitir mucha libertad al “desarrollador” para recrear una historia sin demasiadas normas típicas de ‘videojuego’ y con más aspecto de ‘película interactiva’.

– Sistema de eventos : el script está basado en un sistema de eventos accionados por triggers definidos por el desarrollador, así no es totalmente secuencial.

– Sistema de clases a-la-RPG : los personajes tienen una clase, experiencia, atributos, que pueden ir mejorando y cambiar siguiendo un amplio esquema de clases y subclases a medio desarrollar aún.

– 2Player : aún en el aire, pero es más que probable que en cualquier momento un segundo jugador pueda hacer “join in” y tomar control de otro personaje cuando se va con más de uno.

– No linealidad : es un concepto un poco abstracto y que depende también del desarrollador, pero el motor y los scripts están orientados hacia campañas no lineales, con facilidad de introducir variaciones en el transcurso de éstas sin necesidad de copiar y pegar enormes cantidades de código script con las diferencias.

– ¿Más? : seguramente me dejo cosas en el tintero, aunque tengo otras en mente que prefiero no decir hasta que estén confirmadas. Tengo algunas cosas rondando la cabeza que puede que sean ambiciosas o puede que no, por eso cuando vea si es factible implementarlas… las meteré… o no.

posted by ferminho at 21:45  

Thursday, October 6, 2005

El nuevo efecto del agua en el maptest

Así queda el nuevo efecto del agua a grandes rasgos, oscurece en vez de hacer alpha. Es un multiply de toda la vida, aunque intentando sacar un blend de oscurecido que quedara resultón saqué otro interesante (que no apliqué al agua pero que reservo para otras cosas).

posted by ferminho at 22:26  

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  

Monday, October 3, 2005

Un tímido hola

Con la salida ayer de la versión 0.21a de VoiD.net, comienzo hoy este Developer Log (o Worklog, o como cada uno quiera llamarlo) con el fin de ir guardando un registro de lo que voy haciendo, lo que avanza el juego, y bueno, cómo no, para poder recibir también feedback a través de esto (siendo sincero, no creo que ocurra, ¡Al menos no hasta dentro de mucho tiempo!… ¿Hola? ¿Hay alguien ahí?).

Por supuesto, no es un worklog que parta de cero, desde el comienzo del desarrollo (¡Ni mucho menos!)… y, ¿En qué estado se encuentra ahora VoiD.net? Toda la información de ahora en adelante.

posted by ferminho at 15:10  
« Previous Page

Powered by WordPress