VictorLerp
(VictorLerp)
October 14, 2019, 8:57pm
1
WHAT
Subsystems in Unreal Engine are automatically instanced classes with managed lifetimes. These classes provide easy to use extension points, where the programmers can get Blueprint and Python exposure right away while avoiding the complexity of modifying or overriding engine classes. This week, lead programmer Chris Gagnon will discuss what Subsystems are, how to use them, their benefits, and the considerations you should keep in mind.
WHEN
Thursday, October 17 @ 2:00PM ET - Countdown
WHERE
Twitch
Youtube
RESOURCES
Programming Subsystems Documentation
Project Files
WHO
Chris Gagnon - Lead Programmer, Editor
Victor Brodin - Community Manager - @victor1erp ](http://twitter.com/victor1erp )
ARCHIVE
Programming Subsystems | Live from HQ | Inside Unreal - YouTube
2 Likes
Excellent choice for topic. Thank you!
Bombaholic
(Bombaholic)
October 17, 2019, 7:38am
3
why u make tutorial for total beginners?
Windefjord
(Windefjord)
October 17, 2019, 9:56am
4
Very kewl! Should be a good one.
srl3d
(srlake3d)
October 17, 2019, 9:45pm
5
@Bombaholic Epic actually does have free online training through their training portal via Unreal Online Learning - Unreal Engine
TheFlow3k
(TheFlow3k)
October 18, 2019, 11:17am
6
When and where the stream will be online to watch it when miss the live stream? I looked at twich and youtube but do not found it.
EDIT: I found it on twitch, but wondering why it has a completely different name
VictorLerp
(VictorLerp)
October 25, 2019, 6:25pm
7
krn1vor
(krn1vor)
December 15, 2019, 6:17pm
9
Thanks Victor and Chris - Useful - timely - good interchange - More like this on UE4 coding strategies
krn1vor
(krn1vor)
December 22, 2019, 12:11am
10
Chris Would it be possible for you to elaborate more on:
how you differentiate these subsystems from say the Physics or rendering subsystems
what would be the most appropriate uses for these types of subsystems and
could you list the top subsystems that you would convert/refactor from BP or component implementations ?
Em4Russ0
(Em4Russ0)
March 23, 2020, 4:54pm
11
hi does anybody know why there isn’t a GameModeSubSystem ? We placed a lot of code into the GameMode, because its lifetime was supposed to stop when leaving the map, and a subsystem over there would be great to have
AlexM
(AlexM)
March 26, 2020, 1:32am
12
Just finished watching this. Great talk. I really like it when the programmers roughly address various use cases from the users like that. Really helps give context.
I think one of the main TLDR takeaways from this is to go for a blueprint library when stateless and a subsystem when stateful.
HARLE_1
(HARLE¥)
April 11, 2020, 4:18pm
13
Thanks for the Tutorial.
I do have a question about Subsystems and Configuration files. I went ahead and created a Menu Extender to open the my Subsystem properties to allow for editing config properties. However, the SaveConfig and LoadConfig methods use different PathNames. The LoadConfig will use the standard [/Script/{ModuleName}.{SubsystemName}], but the SaveConfig uses [None.{SubsystemName}]. Is there a way to get these to match?
To note, I’m using this method to drive an in game save settings.
I know a different way to drive subsystem configurations with a WorldSettings, but I figured the config would be easier.
BAM5
(BAM5)
August 30, 2022, 3:16pm
14
Hi, I’ve been attempting to create a subsystem from a plugin, but running into issues with InitializeDependency
. It’s complaining that I shouldn’t be calling this function from outside Initialize
… but, I’m not. I am calling it from within Initialize
.
I’ve tried doing a build in VS22 with unreal closed, and when I open the editor I still get this complaint.
There seems to be some sort of bug with the subsystem collection code that initializes the subsystems where it forgets that it itself is initializing the subsystem.
Here’s the complaint from the output log.
UE4.27.2
LogOutputDevice: Error: === Handled ensure: ===
LogOutputDevice: Error: Ensure condition failed: bPopulating [File:D:/Build/++UE4/Sync/Engine/Source/Runtime/Engine/Private/Subsystems/SubsystemCollection.cpp] [Line: 169]
LogOutputDevice: Error: InitializeDependancy() should only be called from System USubsystem::Initialization() implementations.
LogOutputDevice: Error: Stack:
LogOutputDevice: Error: [Callstack] 0x00007ffee1ef1d59 UE4Editor-Engine.dll!DispatchCheckVerify<bool,<lambda_1e4bb3af60367dd38a263c797571e755> >() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Core\Public\Misc\AssertionMacros.h:164]
LogOutputDevice: Error: [Callstack] 0x00007ffee15b17fa UE4Editor-Engine.dll!FSubsystemCollectionBase::InitializeDependency() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Engine\Private\Subsystems\SubsystemCollection.cpp:170]
LogOutputDevice: Error: [Callstack] 0x00007ffea8f5729c UE4Editor-MachtModRuntime.dll!UUGCManagerSubsystem::Initialize() [G:\VRCrossTactical\Plugins\MachtModRuntime\Source\MachtModRuntime\Private\UGCManagerSubsystem.cpp:18]
LogOutputDevice: Error: [Callstack] 0x00007ffee158748a UE4Editor-Engine.dll!FSubsystemCollectionBase::AddAndInitializeSubsystem() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Engine\Private\Subsystems\SubsystemCollection.cpp:210]
LogOutputDevice: Error: [Callstack] 0x00007ffee15872c1 UE4Editor-Engine.dll!FSubsystemCollectionBase::AddAllInstances() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Engine\Private\Subsystems\SubsystemCollection.cpp:231]
LogOutputDevice: Error: [Callstack] 0x00007ffee1588095 UE4Editor-Engine.dll!FSubsystemModuleWatcher::AddClassesForModule() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Engine\Private\Subsystems\SubsystemCollection.cpp:324]
LogOutputDevice: Error: [Callstack] 0x00007ffee15b6269 UE4Editor-Engine.dll!FSubsystemModuleWatcher::OnModulesChanged() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Engine\Private\Subsystems\SubsystemCollection.cpp:270]
LogOutputDevice: Error: [Callstack] 0x00007ffee15a2e64 UE4Editor-Engine.dll!TBaseStaticDelegateInstance<void __cdecl(FName,enum EModuleChangeReason),FDefaultDelegateUserPolicy>::ExecuteIfSafe() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:731]
LogOutputDevice: Error: [Callstack] 0x00007ffee78d1af8 UE4Editor-Core.dll!TMulticastDelegate<void __cdecl(FName,enum EModuleChangeReason),FDefaultDelegateUserPolicy>::Broadcast() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Core\Public\Delegates\DelegateSignatureImpl.inl:955]
LogOutputDevice: Error: [Callstack] 0x00007ffee78f1665 UE4Editor-Core.dll!FModuleManager::LoadModuleWithFailureReason() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Core\Private\Modules\ModuleManager.cpp:547]
LogOutputDevice: Error: [Callstack] 0x00007fff3b136433 UE4Editor-Projects.dll!FModuleDescriptor::LoadModulesForPhase() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Projects\Private\ModuleDescriptor.cpp:643]
LogOutputDevice: Error: [Callstack] 0x00007fff3b14caba UE4Editor-Projects.dll!FPluginManager::TryLoadModulesForPlugin() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Projects\Private\PluginManager.cpp:1450]
LogOutputDevice: Error: [Callstack] 0x00007fff3b1361b0 UE4Editor-Projects.dll!FPluginManager::LoadModulesForEnabledPlugins() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Projects\Private\PluginManager.cpp:1525]
LogOutputDevice: Error: [Callstack] 0x00007ff66d5631c6 UE4Editor.exe!FEngineLoop::Init() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:4045]
LogOutputDevice: Error: [Callstack] 0x00007ffee6abdb50 UE4Editor-UnrealEd.dll!EditorInit() [D:\Build\++UE4\Sync\Engine\Source\Editor\UnrealEd\Private\UnrealEdGlobals.cpp:94]
LogOutputDevice: Error: [Callstack] 0x00007ff66d580e3b UE4Editor.exe!GuardedMain() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:154]
LogOutputDevice: Error: [Callstack] 0x00007ff66d5810ba UE4Editor.exe!GuardedMainWrapper() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:137]
LogOutputDevice: Error: [Callstack] 0x00007ff66d5840dd UE4Editor.exe!LaunchWindowsStartup() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:273]
LogOutputDevice: Error: [Callstack] 0x00007ff66d595984 UE4Editor.exe!WinMain() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:320]
LogOutputDevice: Error: [Callstack] 0x00007ff66d59853a UE4Editor.exe!__scrt_common_main_seh() [d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
LogOutputDevice: Error: [Callstack] 0x00007fff748c7034 KERNEL32.DLL!UnknownFunction []
LogOutputDevice: Error: [Callstack] 0x00007fff75aa2651 ntdll.dll!UnknownFunction []
Joyal
(Joyal)
May 26, 2023, 7:49am
15
@VictorLerp btw the URLs dont work anymore mentioned on the Youtube description for the forum and transcript
https://forums.unrealengine.com/unreal-engine/events/1673854
https://epicgames.ent.box.com/s/bgf6v7seq0rykfn9prceonbt1oibdsph
and also doesnt work the Project File in this thread