(39) Rama's Extra Blueprint Nodes for You as a Plugin, No C++ Required!

Forget that! Works!

Just got the rebuild working, took about 5 mins but works fine now!


4.6 Victory Plugin works like a charm out of the box, switched to from the previous version. I was using only one node, though.





Have fun today!


I’ve noticed that the ‘Victory Get Victory Input’ function isn’t a blueprint node anymore. Is this an error or is it not needed anymore?

‘Warning Could not find the function ‘VictoryGetVictoryInput’ called from Victory Get Victory Input’

http://puu.sh/digLy/c6a57d8615.png - Relevant

There doesn’t seem to be a download link to the 4.6 version. The most recent version is still showing as having been uploaded on Nov 15.

Victory Get Victory Input Node Restored

I have uploaded a new version that has this node restored!

I had temporarily disabled it while learning how this node would have to work in 4.6.

I’ve now reimplemented this node in 4.6!

Download Page



New Sound Node For you

Keep in mind you can now get/set the volume of any sound class to any value you want, anywhere in BP, any time!




Rama’s Suite of Powerful UMG Nodes

Here are the 3 core BP nodes that I’ve been using to make all of my complicated interacting UMG menus, including an in-game file browser and a menu that allows you to change the materials on any skeletal mesh, while in-game!

These nodes are available to you now!

**Get All Widgets of Class**

Allows you to not have to store references everywhere to your widgets, making it easy to interact with the Player Controller and My Character blueprints :) 

Also makes it easy to remove a loading screen after a level transition, without storing refs in Game Instance class

Remove All Widgets Of Class

You can find and remove any widget any time this way, no matter where you are in BP! (here I am in the Level BP)

Rama Tip:
If you make a general superclass for all your widgets (Reparent to a blank UserWidget of your own making), you can clear your entire UI system from the viewport with a single call to RemoveAllWidgetsOfClass, supplying the class that is your super class for all your user widgets!

So lets say you have 3 user widgets that you made, make a 4th that is blank, reparent your existing 3 to your new empty 4th widget (“WidgetMaster” for example).

Now you can just call RemoveAllWidgetsOfClass on your new 4th widget, WidgetMaster, and all 3 of your existing widgets will be removed automatically from the viewport!

**Is Widget Of Class In Viewport**

Take action based on the dynamic lookup of whether a certain widget is currently visible!

No need to store refs or bools anywhere, just do a dynamic look up that is lightning fast!




:slight_smile: you should add some better random number generator in this, as default ue uses rand() it would be better to use a random device with a kind of engine and the use of a distribution.

#include <random>
std::random_device rd;
std::mt19937 gen(rd());

int IntRand(){
    std::uniform_int_distribution<> dis(0, 1);
    return dis(gen);
double DoubleRand(){
    std::uniform_real_distribution<> dis(0, 1);
    return dis(gen);

int IntRandRange(int a, int b){
    std::uniform_int_distribution<> dis(a, b);
    return dis(gen);
double DoubleRandRange(float a, float b){
    std::uniform_real_distribution<> dis(a, b);
    return dis(gen);
bool BoolRand(){ 
     std::bernoulli_distribution dis(0.5);
     return dis(gen);

That’s a neat idea!

But what specific issue are you having with the current random generator?

Also, if you give me the whole code,** tested in the current version of my Victory BP Library**, then I can review it and add it to Victory Master Branch (hee hee!)

Great to hear from you SaxonRah!


Monte Carlo, personally. but also it seems that anytime i see someone use rand() they almost always use the modulo operator on it, which does horrible horrible things. since rand generates from 0 to RAND_MAX and all it need to be is in-between them, rand()'s quality is never check, ie it can always return the same number, which conforms to rand()'s implementation. The quality of rand’s distribution is so poorly implemented that low order bits cycle in very short amounts. Also rand() in general is a terrible psudo-random number generator because if its seed is know, prediction is inevitable…

When people use rand() most of the time it’s psudo-ness is fine in most applications, but in games, if we don’t want a loaded dice roll we must use something other than rand().

I’ll get working on the integration Rama!

hehe, good to see you aswell!

As soon as it is ready and tested in packaged game as not having any weird dependencies that prevent packaging, I will be happy to add it to Victory Master Branch and give you credit !



yeah for Rama and his RSUMG! :slight_smile:

Let’s see if anyone can guess what the S stands for :wink:


Rama Sutra? :slight_smile:

Hee hee, close!

To give a better hint,

RUMG, the R stands for “Rama’s”

UMG is just UMG


the S is the only part left to figure out :slight_smile:


Hey Rama! Awesome plugin! I’ve been using it in my project and it has so much extra nodes that are incredibly helpful! Thanks for that! I’ve run into a bit of a problem though, when I try to package the game for testing on multiple computers I get this error message:

I’m guessing I need to put the plugin somewhere in the packaged game folders, I’ve tried putting it in Projectname/Plugins as well as Engine/Plugins, but still that error message appears so I figured I would ask!

Are you using the current available plugin ? ( Newest ). Are you using UE4.6 and not an older version ? This is supposed to be in :
This is a path for one of the files :
Check if you are not missing anything in that path.

New Node Contributed by Sahkan!

In the most recent version of my Victory BP Library Plugin is a node contributed by Sahkan!

This node lets you switch the player HUD during runtime!

Thanks Sahkan!



Thats easy, the S stands for Super. :smiley: