It's that time of the year again, with a new Unreal Engine 4 released by Epic and I'd like to take the opportunity to inform you about some
of the changes.
What has changed
I've been busy taking on a a huge amount of loose ends, although that hasn't really translated in much more commits due to the way I work.
Most of these I won't talk about because they're rather boring, but here are some highlights:
3rd party builds
Context: I'm not talking about 3rd party libraries here, I'm talking about building UE4 on your personal computer or build farm!
You read that right, I've been putting a lot of time in removing many manual steps I still had. It means you no longer have to trust me and
can build your own binaries (after reviewing all code changes of course ).
See the next post in this thread for more information.
Single-channel sound issue
Context: In the previous version sound was played on a single channel when using stereo speakers/headphones.
Edit: it seems this has been fixed with 4.21.2.
This has been since identified as both an issue with the code and possibly an issue or incompatibility with FreeBSD's channel mixing.
In short (more details, see sources or ask me):
Unreal Engine tries to set up 6-channel audio, which is converted into 4-channel audio by SDL's OSS code.
These 4 channels are then mixed (presumably by FreeBSD) where both the left and right channel get mapped to the left stereo channel,
with the right stereo channel getting nothing but silence.
Solution (as root, with # replaced by your pcm number):
Setting this sysctl to 1 means "The pure sound stream will be fed directly to the hardware." without any conversion/matrixing.
Note: I suspect that playing 5.1 content on stereo headphones with this setting like this will result in sub-optimal (or garbled) audio.
Set back to 0 after playing.
Broadcast messaging
Context: Broadcasting works differently on FreeBSD compared to Linux, Mac and Windows. This meant that it was not possible to do LAN broadcasting.
Since previous version I have modified the code in such a way that this now works on FreeBSD as well. The only catch is that only the first interface with
broadcasting enabled will be used, however this should be ok for most people.
Check your ifconfig to see if broadcast is enabled in case you need to troubleshoot this:
Executable size
This isn't on my side, but it's important enough to mention it.
Epic has made some changes to the build system for Linux and I've done the same on the FreeBSD port.
In short: executables are now stripped, with debugging symbols in a separate file. Gone are the days of 1Gb+ executables (although they're still rather big).
I have tested that this means I can remove the debugging symbols to make the downloads slightly smaller.
Vulkan support
Technically there is no reason vulkan shouldn't work right now, although I haven't yet tested it (assuming I can get it to work on FreeBSD 11.2).
If you have it running already, try adding the "-vulkan" flag (without quotes) when starting the applications. It would be nice to know if it actually works.
Marketing
Yes, you read that right. While it completely doesn't matter, the previous version didn't really advertise it was running on FreeBSD.
This has now been changed, although it won't be visible in the precompiled demos I supply since the logging is disabled for performance reasons.
A ton of bugs and small improvements
Not much comment here, too many to remember anyway.
Demo & games
Demos have been compiled on FreeBSD 11.2-RELEASE, amd64 architecture. No guarantees that they'll run on 11.1 or 11.0.
EDIT: They were also tested on FreeBSD 12.0-RELEASE-p2, with the compat11x-amd64 package installed and ran well.
I have removed all debug symbols from the binaries to reduce size and most likely you won't need those. Should you experience crashes or something,
you can download the necessary files by appending "-debug" to the filename (before the extension).
InfiltratorDemo
Rather heavy tech demo to showcase some rendering features of the engine. Always nice to use as a little gpu roaster and on cold winter nights.
The official Epic documentation has more information on how it came to be.
There's also a FreeBSD 12 version, compiled with Unreal Engine 4.21.2 now.
PlatformerGame
More information can be found in the official Epic documentation.
ShooterGame
Thanks to the multicast code changes mentioned above, this game is now multiplayer in LAN as intended. Up to 8 players and bots can fight to the death!
The official documentation has more information about this sample.
StrategyGame
Rather fun little tower defense game, more information in the official documentation.
VehicleGame
Offroad vehicle game, beat your own time record over and over again! Or not
Practical stuff
In case you need to change keymappings (I don't use Qwerty but tried setting them back to original), change in:
<name>/Config/DefaultInput.ini e.g. ShooterGame/Config/DefaultInput.ini
* You will probably need an OpenGL 4.3-capable GPU and driver, although I've cooked for OpenGL 3 and vulkan as well
* If a demo starts on only part of your screen, try alt+enter twice (once to get out of fullscreen mode, second time to go back in)
Code on GitHub
of the changes.
What has changed
I've been busy taking on a a huge amount of loose ends, although that hasn't really translated in much more commits due to the way I work.
Most of these I won't talk about because they're rather boring, but here are some highlights:
3rd party builds
Context: I'm not talking about 3rd party libraries here, I'm talking about building UE4 on your personal computer or build farm!
You read that right, I've been putting a lot of time in removing many manual steps I still had. It means you no longer have to trust me and
can build your own binaries (after reviewing all code changes of course ).
See the next post in this thread for more information.
Single-channel sound issue
Context: In the previous version sound was played on a single channel when using stereo speakers/headphones.
Edit: it seems this has been fixed with 4.21.2.
This has been since identified as both an issue with the code and possibly an issue or incompatibility with FreeBSD's channel mixing.
In short (more details, see sources or ask me):
Unreal Engine tries to set up 6-channel audio, which is converted into 4-channel audio by SDL's OSS code.
These 4 channels are then mixed (presumably by FreeBSD) where both the left and right channel get mapped to the left stereo channel,
with the right stereo channel getting nothing but silence.
Solution (as root, with # replaced by your pcm number):
> sysctl dev.pcm.#.bitperfect=1
Setting this sysctl to 1 means "The pure sound stream will be fed directly to the hardware." without any conversion/matrixing.
Note: I suspect that playing 5.1 content on stereo headphones with this setting like this will result in sub-optimal (or garbled) audio.
Set back to 0 after playing.
Broadcast messaging
Context: Broadcasting works differently on FreeBSD compared to Linux, Mac and Windows. This meant that it was not possible to do LAN broadcasting.
Since previous version I have modified the code in such a way that this now works on FreeBSD as well. The only catch is that only the first interface with
broadcasting enabled will be used, however this should be ok for most people.
Check your ifconfig to see if broadcast is enabled in case you need to troubleshoot this:
> ifconfig
em0: flags=8843<UP,[B]BROADCAST,[/B]RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
...
Executable size
This isn't on my side, but it's important enough to mention it.
Epic has made some changes to the build system for Linux and I've done the same on the FreeBSD port.
In short: executables are now stripped, with debugging symbols in a separate file. Gone are the days of 1Gb+ executables (although they're still rather big).
I have tested that this means I can remove the debugging symbols to make the downloads slightly smaller.
Vulkan support
Technically there is no reason vulkan shouldn't work right now, although I haven't yet tested it (assuming I can get it to work on FreeBSD 11.2).
If you have it running already, try adding the "-vulkan" flag (without quotes) when starting the applications. It would be nice to know if it actually works.
Marketing
Yes, you read that right. While it completely doesn't matter, the previous version didn't really advertise it was running on FreeBSD.
This has now been changed, although it won't be visible in the precompiled demos I supply since the logging is disabled for performance reasons.
A ton of bugs and small improvements
Not much comment here, too many to remember anyway.
Demo & games
Demos have been compiled on FreeBSD 11.2-RELEASE, amd64 architecture. No guarantees that they'll run on 11.1 or 11.0.
EDIT: They were also tested on FreeBSD 12.0-RELEASE-p2, with the compat11x-amd64 package installed and ran well.
I have removed all debug symbols from the binaries to reduce size and most likely you won't need those. Should you experience crashes or something,
you can download the necessary files by appending "-debug" to the filename (before the extension).
InfiltratorDemo
Rather heavy tech demo to showcase some rendering features of the engine. Always nice to use as a little gpu roaster and on cold winter nights.
The official Epic documentation has more information on how it came to be.
There's also a FreeBSD 12 version, compiled with Unreal Engine 4.21.2 now.
PlatformerGame
More information can be found in the official Epic documentation.
ShooterGame
Thanks to the multicast code changes mentioned above, this game is now multiplayer in LAN as intended. Up to 8 players and bots can fight to the death!
The official documentation has more information about this sample.
StrategyGame
Rather fun little tower defense game, more information in the official documentation.
VehicleGame
Offroad vehicle game, beat your own time record over and over again! Or not
SHA512 (UE4.20-FreeBSD11.2-InfiltratorDemo-debug.tar.xz) = a59270d2d1bf12ea0565187cdbd94277bb5c3db58f9984c442b4200b9dcad6e7da4b16399db6b4496e7d8d4832e439527fd20fa961021336603a31ad7a3efcf3
SHA512 (UE4.20-FreeBSD11.2-InfiltratorDemo.tar.xz) = aad49c0d1d150d4bbaffaa5cd03c5f2865b50639ce19590f52ef68d118c54a9d3efa2a6fd1f581728f99a0201ced7c404bf343829c10d1df057c7a3b358974cf
SHA512 (UE4.20-FreeBSD11.2-PlatformerGame-debug.tar.xz) = da60bf5edd8f92cf9e739c191cebac2532ab10da388eb55afb0eb50e47a91c500bea9d6a74d4a8dd4d4306f50bb94615e9dbabc0e035d978142f968d9b8476f7
SHA512 (UE4.20-FreeBSD11.2-PlatformerGame.tar.xz) = 9e79b51532fd04244debff7518b3bd84487c22999446feb1ffd88aff30d5985bc98785de25c46254e39dc7e30491cbb266bc4974decb2eb30a7b7b7b2d895e56
SHA512 (UE4.20-FreeBSD11.2-ShooterGame-debug.tar.xz) = 8a9b6b24355a6f23058af4da105bf8b323d7799438650c515d5610abdd973036b0a16ae6cdd6c69eda4f7d614ff76d0705a1fa3348acc57d546093c55a417d3e
SHA512 (UE4.20-FreeBSD11.2-ShooterGame.tar.xz) = c42dd16078c7a1fc3fbb218c28ff1312795dbea2fa02e0dd9e167323d7f6fcd27de3ee611905f50f71964cc04a76f0914883d10b95938bcb2e30de111b4314ba
SHA512 (UE4.20-FreeBSD11.2-StrategyGame-debug.tar.xz) = 16f78e6eedd4e55fd64f40e5248517aaf2499f8ab4f3681ac42b41f0df44f21d03694a27809af4c5e3bfba6e671af97cb88e917161a236464d61c4674d186cfe
SHA512 (UE4.20-FreeBSD11.2-StrategyGame.tar.xz) = 189185bf09c91a8f3134efd7b07541466fb571a63d6d7c6c03bf7b9ab45ab0837062a8b5c88711a16907801be57d68028cc704bd07a45e23dfc35eefb7d3ff79
SHA512 (UE4.20-FreeBSD11.2-VehicleGame-debug.tar.xz) = 47d1fb37d9be80b87428741b3011d0e7e2c65fb6a5f927cdce4c63db39196d64bf12b87d9997e64e86b5a284535144fbbbb9e7f8d7c732cab6a9a2dd4056329c
SHA512 (UE4.20-FreeBSD11.2-VehicleGame.tar.xz) = 4d6692486884cd5e2468e6b9a0d92cba3aa36dfd2386901fc1014909d468c5f2dbf0eb7bc5c6876ed9a29fdd27a375c5227df0b3dea14852c726db4cb632aa47
SHA512 (UE4.20-FreeBSD11.2-InfiltratorDemo.tar.xz) = aad49c0d1d150d4bbaffaa5cd03c5f2865b50639ce19590f52ef68d118c54a9d3efa2a6fd1f581728f99a0201ced7c404bf343829c10d1df057c7a3b358974cf
SHA512 (UE4.20-FreeBSD11.2-PlatformerGame-debug.tar.xz) = da60bf5edd8f92cf9e739c191cebac2532ab10da388eb55afb0eb50e47a91c500bea9d6a74d4a8dd4d4306f50bb94615e9dbabc0e035d978142f968d9b8476f7
SHA512 (UE4.20-FreeBSD11.2-PlatformerGame.tar.xz) = 9e79b51532fd04244debff7518b3bd84487c22999446feb1ffd88aff30d5985bc98785de25c46254e39dc7e30491cbb266bc4974decb2eb30a7b7b7b2d895e56
SHA512 (UE4.20-FreeBSD11.2-ShooterGame-debug.tar.xz) = 8a9b6b24355a6f23058af4da105bf8b323d7799438650c515d5610abdd973036b0a16ae6cdd6c69eda4f7d614ff76d0705a1fa3348acc57d546093c55a417d3e
SHA512 (UE4.20-FreeBSD11.2-ShooterGame.tar.xz) = c42dd16078c7a1fc3fbb218c28ff1312795dbea2fa02e0dd9e167323d7f6fcd27de3ee611905f50f71964cc04a76f0914883d10b95938bcb2e30de111b4314ba
SHA512 (UE4.20-FreeBSD11.2-StrategyGame-debug.tar.xz) = 16f78e6eedd4e55fd64f40e5248517aaf2499f8ab4f3681ac42b41f0df44f21d03694a27809af4c5e3bfba6e671af97cb88e917161a236464d61c4674d186cfe
SHA512 (UE4.20-FreeBSD11.2-StrategyGame.tar.xz) = 189185bf09c91a8f3134efd7b07541466fb571a63d6d7c6c03bf7b9ab45ab0837062a8b5c88711a16907801be57d68028cc704bd07a45e23dfc35eefb7d3ff79
SHA512 (UE4.20-FreeBSD11.2-VehicleGame-debug.tar.xz) = 47d1fb37d9be80b87428741b3011d0e7e2c65fb6a5f927cdce4c63db39196d64bf12b87d9997e64e86b5a284535144fbbbb9e7f8d7c732cab6a9a2dd4056329c
SHA512 (UE4.20-FreeBSD11.2-VehicleGame.tar.xz) = 4d6692486884cd5e2468e6b9a0d92cba3aa36dfd2386901fc1014909d468c5f2dbf0eb7bc5c6876ed9a29fdd27a375c5227df0b3dea14852c726db4cb632aa47
Practical stuff
In case you need to change keymappings (I don't use Qwerty but tried setting them back to original), change in:
<name>/Config/DefaultInput.ini e.g. ShooterGame/Config/DefaultInput.ini
* You will probably need an OpenGL 4.3-capable GPU and driver, although I've cooked for OpenGL 3 and vulkan as well
* If a demo starts on only part of your screen, try alt+enter twice (once to get out of fullscreen mode, second time to go back in)
Code on GitHub
Last edited: