Unreal Engine 4.20 & 4.21 and beyond

Beastie7

Well-Known Member

Reaction score: 213
Messages: 452

This is really exciting work. Thanks so much for this. As someone who plans on starting game development on FreeBSD - this is great to hear.

I have question. Can this engine be used for simple 2D games with just a text editor? Also, have you came across anything that's missing in FreeBSD that could make it a better game dev platform? ie Sound servers, graphics libraries etc, etc,

Thanks.
 
OP
malavon

malavon

Active Member

Reaction score: 151
Messages: 248

Can this engine be used for simple 2D games with just a text editor?
No, not really. Whatever you'd develop in UE4 you'd still need to import your assets, sounds etc using the editor. By my knowledge there are no command line tools for this.
As far as 2D goes, there is a module named Paper2D which apparently is pretty powerful but it's not being developed any longer. It's not deprecated or so, it's put in the hands of the community.
If I were to make a 2D game I'd go fake 3D (fixed orthogonal camera on the side/top) instead of actual 2D. It's more powerful, but takes more resources.
That said, for pure 2D games there might be better options out there aside than UE4.

Also, have you came across anything that's missing in FreeBSD that could make it a better game dev platform? ie Sound servers, graphics libraries etc, etc,
Yes and no. There are quite a few features missing because I don't have compiled the required libraries on FreeBSD yet (most notably and annoying CEF3).
But as far as FreeBSD ports go, there isn't much missing. UE4 is mostly statically linked to libraries compiled (and sometimes modified) specifically for the engine. It's more a question of stuff compiling on FreeBSD
than actually having stuff in FreeBSD, if that makes sense.

From Epic's perspective the FreeBSD port is missing cross-compiling support - mainly because I don't see the value of it. I'm in the 'set up the OS you need in a VM' camp.
 

kpedersen

Daemon

Reaction score: 1,062
Messages: 2,061

I'm in the 'set up the OS you need in a VM' camp.
This actually follows on quite well from Beastie7's question. UE4 (and Unity) with their editors makes cross compiling in a VM a pain in the butt (in the way that they both require more functionality than a virtualized GPU can provide). Both have "headless / dummy" display modes but sometimes you need to tweak a few settings which is very awkward if the editor is required to do so.

So I guess I am from the "use a ratty computer set up in the corner" camp ;)

Which is why your great work on porting UE4 to FreeBSD is an absolute godsend for me. I can run my labs and lectures on the OS I actually like because VMs were not at all an option!

As a side effect, you have single handedly allowed me to justify removing all traces of the toy known as Unity from my unit :)
 
OP
malavon

malavon

Active Member

Reaction score: 151
Messages: 248

UE4 (and Unity) with their editors makes cross compiling in a VM a pain in the butt (in the way that they both require more functionality than a virtualized GPU can provide)
I'd personally use the VMs as build server, without any editor at all. So when I'd have to make a change, I'd do it on my local machine, commit/push and then checkout/pull it on the build VM(s).
Certainly, if you'd want to run the editor I wouldn't recommend doing it in a VM. For building (compiling, cooking, staging, deploying) headless - as far as I know - the best tool is UE4's AutomationTool, with a command like this:
mono ~/development/UnrealEngine/Engine/Binaries/DotNET/AutomationTool.exe -ScriptsForProject=~/development/unrealprojects/InfiltratorDemo/InfiltratorDemo.uproject BuildCookRun -project=~/development/unrealprojects/InfiltratorDemo/InfiltratorDemo.uproject -noP4 -clientconfig=Shipping -serverconfig=Shipping -utf8output -platform=FreeBSD -targetplatform=FreeBSD -build -cook -map= -unversionedcookedcontent -compressed -stage -deploy -cmdline= -Messaging -device=FreeBSDNoEditor@limbo -addcmdline=-SessionId=001812BD08D681FB6A61747CE8172C4D -SessionOwner='benny' -SessionName='limbo'

