Vega Threading - BP Multithreading


**
Marketplace: Link

Changelog:

v1.0, inital release.

Description:

**VegaThreading is a simple Blueprint library designed for the easy and seamless creation of multi-threading applications without touching a line of C++.

Documentation:

https://drive.google.com/file/d/0BxHVvgthGKyScDI1NVQ0azhxOWs/view?usp=sharingPlanned Future Updates:

  •  Utilize     more concurrency features to increase thread control and thread     safety. 
    
  •  Support     for full procedural generation using helper functionality.
    

Any questions, feature requests, bug reports or issues, please do not hesitate to contact me here or by my email,

Thank you.

I’ve been testing the threading node for Vega and I have to admit I can’t freakin’ live without it now. One of the few things I missed about going from C++ to BPs was this node - this should have been a built in feature. Whether you know it or not, you’ll need this node one day. Go get it.

You probably want to change the yellow font text in the forums to something else as it’s almost impossible to read it.

Thank you, I sometimes forget that the dark theme isn’t default

The plugin has now been released to the market.

https://goo.gl/3CPB72

this looks great nice work will pick it up…have you tested on android with also nativize BP assets and are there any pitfalls that could happen by using it on android that you know of just asking because my primary use would be for android

I’ve tested it and it works but I’m about to undergo even more testing to help with support and additional functionality for specific platforms such as Android.

Their shouldn’t be any pitfalls relating the plugin as it checks for threading support and acts/reacts accordingly but some API is blocked by the engine itself and classified as thread unsafe, this is something I’ll query the developers about as such changes such as making specific API thread safe has been discussed in the past.

Having trouble… my worker thread runs for a random amount of time, usually few seconds, and then just stops.

I have exposed alot more options and preset the current options to fix this issue,

&stc=1

The update is being processed now and will be out soon including documentation on what everything does and means.

Hi,
bought the plugin today and just letting you know it was not not being included in my packaged game.

After reading this tutorial I figured out it’s because of this in the .uplugin file:


"Name" : "VegaThreads",
"Type" : "Developer"

My VegaThreads.uplugin file now looks like this and packages fine (changed type to runtime):



{
	"FileVersion" : 3,
	"Version" : 1,
	"VersionName" : "1.0",
	"FriendlyName" : "VegaThreads",
	"Description" : "Implementation of multitheading for blueprints",
	"Category" : "Multithreading",
	"CreatedBy" : "",
	"CreatedByURL" : "",
	"DocsURL" : "",
	"MarketplaceURL" : "com.epicgames.launcher://ue/marketplace/content/9a0ebab90ae64fb3bbfaeb01cf6fe32f",
	"SupportURL" : "",
	"EnabledByDefault" : true,
	"CanContainContent" : false,
	"IsBetaVersion" : false,
	"Installed" : true,
	"RequiresBuildPlatform" : false,
	"Modules" :
	
		{
			"Name" : "VegaThreads",
			**"Type" : "Runtime",**
			"LoadingPhase" : "Default",
			"WhitelistPlatforms" :  "Win64", "Win32", "Mac" ]
		}
	]
}

Greets!

Hi, Raisteu,
I got the same problem too. However after change the .uplugin file as you told, it’s getting worse: I cant package my project now, even I change back to the original settings, It still not works… Did I missed something?

Here is the output log:

UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: LINK : fatal error LNK1181: �޷��������ļ���D:\Program Files (x86)\Epic Games\4.14\Engine\Plugins\Marketplace\VegaThreads\Binaries\Win64\UE4-VegaThreads.lib��
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: ERROR: UBT ERROR: Failed to produce item: E:\Unreal Project\ThreadTest\Binaries\Win64\ThreadTest.exe

I Probably should have mentioned you need to compile the plugin again, did you do that?

You should be able to compile it yourself by:

opening a command prompt (start menu and type cmd)
type the following command:


"**E:\Program Files\Epic Games\4.14\Engine\Build\BatchFiles\runuat**" BuildPlugin -Plugin="**E:\Program Files\Epic Games\4.14\Engine\Plugins\Marketplace\VegaThreads\VegaThreads.uplugin**" -Package=C:\PluginOutputDir\ -Rocket -TargetPlatforms=Win32+Win64


replace E:\Program Files\Epic Games\4.14\Engine\Build\BatchFiles\runuat to your install directory
replace E:\Program Files\Epic Games\4.14\Engine\Plugins\Marketplace\VegaThreads\VegaThreads.uplugin to where the plugin is installed

Afterwards a new folder in C:\PluginOutputDir\ should contain the following:

build.PNG

Now copy all those files back to where the plugin is installed (E:\Program Files\Epic Games\4.14\Engine\Plugins\Marketplace\VegaThreads\ in my case).
If the compiling fails I’m afraid you’re going to have to wait till the author updates the plugin.

Wow, You are Cool! Thank you telling me these details. My problem was solved, too!

I got some errors at the end of compiling, but the output files are work correctlly with Unreal.

Here is the error log:

Program.Main: ERROR: AutomationTool terminated with exception: AutomationTool.AutomationException: Failed to find command -Rocket

Anyway, I can continue my work now.

Cheers!

Using exactly this setup (being called on beginplay) the thread and its end callback both run exactly once. If I understand correctly, this should set the thread to loop, but it only runs multiple times if I Fire Thread from Tick, and it still stops after a few seconds.

Im really interested in this “fundamental” bp lib, but have the problems reported here and on the marketplace page been sorted out? I dont want to spend days or weeks using this just to hit a wall.

