Actualización de proyecto a 17 de septiembre de 2025.Una vez más, han pasado más de tres meses desde nuestra última actualización. ¡Tengan paciencia con nosotros! Hemos estado superando algunos desafíos técnicos muy serios y estamos muy entusiasmados con lo que depara el futuro para este proyecto. Estamos casi en la cima de la meseta, en la que puede fluir la verdadera creatividad.
Varios de estos hitos realmente merecen publicaciones de blog dedicadas, y trataremos de encontrar tiempo para escribirlos. ¡Sin promesas, sin embargo! Desafortunadamente, ese tipo de publicaciones ocupan mucho tiempo y energía que generalmente se gasta mejor en hacer un progreso sustancial en el desarrollo del juego.
Dicho esto, siempre somos amigables con cualquiera que quiera entrar en nuestro servidor de Discord y preguntarnos sobre cosas como esta de una manera menos formal.
¡Disfruta de la actualización!
-Jared
Superando los peores desafíos técnicos
Gestión de entidadesHemos realizado mejoras en la forma en que se gestionan las entidades (NPC, enemigos, etc.) en el motor de tiempo real. En las primeras etapas del desarrollo de Former Dawn, el motor calcularía el comportamiento de cada entidad en un área completa (un 'mundo' en nuestro lenguaje) [1]. A partir de la última demostración jugable lanzada públicamente, el comportamiento de una entidad solo se calculaba cuando era visible en la pantalla, para ahorrar ciclos de CPU [2]. En este momento, calculamos el comportamiento de las entidades cuando también están muy ligeramente fuera de la pantalla, para darle al mundo una sensación más dinámica [3]. Tenemos planes para implementar algo llamado GEM (Gestión General de Entidades) que agregará aún más dinamismo y permitirá mundos con muchas más entidades al mismo tiempo. [4] (Como punto de referencia, muchos juegos clásicos de NES simplemente desaparecían enemigos si salían de la pantalla [0]).
Juegos clásicos de NES que exhiben:
[0]: Rygar, Strider, Little Nemo, Castlevania III, Karnov
[1]: A Boy And His Blob, Eliminator Boat Duel, Spy vs. Spy, Blades of Steel
[2]: Metroid, The Legend of Zelda, Gauntlet, Deadly Towers
[3]: Super Mario Bros., Gimmick!, Bram Stoker's Dracula,
[4]: Crystalis
Dynamic Sprite PalettesUna de las cosas sutiles pero importantes de cualquier juego en NES que sea relativamente de "mundo abierto" es cómo se manejan las paletas, tanto para los personajes jugables, NPC y enemigos. Esto es en gran parte una consecuencia del hecho de que la NES solo tiene 4 paletas de sprites disponibles en un momento dado. Hasta hace poco, teníamos una asignación estática de sprites y eso limitaba severamente lo que podíamos poner en ciudades y áreas de batalla. Ahora tenemos una asignación dinámica completa de paletas de sprites, de modo que muchos más enemigos pueden "vivir" en un área, cada uno con sus propias paletas, y el sistema lo manejará automáticamente en tiempo real, no en función de dónde están los puntos de generación, sino dónde están actualmente las entidades. Esto hará que el mundo del juego se sienta mucho más vibrante y variado:

En caso de que te lo estés preguntando, sí, este subsistema se compone con el sistema de iluminación dinámica que mostramos en nuestra última actualización de Kickstarter:
Sistema de inventarioEl sistema de inventario ahora es mucho más robusto y bien definido. Técnicamente, a partir de la demostración jugable que mostramos en MAGFest, era posible usar elementos fuera del combate por turnos, pero ahora el sistema en torno a eso está generalizado.
Menú de equipoDesde la última actualización, hemos implementado un menú de equipo adecuado que no solo muestra qué elementos están equipados actualmente, sino que también permite al jugador cambiar de equipo como cabría esperar en cualquier juego de rol. (Hemos grabado 1 clip de la versión actual del juego que muestra esto y el sistema de la tienda, ya que están estrechamente asociados).
Sistema de tiendasLas tiendas ahora están implementadas en Former Dawn y, por supuesto, la de William es la primera. El jugador puede comprar artículos (incluidos artículos equipables), vender artículos y equiparlos:
Memory Mapper Development (MXM-1)
GDS (Graphic Display System)Hace poco menos de 3 años en este proyecto, mucho antes de que comenzáramos a armar una campaña de Kickstarter, habíamos concebido algo que llegó a conocerse internamente como GDS (Graphic Display System). Este es un sistema extraordinariamente específico de NES para cargar gráficos en vivo desde el disco con el fin de tener mundos contiguos, completamente animados y muy grandes, con lo que queremos decir que no hay tiempos de carga, desvanecimientos, etc. que se interpongan en el camino de la experiencia del juego.
Debido a que la NES es una consola de juegos tan flexible, hay muchas formas de hacer que los gráficos de fondo se muestren en la pantalla y se desplacen. No hay una forma estándar de hacerlo, y no hay una forma "correcta" de hacerlo. Sin entrar en detalles, solo tenga en cuenta que hay suficiente RAM en la consola para 2 pantallas de mapas de mosaicos y que se supone que todos los datos gráficos que usan los mapas de mosaicos se almacenan en el cartucho. En la era comercial original de la NES, esos datos gráficos generalmente se almacenaban como ROM de cartucho barato y se conectaban a los buses de la PPU, ya sea directamente o con un mapeador de memoria que interponía algunas de las líneas de dirección. El juego típico de NES también almacena los datos del mapa de mosaicos en ROM, pero en forma comprimida, que se descomprime en tiempo de ejecución y la CPU los introduce en la PPU. Este es un proceso muy lento debido a las bajas velocidades de reloj de la CPU y la PPU. En consecuencia, las animaciones de fondo en ese entonces eran relativamente raras y de naturaleza mínima, a menudo limitadas a trucos de manipulación de paletas, cambio de banco de grano grueso o pequeñas regiones de la pantalla.
Por el contrario, queríamos gráficos de fondo "completamente" animados en Former Dawn, y elegimos implementar el cambio de banco de tabla de nombres (mapa de mosaicos) en MXM-1. Eso fue suficiente para que mostráramos pruebas de concepto en los últimos años, incluso hasta la demostración de MAGFest 2025.
Antes de GDS, teníamos 2 sistemas diferentes para mostrar gráficos de fondo.
El primero horneó los mundos completamente en ROM, sin comprimir. Esto fue lo suficientemente bueno para algunas áreas a la vez en cualquier versión del juego, y pudimos llegar bastante lejos con nuestro proceso de desarrollo haciendo eso, aunque fue frustrante trabajar con él desde la perspectiva del diseñador. Usamos esto hasta que se volvió insostenible, sabiendo muy bien desde el principio que eventualmente lo sería.
El segundo trató la 'ROM' del EverDrive N8 Pro como la RAM que realmente es (PSRAM, en particular), lo cual podemos hacer libremente porque hemos escrito MXM-1 desde cero, sin usar ninguna de las construcciones de mapeo de krikzz. Usamos la tarjeta SD del EverDrive N8 Pro para almacenar archivos que se cargaron al por mayor en la RAM en lugar de cargarse en vivo. Como resultado, podíamos almacenar áreas razonablemente grandes, pero había limitaciones que eran más restrictivas de lo que exigía la visión de Former Dawn. Debido a que había una competencia directa entre el número de fotogramas de animación y el tamaño del mundo, había una secuencia de posibilidades que aprovechamos para crear la demo jugable tal y como existía en la época de la campaña de Kickstarter y luego la demo de MAGFest:

