Saltar al contenido principal

Headless y CI

La migración puede ejecutarse sin el panel: desde la consola del editor, desde un commandlet o desde un script.

Comando de consola​

Ueapm.Migrate [-dry] [-steps=a,b | -steps=a+b] [-target=<ruta al .uproject>]
ArgumentoSignificado
-drydry run: solo Analizar y Verificar, no se modifica nada
-steps=los pasos a ejecutar, por id: project, assets, input, cascade, cpp, rendering, physics, blueprints. Sepáralos con , o +
-target=ejecuta los pasos de archivos (project, cpp) sobre otro proyecto

Sin -steps se ejecuta la selección por defecto (todos los pasos excepto el opcional input). Los pasos siempre se ejecutan en el orden fijo, sea cual sea el orden en que los indiques.

El + existe porque -ExecCmds divide su argumento por las comas: dentro de -ExecCmds, escribe -steps=project+cpp.

Commandlet​

& "C:\Program Files\Epic Games\UE_5.8\Engine\Binaries\Win64\UnrealEditor-Cmd.exe" `
"D:\MiJuego\MiJuego.uproject" -run=UeapmMigrate [-dry] [-steps=a,b] [-target=...]
Código de salidaSignificado
0terminado, sin pendientes
1terminado, con pendientes en el informe
2reinicio necesario: vuelve a ejecutar
3error fatal (por ejemplo una tabla de reglas que no se pudo cargar)

:::warning Cascade necesita la interfaz del editor El conversor de Cascade del motor utiliza vistas de editor de Niagara, que el commandlet no tiene. Todos los demás pasos se ejecutan en el commandlet; para el paso cascade, ejecuta el editor completo de forma desatendida:

& "C:\Program Files\Epic Games\UE_5.8\Engine\Binaries\Win64\UnrealEditor.exe" "D:\MiJuego\MiJuego.uproject" `
-ExecCmds="Ueapm.Migrate,QUIT_EDITOR" -unattended -nosplash

:::

Tools/migrate_headless.ps1​

El plugin incluye un wrapper de PowerShell que ejecuta cualquiera de las dos formas, imprime las líneas de resultado de UEAPM y devuelve el código de salida.

ParámetroSignificado
-Projectel proyecto a abrir (obligatorio)
-Targetotro proyecto sobre el que ejecutar los pasos de archivos
-Stepsids de pasos separados por comas (convertidos a + para el editor)
-Drydry run
-Editorusa el editor completo con -ExecCmds en lugar del commandlet (incluye Cascade)
-EngineRootcarpeta del motor, por defecto C:\Program Files\Epic Games\UE_5.8
-Logarchivo de log, por defecto %TEMP%\ueapm_headless.log
# Pasos de archivos en un proyecto C++ que aún no compila en 5.8, desde cualquier proyecto 5.8 con el plugin
powershell -File Tools\migrate_headless.ps1 -Project D:\Host\Host.uproject -Target D:\MiJuego\MiJuego.uproject -Steps project,cpp

# Todos los pasos por defecto dentro del proyecto, editor completo (incluye la conversión de Cascade)
powershell -File Tools\migrate_headless.ps1 -Project D:\MiJuego\MiJuego.uproject -Editor

# Dry run en el commandlet
powershell -File Tools\migrate_headless.ps1 -Project D:\MiJuego\MiJuego.uproject -Dry

En modo commandlet el script termina con exit code N (0 done, 1 open items, 2 restart and run again, 3 fatal) y sale con el mismo código, así que un job de CI puede fallar cuando hay pendientes.

Una migración C++ completa y desatendida​

  1. Pasos de archivos desde un proyecto host: migrate_headless.ps1 -Project <Host> -Target <Juego> -Steps project,cpp.
  2. Build con el comando impreso en el informe.
  3. Copia el plugin en <Juego>/Plugins/ y compila de nuevo.
  4. Todos los pasos en el editor: migrate_headless.ps1 -Project <Juego> -Editor.
  5. Build final.

El caso práctico de Action RPG sigue exactamente esta secuencia.