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

's BP Config File (.ini) Suite

’ Suite of Custom Config Section BP Nodes!

Using my new suite of BP nodes, you can create as many of your own custom config file sections as you want!

You can both create and retrieve ini variables with any name and fundamental type that you want!


**Supported Types:**

Bool
Int
Float
Rotator
Vector
Color
String

Why Use a Config Var?

Config vars have several benefits

  1. Persistent data storage without using a SaveGame struct or GameInstance, store simple quantities of data and player customization way! Data is stored between level loads and even after the current instance of the game is shut down.

So in way config vars have greater persistence than the GameInstance class!

  1. Player-Driven Customization, Players of your game can tweak the config vars that you make available for them on their hard disk, by editing the .ini file directly, just like AAA games! is the most significant advantage of using config files, and their real core purpose. :slight_smile:

  2. Simplicity, simpler to use than the BP SaveSystem (which is quite wonderful by the way), but not quite as powerful in that you can only store basic data types, not UObjects and Actors.

  3. **Organization, **you can create as many config header sections as you want using my nodes, organizing your custom settings way!


**Game.ini**

 of your custom created config vars and sections are stored in:

**Saved/Config/Windows/Game.ini**

Players can navigate to  location on their harddrive to edit your ini files just like any AAA game would allow!

Here's what my **Game.ini** file looks like after running some tests!



```


[DebugWindows]
ConsoleWidth=160
ConsoleHeight=4000
ConsoleX=-32000
ConsoleY=-32000

[/Script/UnrealEd.ProjectPackagingSettings]
BuildConfiguration=PPBC_Development
StagingDirectory=(Path="E:/MYPROJECT_DELETE")
FullRebuild=True
ForDistribution=False
UsePakFile=True
UseOBB_InAPK=False
CulturesToStage=en

[Victory]
BoolVar=True
VectorVar=X=1.000 Y=2.000 Z=9000.123
StrVar=Yay For Custom Config Vars!!!
FloatVar=234.000000


```



**Now you have fully featured ability to use config variables entirely in BP!**

Usage

Here’s an example usage!


**Latest plugin download on the UE4 Wiki: (7.91 mb) **
https://wiki.unrealengine.com/File:VictoryPlugin.zip

Victory Plugin on Media Fire

If your browser is not updating the Wiki download page to the most recent version, you can use my alternative Media Fire download link!

Please note clicking link will not start a download instantly, it will just take you to the Media Fire file description.

Enjoy!

:slight_smile:

Silly me. I had forgotten to account for the elevation’s negative range values. Works like a charm now! :slight_smile:

Ohh those custom config nodes are sexy , would it be possible to have custom .ini files in the future?

Wooho! Congrats The_Shane!

Allowing Developers to add new content after release has just become supported as of 4.8

Allowing people who buy your game to add their own meshes is not supported because the fbx pipeline runs only on the Editor side of the engine, which we are not allowed to utilize in packaged games.

I had a lot of work during the UE4 Beta to remake 3ds in UE4 (UE4 ), using the procedural mesh component.

Then you can even give people per-vertex creation capacity.

The challenge for me was generating good uv mappings via in-game tools :slight_smile:

But so far, I dont think there’s any legal way to utilize UE4’s fbx importing pipeline in a packaged game.

Using my own systems entirely I could make a human-readible / editible file format which thus allows you to make custom .ini files yes.

But why do you need lots of custom .ini files? What is your perceived or actual use case?

:slight_smile:

Save String Array To File

The previous String File IO could only save a single line of text, even if you put "
" into your string

So I’ve made a new node that lets you save multiple lines of text to file.

Each FString of the array is on its own line in the file!

See pic!

Enjoy!


**Latest plugin download on the UE4 Wiki: (7.91 mb) **
https://wiki.unrealengine.com/File:VictoryPlugin.zip

Victory Plugin on Media Fire

If your browser is not updating the Wiki download page to the most recent version, you can use my alternative Media Fire download link!

Please note clicking link will not start a download instantly, it will just take you to the Media Fire file description.

Enjoy!

:slight_smile:

I just wanted something like your node above “File IO Save String Array to File” where we could specify our own file name, so instead of using the game.ini we could have our own ones.

Hey , could you add a node like “Execute Console Command” with the addition that it has an output String which prints out the output? For example if I type “sg.ShadowQuality” in the console then the output I get is “sg.ShadowQuality = “3” LastSetBy: Console”. I just want to know the 3, so the info how a certain console variable is set at the moment :slight_smile: Would be possible?

Hey , wouldn’t it be possible for other people to download UE4, make assets, cook them and THEN load the .uassets into the game (instead of importing the .fbx)?

I’ve followed 's instructions for installing plug-in to the letter. In the editor, I get the nodes and I can test it - it works fine.
However, when I build the project for Windows, I get error: Failed to open descriptor file ‘…/…/…/mygame/mygame.uproject’

When I uninstall the plug-in, I can build the project and play it fine.
Any ideas how to fix ?

I just upgraded to the 4.8 source version but now whenever I package the game, it says VictoryPlugin failed to load because the module could not be found. I am using the latest version of the plugin and never happened before in the 4.7.6 source version. Any help would be appreciated.

Hi,
how can I use’s plugin in C++ code?

Yes as of 4.8 they have added support for you to be able to add both patch content as well as DLC content! The point that is fuzzy for me is whether people wanting to add content will need the entire original project, which means the original Dev needs to be willing to share the entirety of their project (which doesnt seem likely for a commerical game).

Epic had mentioned " packs" in an earlier release, I wonder if packs can more easily be used in any project as opposed to patchs/DLC that are indended to extend some original project.

The question is whether packs can be used by a packaged game!

Very interesting request, I’ll have to work on that!

@,

Thanks for helping out with question answering!

:slight_smile:

Two AI Nodes For You

**Get Closest Actor Of Class In Radius of Location

Get Closest Actor of Class In Radius of Actor**

These nodes are great for use with AI calculations!


**Latest plugin download on the UE4 Wiki: (7.91 mb) **
https://wiki.unrealengine.com/File:VictoryPlugin.zip

Victory Plugin on Media Fire

If your browser is not updating the Wiki download page to the most recent version, you can use my alternative Media Fire download link!

Please note clicking link will not start a download instantly, it will just take you to the Media Fire file description.

Enjoy!

:slight_smile:

Live as of May 1st, 2015

Dear Community,

I have the May Celebration node release for you today!

Community member has gifted us with over 30 new BP nodes for Math, Physics, and 3D Geometry calculations!

I highlighted my personal favorite nodes in green!


**UMG Anchor Conversion**
Please note you can now convert UMG Anchor coordinates to other coordinate spaces!

Snap To 3D Grid
You can use the Snap Node to snap any 3D space Vector to a grid size of your choosing!

So you could use node to to regulate the position of an in-game 3D positioning tool (like for RTS Games!) to a grid of your choosing, while still accounting for rolling hills of landscapes and big vertical differences!


**Convert Physics Linear Velocity**

Ever wonder how fast in **Km/hr** an in-game Unreal Engine physics ball was hurling through the air?

Ever want to know the **meters/second** speed of a falling physics-simulating box?

Or how about the **miles/hour** of your UE4 Physics Vehicle?

Well thanks to 's new node you can now easily convert the value that you get from GetPhysicsLinearVelocity of any physics-simulating body to a speed in the units of your choosing!

Here's is 's current list of available conversions!



```


/* Speed Units Enum. */
UENUM()
enum ESpeedUnit
{
	/* Centimeter / second (cm/s).  is default unreal velocity unit. */
	CentimeterPerSecond,

	/* Foot / second (ft/s). */
	FootPerSecond,

	/* Meter / second (m/s). */
	MeterPerSecond,

	/* Meter / minute (m/min). */
	MeterPerMinute,

	/* Kilometer / second (km/s). */
	KilometerPerSecond,

	/* Kilometer / minute (km/min). */
	KilometerPerMinute,

	/*Kilometer / hour (km/h). */
	KilometerPerHour,

	/* Mile / hour (mph). */
	MilePerHour,

	/* Knot (kn). Nautical mile per hour. */
	Knot,

	/* Mach (speed of sound) (M) at standard atm. */
	Mach,

	/* Speed of light. */
	SpeedOfLight,

	/* Yard / second. */
	YardPerSecond
};


```



