Sphinx 2.3 (UE4) headless & command flags

Hi there :wave:
We have installed the new Parrot Sphinx 2.3 Simulator including some UE4 worlds to test it with. I want to run the simulation headless in hopes to increase the real-time behavior of the simulation to test the efficiency of an external navigation contol system.

The documentation specifically mentions a way to turn off the HMI renderings by passing a flag named --RenderOffScreen. However, when I pass this argument to any of the UE4 Simulations, it seems to just be ignored and the simulation starts with everything still rendering.

I then tried out some other options, as well as some other parrot-ue4-xxxx simulations and It wouldn’t change anything, unfortunately. For example, I tried to pass the -help and -list-levels flags to both parrot-ue4-empty and parrot-ue4-forest (since it is mentioned in the configuration docs) but the simulations all just start as if nothing happend and my command line input seems to be ignored.

The only thing that worked is sphinx --help but since this does not take care of the rendering it is not what I need. Below is a list of commands (all flags with single and double dashes respectively) I have tried out to no avail.

  • parrot-ue4-empty -help and parrot-ue4-empty --help
  • parrot-ue4-forest -help and parrot-ue4-forest --help
  • parrot-ue4-empty -RenderOffScreen and parrot-ue4-empty --RenderOffScreen
  • parrot-ue4-forest -RenderOffScreen and parrot-ue4-forest --RenderOffScreen
  • parrot-ue4-empty -list-levels and parrot-ue4-empty --list-levels
  • parrot-ue4-forest -list-levels and parrot-ue4-forest --list-levels

Is there something I am missing? Or do these features not work as expected? I would greatly appreciate any help on that matter.
Kind regards,

Roman :parrot:

Can you give us the output of this command?

cat $(which parrot-ue4-empty)

It will display the content of the script that starts the app. Any option you add should be appended to the final command line via the $@ symbol.

Can you share with us the log you have with this command?

parrot-ue4-empty -help -LogCmds=\"global log, logchecksubobjects none\"

It should contain the following line:

LogInit: Command Line:  -help -LogCmds="global log, logchecksubobjects none" -preferNvidia -nosound

for the first command:

> $ cat $(which parrot-ue4-empty)
#!/bin/sh
app_user="$(id --name --user)"
if [ "${app_user}" = "root" ]; then
	echo "Running $(basename $0) as root is forbidden."
	echo "Please run as non-root user."
	exit 1
