getnamo/NodeJs-Unreal

the latest master not working in UE4.24 (Add warnings for missing dependencies)

Opened this issue · 5 comments

xmak commented

After pulling the latest version from master, the plugin doesn't work in UE 4.24.

Opening the project and compiling the modules works OK (after I made the changes to include paths). But if I add an actor with the Node component and run the project, UE just crashes.

Steps to reproduce:

  1. Create new project
  2. Clone the latest version of nodejs-ue4 and socketio-client-ue4 from master (for socketio-client-ue4 do a recursive clone) into Plugins folder and activate the plugins in the project settings
  3. Open the project in Unreal Editor (it will ask you to recompile modules which works OK after the corection from my pull request)
  4. Create an actor with the Node component, add the actor to the map
  5. Click the Play button to run the project

After the last step the editor just crashes without showing the usual UE crash report window. This is the UE log after clicking the Play button:

[2020.04.25-06.38.55:629][257]LogUObjectGlobals: Warning: Failed to find object 'Class None.SIOJJsonObject'
[2020.04.25-06.38.55:629][257]LogUObjectGlobals: Warning: Failed to find object 'Class None.SIOJJsonObject'
[2020.04.25-06.38.56:848][330]LogTemp: Repeating last play command: New Editor Window (PIE)
[2020.04.25-06.38.56:860][330]LogPlayLevel: PlayLevel: No blueprints needed recompiling
[2020.04.25-06.38.56:860][330]PIE: New page: PIE session: Main (25. tra 2020. 10:38:56)
[2020.04.25-06.38.56:862][330]LogOnline: OSS: Creating online subsystem instance for: NULL
[2020.04.25-06.38.56:863][330]LogOnline: OSS: TryLoadSubsystemAndSetDefault: Loaded subsystem for module [NULL]
[2020.04.25-06.38.56:863][330]LogPlayLevel: Creating play world package: /Game/UEDPIE_0_Main
[2020.04.25-06.38.56:866][330]LogPlayLevel: PIE: StaticDuplicateObject took: (0.002297s)
[2020.04.25-06.38.56:867][330]LogAIModule: Creating AISystem for world Main
[2020.04.25-06.38.56:867][330]LogPlayLevel: PIE: World Init took: (0.001695s)
[2020.04.25-06.38.56:868][330]LogPlayLevel: PIE: Created PIE world by copying editor world from /Game/Main.Main to /Game/UEDPIE_0_Main.Main (0.004313s)
[2020.04.25-06.38.56:934][330]LogUObjectHash: Compacting FUObjectHashTables data took 5.56ms
[2020.04.25-06.38.56:935][330]LogAudioMixer: Display: Audio Mixer Platform Settings:
[2020.04.25-06.38.56:935][330]LogAudioMixer: Display: Sample Rate: 48000
[2020.04.25-06.38.56:935][330]LogAudioMixer: Display: Callback Buffer Frame Size Requested: 1024
[2020.04.25-06.38.56:935][330]LogAudioMixer: Display: Callback Buffer Frame Size To Use: 1024
[2020.04.25-06.38.56:935][330]LogAudioMixer: Display: Number of buffers to queue: 2
[2020.04.25-06.38.56:935][330]LogAudioMixer: Display: Max Channels (voices): 32
[2020.04.25-06.38.56:935][330]LogAudioMixer: Display: Number of Async Source Workers: 0
[2020.04.25-06.38.56:935][330]LogAudio: Display: AudioDevice MaxSources: 32
[2020.04.25-06.38.56:936][330]LogAudio: Display: Using built-in audio occlusion.
[2020.04.25-06.38.56:936][330]LogAudioMixer: Display: Initializing audio mixer.
[2020.04.25-06.38.56:966][330]LogAudioMixer: Display: Audio Device Output Speaker Info:
[2020.04.25-06.38.56:966][330]LogAudioMixer: Display: Name: Speaker/Headphone (Realtek(R) Audio)
[2020.04.25-06.38.56:966][330]LogAudioMixer: Display: Is Default: Yes
[2020.04.25-06.38.56:966][330]LogAudioMixer: Display: Sample Rate: 48000
[2020.04.25-06.38.56:966][330]LogAudioMixer: Display: Channel Count Used: 2
[2020.04.25-06.38.56:966][330]LogAudioMixer: Display: Device Channel Count: 2
[2020.04.25-06.38.56:966][330]LogAudioMixer: Display: Channel Order:
[2020.04.25-06.38.56:966][330]LogAudioMixer: Display: 0: FrontLeft
[2020.04.25-06.38.56:966][330]LogAudioMixer: Display: 1: FrontRight

I have tried turning off "Run Default Script On begin Play" for the Node component, it didn't help.

Here's an example project (with plugin binaries already compiled):

https://drive.google.com/file/d/1PrYO3wH99_wV5L1-MbtZdHy5EoyXjtv3/view?usp=sharing

You're missing dependencies:

  1. The actual node executable, if you look at e.g. https://github.com/getnamo/nodejs-ue4/releases/tag/0.5.0, download the nodejs-ue4.24-v0.5.0.7z for example, you can extract Source/ThirdParty into {project root}/Plugins/nodejs-ue4/Source/ThirdParty to add the thirdparty node executable.

  2. Wrapper script dependencies. Go to nodejs-ue4/content/scripts and run npm i so that the wrapper script dependencies are installed.

Both of these steps are handled for you if you use the correct releases, but if you're using git, you'll need to manually ensure those two things are done before it all works.

That said this shouldn't crash without a hint though, so I'm marking this as an enhancement to add a warning when you're missing the dependency.

xmak commented

Hi.

With the node executable in place, Unreal editor doesn't crash anymore (but I ran into another issue - #18).

As for this one, is this step (copying the ThirdParty folder with node excutbale) documented somewhere?
It would be usefull to have it in the documentation for those who build the plugin from source.

Added https://github.com/getnamo/nodejs-ue4/blob/master/README.md#using-git-instead-of-releases readme section with link to the third party dependencies here: https://github.com/getnamo/nodejs-ue4/releases/download/0.5.0/nodejs-v0.5.0git-thirdparty-dependencies-only.7z

That should make using the plugin with a fresh git pull a bit simpler.

xmak commented

Shouldn't the step 2 (Go to nodejs-ue4/content/scripts and run npm i) also be in readme?

The node_modules are included in the zip, so no npm i should be required when using that zip (untested though)