BP Nodes for 3D Geometric Analysis!

Here are pics showing the complete list of the new 3D Geometry Nodes!

To see the full list, get the latest version of my plugin and type in “TK” and you will see the 30+ new nodes available to you!


**Thank You!**

**Thank you  for your contribution!**

These nodes are going to be extremely useful for a lot of people !

**Latest plugin download on the UE4 Wiki: (7.91 mb) **


**Victory Plugin on Media Fire**

If your browser is not updating the Wiki download page to the most recent version, you can use my alternative Media Fire download link!

Please note clicking  link will not start a download instantly, it will just take you to the Media Fire file description.

https://www.mediafire.com/?g6uf9kt5ueb2upj

Enjoy!

:)

Get Bones Below Bone

(6/23/15)

node returns the bones that are below the given bone in the Skeleton bone hierarchy!


**My C++ Code For You!**

I used a recursive function to traverse the skeleton tree and get  child bones, starting from the Starting Bone!



```


static int32 **GetChildBones**(const FReferenceSkeleton& ReferenceSkeleton, int32 ParentBoneIndex, TArray<int32> & Children)
{ 
	Children.Empty();

	const int32 NumBones = ReferenceSkeleton.GetNum();
	for(int32 ChildIndex=ParentBoneIndex+1; ChildIndex<NumBones; ChildIndex++)
	{
		if ( ParentBoneIndex == ReferenceSkeleton.GetParentIndex(ChildIndex) )
		{
			Children.Add(ChildIndex);
		}
	}

	return Children.Num();
}
static void **GetChildBoneNames_Recursive**(USkeletalMeshComponent* SkeletalMeshComp, int32 ParentBoneIndex, TArray<FName>& ChildBoneNames)
{	
	TArray<int32> BoneIndicies;  
	GetChildBones(SkeletalMeshComp->SkeletalMesh->RefSkeleton, ParentBoneIndex, BoneIndicies);
	   
	if(BoneIndicies.Num() < 1)
	{
		//Stops the recursive skeleton search
		return;
	}
	 
	for(const int32& BoneIndex : BoneIndicies)
	{
		FName ChildBoneName = SkeletalMeshComp->GetBoneName(BoneIndex);
		ChildBoneNames.Add(ChildBoneName);
		 
		//Recursion
		GetChildBoneNames_Recursive(SkeletalMeshComp, BoneIndex,ChildBoneNames);
	}
}

int32 UVictoryBPFunctionLibrary::**GetAllBoneNamesBelowBone**( USkeletalMeshComponent* SkeletalMeshComp, FName StartingBoneName,  TArray<FName>& BoneNames )
{
	BoneNames.Empty();
	
	if(!SkeletalMeshComp || !SkeletalMeshComp->SkeletalMesh)
	{
		return -1;
		//~~~~
	}
	 
	int32 StartingBoneIndex = SkeletalMeshComp->GetBoneIndex(StartingBoneName);
	 
	//Recursive
	GetChildBoneNames_Recursive(SkeletalMeshComp, StartingBoneIndex, BoneNames);
	     
	return BoneNames.Num();
}


```



**Latest plugin download on the UE4 Wiki: (7.92 mb) **


**Victory Plugin on Media Fire**

If your browser is not updating the Wiki download page to the most recent version, you can use my alternative Media Fire download link!

Please note clicking  link will not start a download instantly, it will just take you to the Media Fire file description.

https://www.mediafire.com/?g6uf9kt5ueb2upj

Enjoy!

:)

I had included a function to read console variables on my post with the math functions :stuck_out_tongue:

would allow you to read the current value of sg.ShadowQuality for example, is that what you meant John Alcatraz?

I don’t know if it works in a packaged game though, a better method might be required.

Thanks for that !

I will see about integrating those at my next opportunity

:slight_smile:

is perfect for editing config files now. :slight_smile:

is brilliant!
Thanks for the hard work.

Should work with http?

None of my URLs for PNGs work, it only works with local file paths, even though a link in thread through claims it does:

Hi, is great! Any of unlocking for the EQ settings in a Sound Mix as well? :slight_smile: would be perfect for dynamic audio filtering through BP.