EasyRPG Player es un intérprete de juegos creados con RPG Maker 2000 y 2003 libre y multiplataforma.
Después de más de un año, por fin nos presentamos con un nuevo lanzamiento. Este ha sido un año especial para todos nosotros. Aunque no fue sólo la pandemia lo que retrasó el lanzamiento. En cambio, el problema principal fue: Muchas de las nuevas características / mejoras estuvieron en desarrollo durante meses y se han integrado gradualmente en nuestra base de código principal. Por lo tanto, el intérprete era bastante inestable a veces y hacer una nueva versión sencillamente no era factible. Sólo somos un pequeño equipo de desarrolladores, así que era más fácil esperar hasta que todo lo complicado estuviera terminado y entonces pudiéramos probar y eliminar los últimos errores. Ahora todos los errores se han eliminado (eso esperamos) y podemos liberar.
Asumimos que quieres saber cuáles son las novedades. Las principales mejoras son:
- El parche RPG_RT Ineluki’s Key Patch ya es funcional.
- Muchos de vosotros nos habéis pedido soporte para el Parche Maniac. Este es otro parche importante lanzado hace unos años. Aunque no tenemos previsto dar soporte a todo el parche, hemos decidido implementar algunas características concretas.
- La reproducción MIDI se ha mejorado significativamente y los juegos que usan MIDI Ticks para la sincronización ahora funcionan perfectamente.
- El sistema de movimiento (Move routes) fue completamente reescrito. Esto solucionó la mayoría de los errores que quedaban en nuestro intérprete de mapas.
- El sistema de batalla de RPG Maker 2003 está ahora casi completo y hemos verificado que todos los algoritmos se comportan correctamente.
- Todas las operaciones de archivos pasan ahora por una capa de Sistema de Archivos Virtual (VFS). Esto nos da mucha más flexibilidad, por ejemplo, ahora es posible lanzar juegos que están dentro de archivos ZIP.
- Hemos inventado una nueva forma de traducir los juegos. Consulta este artículo para obtener más información.
Una de las características que no se ha incluido en la versión 0.7 es la ventana de configuración y la reasignación de botones para los mandos del juego. El código para el diálogo de configuración y para la gestión del archivo de configuración todavía está faltante. Se espera esta característica en la 0.7.1.
Si se omiten los parches no oficiales de RPG_RT se puede decir que nuestro trabajo está terminado en un 99%. Las principales características que faltan son algunas animaciones de objetos en batalla, el generador aleatorio de mazmorras y la reproducción de películas (y esto último es poco probable porque todos los juegos utilizan diferentes códecs de vídeo, lo que hace que esto sea un lío). Bueno… y por supuesto la interminable cantidad de casos extremadamente particulares que se nos escaparon. 🙂
¿Por qué Codename Sword? Porque las animaciones de objetos en el sistema de batalla de RPG Maker 2003 era uno de los problemas más antiguos y nadie quería implementarlas. Pero un nuevo e intrépido desarrollador se unió y las implementó por nosotros.
Disculpas a los desarrolladores si alguna de sus contribuciones no se menciona aquí. En esta versión se han cerrado 160 problemas y se han fusionado 260 pull requests, por lo que es muy difícil mencionar todo.
Corrección de caídas del programa
El intérprete se bloqueaba cuando vencía a un enemigo debido a un hechizo reflejado en la batalla. (#2394)
Yume2kki (ゆめ2っき) a veces utiliza una función de desplazamiento instantáneo usando un comando de evento de Pan Screen parcheado con un valor de velocidad muy alto. Esto reventaba en ciertos dispositivos Android debido a una división entre 0. A los desarrolladores de Yume2kki les encanta abusar de los comportamientos indefinidos de RPG_RT. Ya hemos arreglado muchos de ellos en los últimos años…
Regresiones corregidas
Al utilizar un elemento de Speicherstein (guarda la partida) en Vampires Dawn 2 se producía un bucle infinito de ventanas de guardado, porque el recuento de guardados no se actualizaba. (#2450)
Al utilizar un hechizo de curación en Vampires Dawn 2, era imposible saber a qué actor se dirigía realmente. (#2479)
Se producían fallos de audio cuando se reproducía un efecto de sonido sin una música de fondo activa. (#2427, #2501)
Cuando el estado Muerte está configurado como Finaliza después de la Batalla, el estado se eliminaba pero los PV ya no se incrementaban a 1. Lo que resultaba en un game over instantáneo. (#2521)
Soporte de parches
RPG_RT es tristemente conocido por la enorme cantidad de parches a la medida que se le aplican para conseguir una funcionalidad específica.
EasyRPG Player no puede soportar todos ellos porque muchos son específicos del juego o lanzan otros programas en Windows, pero añadimos soporte para los más comunes, como el parche Pic Pointer.
Ineluki’s Key Patch
En 0.7 añadimos soporte para un parche muy popular en la comunidad alemana: Ineluki’s Key Patch: Este parche es un reemplazo para Harmony.dll (el motor de sonido utilizado por RPG Maker 2000/2003) que permite ejecutar scripts “tocando” música y leyendo los valores de retorno a través de la función GetMidiTicks. Las principales adiciones son el soporte completo de teclado y ratón. (#1181)
Harvest Moon - A new Life y probablemente otros juegos invocan un programa llamado LS.dat a través del Key Patch de Ineluki. Este programa pone un script en el directorio de sonido que contiene la cantidad de veces que se ha guardado la partida. Los juegos utilizan esto en la escena de título personalizada para decidir si la carga se mostrará. Esta funcionalidad está ahora emulada. (#1367)
Los juegos que usan el ratón como Jumping cubes son jugables ahora pero para los nuevos juegos es mejor usar la funcionalidad del ratón de Maniac Patch porque tiene una mejor integración a través de comandos de eventos.
DynRPG
Aún más complejo que Ineluki’s Key Patch es un sistema de plugins de Cherry llamado DynRPG. DynRPG proporciona una API de C++ para acceder y modificar el comportamiento de RPG_RT. Esto es altamente específico de RPG_RT y nunca podremos soportarlo adecuadamente, pero hemos añadido un manejador sintáctico para los comandos de DynRPG. Esto significa que ahora podemos reimplementar los plugins más populares e integrarlos directamente en el intérprete, pero por ahora el manejador es inútil para los usuarios, excepto para informar mejor de los errores que el juego probablemente no se ejecutará correctamente. (#2282) Actualmente están planeados para una versión posterior de Player el DynTextPlugin y el DynPEC.
Maniac Patch
En agosto de 2018 un usuario llamado BingShan de la comunidad japonesa publicó la primera versión de Maniac Patch. Este es el primer parche importante para la versión oficial de RPG Maker 2003 en inglés y amplió ciertos comandos de eventos y añadió nuevos comandos. El parche fue ampliado a lo largo de los años y recientemente BingShan lanzó un nuevo motor completo compatible con RPG Maker 2003. Ya podemos decir que no tenemos intención de implementar toda la funcionalidad del parche, especialmente el TPC (que es un motor de scripts incorporado que genera comandos de eventos). Elegiremos las características en función de la demanda.
Ahora mismo EasyRPG Player detecta el parche y avisa en la mayoría de los casos de los comandos no soportados. (#2486)
Aunque empezamos a implementar algunas funcionalidades:
- La animación de batalla desarmada para los enemigos ahora puede ser configurada (#2498)
- Los nuevos comandos de evento Load, Save, Get Save Info y Get Mouse Position son soportados (#2623)
- El comando de evento Key Input Proc aprendió a leer de los botones del ratón (#2623)
- Los comandos de evento Mostrar Imagen, Mover Imagen y Borrar Imagen fueron mejorados con la funcionalidad de Maniac Patch. Esto incluye características como Modo de Mezcla y Voltear (#2628)
- Ciertos comandos de evento ganaron la funcionalidad, además de valor constante y Variable, para leer indirectamente a través de una variable, por ejemplo, cuando en Var 1 es un 5 se usa el valor en la Variable número 5. Debido a que todos los comandos de eventos pasan por la misma lógica de búsqueda aquí y Maniac Patch a veces difieren de ella no podemos dar una lista completa donde funciona.
En la imagen: crea interesantes efectos con los modos de fusión “Adición”, “Multiplicación” y “Superposición”
Lanzamiento de juegos protegidos
Algunos juegos utilizan archivos parcheados para asegurarse de que no es posible verlos fácilmente en el editor.
La protección más sencilla que vencemos desde hace una década es sustituir la cabecera de los archivos, por ejemplo, en lugar de LcfDataBase el LDB utiliza una cadena personalizada como EasyGameABC.
Más sofisticado es cambiar todas las extensiones de los archivos. Laxius Power, por ejemplo, cambia
RPG_RT.ldb a RPG_RT.set
RPG_RT.lmt a RPG_RT.lxb
MapXXXX.lmu a MapXXXX.ont
Esta protección es ahora derrotada por EasyRPG Player y el juego se lanza: El LDB y el LMT se determinan en función del tamaño (la base de datos es mayor) y los mapas en función del prefijo del mapa. (#1920, #2271)
Ya no es un reto para EasyRPG Player: Las extensiones de Laxius Power
A veces te encontrarás con juegos que sólo constan de un único RPG_RT.exe: Estos suelen estar protegidos por Molebox o Enigma. EasyRPG Player no es capaz de ejecutarlos directamente, pero hay desempaquetadores disponibles en Internet.
Traducir juegos
Los juegos ya se pueden traducir. Para más información, consulta nuestra anterior entrada en el blog y la guía enlazada en ella. (#797, #2287)
Ahora es posible traducir ciertos términos hasta ahora intraducibles. Estos se implementan en términos de nuevos trozos de base de datos. Desgraciadamente, nuestro editor no está listo todavía, por lo que su edición requiere una herramienta como lcf2xml. (#2362, #2473). Vea también los commits relacionados con liblcf. (#414, #419)
Los términos ahora traducibles incluyen:
- Escena de estado: Nombre, Clase, Título, Condición, Frente, Atrás, Confirmar, Rehacer
- En la batalla de RPG Maker 2003, los mensajes que se muestran cuando los monstruos atacan dos veces, defienden, observan, cargan, se autodestruyen y escapan.
Soporte para juegos desde archivos ZIP (VFS) (#2189, #2277, #2460, #2471)
En 0.7 reemplazamos todos los trozos de código que eran responsables de la lectura de archivos con una capa de abstracción llamada VFS (Virtual Filesystem). Queríamos hacer esto desde hace años y fue una gran cantidad de trabajo.
Básicamente esto funciona a través de las clases del Sistema de Archivos que ofrecen funciones como Archivo existe, Abrir y Leer archivo o Listar directorio y toda la Entrada/Salida va a través de esta capa de abstracción.
En la versión 0.7 hay una nueva característica impulsada por VFS que también demuestra que funciona: El reproductor ahora puede lanzar juegos directamente desde archivos ZIP. Sólo son compatibles los archivos con el método de compresión Store o Deflate (no Deflate64). Cuando se utiliza esta función, el juego guardado se coloca en una carpeta junto al archivo ZIP. Puedes lanzarlos a través de nuestro Game Browser (que ya ha aprendido a navegar en subdirectorios) o proporcionándolos como –project-path en la línea de comandos. En cuanto a los juegos, la codificación del archivo ZIP es autodetectada, así que si no puedes extraer un ZIP en Windows: Intenta lanzarlo a través de EasyRPG Player en su lugar. (#1085, #2562)
La principal motivación para este cambio, sin embargo, fue el apoyo a las plataformas en las que las funciones normales de entrada/salida de la biblioteca estándar son inusables. Esto afecta a las aplicaciones de la tienda de Windows (UWP), donde el modelo de seguridad prohíbe el acceso normal a los archivos fuera del directorio de la aplicación, y a partir de noviembre de 2021 también a Android: Todas las apps actualizadas deben utilizar el Storage Access Framework (SAF), que también impone estos controles de seguridad.
Por ahora UWP o SAF no son soportados por nosotros, pero nuestro código VFS hace que sea muy fácil para nosotros vincularlos más tarde.
También nos preguntan mucho sobre la posibilidad de ofrecer juegos de RPG Maker directamente en la Play Store: Estamos muy cerca de apoyar este caso de uso (archivos de juego directamente en el APK y el lanzamiento de ellos sin utilizar el navegador de juegos). ¡Permaneced atentos a nuestro anuncio!
Audio
Nuevo sistema de audio para MIDI (#2250, #2302)
El MIDI no es el típico formato de audio: A diferencia de WAV o MP3, que codifican una forma de onda, los archivos MIDI se basan en eventos: Contienen los instrumentos y las notas que se tocan. Esto también significa que suenan de forma diferente dependiendo de la biblioteca utilizada. La mayoría de ustedes están acostumbrados al MIDI de Windows (Roland General MIDI). Además, RPG Maker 2000/2003 tiene características especiales para los archivos MIDI:
- Cambios de tono (velocidad de reproducción)
- Cambios de volumen
- Evento de bucle (cambio de control con el evento 111)
- Obtención de la posición actual de reproducción (MIDI Ticks)
Las dos primeras características funcionan inyectando eventos MIDI y para el caso del evento Loop para enviar eventos MIDI desde el inicio del bucle de nuevo.
Hasta hace poco usábamos SDL Mixer en Windows y macOS para esto y en el resto de plataformas WildMidi o FmMidi. SDL Mixer aseguraba que sonáramos como RPG_RT utilizando la API nativa en Windows. A excepción de FmMidi, que no es muy popular entre los usuarios porque les suena “mal”, ninguna de estas librerías permite inyectar eventos, lo que significa que no podíamos implementar el comportamiento de harmony.dll (el motor de audio de RPG_RT).
Pero con la versión 0.7 esto está finalmente resuelto. Cómo funciona: Casi todas las librerías MIDI (excepto WildMidi, de la que hablaremos más adelante) soportan el procesamiento de eventos externos y su posterior conversión a audio.
Para ello utilizamos el secuenciador FmMidi para reproducir todos los archivos MIDI. FmMidi está dividido en dos partes: Un secuenciador que procesa los eventos MIDI y un sintetizador que convierte estos eventos en audio. Ten en cuenta que aquí utilizamos el secuenciador, es decir, el componente que maneja los eventos.
Enviamos estos eventos a la interfaz MIDI nativa en Windows, Linux y macOS o a nuestras librerías FluidSynth (para reproducir archivos SF2 / soundfonts) y FmMidi (para los fans de la música con sonido electrónico, suena como un Yamaha YM2608). Adicionalmente para el control de volumen o tono inyectamos eventos adicionales (que rastreamos observando harmony.dll). En resumen: Esto funciona excelente y todos nuestros problemas MIDI están resueltos… excepto WildMidi.
WildMidi es una librería de “disparar y olvidar”: Le pasas el archivo MIDI y lo reproduce. No hay manera de controlar el comportamiento. Para asegurarnos de que todo sigue funcionando, contamos cuántas muestras debe haber reproducido WildMidi en relación con el tempo MIDI, y así conseguimos que sigan funcionando los ticks MIDI y los bucles. Se siente como un hack gigante pero no es absurdo cuando funciona. Desafortunadamente conseguir el Pitch correcto es imposible, esto seguirá sonando incorrecto.
¿Por qué tantas librerías MIDI? Bueno, los MIDI son especiales: A todo el mundo le gustan diferentes. A algunos les gusta el MIDI por defecto de Windows (conocido por RPG_RT), otros tienen una fuente de sonido favorita (FluidSynth), otros quieren parches GUS (Wildmidi) y otros aman la versión electrónica ofrecida por FmMidi.
Problemas resueltos por nuestra nueva interfaz MIDI:
- Embric of Wulfhammer’s Castle: El efecto de sonido se repite incorrectamente (punto de bucle MIDI) (#834)
- El sintetizador MIDI se reinicia cada vez que cambia la música, lo que provoca un breve retraso en algunos sistemas (#951)
- Soporte de reproducción MIDI de FluidSynth/FluidLite (archivos SF2/SF3) (#1322)
- Mejorar la consistencia del sonido MIDI (#1434)
- Helen’s Misterious Castle tenía una reproducción inexacta de la BGM (#1556, #2587)
- Return of Touhou Mother: Regresión del MIDI-Tick (#1733). Este juego utiliza un sistema de combo basado en MIDI-tick, lo que significa que esto nunca funcionó correctamente en ningún lugar, excepto cuando se utiliza FmMidi.
- El tempo cambia el tono de las canciones MIDI (#2029). Este error no es solucionable en WildMidi pero funciona en todas las demás bibliotecas.
- Dの冒険Ⅶ: Colgar después de investigar la tumba (#2106). Necesidad de soporte de ticks MIDI.
- Implementar Ticks para: libsndfile, FmMidi y Wildmidi (#2118)
- Return of Touhou Mother se bloqueaba en el sistema de batalla en Android (#2241)
- FmMidi: soporte de bucle de armonía ingenua (#2245)
- Mejorar la precisión de la reproducción MIDI (#2478)
- RTP Shop 3.mid reproduce con ruido (#2588)
Pero todo esto tenía un precio: Antes de nuestro arreglo MIDI, la máquina expendedora de la Casa de Baños de Yume2kki (ゆめ2っき) sólo te daba la sabrosa leche con chocolate. Ahora también puedes conseguir la aburrida leche entera (3,5% de grasa) y la leche desnatada (1,5% de grasa) además de la sabrosa leche de chocolate. ¡Qué tristeza!
Y no hemos terminado todavía: tenemos previsto ofrecer una interfaz para configurar el MIDI en la versión 0.7.1. El soundfont utilizado por FluidSynth no es configurable ahora mismo. Por el momento se puede utilizar un fichero con el nombre easyrpg.soundfont en la carpeta del juego.
Más mejoras en el audio
Debido a que RPG_RT utiliza DirectSound, utiliza una escala de volumen logarítmica en lugar de una escala de volumen lineal. Esto significa que hasta ahora todos los efectos de sonido y la mayoría de la música se reproducían demasiado alto en comparación con RPG_RT. Esto ya está arreglado. (#2236, #2551)
Para ciertas plataformas usamos una implementación personalizada para reproducir archivos WAV porque libsndfile era demasiado lento en ellas. Nuestra implementación personalizada estaba severamente limitada y finalmente la reemplazamos con dr_wav. dr_wav
es una biblioteca de un solo archivo que puede ser incrustado directamente y soporta todos los formatos WAV relevantes. dr_wav es ahora el predeterminado para todas las plataformas. El único problema que hemos encontrado es que dr_wav se bloqueaba al reproducir ciertos efectos de sonido en la Wii, pero hemos podido resolverlo. (#2571)
El cuasi-estándar para los bucles en los archivos OGG y OPUS son las etiquetas LOOPSTART y LOOPEND o como las llama RPG Maker VX: LOOPSTART y LOOPLENGTH. Después de implementar el looping para MIDI conocimos todas las dificultades técnicas, lo que nos facilitó añadir esta funcionalidad. (#2618)
Intérprete/Eventos
El vehículo ya no se renderiza en la batalla personalizada de Dragon Fantasy II. Arreglo poco claro, pero funciona. (#2235)
El vehículo se desembarca cuando se invoca una habilidad de Teletransporte o Escape. (#2316)
Wadanohara ya no muestra advertencias sobre equipo inválido al iniciar. El equipo inválido se elimina ahora de forma silenciosa. (#2506)
Múltiples correcciones de errores en el proceso de introducción de claves:
- En la versión heredada de Steam (no el port de Unity) de Ara Fell agacharse con Shift no funcionaba porque nos olvidamos de habilitar la bandera “El motor está actualizado” al habilitar las características para la versión inglesa de RPG Maker 2003. Esta bandera de actualización se utiliza en Key Input para ciertas teclas. (#2531)
- En Zelda LA era imposible introducir un nombre porque las teclas de dirección no funcionaban. Este juego utiliza la traducción de RPG Maker 2003 realizada por RPG advocate. Dichas versiones antiguas sólo soportaban “Todas las direcciones” para la entrada de teclas. Ahora esto se maneja correctamente. (#2546)
Movimiento / Rutas de movimiento (#2208)
Otra gran refactorización fue el comportamiento en términos de movimiento de los personajes y las rutas de movimiento. Esto arregló de nuevo toneladas de casos extremos donde antes no teníamos idea de lo que estaba pasando. Ahora incluso somos compatibles con los errores. Usted puede decidir si esto es bueno o no, pero es necesario para la perfecta compatibilidad del juego.
- Múltiples mejoras de precisión para el tipo de movimiento aleatorio (#1638)
- Abordar una aeronave es unos cuantos fotogramas más lento cuando tiene una ruta de movimiento asignada. No nos preguntes por qué. (#1645)
- Soporte para algunos divertidos glitches de vehículos. (#1852)
- Al hablar con un personaje en Saint Seiya -Il Mito- desaparecía. Esto era causado por un manejo incorrecto del movimiento diagonal. (#2196)
- Los barriles no rodaban en el minijuego de Donkey Kong disponible en Saint Seiya -Il Mito-: Al cambiar entre rutas de movimiento que tienen exactamente los mismos comandos de movimiento, la nueva ruta de movimiento continúa exactamente en la misma posición en lugar de reiniciarse. (#2197)
- Manejo incorrecto de las rutas de movimiento cuando un interruptor desactivaba la ruta. (#2255)
- Un evento de Cambio de Gráfico cambiará el vehículo en lugar del jugador cuando sea abordado. (#2286)
Sistema de combate
Después de refactorizar la mayor parte del sistema de batalla de RPG Maker 2000, el sistema de batalla de RPG Maker 2003 recibió el mismo tratamiento: Casi todo debería funcionar ahora, incluso los enemigos te atacan ahora mientras navegas por el menú (ATB / Active Time Battle). Algunos odiamos esto, pero es como lo hace RPG Maker 2003. (#2399)
Este fue de nuevo un cambio bastante complejo por lo que es difícil escribirlo. Simplemente pruébalo y verás de lo que estamos hablando.
Esto arregla los siguientes problemas:
- Colocación correcta de los battlers en su fila de batalla específica. (#278)
- El comando de batalla de la fila está ahora implementado (#680). Este comando es bastante inútil, cambia el multiplicador de defensa de los actores y ya está.
- Errores menores en la batalla en OFF (#1277). No se mostraba el mensaje de Purificación en curso.
- Final Tear 3: Múltiples errores menores en el sistema de batalla (#1314). Este juego tenía múltiples problemas gráficos, por ejemplo, un gráfico de fondo erróneo y la colocación de los batalladores era incorrecta.
- Nueva característica: El editor de la versión inglesa de RPG Maker 2003 permite especificar valores de tasa E negativos, pero esto nunca fue implementado en RPG_RT. Hemos añadido esta característica (#1391)
- Madre: Disonancia cognitiva (#1414). Problemas de renderizado múltiple y Dual Wield (uso de dos armas) no era soportado (#1727).
- Soporte para tipos de batalla especiales en RPG Maker 2003 (Sorpresa, Espalda, Pinza y Ataque envolvente) (#1454)
Todos los grandes estilos de batalla que ofrece RPG Maker 2003
- Las animaciones de batalla en Alter A.I.L.A. Génesis funcionan (#1496)
- Los activos ahora se voltean para asegurar que siempre miren al héroe/al enemigo (#1564)
- Las animaciones de muerte se renderizaban incorrectamente (#1681)
- Memory of Moshimo utiliza una base de datos modificada con un Monstruo llamado Procesamiento de Fin de Turno (ターン終了処理) que tiene 0 HP y se utiliza para los scripts. Ahora se admite esta peculiaridad. (#2153)
- Legend of tank: Arregla el bloqueo blando en la batalla contra el Acorazado Mikasa (戦艦三笠) (#2154)
- El comportamiento cuando un actor recibe un estado que resulta en provocación es ahora correcto (#2169)
- Los actores que son asesinados y revividos en el mismo turno ya no ejecutan su acción de batalla (#2169)
- El reflejo de los hechizos está ahora correctamente implementado (#2251)
- Es posible alterar el color de los monstruos. En algunos casos el cálculo era incorrecto. (#2266)
- Ahora se soportan las animaciones de batalla invertidas (#2310)
- Muchas mejoras en la interfaz de usuario para asegurar que somos píxeles perfectos en comparación con RPG_RT (#2354, #2483)
- El mensaje de inicio de batalla es ahora compatible (#2357)
- Tiempo adecuado y marcos de espera entre acciones (#2357)
- Soporte para el modo activo ATB (#2360)
- El comando de evento Cambiar HP del Monstruo tiene una opción que decide si la reducción de HP puede ser letal (#2370)
- Los sprites de los monstruos ya no se renderizaban después de revivir (#2372)
- Se ha corregido la usabilidad de las habilidades y los objetos (#2380)
- La animación de huida es ahora compatible ( #2383)
- Cuando un batallador recibe una restricción como dormir, la acción actual se cancela ahora. Antes era posible dormir y revivir al batallador en el mismo turno y seguir haciendo una acción. (#2385)
- Los enemigos ya no parpadean cuando es el momento de un turno pero tienen una restricción de no moverse como el sueño. (#2388)
- Soporte para animaciones de batalla simultáneas en enemigos y actores (#2409)
- Los batalladores se posicionaban incorrectamente cuando se cambiaba el grupo a través de un comando de evento. (#2418)
- El medidor ya no se muestra lleno cuando el valor máximo de SP es 0. (Reportado para Shyouzen 2, #2443)
- Las animaciones de muerte ya no se repiten. (#2481)
- Los sprites se renderizan en la posición correcta y soportan el volteo. (#2482)
- Al resaltar un enemigo en batalla, se muestran hasta cinco estados activos en la caja de ayuda, hasta ahora sólo se mostraba uno. Ara Fell utiliza mucho esto en las batallas contra jefes. (#2487)
- Los efectos de destello y sacudida se manejan ahora correctamente para los sprites de animación de batalla (#2505)
- En Grimm’s Hollow el daño se decide en base a la posición de un medidor de balanceo que hay que parar en el momento adecuado. Esto aparecía incluso cuando no se ejecutaba ningún ataque. (#2535)
- En la batalla RPG_RT es más tolerante que en el mapa: Cuando falta una imagen la batalla continuará sin mostrar la imagen. Esto está arreglado ahora porque rompía la batalla final en Unterwegs en Düsterburg: Las imágenes se eliminaban y en su lugar se integraban en el fondo (cosas como la mano izquierda, la mano derecha, la parte principal del jefe…). En nuestro reproductor las imágenes que faltaban se renderizaban como un montón de tableros de ajedrez. (#2561)
- El pequeño sistema de batalla de RPG Maker 2003 es ahora compatible (#2575)
Esta batalla en Final Tear 3 ahora se ve perfecta
Animación de Batalla de Personajes (CBA) (#1269, #2484)
Otra característica del sistema de batalla de RPG Maker 2003 es la Animación de Batalla de Personajes o CBA. Con la CBA los actores pueden blandir espadas y lanzar lanzas o boomerangs. Adicionalmente se puede configurar una Afterimage (los cuadros de movimiento anteriores se muestran con mayor transparencia) y se puede alterar el comportamiento de ataque de las armas. El CBA es totalmente compatible, excepto para los siguientes ataques a distancia: Boomerang (esto es sólo visual) y Ataque en Secuencia (esto significa que tales ataques infligen menos daño). Pero estamos contentos de que uno de nuestros problemas más antiguos esté casi resuelto.
Afterimage go brrrrrr
- Dragon Ball Z: The Legend of Z: Wrong pose displayed for CBA skill animations (#1708)
- Enemies in OFF did not charge at the heroes (#1277)
- Afterimage not displayed in Final Fantasy: Blackmoon Prophecy (#2538)
- This affected many, many more games but we did not track bugs for all of them
Algoritmos
En resumen: Los algoritmos son ahora perfectos o casi perfectos.
- El algoritmo RPG_RT Autobattle es ahora soportado correctamente (#1586). Anteriormente usábamos un algoritmo muy ingenuo: Atacar a un monstruo elegido al azar con un ataque normal, pero esto rompía muchos sistemas de batalla con guión que dependían del comportamiento de Autobattle.
- El cálculo de la Agilidad para el orden de ataque en RPG Maker 2003 era incorrecto (Reportado para King of Grayscale, #1820)
- El algoritmo de la IA enemiga es ahora compatible con RPG_RT. Los juegos que dependen en gran medida de un determinado comportamiento de la IA ahora funcionan correctamente. (#1831)
- Cálculo correcto de la posibilidad de escapar (#2150)
- Cálculo correcto de la varianza del daño (#2157)
- Cálculo correcto de la tasa de impacto (#2320)
- Soporte para el comando de fila y las implicaciones en el daño basado en la fila del batallador (#2321, #2322)
- Soporte para modificadores de atributos negativos (#2329)
- Arreglos para las habilidades que hacen Absorción cuando el objetivo es asesinado por ella (#2351)
- Los enemigos ocultos ya no son objetivo de las habilidades que apuntan a todo el grupo (#2373)
- Cuando tanto el aliado como el enemigo tienen la misma agilidad, el enemigo obtiene el turno primero (#2382)
Guardado de partidas
En algunos casos, el reproductor no cargaba correctamente los datos de las imágenes y los spritesheets. (Reportado para La Leyenda Heroen, #2262)
Se parece bastante
Al guardar y cargar en LunarLux el reproductor ya no era visible. (#2419)
Al guardar en el mapa del Tablero Shogi en Yume2kki (ゆめ2っき) y cargar este guardado en RPG_RT, los eventos se veían con fallos. (#2207) Ten en cuenta que guardar aquí sólo es posible a través de la funcionalidad de guardado de depuración de EasyRPG Player.
La transparencia del héroe no se guardaba o cargaba correctamente. (#2224)
Para mejorar la compatibilidad de los juegos guardados, el ID de la escena se guarda ahora como parte del juego guardado. Este valor no lo utiliza RPG_RT o el reproductor cuando se carga. (#2298)
Escenas y ventanas
Los datos del juego no se restablecían correctamente al volver a la pantalla de título con F12. (#1524)
Muchos ajustes visuales menores en las escenas, como el menú, para asegurar que el renderizado sea perfecto en cuanto a píxeles. (#1617, #2216) También se revisaron y ajustaron todas las compensaciones de texto (#2264).
La sincronización de las ventanas y los mensajes se mejoró aún más para que coincida con RPG_RT. Es demasiado complejo para explicarlo bien en una entrada del blog, vea el pull request enlazado para más información. (#2026)
Hemos dado los primeros pasos para añadir una escena de configuración, pero todavía no está en un estado óptimo para el usuario. (#2108, #2112)
La detección de codificación (adivinar cómo están codificados los nombres de archivo de un determinado juego para asegurar que se inicie correctamente) fue mejorada (#2641) e incluso soporta ahora juegos problemáticos como la traducción al inglés de .flow (#2554). Sigue utilizando nombres de archivos japoneses pero contiene cadenas en inglés, por lo que el juego se detectaba incorrectamente como europeo occidental y los activos no se cargaban.
En la escena de depuración ahora es posible invocar eventos de mapa y batalla (#2210) y se puede cambiar el nivel de los actores (#2645). Felices trampas 😉
RPG_RT soporta flechas animadas hacia abajo y hacia arriba en las ventanas para indicar que la ventana puede desplazarse. La escena de depuración tiene ahora flechas de izquierda y derecha para indicar que las páginas se pueden desplazar de esta manera. (#2248)
Cuando los estados estaban por encima de 1000 (debido al equipamiento) el renderizado era incorrecto: Deben ser fijados a 999. Esto también afectaba a la escena de la tienda: Un equipo que daba como resultado 1050 se consideraba igual a un equipo que daba como resultado 1040. (#2453)
El gráfico del sistema de la escena de carga ya no se sustituye justo después de cargar una partida guardada. (#2456)
Ya no es posible comprar más objetos de los que caben en el inventario. (#2464)
La ExFont (fuente de símbolos) de Grimm’s Hollow se representaba incorrectamente. (#2512)
Los símbolos ahora son son mucho más bonitos
Cuando el equipo no es cambiable (fijo) la escena de equipo ya no muestra el otro equipo disponible en el inventario. (#2576)
Al equipar un accesorio en Monster World RPG todo lo demás quedaba sin equipar. Incluso para las no armas se consideraba la bandera de dos manos. Esto ya está arreglado. (#2603)
La transparencia de la ventana de mensajes no era perfecta. (#2626)
Ahora se soporta el daño negativo del terreno. (#2632)
La velocidad de desplazamiento del cursor del menú está ahora más cerca de RPG_RT. (#2634)
La ventana hace ahora un desplazamiento suave cuando el cursor desplaza el texto en una ventana. (#2659)
En el modo de juego de prueba, la tecla de acceso directo Abortar evento (F10) es ahora compatible. Esta tecla de acceso directo cancela el evento actual y las rutas de movimiento activas. Muy útil si el juego se cuelga debido a un error. La tecla de acceso directo a la pantalla se ha movido a F7. (#2660)
Pictures
Al lanzar una batalla a través de la escena de depuración no se mostraban las imágenes ni los efectos meteorológicos. (#2120)
Cuando se cancela una rotación la rotación continuará hasta alcanzar la posición normal. Reportado para Saint Seiya -Il Mito- (#2198)
Yume2kki (ゆめ2っき) es conocido por abusar del comportamiento específico de la implementación de RPG_RT que no se expone a través del editor. Esta vez han utilizado Show Picture para mostrar una imagen con un nombre de archivo vacío. En este caso RPG_RT conservará la imagen antigua pero sobrescribirá todas las opciones con las nuevas. Esto se utilizó para lograr un efecto de transparencia. No nos preguntes por qué no usaron Mover Imagen para esto como hace la gente normal (#2523)
Android
En Android 11 acceder a los juegos es posible de nuevo. Aunque a partir de noviembre de 2021 Google exige el uso de una nueva API para el acceso a archivos (Storage Access Framework, SAF). Para enviar cualquier otra actualización a la Play Store debemos reescribir nuestra aplicación primero. Muy molesto… (#2415)
EasyRPG Player ya está disponible en f-droid.org. Una tienda que proporciona sólo software de código abierto. Ten en cuenta que las actualizaciones en f-droid no están bajo nuestro control, lo que significa que la versión 0.7 será lanzada más tarde. (#1222)
La biblioteca de soporte fue actualizada a AndroidX. Esto resuelve algunos problemas visuales en el navegador del juego en las nuevas versiones de Android. (#2018)
Cuando se agrupa un juego con EasyRPG Player (el llamado modo autónomo) el audio se deshabilitaba después de ejecutar el juego una vez y no había manera de volver a habilitarlo. Tenga en cuenta que el modo independiente es experimental, por favor, espere a un anuncio oficial. (#2524)
Emscripten (EasyRPG Web Player)
El archivo de shell HTML fue actualizado a la última versión. (#804)
El formato de index.json fue actualizado para ser más compacto y soporta la normalización de los nombres de archivos. Dependiendo del sistema operativo, un archivo puede parecer que tiene los mismos caracteres pero utiliza una secuencia de bytes diferente. La normalización resuelve este problema. (#1729)
El reproductor web ya no se congela al cambiar de pestaña. Esto se ha solucionado actualizando SDL2 a la última versión. (#2228)
Se agregó la entrada táctil básica (sólo confirmar y cancelar) (#2426).
Se deshabilitó la minificación del archivo shell porque el resultado era un HTML inválido. (#2446)
El carácter + está ahora codificado en la URL cuando aparece en los nombres de archivo. Cuando no está codificado, + se interpreta como un espacio y los archivos no se descargan. (#2514)
La versión inglesa de RPG Maker 2003, Maniac Patch y DynRPG son ahora detectados automáticamente por el reproductor web. Esto significa que las hojas de sprites finalmente funcionan sin pasar un parámetro del motor. El reproductor web tiene dificultades con las detecciones que implican el escaneo del directorio del juego porque todos los archivos se descargan bajo demanda. (#2520, #2526)
libretro / RetroArch core
Como un servicio para la comunidad ofrecemos ahora nuestros propios núcleos libretro para Windows y macOS. Esto incluye builds continuos que no estarán disponibles en el buildbot de libretro, lo que significa que podrás beneficiarte de los últimos desarrollos (bajo tu propio riesgo). Esto no reemplazará el buildbot de libretro, usted todavía será capaz de descargar 0.7.0 a través del actualizador del núcleo en todas las plataformas soportadas.
Algunas opciones del núcleo no se cargaban porque la clave de configuración contenía espacios. (#2493)
Se ha añadido la terminación .easyrpg a las extensiones de archivo soportadas. Se puede poner un archivo NOMBRE_DE_JUEGO.easyrpg en el directorio del juego y tener configuradas las opciones individuales del juego de esta manera. El uso de RPG_RT.ldb no funcionaba en este caso porque RetroArch asigna las configuraciones a los nombres de archivo y eran los mismos para todos los juegos.
Consolas
Nintendo Switch
Desgraciadamente, Nintendo ha estropeado el controlador del sistema de archivos haciendo que todo lo que contenga, por ejemplo, diéresis o japonés, no pueda cargarse. No podemos solucionar esto, pero sí solucionarlo: Simplemente pon el juego en un archivo ZIP y lanza el ZIP a través de nuestro navegador de juegos (ver Soporte para juegos desde archivos ZIP) (#1747, #2205)
Ahora se admite la versión más reciente de libnx (#2454, #2566)
Nintendo 3DS
Cuando no necesites el teclado numérico ahora puedes apagar la pantalla inferior tocando un botón. (#2617)
La nueva pantalla inferior en la 3DS
PlayStation Vita
VSync está ahora activado por defecto. (#2507)
El teclado numérico en pantalla de nuestro port de Switch ha sido portado a la PS Vita. Ahora puedes jugar correctamente a Yume Nikki y otros juegos. (#2635)
Otros
Por fin una solución para los portátiles sin teclado numérico: Tanto el teclado numérico como las teclas numéricas normales funcionan ahora en la entrada de teclas. Adicionalmente +, -, *, y / están ahora también mapeados a teclas adicionales. Aunque no conocemos ningún juego que las utilice. (#1121, #2567)
Algunos juegos usan límites incrementados para hp, mp, atk, def, exp… Estos juegos aún no son soportados pero hemos añadido trozos personalizados a la base de datos para soportarlos en el futuro. (#1375)
El formato de grabación utilizado para –record-input fue mejorado significativamente. La reproducción del formato antiguo sigue siendo soportada. (#2301)
La tecla para el avance rápido de x10 se ha cambiado de CTRL-+ a G. (#2544)
Las licencias de nuestras fuentes se mencionan ahora en el archivo Léame (#2580).
La salida del terminal es ahora de color. (#2608)
Incluso los desarrolladores aman los colorines 🙂
Se ha añadido una nueva opción de línea de comandos –rtp-path para especificar una ruta RTP adicional (#2448)
Hemos añadido soporte para ciertas configuraciones nuevas de la base de datos que podrían ser útiles en su próximo juego. Desgraciadamente, es difícil establecerlos hasta que nuestro editor esté terminado. Si tienes curiosidad por saber cuáles son, haz clic en los enlaces de los temas. (liblcf #421, #2564)
Para desarrolladores
No olvides actualizar liblcf a 0.7.
Esta es la última versión que soporta C++14. Justo después de esta versión nos moveremos a C++17. El soporte del compilador es lo suficientemente bueno por ahora.
libfmt es una nueva dependencia requerida que hace mucho más fácil para nosotros cumplir con todas nuestras necesidades de formato de texto. Todas las versiones antiguas hasta la 5.0 funcionarán. (#2181)
SDL2_mixer fue eliminado y ya no es soportado porque la API era demasiado limitada para nuestros requerimientos de audio.
libxmp (una dependencia recomendada para la reproducción de archivos MOD/Tracker) requiere ahora 4.5.0 o más reciente porque las versiones anteriores no soportaban la provisión de funciones de callback IO personalizadas. (#2595)
Para la reproducción MIDI nativa en Linux (a través de un demonio MIDI) se requiere la dependencia recomendada ALSA/libasound.
Para la reproducción de fuentes de sonido personalizadas (SF2) libfluidsynth es una nueva dependencia recomendada.
Desaparición de los Makefiles: Excepto para 3DS, Wii y Switch, ahora construimos todas las plataformas soportadas usando autotools o CMake. Dejaremos de construir a través de Makefiles personalizados con 0.7.1. Pedimos a todos los mantenedores que usan Makefiles personalizados que migren a un sistema de construcción soportado. En este momento todavía hay algunos Makefiles, por ejemplo, para Amiga o Dingoo en el repositorio que no son mantenidos por nosotros: Estos serán eliminados antes de la versión 0.7.1.
Construir para Android es siempre un poco especial debido a Gradle. En lugar de usar el obsoleto ndk-build, Gradle invoca ahora a CMake haciendo la construcción mucho más fácil. (#621, #2475)
Más mejoras en CMake:
- La versión mínima soportada de CMake fue incrementada a 3.10 (#2532)
- Las pruebas unitarias compilan ahora cuando se dirigen a Emscripten o macOS (#2303)
- Los scripts de finalización de bash no se instalaban en Linux cuando se utilizaba CMake. (#2396)
- Múltiples correcciones para CMake para asegurar que el núcleo de libretro se construya en todas las plataformas. (#2400)
EasyRPG Player ahora está disponible en la tienda snap. Este paquete no lo mantenemos nosotros. Utilízalo bajo tu propio riesgo. (#2413)
liblcf (analizador de archivos de RPG Maker)
El análisis de los archivos LCF es ahora mucho más rápido y ocupa menos memoria. Esto significa que los juegos se inician más rápido y en los dispositivos con memoria limitada (dispositivos portátiles, teléfonos inteligentes antiguos, etc.) se lanzan más juegos.
Juego | Tamaño LDB | Uso de RAM en 0.6.2.3 | Uso de RAM optimizado |
HH3 | 16 MB | 135.7 MB | 68.5 MB |
Hero’s Realm | 27 MB | 301.6 MB | 143.3 MB |
Violated Heroine | 11 MB | 75.9 MB | 40.6 MB |
Yume 2kki | 1.4 MB | 8.0 MB | 4.8 MB |
El tamaño de la base de datos es sólo para información y no siempre se correlaciona con el uso de la memoria. La base de datos es más pequeña porque todos los datos se almacenan de una manera compacta que no es eficiente para leer cuando se ejecuta el juego. La mayor cantidad de memoria la consumen las batallas y los eventos comunes. Como puedes ver, pudimos (casi) reducir el uso de memoria a la mitad. (#379, #390) Se planean más optimizaciones para reducir el uso de memoria aún más.
Las nuevas características en C++17 y C++20 son std::string_view y std::span. std::string_view reduce la cantidad de copias requeridas cuando se usa una cadena y span hace lo mismo para vectores y otros tipos de contenedores. Hemos implementado estas clases para nuestra versión del compilador (C++14) y esto da agradables y pequeños aumentos de velocidad en todas partes. (#384)
lcf2xml, una herramienta para convertir archivos binarios LCF a XML y viceversa fue movida de nuestro repositorio de Herramientas al repositorio de liblcf. (#302)
Ahora todos los datos pueden ser impresos en la terminal para propósitos de depuración. (#368)
Cuando se modifica el código de liblcf, la configuración de los espacios en blanco (tabulaciones frente a espacios) es ahora correcta porque hemos añadido un archivo .editorconfig. (#376)
Se añadieron más comandos y trozos de eventos de Maniac Patch. Esto es sólo para la documentación o el uso posterior en Player y no mejora la compatibilidad. (#381, #417, #432). Tenga en cuenta que la forma en que guardamos el volteo y el modo de mezcla de las imágenes es incompatible con Maniac Patch porque el parche recicló un chunk no relacionado (la transparencia del fondo) para esto. Hemos decidido implementar esto de una manera más limpia. (#434)
Se ha añadido una nueva función llamada ForEachString que permite enumerar todas las cadenas de la base de datos. Esto es utilizado por la función de traducción. (#388)
La base de datos y el árbol de mapas ya no se almacenan como datos globales. Esto hace posible ahora cargar múltiples bases de datos y árboles de mapas a la vez - útil para el editor. (#405)
Se han añadido los trozos que faltaban para la Animación de Batalla de Personajes (CBA). (#406, #424)
Para desarrolladores
Se ha reestructurado todo el repositorio de liblcf y se ha movido todo a espacios de nombres. Por ejemplo, en lugar de Actor la clase se llama ahora lcf::rpg::Actor. Esto también mejora el informe de errores porque se puede ver directamente de dónde se produjo el error. (#342, #361)
Las extensiones del compilador GNU están ahora habilitadas si son soportadas. Estas son requeridas por ciertos ports como AmigaOS. (#366)
La construcción con gcc5 funciona de nuevo. (#374)
Expat 2.2.10 y más recientes ahora son soportados por el sistema de construcción CMake (#385)
Las versiones soportadas de CMake son ahora 3.10 y más recientes (#422)
El uso de liblcf desde CMake ya no requiere pkg-config. (#431)