Just look at the BPs, they shipped all of them with the dev tools so they are directly accessible to you, the “blueprints” are just subclasses of the base c++ class (item/creature) to set variables, there is literally no Blueprint scripting nodes in any of it except for the HUD (fine) and AI (using states). In fact I don’t think any of them know how to even use the blueprint scripting system based on the template mod they shipped out as it is an in efficient rats nest of nodes, so if anything they are lacking in knowledge with the very thing you accuse them of solely using, also please don’t say that blueprints are converted to c++ again.
You are showing a direct lack of understanding of UE4 by declaring any of this as a problem. You are totally correct that there is a blueprint for each item and creature in the game, they expose public variables to the designers to change values in, however there is NO game logic in any of them as that is all handled in c++. They are using the engine as it was meant to be used currently.
You can even directly use Stat Unit in game right now since it has console accessible and see that the game isn’t CPU limited at all, so even if they were doing what you claim, the problem STILL isn’t there, but would be with the rendering pipeline that they set up and their Global Illumination.
I played ARK and the first thing I noticed after the dozen shootergame.exe crashes ( btw any programmer can rename shootergame to whatevergame in a matter of seconds) when I looked at the files was that it was just full of slopped together unoptimized marketplace assets. **** piled on top of ****.
It’s performance is bad because of it’s core design, skill level of developers and it’s use of unity assets sold as UE4 assets with wasted memory on oversized textures.
But hey, they made enough millions to either fix the performance issues or vanish with all the money. So good for them! (so not jelly) Either way I guess that makes this is a pointless discussion.
You have multi-threading out of the box on a per object basis, just set this in BP or somewhere in code on your tick-able object…
bAllowConcurrentTick = true;
Bam, multi-threaded per-frame actors or component ticks, seriously how hard was that?
They even block the render thread for you so that you can be sure your async tick is done in the current frame. Threads that block the game thread are of course not the place for long running processes, and just be sure your tick function doesn’t access anything it shouldn’t, and be sure to make sure to guard your critical sections with atomics, and keep your async thread out of places it shouldn’t be.
I know this thread is ancient, but maybe someone else stumbles upon it following the same bread crumbs.
As far as I can tell, bAllowConcurrentTick is for Component Actors only.
For Actors the property would be PrimaryActorTick.bRunOnAnyThread = true (it is false by default).
After enabling it in a test, my average CPU usage doubled with noticeably more cores working.
I don’t know if it is available for Blueprint actors, but exposing this would be a no brainer (e.g. create C++ actor class add the line to its constructor and parent BP actor off of it).