¿Qué es esto?
Es un puerto de un antiguo motor VB6, escrito puramente en C ++. Reproduce un motor antiguo por completo (excepto un editor), incluye muchos de sus errores lógicos (errores bloqueados donde se encontraron y luego se corrigieron).
¿Por qué lo hiciste?
¿Por qué? Tengo varios propósitos por los que lo hice:
- Es un modelo de vida muy conveniente para la investigación que quiero usar en el desarrollo del motor PGE.
- Para que funcione sin que sea necesario utilizar Wine en plataformas que no sean Windows y permitir que se ejecute en plataformas distintas de x86.
- Poder optimizarlo para que use menos recursos de hardware que la versión original de un juego basada en VB6.
Tiene PGE Engine, ¿por qué ha pasado más de un mes para crear esta cosa?
Lo necesito para el desarrollo de PGE Engine directamente, es mucho más fácil de piratear e inspeccionar en lugar de lidiar con el antiguo e inconveniente entorno VB6.
¿Cuál es el futuro de PGE Engine ya que TheXTech existe ahora?
Continuaré con el desarrollo de PGE Engine ya que todavía tengo que pasar el segundo objetivo del PGE Project.
Desde su fundación, el Proyecto PGE tenía dos objetivos: 1) salvar SMBX; 2) ofrecer un conjunto de herramientas flexible para nuevos juegos de plataformas. La apertura de las fuentes SMBX y la introducción de TheXTech ha resuelto el primer objetivo: se ha guardado SMBX y ahora es un software multiplataforma gratuito y de código abierto. El motor PGE se utilizará para pasar el segundo gol, proporcionando un conjunto de herramientas para nuevos juegos. A diferencia de TheXTech, PGE Engine ofrece una flexibilidad total que permite a cualquiera construir algo nuevo desde cero sin heredar una base de juego antigua. Sin embargo, TheXTech es necesario para PGE Engine como modelo de investigación funcional para desarrollar un nuevo motor. Será similar a los puertos GZDoom y Chocolate Doom del juego Doom: GZDoom es un motor potente y funcional, la mejor elección de modders; a Chocolate Doom es una adaptación precisa del juego original a una plataforma moderna con el propósito de representar un juego original que incluye incluso errores. El motor PGE pretende ser como un GZDoom, mientras que TheXTech es un análogo de Chocolate Doom para representar un juego original en las plataformas modernas.
¿Puede LunaLua trabajar en esto?
No, LunaLua no funcionará: este proyecto es binario-incompatible con LunaLua. Esto también significa que el contenido SMBX2 es incompatible.
¿Como usar esto?
Aquí hay muchas formas de jugar con él:
- hay algunos paquetes listos para usar, simplemente tómelos y utilícelos como lo hizo con SMBX.
- [usuarios de macOS, omita esto]: use de la misma manera que un juego original: coloque un archivo ejecutable en la carpeta raíz del juego con un "thextech.ini" que contenga el siguiente texto:
, music.ini, sounds.ini y una carpeta adicional "graphics/ui". Una nota importante: todos los gráficos predeterminados deben convertirse a PNG, use la herramienta GIFs2PNG de PGE Project en su carpeta "gráficos" con un interruptor "-d". No use el interruptor "-r" para mantener los GIF originales junto con los PNG recién creados si planea continuar usando SMBX original escrito en VB6.
- utilícelo para el modo de depuración: en su directorio de inicio, cree la carpeta ".PGE_Project/thextech" (en macOS, la "~/Library/Application Support/PGE Project/thextech") donde debe colocar un conjunto completo de recursos del juego y cosas del mundo, esta carpeta funcionará como la raíz del juego en el juego original. Este modo le permite ejecutar un archivo ejecutable desde cualquier ubicación de carpeta de su computadora y usar la misma ubicación de recursos para todas las compilaciones (excepto que estos están marcados como portátiles por un archivo INI).
¿Cómo agregar episodios personalizados para la versión de macOS?
Si tiene una compilación integrada de TheXTech, todos los recursos predeterminados están dentro de su .app: " Content/Resources/assets/". Puedes modificar el contenido, ¡pero no es recomendable! En cambio, después de la primera ejecución de un juego, en su directorio de inicio aparecerá el siguiente directorio:
En este directorio, encontrará una carpeta vacía de "batalla" y "mundos" para poner sus cosas personalizadas. En los registros de ruta ~/Library/Application Support/PGE Project/thextech", se almacenarán las configuraciones y los juegos guardados.
Si desea reemplazar los activos predeterminados con los suyos, puede modificar el contenido del paquete de aplicaciones o compilar una nueva compilación con los argumentos de CMake necesarios que necesitaban para empaquetar la raíz y el icono de sus activos personalizados en el nuevo paquete o crear los activos. -sin construir (si no da argumentos, resultará la compilación sin activos). Por lo tanto, debes poner el contenido completo de la raíz del juego en la carpeta ~/Library/Application Support/PGE Project/thextech", incluir recursos predeterminados (gráficos, música, sonidos, niveles de introducción y salida, carpetas predeterminadas de batalla y mundos ).
¿Qué es diferente con esto en comparación con la versión VB6 original?
- En primer lugar, está escrito en C ++, mientras que el original (como ya sabemos) está escrito en VB6.
- No tiene editor. En cambio, en un futuro cercano tendrá una integración profunda con PGE Editor que permitirá usarlo con la misma funcionalidad que en el editor original (la funcionalidad de "mano mágica" se mantuvo para permitir la edición en tiempo real del nivel durante la prueba, es necesario utilizar la comunicación IPC con PGE Editor para tener la capacidad de utilizarlo mejor).
- Soporte completo de UTF-8 en rutas de nombre de archivo y datos de texto internos (el juego original tenía el único soporte ANSI de 8 bits).
- Para gráficos y control, usa una biblioteca SDL2, mientras que el juego original ha usado llamadas WinAPI y biblioteca GDI.
- Utiliza PGE-FL que tiene un mejor soporte de formatos de archivo.
- Un soporte para mapas del mundo WLDX permite líneas de crédito ilimitadas y música personalizada sin que sea necesario usar un music.ini para reemplazar música.
- Algunas características exclusivas de LVLX ahora funcionan: envoltura de sección vertical, deformaciones bidireccionales, mensaje personalizado de "estrella necesaria", evento de entrada de deformación, capacidad para deshabilitar la impresión de estrellas en episodios HUB para puertas específicas, capacidad para deshabilitar la visualización entre escenas al pasar a otro nivel. una deformación.
- Soporte integrado para music.ini y sounds.ini de episodios y niveles para anular la música y los recursos de sonido predeterminados.
- Los mapas del mundo ahora admiten un directorio personalizado para almacenar recursos específicos como tiles/scenes/paths/levels y ya no enviar spam a la carpeta raíz del episodio con recursos del mapa del mundo.
- El formato de configuración predeterminado es INI, el antiguo formato config.dat ya no es compatible, principalmente debido a valores de código de clave incompatibles (SDL Scancode vs Virtual Keys enum de la API de Windows).
- El juego se guarda ahora usando el formato SAVX en lugar de un SAV clásico. Sin embargo, si ya tiene un guardado de juegos antiguo, aún puede reanudar su juego utilizando un nuevo motor ahora (el próximo intento de guardado de juegos dará como resultado un archivo SAVX, el guardado de juegos antiguo en formato SAV se mantendrá intacto).
- Soporte PNG incorporado para gráficos personalizados y predeterminados. Sin embargo, los GIF enmascarados todavía son compatibles por compatibilidad con versiones anteriores, sin realizar una conversión automática inesperada como lo hace SMBX-38A.
- ¡Los puntos de control ahora tienen multipuntos! ¡Puedes usarlos en tus niveles varias veces sin límites!
- Utiliza un algoritmo de descompresión diferida para acelerar la carga de un juego y reducir el uso de memoria.
- Para música y SFX, la biblioteca MixerX se utiliza para dar soporte a una amplia cantidad de formatos de sonido y música.
- No incorpora ningún gráfico: NO hay gráficos realmente codificados, ¡ahora todo está representado por gráficos externos!
- Se han ampliado algunos límites internos.
- Grabador GIF integrado con la tecla F11 (F10 en macOS, F11 está reservado por la interfaz de usuario del sistema para una acción de "mostrar escritorio")
¿Cómo construirlo?
Puede leer una guía sobre cómo construir este proyecto a partir de un código fuente que puede encontrar aquí:
https://github.com/Wohlstand/TheXTech/w ... g-the-game
Para construirlo, necesita tener lo siguiente:
- CMake
- Ninja opcionalmente (para acelerar el proceso de construcción)
- Compilador C/C++ compatible (GCC, Clang, MSVC aún no se han probado)
- Git (necesario para extraer submódulos y clonar el origen de las bibliotecas dependientes para construirlos en su lugar)
- Mercurial (necesario para clonar un repositorio oficial de SDL2 para construirlo en su lugar aquí)
- Opcionalmente: dependencias instaladas en todo el sistema: SDL2, libFreeImageLite (una implementación modificada de FreeImage), biblioteca de sonido MixerX, colección de bibliotecas AudioCodecs. Tenerlos instalados en un sistema aumenta la velocidad de construcción. Sin embargo, es posible construir todas estas dependencias en su lugar aquí con un costo adicional de tiempo de construcción agregado.