Less resources are consumed this way, because the editor is a bit of a resource hog.
You can get this command line if you run 'UnrealFrontend', let it run for a few seconds/a minute and then copy the command line (with the copy button). Don't close the window till you've pasted it though.
Which is why your great work on porting UE4 to FreeBSD is an absolute godsend for me. I can run my labs and lectures on the OS I actually like because VMs were not at all an option!
Wish I was still in uni, so much more interesting stuff to learn than when I was young.
It's great knowing there's someone out there using this, makes it easier to dedicate time to this port.
 
OP
malavon

malavon

Active Member

Reaction score: 151
Messages: 248

A few days ago I ported 4.22.0. As always, Epic is frantically fixing bugs and 4.22.1 will probably surface in less than a month.
Not much more to tell at the moment. Tests passed just like they did on 4.21.x, projects still compile and run :)
 

kpedersen

Daemon

Reaction score: 1,062
Messages: 2,061

Nice work :)

I know there was a big push to get compile times faster by integrating Live++ into the pipeline. Is this just on the Windows build do you know?

Faster compile times (for projects) would be a massive bonus for me; gets a bit awkward during lectures having to wait up to a minute for a compile to demonstrate a small code change. I often have to prepare a slide of "filler" but to keep their minds from wondering XD.

.cpp files aren't so bad but headers with the additional ubt / uht processing step can be quite slow.

Tim Sweeny was on reddit looking at interest in a scripting language due to the compile times (and because Blueprint is a bit naff). Obviously all the language buffs kept chiming in with sodding Python but in reality I would very much like to have seen something like Cling (CERN's C++ scripting language based on LLVM) being used. That way faster iteration times and yet release builds can compile into 100% machine code rather than any interpreted parts all whilst keeping with a single homogeneous language (and kill Blueprint / other Kismet replacements ;)).
 
OP
malavon

malavon

Active Member

Reaction score: 151
Messages: 248

I've been looking into what kpedersen mentioned, took me a while to get back here to report on it but I wanted to be able to give actual information :).

I know there was a big push to get compile times faster by integrating Live++ into the pipeline. Is this just on the Windows build do you know?

Faster compile times (for projects) would be a massive bonus for me; gets a bit awkward during lectures having to wait up to a minute for a compile to demonstrate a small code change. I often have to prepare a slide of "filler" but to keep their minds from wondering XD.

.cpp files aren't so bad but headers with the additional ubt / uht processing step can be quite slow.
To be fair I had seen stuff about compile time improvements during development, but assumed Live++ was Windows only. I now looked into this and I found that Live coding is compiled only on the
Windows version of the editor. So at least right now this isn't supported on any of the other platforms (Mac, Linux and FreeBSD). The code can be found under Engine/Source/Developer/Windows/LiveCoding
which is a dead giveaway.
I am wondering if it would be a lot of trouble to monitor the filesystem and auto-compile when something is changed. Then again, the editor really doesn't like it when something that's compiled
runs into an assert somewhere or any other type of exception. So I'm not sure this would actually be a good thing.

I did get the feeling during development that some things were faster, but I'm not sure about the entire compile process actually being faster as mentioned on the 4.22 release notes. If someone is
able to verify this by compiling 4.21.2 first and then compiling 4.22.0, please let us know in this thread.
Some things like header processing are definitely faster (or at least feel faster), but I didn't do any measurements so can't quantify this.

Tim Sweeny was on reddit looking at interest in a scripting language due to the compile times (and because Blueprint is a bit naff). Obviously all the language buffs kept chiming in with sodding Python but in reality I would very much like to have seen something like Cling (CERN's C++ scripting language based on LLVM) being used. That way faster iteration times and yet release builds can compile into 100% machine code rather than any interpreted parts all whilst keeping with a single homogeneous language (and kill Blueprint / other Kismet replacements ;)).
That would explain all the "NODE_JS NOT FOUND" and "PYTHON NOT FOUND" error messages that the build system has been giving since a few months. Since everything kept working I didn't pay much
attention to these yet. But if this is because of new scripting languages, I'm pretty sure there will be a demo soon to demonstrate some of them. I'll fix this then, but it's good to know it's coming.

Note about blueprints: I'm not exactly a big fan of it but looking over the UE4 forum it would seem a lot of people do use them, especially artists with little to no coding experience.
While scripting languages could be a solution to some people, I'm pretty sure it wouldn't be for most of them (especially not something that looks and behaves like C++).
 

kpedersen

Daemon

Reaction score: 1,062
Messages: 2,061

Many thanks for looking into that. It is really fantastic that you are able to keep your FreeBSD porting work in sync with upstream.

Oh well, I can deal with the compile times, I just need to be a bit smart about it.
For my own uses, I also need to shake the habit of :!make every couple of lines ;)

No problem with Blueprints; so long as I don't need to use it. I still get a bit shakey using the Material Editor. I wish they would use a transpiler like NVIDIA's Cg rather than force me to use a node based system that will change each year but oh well. :)
 
