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

If you want to save Vector data in human-readible format to your own custom file type, or to your own custom config file, you need to be able to convert back from the output of Vector to String back into a Vector from a String.

This is what my 3 new nodes allow you to do!

:slight_smile:

Rama

+1 for this, jumping AI is awesome!

@Rama… Was using your BP library for my FPS tutorial. In 4.9 used the sound stuff, worked great, in 4.10 though … victory sound volume change to set… then victory get sound volume to get it… if I ‘volume change’ to say .5 for a class, then ‘get sound volume’ for that class, it always returns -1.0 …

@ rama, I messed with the source and rebuilt… It works, but it is very strange… not sure what was going on… the FAudioDevice I kept and it always found that… if I keep the Props bit, what I set it to != what it returns right after setting it… but if I skip the props and just return SoundClassObject->Properties.Volume they do match exactly.



float UVictoryBPFunctionLibrary::VictoryGetSoundVolume(USoundClass* SoundClassObject)
{
     if (!SoundClassObject)
	{
		return -1;
	}
	return SoundClassObject->Properties.Volume;

}


seems to return it properly…

Thanks! Hee hee!



[QUOTE=arbopa;426640]
@Rama...   Was using your BP library for my FPS tutorial.  In 4.9 used the sound stuff, worked great, in 4.10 though ... victory sound volume change to set... then victory get sound volume to get it...    if I 'volume change' to say .5 for a class, then 'get sound volume' for that class, it always returns -1.0 ...
[/QUOTE]



[QUOTE=arbopa;426662]
@ rama, I messed with the source and rebuilt... It works, but it is very strange...  not sure what was going on... the FAudioDevice I kept and it always found that... if I keep the Props bit, what I set it to != what it returns right after setting it... but if I skip the props and just return SoundClassObject->Properties.Volume they do match exactly.



```


float UVictoryBPFunctionLibrary::VictoryGetSoundVolume(USoundClass* SoundClassObject)
{
     if (!SoundClassObject)
	{
		return -1;
	}
	return SoundClassObject->Properties.Volume;

}


```



seems to return it properly...
[/QUOTE]


Thanks for sharing this fix Arbopa!

Yes this new version does match the code I already have for VictorySoundVolumeChange, it was an oversight on my part to not change GetVolume to use the same new format.

Now both functions are using the same format!

**Thanks again for pointing this out!**

This fix will be in the next release of my Victory BP Library plugin!

♥

Rama

Sort Int and Float Arrays!

Dear Community,

I have 4 new BP nodes for you!


**Efficiently Sort Integer / Float Array**

Now you can easily and efficiently sort an integer or float array, with the smallest entry being put at index 0!

This modifies the original array, saving you from creating unnecessary duplicate array data.

So my BP sort node is very efficient!

