Unreal Engine 4.22 Released!

Multi-User Editing sounds like the right step forward for easier collaboration finally!

this thing is getting rediculous
might have to start messing with ue4 again

impressive work epic chaps and chapesses

Wheeeee I’ve made it as a contributor! :smiley:

Is screen space included that works for AMD?

There’s a bug in the Launcher version of the Editor that causes UHT to always run, causing iterative development to be slow.

After some digging around in UBT, it seems like it is caused by the following files being newer than the ReceiptFile:


Engine\Plugins\ScriptPlugin\Binaries\Win64\UnrealHeaderTool.modules
Engine\Plugins\ScriptPlugin\Binaries\Win64\UnrealHeaderTool-ScriptGeneratorPlugin.dll
Engine\Plugins\ScriptPlugin\Binaries\Win64\UnrealHeaderTool-ScriptGeneratorPlugin.pdb

EDIT: Quick fix is just to resave Engine\Binaries\Win64\UnrealHeaderTool.target (the ReceiptFile)

Yep, saw that in previews, reported it, got nowhere :frowning:

Has anyone been able to test out the new Multi-user editing? I am not sure where to get the server stuff to allow some of our artists to test this feature out

I’m getting a weird issue here. I’m getting more drawcalls in 4.22 than I am in 4.21.1. About 2k more to be exact.

Here is 4.21.1:

Here is 4.22:

What an extensive and impressive list! Many thanks Epic!!

I wonder, since you now have [FONT=Segoe UI]streaming to the Hololens, could that mean the same functionality can come to the Go/Quest at some point as well?

Could we get some clarification as to what a subsystem is and how to use it?

Say I want to replicate ShooterGameInstance from the ShooterGame example using subsystems. Is it as easy as just migrating all the ShooterGameInstance code into a class inheriting from UGameInstanceSubsystem? How do I “tell” the GameInstance that it’s using a certain subsystem without “modifying or overriding” an engine class?

I understand how to access the subsystem from C++/Blueprints, but I don’t understand when you’d want to use one or how to “point” a GameInstance/LocalPlayer/etc. at a certain subsystem, or what a subsystem is supposed to “do.”

Edit: Answering my own question here. It’s like a component versus an actor:

  • Each object which can have a subsystem has a FSubsystemCollection associated with it. This FSubsystemCollection takes a template, so to use my GameInstance example, UGameInstance contains FSubsystemCollection<UGameInstanceSubsystem>.
  • When the GameInstance Init function gets called, the FSubsystemCollection looks at everything which inherits from UGameInstanceSubsystem (or whatever subsystem it’s using at the time). If USubsystem->ShouldCreateSubsystem returns true, then it’ll create the associated subsystem as a new object, parented to whatever the FSubsystemCollection says its parent should be (UGameInstance, in our case). So in reality, all our subsystems get created as children of our main system.
  • The end result is that you can call UGameInstance->GetSubsystem with any valid child class of UGameInstanceSubsystem and it’ll return an instance of that class. It’s similar to having a component on an actor.
  • By itself, a subsystem doesn’t actually do anything. Nothing gets called on it, and it doesn’t override any functions. You have Initialize and Deinitialize to start and stop the subsystem, but otherwise it’s an open book as to what you do with it. It just makes code clearer for non-actor objects which could benefit from a component-like interface.

Really excited to play with this!

I noticed that the Blackmagic Decklink plug-in is still only available for 4.21. Will the new version (with support for 4K i/o) be released soon?

I’m also hoping that the documentation for the new Composure will be available soon, and hopefully a bit more in-depth than the current tutorials.

Thanks Tim! As I’m already spending half (or more) of my frame time in VR with shadows (both CSM and DF Shadows), I am definitely looking forward a lot to see how raytraced shadows perform in comparison.

I understand you don’t want to over-promise too much, but do you maybe have a list of priority regarding the order in which the currently unsupported engine features will get support for raytracing? Is VR relatively high up on that list, or not? It would just be nice to have a rough order to know what to expect, and what might make sense to add support for myself in the engine. I’m always reading through all commits in dev-rendering anyways, and I might just switch to dev-rendering or try to cherry pick it from there once the things I need are supported for raytracing in there, so which UE4 version it ends up in isn’t really that relevant to me.

Fortunately all games are still running above 60fps when packaged… So I won’t get fired yet.
But Epic Games, WTH did you do to your editor?? WTH is this, man ??
4.22 editor became unusable to me!

Similar here, now if you place a Text in a Blueprint Function Library which references to any StringTable (even if it’s open and loaded), the editor consistently crashes when trying to save. I reported it of course, but if anyone has a bit bigger project, I’d refrain from updating just yet.

What is Subsystem node?

I noticed that together with the newly released VS2019, I got two errors of C4800 (implicit conversion to bool, might cause loss of data), which, according to Microsoft docs, should only be a warning, not an error.
It stops me from compiling and I can’t reasonably fix this (dependent on a third party).

It seems like some “Treat warnings as errors” toggle is activated somewhere by default, but I can’t find where.
Any information on this?

@Mellnik Are you sure you’ve enabled the new Live++ feature in the project settings?

Had the same issue, fixed it by also installing 2017 side-by-side. This is probably not the answer you were hoping for though.

These new subsystems are something I’ve wanted for years, the engine really needed something like this.

I’ve had VS2017 installed and compiled it before upgrading to VS2019, which of course worked fine, but I don’t think you “fixed” it. I just think you used the VS2017 compiler instead of the 2019 one. I guess I can keep on using VS2017 for now but I’d rather not.