OP
malavon

malavon

Active Member

Reaction score: 151
Messages: 248

Told you it wouldn't take long :) 4.22.1 was released a few days ago and I just finished porting.
I am however not making a tag just yet. I had some troubles with the .NET binaries in the project which didn't get rebuilt as I expected they would have been.
Result is that I'm not getting an AutomationTool.exe which I I use in my tests.
There is a branch 4.22.1 if someone would like to give it a try and see if it's only on my setup.

I did some compile time comparisons with 4.21.2 and found the following (first line is output from build system, second output from time):
4.21.2
Total build time: 2625,20 seconds (Local executor: 2552,72 seconds)
20111.056u 884.300s 52:24.31 667.7% 47950+3410k 1963241+492857io 553175pf+35w
4.22.1
Total execution time: 3194,43 seconds
23442.020u 1010.971s 1:03:46.96 638.9% 47816+3396k 2212565+564964io 645849pf+57w

Procedure used:
1. make ARGS=-clean
2. ./Setup.sh (to clean all third party libraries)
3. rebuild all third party libs (see second post in this thread)
4. time make

Not scientifical at all. Take it for what it's worth. I wouldn't exactly call it faster :cool:
 
OP
malavon

malavon

Active Member

Reaction score: 151
Messages: 248

I was lured back here by that thanks and remembered that I hadn't said what the issue was.
The same as always, I just forgot to run UnrealFrontend to create the AutomationTool.

So the tag has been on the Github repo for 10 days now.
 
OP
malavon

malavon

Active Member

Reaction score: 151
Messages: 248

Make sure to use either a release tag or the 4.22 branch (or 4.21 etc). The master branch doesn't compile currently.
Epic has a habit of fixing compile errors (most of the time not present on Windows) on master only when they make a new release.
Mildly annoying when I try to keep up with the rolling changes, but it is what it is.
 
  • Thanks
Reactions: mgp
OP
malavon

malavon

Active Member

Reaction score: 151
Messages: 248

@malavon, are you aware of https://github.com/UE4-FreeBSD/UE4-FreeBSD (also see https://wiki.unrealengine.com/Compiling_For_FreeBSD )?
Is it possible to somehow build the toolchain for Windows from your repo? Cross-compiling for FreeBSD would be awesome!
Yes, I'm aware of that. That repo is the one I based my initial port on before redoing it differently in the end. This repo was mainly geared to cross-compilation for FreeBSD on a Windows machine.
It's old and unmaintained though. A few commits still contain changes from that repo.
The wiki is no longer maintained, so as far as I know I can't get this changed. Not that it matters a lot, since cross-compilation is important for Epic to endorse it. See below.
Is it possible to somehow build the toolchain for Windows from your repo? Cross-compiling for FreeBSD would be awesome!
Nope, cross-compilation isn't supported. Neither from Windows for FreeBSD or from FreeBSD for Windows.
The former should be easier to fix, but I don't have any use for it myself and haven't bothered to support it. I'm not saying it'll never be there, but right now it isn't. I try to go in the right direction as
much as possible when I update versions but until I set up the necessary testing VMs I won't be 'officially' supporting it.
Compiling from for Windows for from FreeBSD would be a lot harder to do though, since there's no provision in UE4 to do this from another OS like Linux or MacOS. It'd be cool to have, but way too hard to
attempt this before I have the other direction.
 
