I am on Ubuntu 20.04 and have built UE4 4.27.2. I downloaded the latest release tagged Cesium for Unreal v1.14.0 (Unreal Engine 4) and placed it inside ~/UnrealEngine-4.27/Engine/Plugins/Marketplace directory. When I try to run cesium sample app project I get this error.
The following modules are missing or built with a different engine version:
Sorry, I think I led you astray before. Our plugin packages on the Releases page do not include Editor support for Linux. They will enable you to package a game for Linux when running the Editor on Windows (i.e: cross-compile), but they don’t have the binaries necessary to run the Editor itself on Linux.
Unreal Engine’s support for running the Editor on Linux is kind of spotty. As you know, you have to compile the Unreal Engine yourself from source. Epic does not provide binaries. This makes it tricky to achieve ABI compatibility with plugins, because C++ binaries are very sensitive to details of the compilation environment where the binaries were built. Until Epic provides builds for the Editor on Linux, it’s not realistic for us to provide builds of Cesium for Unreal, either.
So, long story short, you need to compile Cesium for Unreal if you want to run it in the Editor on Linux. The most up-to-date instructions are here:
Follow the link to the Linux-specific instructions. Despite the branch name (ue5-main), these instructions should work well with UE 4.27.
Just to confirm, you packaged the plugin as described in the instructions, and then copied the resulting package to Plugins/Marketplace, right? As opposed to building the plugin in that directory to begin with.
I’m really not sure what might cause the error you’re seeing, but here are some things to try:
Create a new project and enable the Sun Position plugin. Does the project still work?
Now enable the Cesium for Unreal plugin. Does that work?
From your log, it looks like the root cause might be that the SunPosition plugin’s .so file is missing or can’t be loaded. So it might be worth looking at whether it somehow failed to compile, or if it’s missing some runtime dependency.
Hi @Kevin_Ring Very sorry for the late response. Struck with a personal issue.
Yes I followed the exact instructions.
I tried enabling the Sun Position Calculator plugin and restarting. The project opened fine. Then I enabled Cesium plugin and restarted but the project didn’t load with same error. Any ideas? Below is the .uproject content
I’m sorry, but I really don’t know. The error message is pretty clear that a dlopen is failing, so you’ll need to dig into why that is happening on your system using the usual tools for debugging shared library load failures on Linux. I’m not an expert at this by any means, but there are lots of resources on the web. For example this article walks through the first few steps:
@Dovydas if you’re on Windows your problem is likely different from the one discussed above, which is on Linux. A message about CesiumRuntime and CesiumEditor being missing is normal before you’ve compiled them. After you generate project files, you can open the generated .sln file in Visual Studio and build it, then run from within Visual Studio. Or, you should be just say “Yes” to let Unreal build the plugin for you automatically. The only problem with the latter is that if something goes wrong it may be hard to get access to the error messages in order to diagnose the problem.
This was after building cesium-unreal as described above. Looking at cesium-unreal/Source/CesiumRuntime/CesiumRuntime.Build.cs, SunPosition may have to be added to the dynamically loaded modules in DynamicallyLoadedModuleNames.AddRange. If I understand correctly, SunPosition is used by the CesiumSky actor.
As I am very new to Unreal and Cesium, I will try that after learning a little bit more.
Did that work for you? We’ve often had trouble with the SunPosition plugin - especially on Linux - so I’m curious if that solution works. We don’t load it dynamically ourselves, which is why we never thought to add it to that list. But you could be right that it would help.
Did not try at the moment, want to play a little before breaking things.
I don’t know UE build system but I don’t think this is the right solution, it seems to be for specific external libraries the plugin uses, as you suggest.
I notice that the LoadingPhase of the SunPosition plugin is PostEngineInit, whereas CesiumRuntime LoadingPhase is Default. I tried to change SunPosition to PreDefault but the recompilation fails (that changes UE Game loop, maybe it needs UE source). I’m really very new to UE hence I will continue to use the LD_LIBRARY_PATH trick before going further.