fi
UE4_TRUE_SCRIPT_NAME=$(echo \"$0\" | xargs readlink -f)
UE4_PROJECT_ROOT=$(dirname "$UE4_TRUE_SCRIPT_NAME")
chmod +x "$UE4_PROJECT_ROOT/Empty/Binaries/Linux/UnrealApp"
"$UE4_PROJECT_ROOT/Empty/Binaries/Linux/UnrealApp" Empty "$@"  -preferNvidia -nosound 

The log of the second command is rather large, but the line mentioned above is found in it.
Since I am a new user I cannot upload the log file here, so I can share it per mail if it is required.

Also, something else I just found out it that it opens the UE4 Application first, immediately closes it and then outputs help or available levels. It’s something I only noticed at this point because as soon as I saw the application opnening I just immediately hit CTRL+C and it didn’t even get that far.
Moreover, I don’t know why the headless option was ignored before, but it seems to work after trying the logs :man_shrugging:
So at this point it works for me but I cannot provide any steps to reproduce the issues I have experienced before I opened this issue. However, I feel like it would be worth mentioning that the -help and -list-levels flag output a lot of unrelated stuff beforehand and it is easy to miss it.

For example, see the -list-levels output I get, and consider the fact that the application opens and closes alongside this whole procedure:

> $ parrot-ue4-empty -list-levels
chmod: changing permissions of '/opt/parrot-ue4-empty/Empty/Binaries/Linux/UnrealApp': Operation not permitted
Increasing per-process limit of core file size to infinity.
LogInit: LLM is enabled
LogInit: LLM CsvWriter: off TraceWriter: off
LogPakFile: Display: Found Pak file ../../../Empty/Content/Paks/Empty-LinuxNoEditor.pak attempting to mount.
LogPakFile: Display: Mounting pak file ../../../Empty/Content/Paks/Empty-LinuxNoEditor.pak.
LogPakFile: PakFile PrimaryIndexSize=28170
LogPakFile: PakFile PathHashIndexSize=54459
LogPakFile: PakFile FullDirectoryIndexSize=79561
LogPakFile: OnPakFileMounted2Time == 0.000005
LogPlatformFile: Using cached read wrapper
LogTaskGraph: Started task graph with 5 named threads and 14 total threads with 3 sets of task threads.
LogStats: Stats thread started at 0.120410
LogICUInternationalization: ICU TimeZone Detection - Raw Offset: +1:00, Platform Override: ''
LogPluginManager: Mounting plugin GzUE4Bridge
LogPluginManager: Mounting plugin PhysXVehicles
LogPluginManager: Mounting plugin UnrealImGui
LogPluginManager: Mounting plugin ActorMovementSystem
LogPluginManager: Mounting plugin Paper2D
LogPluginManager: Mounting plugin AISupport
LogPluginManager: Mounting plugin EnvironmentQueryEditor
LogPluginManager: Mounting plugin LightPropagationVolume
LogPluginManager: Mounting plugin AnimationSharing
LogPluginManager: Mounting plugin SignificanceManager
LogPluginManager: Mounting plugin PluginUtils
LogPluginManager: Mounting plugin PropertyAccessEditor
LogPluginManager: Mounting plugin UObjectPlugin
LogPluginManager: Mounting plugin AssetManagerEditor
LogPluginManager: Mounting plugin FacialAnimation
LogPluginManager: Mounting plugin GeometryMode
LogPluginManager: Mounting plugin SpeedTreeImporter
LogPluginManager: Mounting plugin DatasmithContent
LogPluginManager: Mounting plugin VariantManagerContent
LogPluginManager: Mounting plugin AlembicImporter
LogPluginManager: Mounting plugin GeometryCache
LogPluginManager: Mounting plugin AutomationUtils
LogPluginManager: Mounting plugin ScreenshotTools
LogPluginManager: Mounting plugin BackChannel
LogPluginManager: Mounting plugin ChaosCloth
LogPluginManager: Mounting plugin ChaosClothEditor
LogPluginManager: Mounting plugin ChaosEditor
LogPluginManager: Mounting plugin PlanarCut
LogPluginManager: Mounting plugin GeometryProcessing
LogPluginManager: Mounting plugin EditableMesh
LogPluginManager: Mounting plugin GeometryCollectionPlugin
LogPluginManager: Mounting plugin ProceduralMeshComponent
LogPluginManager: Mounting plugin ChaosSolverPlugin
LogPluginManager: Mounting plugin ChaosNiagara
LogPluginManager: Mounting plugin Niagara
LogPluginManager: Mounting plugin CharacterAI
LogPluginManager: Mounting plugin MotoSynth
LogPluginManager: Mounting plugin PlatformCrypto
LogPluginManager: Mounting plugin AvfMedia
LogPluginManager: Mounting plugin ImgMedia
LogPluginManager: Mounting plugin MediaCompositing
LogPluginManager: Mounting plugin WmfMedia
LogPluginManager: Mounting plugin MeshPainting
LogPluginManager: Mounting plugin TcpMessaging
LogPluginManager: Mounting plugin UdpMessaging
LogPluginManager: Mounting plugin ActorSequence
LogPluginManager: Mounting plugin LevelSequenceEditor
LogPluginManager: Mounting plugin MatineeToLevelSequence
LogPluginManager: Mounting plugin TemplateSequence
LogPluginManager: Mounting plugin OnlineSubsystem
LogPluginManager: Mounting plugin OnlineSubsystemNull
LogPluginManager: Mounting plugin OnlineSubsystemUtils
LogPluginManager: Mounting plugin LauncherChunkInstaller
LogPluginManager: Mounting plugin ActorLayerUtilities
LogPluginManager: Mounting plugin AndroidPermission
LogPluginManager: Mounting plugin AppleImageUtils
LogPluginManager: Mounting plugin ArchVisCharacter
LogPluginManager: Mounting plugin AssetTags
LogPluginManager: Mounting plugin AudioCapture
LogPluginManager: Mounting plugin CableComponent
LogPluginManager: Mounting plugin ChunkDownloader
LogPluginManager: Mounting plugin CustomMeshComponent
LogPluginManager: Mounting plugin ExampleDeviceProfileSelector
LogPluginManager: Mounting plugin GooglePAD
LogPluginManager: Mounting plugin LinuxDeviceProfileSelector
LogPluginManager: Mounting plugin LocationServicesBPLibrary
LogPluginManager: Mounting plugin MobilePatchingUtils
LogPluginManager: Mounting plugin RuntimePhysXCooking
LogPluginManager: Mounting plugin SoundFields
LogPluginManager: Mounting plugin SteamVR
LogPluginManager: Mounting plugin Synthesis
LogPluginManager: Mounting plugin AudioSynesthesia
LogPluginManager: Mounting plugin WebMMoviePlayer
LogPluginManager: Mounting plugin WebMMedia
Unable to read VR Path Registry from /home/roman/.config/openvr/openvrpaths.vrpath
Ensure condition failed: VendorId != EGpuVendorId::Unknown [File:/home/jenkins/workspace/unreal-editor-build/UnrealEngine/Engine/Source/Runtime/VulkanRHI/Private/VulkanDevice.cpp] [Line: 182] 

[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: === Handled ensure: ===
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: 
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: Ensure condition failed: VendorId != EGpuVendorId::Unknown [File:/home/jenkins/workspace/unreal-editor-build/UnrealEngine/Engine/Source/Runtime/VulkanRHI/Private/VulkanDevice.cpp] [Line: 182]
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: 
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: Stack: 
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: [Callstack] 0x0000000006d3b545 UnrealApp!FVulkanDevice::FVulkanDevice(FVulkanDynamicRHI*, VkPhysicalDevice_T*)()
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: [Callstack] 0x0000000006dac1b2 UnrealApp!FVulkanDynamicRHI::SelectAndInitDevice()()
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: [Callstack] 0x0000000006da8f75 UnrealApp!FVulkanDynamicRHI::InitInstance()()
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: [Callstack] 0x0000000006da8c57 UnrealApp!FVulkanDynamicRHI::Init()()
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: [Callstack] 0x0000000006ead3c4 UnrealApp!RHIInit(bool)()
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: [Callstack] 0x0000000003baeccb UnrealApp!FEngineLoop::PreInitPreStartupScreen(char16_t const*)()
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: [Callstack] 0x0000000003ba8dbc UnrealApp!GuardedMain(char16_t const*)()
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: [Callstack] 0x0000000008ec7d89 UnrealApp!CommonUnixMain(int, char**, int (*)(char16_t const*), void (*)())()
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: [Callstack] 0x00007f593d7af0b3 libc.so.6!__libc_start_main(+0xf2)
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: [Callstack] 0x0000000003b99029 UnrealApp!_start()
[2021.11.24-14.33.56:359][  0]LogOutputDevice: Error: 
[2021.11.24-14.33.58:833][  0]LogAMS: Display: Starting up ActorMovementSystem
Unable to read VR Path Registry from /home/roman/.config/openvr/openvrpaths.vrpath
Unable to read VR Path Registry from /home/roman/.config/openvr/openvrpaths.vrpath
[2021.11.24-14.33.58:988][  0]LogGzUE4: Display: Loaded settings from: /home/roman/.parrot-sphinx/gzue4/settings.json
[2021.11.24-14.33.59:007][  0]LogGzUE4: Display: Using QWERTY keyboard layout
[2021.11.24-14.33.59:010][  0]LogApp: Display: Loading default level: 'Empty'
== Available levels ==========================================
  - Empty
==============================================================

[2021.11.24-14.33.59:345][  0]LogAMS: Display: Shuting down ActorMovementSystem
[2021.11.24-14.33.59:345][  0]LogGzUE4: Error: Error while clearing message hub object

thanks to @ocrave, I really appreciate your help!