Last edited:
  • Thanks
Reactions: mgp
OP
malavon

malavon

Active Member

Reaction score: 151
Messages: 248

For the record, there's a new release on the Epic repository (4.22.3) and I have made a branch for it as well.
I won't be building it until at the very earliest next week though, so use at your own peril. After the heat wave has passed, I'll use my processor to warm up the house again ;)

Edit: 4.22.3 has been released, if there are any issues let me know.

Master still has serious compilation issues for those following that one.
 
Last edited:
OP
malavon

malavon

Active Member

Reaction score: 151
Messages: 248

Ok, I know a few of you are more or less anxiously awaiting a new release and are wondering where it's at right now.
Since it's all been taking much more time than I hoped, I think it's only fair to give you all some information about what's been happening.

For starters, when 4.23.0 launched I intended to rework the third party build system and include a few features that were new to UE4 since 4.22 or 4.23: spatial audio and the chaos destruction framework. Included with that, the demos of these features as well.

When I more or less finished up the 4.23.0 port - still without the new features - and started testing I noticed that Lightmass was no longer working. I assumed because of the exact line of code where it blocked, that it happened because something had been changed in the UDP handling code. I cursed as this definitely wasn't the first time, and then set out to find how that whole piece of code had been changed once again.
I didn't find anything. I couldn't reproduce it outside of UE4 and then decided to go for the long shot: await release 4.23.1 assuming it was very close anyway. That one took a few more weeks than I expected.

Once that version dropped, the release logs mentioned bugs in Lightmass and surely, my (Lightmass) issues were fixed. I'm pretty sure Epic's QA process has a certain hiatus when it comes to testing Linux/Mac related stuff.
Back on track again I set out to fixing bugs where I could find them and get to work on the new features. There are plenty of minor bugs or lack of features - a few of which were carried over from earlier releases - that finally fed me up so much that I just had to fix them.
I won't be going into these just yet, you'll have to wait for an actual release post :) Still some work to be done on those as well anyway.
There are a few new ones that appeared as well, breaking PlatformerGame for who-knows-what-reason and I'm going to try and fix these as well before officially releasing. I don't have a habit of letting breaking bugs in something I release.

I am currently being held up on the chaos destruction part. I haven't been able to get it to work and it even crashes the editor in a way I don't think is related to my port. I can't open the ChaosDestructionDemo project either with no obvious reason just yet.
So I intend to verify this using the same UE4 code comparing with the official unmodified sources on a Windows install so that I know it's actually a bug in my port or it's been in that version all along
Of course this also means that I have to install the latest version of Visual Studio (2017 or 2019), since earlier versions are no longer supported by UE4.
Sadly, I have been having serious Windows (registry, libraries etc) issues for years on that installation. I never fixed them since I barely boot it anyway, but this time it came back to bite me. After several days of not being able to get it to work, I'm taking another route.
I'm going to reinstall a fresh Windows install, but I'm currently waiting for some extra SSDs so that I can separate FreeBSD and Windows better. Expect this to be done next week, after which I hopefully can start compilation on a Windows system without glitches.
Once I've done everything I need to to get it running, I'm pretty confident I should be able to ascertain whether or not the port will have a working Chaos Destruction for FreeBSD.

I had so many plans for this release, but am delaying quite a lot to 4.24 now. Getting a working 4.23 out has now become my main priority.