Como puede ver, GDS permite un mundo de 16 pantallas de ancho y 16 pantallas de alto, ¡un total de 256 pantallas! El número de fotogramas de animación puede oscilar entre 8 y 64 sin alterar el tamaño del mundo, pero afecta a la cantidad de mosaicos únicos disponibles para ilustrar el mundo. Todavía no sabemos cuántos fotogramas de animación serán típicos en un área grande en Former Dawn, depende de cuánto aprovechen nuestros artistas el sistema que hemos creado. Hubo un inconveniente de desarrollo de hardware muy diabólico que no entendimos durante bastante tiempo y que impidió el progreso, pero nuestros 3 mejores ingenieros se unieron este verano y lo conquistaron.
¡Estamos muy emocionados de lanzarnos ahora que esta tecnología se ha implementado por completo! Está trabajando en hardware de NES, así como en nuestra bifurcación de desarrollo privado de Mesen.
Todos los mundos anteriores que has visto ya se pueden incorporar al juego usando GDS sin que un solo píxel sea diferente, por lo que para demostrar el verdadero poder de esta mejora, tenemos que crear un área muy grande que antes no era posible mostrar. La primera de esas áreas es el Desierto Abandonado, que es de tamaño completo (16 pantallas de ancho, 16 pantallas de alto, para un total de 256 pantallas). Hemos estado trabajando muy duro en ello, pero aún no está terminado. (El trabajo parcial se mostrará a continuación en esta misma actualización). Tenga en cuenta que este mundo es más grande que toda la demostración jugable de MAGFest, que tiene alrededor de 120 pantallas, dependiendo de cómo las cuente.
SSS (Silhouette Sprite System)Apuntar al hardware real de NES es extraordinariamente difícil, como todo el mundo sabe, y para todos los que realmente profundizan, la limitación de 8 sprites por línea de escaneo es la más severa y la más difícil de solucionar. Cerca del comienzo del proyecto, Paul Molloy de Infinite NES Lives (nuestro fabricante de cartuchos) había sugerido implementar una función de mapeo de memoria para ayudar a mitigar esta limitación: 'sprites de fondo' o 'sprites de hardware', como él los llamó. Los llamamos 'sprites de silueta', y finalmente los hemos implementado.
Cada uno de ellos es de 1 bpp, no de 2 bpp como los sprites ordinarios de NES, y solo pueden tener 2 valores de color: transparente y cualquiera que sea el color de fondo universal ('fondo'). Esto casi siempre va a ser negro en Former Dawn, como era típico en los juegos originales de la era comercial de NES. Debido a eso, estos sprites de silueta se pueden usar para todos los siguientes propósitos:
Delinear enemigos u otras entidades en negro sin tener que sacrificar una ranura preciosa en una paleta de colores.
Permitir una silueta de "retroceso" para una entidad en caso de parpadeo de sprite. (Es decir, el jugador aún podría ver la forma de la entidad, pero no la coloración o el detalle).
Tener sombras debajo de las entidades sin tener que ocupar un espacio precioso en la OAM interna de la PPU, o tener que gastar ciclos de CPU adicionales para administrarlas, o sin tener que preocuparse por el color que van a ser, o causar un parpadeo perceptible en la pantalla.
Agregando aún más colores a nuestra 'paleta de personas' universal, debido a la componibilidad de este subsistema con UCS. Por lo tanto, estamos pasando de 5 colores en esa paleta a 8, ahora cualquier personaje jugable, NPC, cursor, etc. que use la paleta de personas también puede tener negro verdadero, rojo súper oscuro y un color marrón rojizo. (Probablemente mostraremos esto en Twitter en un futuro cercano, pero aún no tenemos un buen ejemplo preparado).
New ArtworkAva's Anteroom:
Ava's Persuasion Chamber:
Forsaken Desert (big oasis, 32 frames)
Forsaken Desert (big oasis, 64 frames):
Forsaken Desert (small oasis):
Forsaken Desert (small dunes):
Forsaken Desert (random rocks, etc.):
Forsaken Desert (random rocks, etc.):
Forsaken Desert (random rocks, big dunes, etc.):
Forsaken Desert (orm skeleton):
Forsaken Desert (random skeletons):
Forsaken Desert (bandit camp):
Dream Demon Boss Fight:
Ava Swimming Overwater:
Ava (Org Regalia) Walking:
James Swimming Overwater:
James Swimming Underwater:
Kwen Swimming Overwater:
Kwen Swimming Underwater:
Jeku Defending:
Jeku Parrying:
Cow Walking:
James Poking Above:
Kwen Corroding Door:
New MusicSe han escrito varias pistas nuevas para el OST desde nuestra última actualización, pero esta es la que queremos destacar. Es la música de la pelea del jefe demonio de ensueño que se muestra arriba.
https://somethingnerdystudios.bandcamp. ... st-sampler