While the Epic Games Store may not support Linux, at least Unreal Engine does and it appears to have been given quite a lot of attention in the Unreal Engine 4.25 release that went out officially today.
Apart from the usual SDK updates which you tend to see in each release, scrolling over the release notes was actually pretty damn interesting. It's not just a list of bug fixes either, there's plenty that's brand new on the Linux side and it really seems like a lot of attention has been given. Some of it includes: support for the MDL Importer on Linux for Unreal Datasmith, support for Linux offscreen Vulkan rendering, they moved to a newer llvm clang 9.0.1 v16 tool-chain and a lot more.
It's also quite fun to see a rather large and clear Linux icon on their supported platforms image:
Want to see the big list of Linux improvements in Unreal Engine 4.25? We've included it all below in a handy clickable spoiler for you. We've removed some that weren't for the normal Linux desktop like AArch64.
Changelog, click me
-
Bug Fix: Fixed issue that prevented editor windows from restoring when minimized.
-
Bug Fix: Set UserTempDir for Linux to $TMPDIR or fallback to /var/tmp
-
Bug Fix: Added missing space to SanitizerInfo string.
-
Bug Fix: Implemented module path name for Unix to avoid hard coded default path.
-
Bug Fix: Addref Vulkan memory allocation so it's released when not used by framebuffer and surface FrameBuffer ctor was creating a view directly onto a texture surface, but was not holding the allocated memory. If the texture was freed before the framebuffer was destroyed, we could run into use after free type issues.
-
Bug Fix: Fixed Linux address sanitizer builds.
-
Bug Fix: Reduced NullRHI static buffer size by using dynamic buffer Reduces allocation size & fixes potential silent buffer overrun.
-
Bug Fix: Fixed issue with shell script not being able to handle quoted arguments.
-
Bug Fix: Send 127.0.0.1 by default for Linux/Mac as well for UnrealInsights. Since there's no Event to close dont need to check for this.
-
Bug Fix: Added win64 platform check for VisualStudioDTE.
-
Bug fix: Fixed Linux build break with case sensitive headers.
-
Bug Fix: FixedLinux build break (SEnumComboBox.h -> SEnumCombobox.h)
-
Bug Fix: Fixed race when two threads are trying to create a folder on Linux.
-
Bug Fix: Fixed command quoting in Linux chmod command.
-
Bug Fix: Override GetPortableCallstack to avoid 1MB allocations in crash signal handler.
-
Bug Fix:: Removed VulkanLinuxPlatform RenderOffScreen logging.
-
Bug Fix: Fixed Linux build break (includes paths with backslashes)
-
Bug Fix: Fixed UnrealBuildTool unused variable warnings.
-
Bug Fix: Fix for ISPCTexComp dll not loading on projects on a different directory. Fixes this warning on UE4Editor startup: LogCore: Warning: dlopen failed: /epic/UE4.git/Engine/ThirdParty/IntelISPCTexComp/Linux64-Release/libispc_texcomp.so: cannot open shared object file: No such file or directory LogTextureFormatIntelISPCTexComp: Warning: Unable to load ../../../Engine/ThirdParty/IntelISPCTexComp/Linux64-Release/libispc_texcomp.so
-
Bug Fix: Ensures start time for events is now greater than last end time for all nodes.
-
Bug Fix: GpuProfilerEvent times now clamp to valid values, SanitizeEventTree was not clamping start times to be >= to previous root start times, so we were hitting asserts in TraverseEventTree() for: lastStartTime >= GpuProfilerEvents[Root].GetStartResultMicroseconds(). Also removed unused variables.
-
Bug Fix: Now using secure_getenv() instead of getenv().
-
New: Missing toolchain warning now only appears on Linux + Win64.
-
New: Added linux sanitizer information to build details if set.
-
New: Build nvTriStrip and ForsythTriOptimizer with UE clang toolchain (link with libstdc++) Removed stdc++ dependency for MeshBuilderCommon.
-
New: Added VULKAN_ENABLE_DUMP_LAYER to VulkanLinuxPlatform.h.
-
New: System compiler is no longer the default fall-back on Linux. We now only check for and use the system compiler if "ForceUseSystemCompiler" command line is passed Also, no longer default to epic compiler if ForceUseSystemCompiler is specified and the system compiler can’t be found.
-
New: Moved Linux architectures to Linux package project submenu. Added a PlatformSubMenu ini entry to DataDrivenPlatformInfo sections, and coalesced these in FPackageProjectMenu::MakeMenu().
-
New: Added a more descriptive error messages for Linux SDK Toolchain Not Found for three cases:
-
.$ LINUX_MULTIARCH_ROOT=/tmp/foobar make BlankProgram bash "/epic/UE4-23.git/Engine/Build/BatchFiles/Linux/Build.sh" BlankProgram Linux Development Fixing inconsistent case in filenames. Setting up Mono Building BlankProgram... Unable to locate Linux SDK toolchain at /tmp/foobar/x86_64-unknown-linux-gnu. ERROR: GetBuildPlatform: No BuildPlatform found for Linux make: *** [Makefile:183: BlankProgram] Error 5
-
make BlankProgram ARGS="forceusesystemcompiler" bash "/epic/UE4-23.git/Engine/Build/BatchFiles/Linux/Build.sh" BlankProgram Linux Development forceusesystemcompiler Fixing inconsistent case in filenames. Setting up Mono Building BlankProgram... Unable to locate system compiler (-ForceUseSystemCompiler specified). ERROR GetBuildPlatform: No BuildPlatform found for Linux make: *** [Makefile:183: BlankProgram] Error 5
-
LINUX_MULTIARCH_ROOT= make BlankProgram bash "/epic/UE4-23.git/Engine/Build/BatchFiles/Linux/Build.sh" BlankProgram Linux Development Fixing inconsistent case in filenames. Setting up Mono Building BlankProgram... Unable to locate Linux SDK toolchain. Please run Setup.sh. ERROR GetBuildPlatform: No BuildPlatform found for Linux make: *** [Makefile:183: BlankProgram] Error 5
-
-
New: Added support for Linux offscreen Vulkan rendering, which is enabled with -RenderOffScreen flag. This fixes several Slate issues when rendering offscreen.
-
New: Moved to new llvm clang 9.0.1 v16 toolchain.
-
New: Added bGdbIndexSection bool to LinuxToolChain.
-
New: Linux now always uses lld linker with clang v9 and above.
-
New: Can now generate .debug_pubnames and .debug_pubtypes sections in a format suitable for conversion into a GDB index. This option is only useful with a linker that can produce GDB index version 7.
-
New: Added protected to bGdbIndexSection bool.
-
New: New build of python2.7 for Linux now supports zlib, bz2, and ssl.
-
New: Use msbuild in mono for Linux when using an installed copy and mono >= 5.0.
-
New: Batch writing of ini files is now possible.
As for Vulkan API support, looks like that saw huge improvements too across the board. There's 50+ improvements just for Vulkan including new features like DXC integration (DirectX Shader Compiler) into their Vulkan shader compiler, they added support for Virtual Texture Streaming for Vulkan on Linux and there's even some Vulkan VR improvements
It's interesting since there's more and more games coming to Stadia, which uses Debian Linux and Vulkan so it's probable a lot of the interest there is due to that and thanks to it Unreal Engine on Linux as a whole will get better. See the release announcement here.
with tons of Linux...AArch. Not interesting
Also:
Improvements for Steam Audio;
RT is ready for production;
Initial support for PS5/XSX;
Official termination of Win32 support starting from 4.27 version.
Not that I would ever play Fortnite -- nothing about it appeals to me -- but it shows how Epic really feels about the Linux platform.
is that the SteamOS logo or steam logo? because i dont see the logo for other stores, including their own store, so why its there mixed with a lot of platform logos...The Visual Studio logo doesn't make that much sense either tbh...
is that the SteamOS logo or steam logo? because i dont see the logo for other stores, including their own store, so why its there mixed with a lot of platform logos...
Weirdly, I think it's likely to be neither, but "Steam Machines" instead, as a platform. And likely mostly so they didn't have a visual gap. Although it does means that the Steam logo gets to be on there twice, which is funny coming from Epic.
That selection of icons is really odd in general: they've clearly put the wide icons with text on one side and the mostly square icons on the other so that they all line up visually, which is fair enough, but what's going on with the ordering? Steam gets the top row and Windows is down slumming it with Linux & Android. Very strange.
Have they finally fixed the Vulkan performance issues with native Linux builds? As of a few months ago it was so bad that the same Windows version of a game ran twice as fast with DXVK.
Probably not.
![](https://i.ibb.co/1fZrLLp/Ekran-Goruntusu-2020-04-29-06-08-05.png)
![](https://i.ibb.co/5Ksxhvf/Ekran-Goruntusu-2020-04-29-06-08-43.png)
Have they finally fixed the Vulkan performance issues with native Linux builds? As of a few months ago it was so bad that the same Windows version of a game ran twice as fast with DXVK.
Probably not.
![](https://i.ibb.co/1fZrLLp/Ekran-Goruntusu-2020-04-29-06-08-05.png)
![](https://i.ibb.co/5Ksxhvf/Ekran-Goruntusu-2020-04-29-06-08-43.png)
Good thing the devs of the game are still supporting OpenGL, 50 fps on the main menu is not looking good, Can't imagine how it performs during gameplay.
So all UE4 games on WIndows will be Metro apps or am I misunderstanding that?with tons of Linux...
Official termination of Win32 support starting from 4.27 version.
So all UE4 games on WIndows will be Metro apps or am I misunderstanding that?with tons of Linux...
Official termination of Win32 support starting from 4.27 version.
I think it more means "no more 32bit games" which I'd say it's about time,
So all UE4 games on WIndows will be Metro apps or am I misunderstanding that?Original:
We are officially deprecating our Win32 support. It will be included in Unreal Engine 4.25 and Unreal Engine 4.26, but support for 32-bit Windows operating systems will be removed in a future release.That sounds vague to me. They will either stop supporting 32-bit systems, or switch to UWP completely.
Win32 in UE is not the same as the Win32 platform you might be thinking of. Unreal uses win32/win64 naming simply for 32/64bit. It means they're retiring 32bit building. Not that any of that matters to us...So all UE4 games on WIndows will be Metro apps or am I misunderstanding that?Original:
We are officially deprecating our Win32 support. It will be included in Unreal Engine 4.25 and Unreal Engine 4.26, but support for 32-bit Windows operating systems will be removed in a future release.That sounds vague to me. They will either stop supporting 32-bit systems, or switch to UWP completely.
Last edited by Liam Dawe on 5 May 2020 at 11:32 pm UTC
Linux
Bug Fix: Fixed issue that prevented editor windows from restoring when minimized.
Bug Fix: Added PLATFORM_LINUXAARCH64 to Platform.h
Bug Fix: Set UserTempDir for Linux to $TMPDIR or fallback to /var/tmp
Bug Fix: Added missing space to SanitizerInfo string.
Bug Fix: Implemented module path name for Unix to avoid hard coded default path.
Bug Fix: Disabled ispc for Linux AArch64 Currently using ispc v1.12 which has add "experimental AArch64" support.
Bug Fix: Addref Vulkan memory allocation so it's released when not used by framebuffer and surface FrameBuffer ctor was creating a view directly onto a texture surface, but was not holding the allocated memory. If the texture was freed before the framebuffer was destroyed, we could run into use after free type issues.
Bug Fix: Fixed Linux address sanitizer builds.
Bug Fix: Reduced NullRHI static buffer size by using dynamic buffer Reduces allocation size & fixes potential silent buffer overrun.
Bug Fix: Fixed issue with shell script not being able to handle quoted arguments.
Bug Fix: Default LinuxAArch64 platform in binary now builds to the same default as Linux platform.
Bug Fix: Don't add local launch device for Linux AArch64 platform Local device right now will never be an Arm64 device.
Bug Fix: Set PrecompileForTargets to None for AArch64 builds of SoundVisualizations and Kiss_FFT.
Bug Fix: Send 127.0.0.1 by default for Linux/Mac as well for UnrealInsights. Since there's no Event to close dont need to check for this.
Bug Fix: Added win64 platform check for VisualStudioDTE.
Bug fix: Fixed Linux build break with case sensitive headers.
Bug Fix: FixedLinux build break (SEnumComboBox.h -> SEnumCombobox.h)
Bug Fix: Fixed race when two threads are trying to create a folder on Linux.
Bug Fix: Fixed command quoting in Linux chmod command.
Bug Fix: Override GetPortableCallstack to avoid 1MB allocations in crash signal handler.
Bug Fix:: Removed VulkanLinuxPlatform RenderOffScreen logging.
Bug Fix: Fixed Linux build break (includes paths with backslashes)
Bug Fix: Fixed UnrealBuildTool unused variable warnings.
Bug Fix: Fix for ISPCTexComp dll not loading on projects on a different directory. Fixes this warning on UE4Editor startup: LogCore: Warning: dlopen failed: /epic/UE4.git/Engine/ThirdParty/IntelISPCTexComp/Linux64-Release/libispc_texcomp.so: cannot open shared object file: No such file or directory LogTextureFormatIntelISPCTexComp: Warning: Unable to load ../../../Engine/ThirdParty/IntelISPCTexComp/Linux64-Release/libispc_texcomp.so
Bug Fix: Ensures start time for events is now greater than last end time for all nodes.
Bug Fix: GpuProfilerEvent times now clamp to valid values, SanitizeEventTree was not clamping start times to be >= to previous root start times, so we were hitting asserts in TraverseEventTree() for: lastStartTime >= GpuProfilerEvents[Root].GetStartResultMicroseconds(). Also removed unused variables.
Bug Fix: Now using secure_getenv() instead of getenv().
New: Missing toolchain warning now only appears on Linux + Win64.
New: Added linux sanitizer information to build details if set.
New: Build nvTriStrip and ForsythTriOptimizer with UE clang toolchain (link with libstdc++) Removed stdc++ dependency for MeshBuilderCommon.
New: Added LinuxAArch64Server and LinuxAArch64Client build targets.
New: Added VULKAN_ENABLE_DUMP_LAYER to VulkanLinuxPlatform.h.
New: System compiler is no longer the default fall-back on Linux. We now only check for and use the system compiler if "ForceUseSystemCompiler" command line is passed Also, no longer default to epic compiler if ForceUseSystemCompiler is specified and the system compiler can’t be found.
New: Moved Linux architectures to Linux package project submenu. Added a PlatformSubMenu ini entry to DataDrivenPlatformInfo sections, and coalesced these in FPackageProjectMenu::MakeMenu().
New: Added a more descriptive error messages for Linux SDK Toolchain Not Found for three cases:
.$ LINUX_MULTIARCH_ROOT=/tmp/foobar make BlankProgram bash "/epic/UE4-23.git/Engine/Build/BatchFiles/Linux/Build.sh" BlankProgram Linux Development Fixing inconsistent case in filenames. Setting up Mono Building BlankProgram... Unable to locate Linux SDK toolchain at /tmp/foobar/x86_64-unknown-linux-gnu. ERROR: GetBuildPlatform: No BuildPlatform found for Linux make: *** [Makefile:183: BlankProgram] Error 5
make BlankProgram ARGS="forceusesystemcompiler" bash "/epic/UE4-23.git/Engine/Build/BatchFiles/Linux/Build.sh" BlankProgram Linux Development forceusesystemcompiler Fixing inconsistent case in filenames. Setting up Mono Building BlankProgram... Unable to locate system compiler (-ForceUseSystemCompiler specified). ERROR GetBuildPlatform: No BuildPlatform found for Linux make: *** [Makefile:183: BlankProgram] Error 5
LINUX_MULTIARCH_ROOT= make BlankProgram bash "/epic/UE4-23.git/Engine/Build/BatchFiles/Linux/Build.sh" BlankProgram Linux Development Fixing inconsistent case in filenames. Setting up Mono Building BlankProgram... Unable to locate Linux SDK toolchain. Please run Setup.sh. ERROR GetBuildPlatform: No BuildPlatform found for Linux make: *** [Makefile:183: BlankProgram] Error 5
New: Added Linux AArch64 FreeType2 libraries.
New: Added support for Linux offscreen Vulkan rendering, which is enabled with -RenderOffScreen flag. This fixes several Slate issues when rendering offscreen.
New: Enabled Neon instrinsics for Linux AArch64.
New: Moved to new llvm clang 9.0.1 v16 toolchain.
New: Added bGdbIndexSection bool to LinuxToolChain.
New: Added Linux AArch64 libs for FreeType2 v2.10.0, ICU 64.1, and HarfBuzz 2.4.0 Includes BuildForLinuxAArch64.sh cross compilation scripts Adds LinuxAArch64 back to installed engine builds.
New: Linux now always uses lld linker with clang v9 and above.
New: Can now generate .debug_pubnames and .debug_pubtypes sections in a format suitable for conversion into a GDB index. This option is only useful with a linker that can produce GDB index version 7.
New: Added protected to bGdbIndexSection bool.
New: New build of python2.7 for Linux now supports zlib, bz2, and ssl.
New: Use msbuild in mono for Linux when using an installed copy and mono >= 5.0.
New: Batch writing of ini files is now possible.
And this isn't even everything, this is just the Linux section, and Tim's(and Epic's for that matter) issue with Linux has to do with development of games ON Linux, as in getting a user base of developers on it using UE4, but people are just to petty to be willing to do it.
People complaining about UE4 on Linux are just mostly mad about UT3 not being ported to Linux and can't just let it go and move on.That seems fairly unlikely. And an unnecessarily provocative attitude.
People complaining about UE4 on Linux are just mostly mad about UT3 not being ported to Linux and can't just let it go and move on.
Not at all. I heard there's several games made with Unreal.
it shows how Epic really feels about the Linux platform.
... Well, yeah: The same thing that 98% of other game developers "feel", I would suppose? That our segment is too small, so there's no ROI?
See more from me