Is there any plans for 4.16 for this plugin?

Great Plugin, thx! i love it.

Right now i have a problem figuring out its mechanics. Because the documentation only covers basic setup, i don’t understand some of the inputs of the “Fire Thread”-Node. For example i managed to make three parallel threads running, which increased per Tick calculations to about 300%, which kind of makes sense. BUT: when i turn on “loop thread” on one of these threads it makes a 3000% increase of calculations per tick… ok, nice… and when i turn on loop thread on the second or all “Fire Thread”-Nodes, the editor always crashes instantly when starting/simulating. So i have no idea whats going on and what should be considered when changing “Fire Thread”-Node-Inputs.

Also: how is it max capped in relation to CPU-Cores? is one thread always reserved for game thread so i can utilize only ( cores * 2 threads per core - 1 ) threads by vega threads? become threads automatically queued when i try to run more threads than my CPU has or might this cause crashes so i should always check “Get Thread Count” against the computers CPU-capabilities before running a new thread?

Official ETA for 4.16 would be nice.
I managed to compile it to run fine in PIE, but have problems with packaging, maybe someone can help out?


UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "class TMap<class FName,class FName,class FDefaultSetAllocator,struct TDefaultMapKeyFuncs<class FName,class FName,0> > & __cdecl GetConvertedDynamicPackageNameToTypeName(void)" (?GetConvertedDynamicPackageNa
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "void __cdecl UObjectCompiledInDefer(class UClass * (__cdecl*)(void),class UClass * (__cdecl*)(void),wchar_t const *,bool,wchar_t const *,void (__cdecl*)(class TMap<class FName,class FName,class FDefaultSetA
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "void __cdecl UObjectCompiledInDeferEnum(class UEnum * (__cdecl*)(void),wchar_t const *,class FName,bool)" (?UObjectCompiledInDeferEnum@@YAXP6APEAVUEnum@@XZPEB_WVFName@@_N@Z) referenced in function "public:
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2001: unresolved external symbol "public: virtual void __cdecl UObjectBaseUtility::AddToCluster(class UObjectBaseUtility *)" (?AddToCluster@UObjectBaseUtility@@UEAAXPEAV1@@Z)
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(Module.VegaThreads.cpp.obj) : error LNK2001: unresolved external symbol "public: virtual void __cdecl UObjectBaseUtility::AddToCluster(class UObjectBaseUtility *)" (?AddToCluster@UObjectBaseUtility@@UEAAXPEAV1@@Z)
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UObject::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UObject@@CAPEAVUClass@@PEB_W@Z) referenced in function "public: static class UClass * __cdecl
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2001: unresolved external symbol "public: virtual void __cdecl UObject::BuildSubobjectMapping(class UObject *,class TMap<class UObject *,class UObject *,class FDefaultSetAllocator,struct TDefaultMapKeyFuncs<class UObject *,class UObject *,0
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(Module.VegaThreads.cpp.obj) : error LNK2001: unresolved external symbol "public: virtual void __cdecl UObject::BuildSubobjectMapping(class UObject *,class TMap<class UObject *,class UObject *,class FDefaultSetAllocator,struct TDefaultMapKeyFuncs<class UObject *,class UObject *,0> >
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UFunction::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UFunction@@CAPEAVUClass@@PEB_W@Z) referenced in function "public: static void * __cdecl UFun
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UDelegateFunction::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UDelegateFunction@@CAPEAVUClass@@PEB_W@Z) referenced in function "public: static voi
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UEnum::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UEnum@@CAPEAVUClass@@PEB_W@Z) referenced in function "public: static void * __cdecl UEnum::opera
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UClass::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UClass@@CAPEAV1@PEB_W@Z) referenced in function "public: static class UClass * __cdecl UClass::
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UPackage::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UPackage@@CAPEAVUClass@@PEB_W@Z) referenced in function "public: static class UClass * __cdec
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UByteProperty::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UByteProperty@@CAPEAVUClass@@PEB_W@Z) referenced in function "public: static void * __cd
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UIntProperty::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UIntProperty@@CAPEAVUClass@@PEB_W@Z) referenced in function "public: static void * __cdec
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UFloatProperty::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UFloatProperty@@CAPEAVUClass@@PEB_W@Z) referenced in function "public: static void * __
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UBoolProperty::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UBoolProperty@@CAPEAVUClass@@PEB_W@Z) referenced in function "public: static void * __cd
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UObjectProperty::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UObjectProperty@@CAPEAVUClass@@PEB_W@Z) referenced in function "public: static void *
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UMulticastDelegateProperty::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UMulticastDelegateProperty@@CAPEAVUClass@@PEB_W@Z) referenced in function "
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UEnumProperty::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UEnumProperty@@CAPEAVUClass@@PEB_W@Z) referenced in function "public: static void * __cd
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: UE4-VegaThreads.lib(VegaThreads.generated.cpp.obj) : error LNK2019: unresolved external symbol "private: static class UClass * __cdecl UBlueprintFunctionLibrary::GetPrivateStaticClass(wchar_t const *)" (?GetPrivateStaticClass@UBlueprintFunctionLibrary@@CAPEAVUClass@@PEB_W@Z) referenced in function "pu

Edit: Works with 4.17 without the above errors.

Is this plugin still alive?

Well, I think we can consider this plugin dead. There wasn’t a 4.16 update, there wasn’t a 4.17 update. I regret spending money on it, since I bought it right before 4.16 came out.