TL;DR: I won't be releasing 4.23.0, but am working on 4.23.1. Still a few more bugs to fix, which in turn may mean I'm not releasing in the very near future. It might finally become 4.23.2 if there are more Epic-side bugs that block me.

ps. I'm really bad at keeping people up to date. If in the future you see a long time no port after an official release, just go check the Github to see if a new branch appeared and it basically means I'm trying to get it working again :)
 

kpedersen

Daemon

Reaction score: 1,062
Messages: 2,061

Ok, I know a few of you are more or less anxiously awaiting a new release and are wondering where it's at right now.
I often use your latest version when it is released but since you are basically a one man super army on this project I have absolutely no problem with waiting patiently between revisions!

Keeping as up to date as you have been is awesome. Just don't get burned out. Especially if Epic has a lower quality QA process for non-consumer platforms and regressions are inbound ;).

Is there absolutely zero support from Epic still? I would have thought they might at least donate some SSDs!
 
OP
malavon

malavon

Active Member

Reaction score: 151
Messages: 248

I often use your latest version when it is released but since you are basically a one man super army on this project I have absolutely no problem with waiting patiently between revisions!
When it gets released, there are some worthwhile additions this time.

Is there absolutely zero support from Epic still? I would have thought they might at least donate some SSDs!
To be fair, I never asked any support after the initial port since I was ghosted pretty quickly on the e-mail correspondence. I just assumed that Epic isn't very much interested in this. I might try asking sometime in the future to see if they can do something to help me out.
But in the end, for me it's more like a hobby project anyway. I always assumed I'd get really stuck on something and would have to give up, which up until now never happened.
Also, on the hardware aspect, it's looking like I'm going to have to replace my pc completely. My current build is brought to its knees way too often.
That'll happen somewhere in the next two years probably. I'm currently waiting for the first affordable consumer platform (aka. not Xeon) to support 256Gb of RAM. That's going to be ideal for UE4 development 🙃

While I was typing this post I decided to fill in the Unreal dev grant form. You never know, right ;) I'll keep you people posted if it ever delivers something.
 
OP
malavon

malavon

Active Member

Reaction score: 151
Messages: 248

Well, it took a long time but here it is in all of its glory: Unreal Engine 4.23.1. Like mentioned earlier, 4.23.0 won't be released for FreeBSD because Lightmass is broken in that version.
Chaos Destruction (the 4.23 showcase beta plugin) isn't supported since I couldn't get it to work at all, not even on a native Windows. I'm guessing it may have some issues still. On top of that I discovered that the Windows version warns that an Unreal Engine 4 Editor with Chaos built-in can't open any project that doesn't set the Unique build type.
That's why I haven't enabled it in the FreeBSD port, even though this message isn't displayed on FreeBSD. I'm pretty sure it should be.

On top of that there were quite a lot of issues linking to the system's OpenSSL 1.1 shared object, while later the OpenSSL 1.0 static library was linked into the final binary/lib. What a blast to track those down ... I might've missed a few.
Another thing that was changed in 4.23 is the way platforms are defined. What used to be in code is now contained in configuration files, so I had to re-do some of the porting.

Note that I've only tested this on FreeBSD 12.0 (amd64). I haven't updated to FreeBSD 12.1 yet, though I intend to reinstall my BSD on a new M.2 disk sometime this or next week. I'll test UE4 out when everything is up and running.

The highlights
Audio Spatialization
The feature that I really wanted to get running eventually made it, cfr. the demo below. It wasn't easy since I couldn't just rely on the built-in audio spatialization features. Libraries that aren't open-source and available for FreeBSD like Steam Audio weren't an option.
The only possibility was Resonance Audio (see below), but in the end I'm really happy about this one. It does its job perfectly and it even sounds better than Steam Audio under Windows.