![bbca2414d736997bb47f825479abe221c9369d8a.jpeg|1042x777](upload://qNgn3LnIAFwIWUcYraeqbrNSavw.jpeg)

Plus Equals and Minus Equals Integer Math Operators

Typically you have to Get an integer variable and then Set it with some value added/subtracted in order to modify an integer value.

I find this rather cumbersome, especially because in C++ there is the += and -= operators which make adding and subtracting from integers very fast!

Using my new BP Operators you can easily add a value to an integer or subtract a value from an integer!

Note my operator modifies the original value and returns it, so I cannot make these operators Pure. Execution pins are required because the value is getting modified.

a24b2aedf5eaa54e981a57d52b1f190e88861b58.jpeg


**The C++ Code Involved**

In order to make these 4 new nodes I took advantage of UPARAM(ref) which allows a BP variable to be modified in C++ and returned back to Blueprints.

I wrote a [wiki on UPARAM(ref)](https://wiki.unrealengine.com/How_To_Modify_Blueprint_Variable_References_In_C%2B%2B_Without_Copying)that you can enjoy!



```


void UVictoryBPFunctionLibrary::VictoryIntPlusEquals(UPARAM(ref) int32& Int, int32 Add, int32& IntOut)
{  
	Int += Add;
	IntOut = Int; 
} 
void UVictoryBPFunctionLibrary::VictoryIntMinusEquals(UPARAM(ref) int32& Int, int32 Sub, int32& IntOut)
{ 
	Int -= Sub;
	IntOut = Int; 
}


```


**Latest plugin download on the UE4 Wiki: **

**Latest plugin packaged binaries, Win32 Shipping and Win64 Development on UE4 Wiki: **


**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 this link will not start a download instantly, it will just take you to the Media Fire file description.

**Editor binaries and Packaged binaries in one file:**
   *Win32 Shipping and Win64 Development Supported*
https://www.mediafire.com/?ieovbd5l9d7yub2

Note on Packaging Victory Plugin

Enjoy!

:slight_smile:

Rama

Can you make efficient append array node, which is not invole modifiing original array. Just like math “+” but for all types of array’s.

In case you were unaware, the Unreal Engine got the following nodes as well :3

350d85ebdc.png

i know, you can even double click on those…

im asking about this, because my setupdosnt looks efficient.

problem is, i cannot make wildcard as local variable, which means even with this setup i would need custom function for each variable type.

You could make a Macro and use a Wildcard. That’s the kind of thing the Macro is for :slight_smile:

go on, show me how to do this WITHOUT modifying original array.

You asked for the following:

So this macro here should do the trick (No I didn’t test it, so please let me know):

Thats some next level programming skillsa.png

I know right? :wink:

Did it work for you as intended? :slight_smile:

android platforms can be?

Hi Rama,

I have everything put in the correct place. The Plugins folder under my project and the ini file edited. But getting this error when I load up that project. If I leave out the entry in the ini file, the project loads, so I assume there is an issue with that ini setting. My DefaultEngine.ini has this entry. I also removed +ActiveGameNameRedirects=(OldGameName=“TP_ThirdPersonBP”,NewGameName="/Script/gamename")
+ActiveGameNameRedirects=(OldGameName="/Script/TP_ThirdPersonBP",NewGameName="/Script/gamename") so that does not make any difference.

In the error message, it seems to be pointing to drives and folder that do no exist on my computer.

[/Script/Engine.Engine]
+ActiveGameNameRedirects=(OldGameName=“TP_ThirdPersonBP”,NewGameName="/Script/gamename")
+ActiveGameNameRedirects=(OldGameName="/Script/TP_ThirdPersonBP",NewGameName="/Script/gamename")
UnrealEdEngine=/Script/VictoryEdEngine.VictoryEdEngine

Unknown exception - code 00000001 (first/second chance not available)

"Assertion failed: Class [File:d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\public\uobject\UObjectGlobals.h] [Line: 1128]
NewObject called with a nullptr class

UE4Editor_Core!FDebug::AssertFailed() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\misc\outputdevice.cpp:374]
UE4Editor!NewObject<UUnrealEdEngine>() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\coreuobject\public\uobject\uobjectglobals.h:1130]
UE4Editor!FEngineLoop::Init() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launchengineloop.cpp:2076]
UE4Editor_UnrealEd!EditorInit() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\unrealed\private\unrealed.cpp:63]
UE4Editor!GuardedMain() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launch.cpp:133]
UE4Editor!GuardedMainWrapper() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor!WinMain() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:200]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
kernel32
ntdll

Thanks

Hey Rama! I’ve got another idea for a node :rolleyes:

The command “stat unit” is telling you the frame time for game thread, render thread and GPU. As far as I know there is no way yet to access that information from blueprint. A node like “GetLastFrameStatUnitTimes” with 3 float as output (game, render, GPU) would be really helpful since it would allow to easily display to the player whether he is limited by his CPU or GPU.

There are a few games that do this and I always thought its really helpful. Often players experience low fps and turn down graphics settings so that the game is super ugly, but in some games that are CPU limited thats not giving any advantage in fps, it just makes the game ugly.

Being able to tell the player (in the graphics settings) that he is CPU limited would help a lot in these situations. Such a node would also allow to run graphics setting detection scenes that automatically set fitting graphics settings. At the moment you can only access the frame time, so such an automatic routine would set the graphics settings to super low for someone who has an old CPU and a new GPU. Such a routine would only work well if it could access the different frame times.

I first expected the “stat unit” information to not be available in a packaged game with shipping configuration, but it works there too!

That’s a great idea John! I am adding it to my list!

:slight_smile:

Rama

Three New Key Rebinding Nodes, Remove Key Bind, Get All Key Binds For Key

Dear Community,

I’ve added 3 new nodes for your entertainment!

These nodes enhance my key binding BP nodes, by allowing you to remove axis or action mappings, and also get all axis/action mappings that use a particular key!

See pic!

80fb88efaed7bc6ec137e4cf50ad028047bc0bb1.jpeg


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

Not using the latest engine version? Check out my wiki section on which plugin release dates go with which engine version!

**Plugin Release Dates and UE4 Engine Versions**
https://wiki.unrealengine.com/Rama%27s_Vertex_Snap_Editor_Plugin#Plugin_Release_Dates_and_UE4_Engine_Versions

Victory Plugin Binaries for Packaged Games


**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 the mediafire version includes both the editor and packaged game binaries in the same file ♥ Rama

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

Donations

Donations can be sent to me via:
http://lightningfitness.org/donate/

Enjoy!

:slight_smile:

Rama

Rama - searching through this huge 33 page cumbersome thread to try and find an answer - can I use “Victory Save Pixels” node with a different file format that .png?

7e2b06bb38dca92aa25b0c60a5cca3903c2a373f.jpeg