Algunos consejos que ayudarían a desarrollar mods S:AD más complejos.
Usar control de versiones
El sistema de control de versiones permite realizar un seguimiento de todos los cambios realizados en su trabajo, permite volver a versiones estables anteriores en caso de problemas y, lo que es más importante, hace posible que varios desarrolladores trabajen en el mismo proyecto con facilidad.
Una solución de control de versiones muy popular es GitHub. Proporciona alojamiento para proyectos en línea, lo que permite que varios modders desarrollen un solo mod complejo.
Otra solución es TortoiseSVN, un envoltorio de subversión de GUI, que podría usarse para alojar el proyecto en su propia computadora o en su servidor. Es muy fácil hacerlo, hay documentación disponible en línea.
Por supuesto, ambas soluciones propuestas son gratuitas (o tienen una versión gratuita).
Una vez que tenga el control de versiones funcionando, puede realizar un seguimiento de todos los cambios realizados en su mod. Por ejemplo, justo antes de cargar la nueva versión de su mod, después de guardar el mod, todos los cambios podrían verificarse. Este es un paso obligatorio, ya que muy a menudo hay cosas que se estropean en el último momento. Se informa que el propio editor de mods tiene errores.
Después de cargarlos en Steam, los cambios locales también deben "comprometerse" en el repositorio de control de versiones.
Las carpetas de mod que deben estar bajo control de versiones se encuentran en:
%appdata%\Stranded - Alien Dawn\Mods
Monitoreo de errores en tiempo de ejecución
El registro de salida del juego, donde se pueden encontrar los posibles errores, se guarda en un archivo que se puede encontrar en:
%appdata%\Stranded - Alien Dawn\logs
El problema es que el juego tiene que terminar para vaciar el registro del juego generado. Esto no es práctico para la depuración, ya que es difícil relacionar los errores en el registro con eventos específicos del juego. Hay una forma sencilla de monitorear el registro del juego en tiempo real fuera del mapa de modding. Todo lo que necesita es el IDE de Visual Studio. Cuando se adjunta al proceso del juego desde el menú Depurar - Adjuntar al proceso (o el acceso directo Ctrl-Alt-P), todo el registro del juego, incluidos los errores, será visible en tiempo real en la ventana "Salida". El proceso del juego para buscar al adjuntar debe llamarse "StrandedSteam.exe". Para aquellos de ustedes que no están familiarizados con Visual Studio, hay una versión gratuita llamada "Comunidad" que se puede descargar desde el sitio de visualstudio.
Código de modo de escritura
El motor de juego S:AD usa Lua como lenguaje de lógica de juego, aunque no es la versión estándar, sino una modificada: hay muchas funcionalidades adicionales, modificadas o eliminadas en las bibliotecas estándar. El "elemento" del código de modificación también está en Lua, aunque la versión mod no usa el original, sino un entorno limitado, donde ciertas funciones están en la lista negra. El lenguaje Lua en sí es muy fácil, cualquiera que esté familiarizado con JavaScript o Python podría usarlo. sin problema. Hay muchos IDE que se pueden usar para editar archivos Lua. Los muy populares son Visual Studio Code y Sublime, ambos gratuitos. Tenga en cuenta que Steam podría considerar que el juego aún se está ejecutando después de cerrarlo, si el IDE de Lua se ha iniciado desde el entorno de modificación. Si ese es el caso, simplemente cierre el IDE.
Usar la consola del juego
Por ejemplo, cuando se selecciona un objeto, una variable global llamada SelectedObj tiene el objeto seleccionado como valor. Al escribir eso en la consola, se imprimiría el contenido del objeto, que podría ser un texto muy grande. Por lo tanto, es bueno buscar información específica dentro del objeto. Si se escribe un punto (.) después de SelectedObj (ya que así es como se accede a los miembros en Lua), al presionar la tecla TAB se mostrará el contenido del objeto en una lista desde la que se puede seleccionar.
Otra variable global importante que podría ayudar a la depuración es UIPlayer. Este es un espacio de nombres de muchos valores importantes del juego. Por ejemplo, UIPlayer.labels.Buildings contiene una lista con todos los edificios colocados, mientras que UIPlayer.labels.Survivors es una lista con todos los sobrevivientes generados. Sin embargo, escribirlos en la consola registraría una gran cantidad de texto, lo que no es muy práctico. Hay una función de ayuda llamada ValueToStr, que podría usarse para mostrar más texto legible por humanos. Ejemplos: ValueToStr(SelectedObj), ValueToStr(UIPlayer.labels).
La consola también admite la función de autocompletar a través de la tecla TAB. De esta manera, no hay necesidad de saber el nombre exacto de una variable global dada o un miembro del objeto.
Para borrar la pantalla del texto impreso, use la tecla F9.
Trabajando con datos del juego
De todos modos, es útil tener una forma de inspeccionar los datos del juego de alguna manera. Una forma es usar la consola de juegos para verificar el contenido de los Presets de var globales. Contiene casi todos los datos del juego, agrupados por clase preestablecida. Como se describió en la sección anterior, al escribir el punto (.) después de cada nombre en la consola, se mostraría una lista con el contenido del contexto actual. Así, nivel a nivel, se podría analizar todo el contenido.
Pero el uso de la consola tiene sus limitaciones, ya que el contenido de los datos es demasiado complejo para ser inspeccionado como una gran parte del texto. Más bien se requiere entender qué clases preestablecidas están registradas en el juego, para poder invocar una herramienta explícita para cada una de ellas. Hay un comando de consola que acepta la clase preestablecida que abre una interfaz de datos de interfaz de usuario:
OpenPresetEditor("<PresetClass>")
dónde tiene que ser reemplazado por la clase específica a inspeccionar. Por ejemplo, escribir en la consola OpenPresetEditor ("FXPreset") abriría el editor de efectos, que contiene uno de los elementos de datos más arcanos: los efectos visuales y de sonido.
By injto4ka