Resonance Audio
Resonance Audio is an open-source Google library for audio spatialization. It can use Intel Embree, which is also open-source. Of course neither of them openly support FreeBSD, but the changes were minimal.
Intel Embree uses the SIMD instructions of modern processors to off-load raycasting from the CPU.
Note that this is the first time that I've included something in the FreeBSD port that isn't available under Linux. You read it: Resonance Audio with Intel Embree isn't configured for Linux. It could be, but it isn't.
Without Embree the audio spatialization just doesn't work, so go brag against your Linux-using friends about that ;)
On top of that I've upgraded the version of Intel Embree from 2.14.0 (dated 2017/02/09) to 2.17.7, which is the latest 2.X version available right now. This includes quite a lot of bug fixes. That's something even Mac and Windows users don't have!

Alembic Importer
Another change I really wanted to make was to provide some way to import meshes, since there is no FBX import. The Alembic importer does just that.
Note that internally it's built pretty ugly, since it relies on the system's OpenEXR version. On other platforms (thus by Epic's or the contributor's design), it uses a hacked way of linking to OpenEXR 2 but at the same time the engine links to OpenEXR 1.
Another reason to keep third party libraries up to date I guess ...

Breakpad dump_syms segmentation faults
If you've been building before, you may have experienced segmentation faults on certain modules. That's the dump_syms process crashing, which runs after linking and extract debugging symbols into a separate file.
Since I was really fed up with this - it slows down porting considerably - I decided to track down the issue. Apparently the LibCxx that FreeBSD 12.0 has is either an older one or contains a bug (most likely both).
That's why I've included LLVM's LibCxx and LibCxxabi sources and it's also built along the third party libraries. Breakpad now links against this one.
On Linux this external LibCxx is always used, even for the engine itself but unless I find out that there's a good reason to do so I won't be changing this. The system's c++ lib is generally the way to go.

When I can find the time to look into this I'll create a PR for an update in the FreeBSD sources if it still hasn't changed in 13.0.

Vulkan
Vulkan is becoming a recurring theme in my updates. Epic is deprecating OpenGL in favour of Vulkan. I'm not sure when OpenGL will be removed from the codebase entirely, but it'll get less attention for sure now.
So we really need to start begging NVidia to update their drivers ;) I'll probably create another post for this on the forum.
Of course, I hear AMD is going to release new GPU's soon so I might just switch brands for the first time in decades.
Note that thanks to the solution shkhln has built there's always another path. Native support would still be nice to have though.

Epic has also added a pop-up to development builds stating that OpenGL has been deprecated. It's an annoying thing, but I've left it in place since it's important to know.

GPU brand is now recognized
It might look like a small one - and it kind of is - but it's one more thing that Linux doesn't have. The Linux port will always show the GPU as being a GenericGPU. FreeBSD no longer does.
For NVidia I use the official driver's sysctls and for all others - or if the sysctl doesn't exist - I query the pci bus like pciconf does.
LogInit: OS: FreeBSD 12.0-RELEASE-p8 GENERIC (), CPU: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz, GPU: NVIDIA GeForce GTX 770 (yes, I was behind on security updates)
LogInit: OS: Windows 7 (Service Pack 1), CPU: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz, GPU: NVIDIA GeForce GTX 770

PhysX compilation issue fix and update to 3.4.2
Apparently the sources (version 3.4.0, dated early 2017) didn't compile on Clang 6+. I hadn't noticed that the PhysX compilation no longer worked because the cleaning method that I used for third party libraries wasn't adequate.
All 4.22 releases may have been affected by this, at least when building on FreeBSD 12.
From now on I'll be deleting my entire Engine/Source/Thirdparty before building third party libs to find out about issues before release.
Version 3.4.2 has the necessary fixes and I have upgraded the sources to that version. It means there's one more library that isn't exactly the same as it is on other platforms. Especially one hack of a "fix" has been removed since the original code now asserts that everything is working correctly. I'm pretty sure that at least the FreeBSD part is fine (after blowing up massively earlier), but it's always possible that I've missed an Epic modification to the sources.

Updated the internal version numbers to the released versions
This is the first time the engine pretends to be the exact same version as the Windows release. Even though it's not exactly true, it means that it's now possible to compile games and have them communicate with each other effortlessly.
It means that replays can be shared and probably some other goodies as well. It also means that it's easier to share the same build directories under different OS's.
I intend to keep doing this from now on for every release.

WebM support
I haven't tested this yet, but the necessary third party libraries have been compiled. I'll test it out somewhere with the next release.
It's meant to play WebM videos from within the engine, next to the other supported formats.

LTO support and dynamic linker optimization
LTO (Link-Time Optimization) is now supported for the FreeBSD version. To enable it, add this to the BuildConfiguration.xml:
XML:
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
    <BuildConfiguration>
        <!--possibly other options here -->
        <bAllowLTCG>true</bAllowLTCG>
        <!--possibly other options here -->
    </BuildConfiguration>
</Configuration>
I've built my current editor build with LTO so I'm pretty confident it works well. Expect the gains to be minimal unless it's a monolithic build. Also expect higher memory usage from the linker. You need to have at least one of the llvm ports installed, the base system (at least on 12.0) doesn't have the required llvm-ar binary.
The dynamic linker will now also have to search considerably less libraries due to having less dependencies in the linked shared objects. This will probably speed up the editor's and other modular projects' startup.

One more demo to rule 'em all

SpatialAudioTemple (640M) SHA512: 02e16b37466e81c5339fa6dd18a51f55bbacd0a38dfa06d29b90968c4d8bdf430528a81ba06887969a7274206dc9188b3e79f1076841431e03ca1461b0771eca
An already existing demo that Epic modified to showcase the audio spatialization features of UE4. This build is configured to use Google's open-source Resonance Audio library (see above).
Note that this demo also marks the first time something works on FreeBSD which isn't supported on Linux!

Changes to the build process

Additional requirements
There are now additional requirements in order to use the editor and compile the third party libraries.
pkg install openexr tbb ispc yasm

New third party build system (PortNext)
The current way of building third party libraries is extremely cumbersome to maintain and over the years I've been wanting to improve on it with much simpler scripts for each library.
I've decided to build something better from scratch and the first fruits of that labour can be found in this version of the port. It's very premature since I've lost too much time tracking down issues with 4.23.0.
The scripts can be found in <UE4ROOT>/Engine/Build/BatchFiles/Linux/PortNext.
As you might assume judging from the name, this system has been loosely inspired by the FreeBSD ports system. I could have called it PortLite or something, but as far as UE4 goes this really is an improvement thus the 'next'.

I might try to get this upstreamed somewhere in the future, although I think Epic is currently exploring the avenue of building third party libraries using the Unreal Build system directly. That's probably better for UE4 anyway.

Future route
* I intend to move most, if not all third party builds to PortNext. I'll start with new libraries first.
* I might also include new versions of more libraries, but I'm hesitant about that since many of these may have negative effects on actual builds.
* Master integration has been delayed quite a lot with all the time lost, so that's also going to happen.

Epilogue
This has definitely been the most involving release I've done. I've been able to set things right everywhere and several changes are now beyond the Linux version.
It's been a long time I've been able to work on something with at least a modicum of focus and I'm really happy to have done this in almost one straight go.

Special thanks to Frédéric Chopin, Pyotr Ilyich Tchaikovsky, Franz Liszt, Claude Debussy, Antonín Dvořák and all others who helped me through this.

Oh, one more thing. If your project hangs and prints messages like 'Waiting 10 seconds for IO' or something like it, disable "event driven loader" in the project. For some reason this isn't working well.
e.g. PlatformerGame has this issue.
 

shkhln

Daemon

Reaction score: 663
Messages: 1,650

Likely will be more stable in a year. (On Linux, that is. Additional time is necessary for FreeBSD porting effort.) I'm a bit of Nvidia fanboy, admittedly, so I don't pay much attention to AMD stuff.
 
Top