Download

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

Anyone had any issues with Rama’s Plugin since 4.9.1 came out? Having some annoying crashes that only appeared with the latest update. Not sure if it could be plugin related or something else.

Hey Rama, first of all, I want to GREATLY thank you, for all what you done so far, you saved me a lot of time, since I’m not that great with c++, so yeah, thanks for that! :smiley:

But I come here to report a little bug, when I use your node called “Screen Shots rename move most recent”, it’s rename file extension to bmp, but screenshots taken in png, so after I load screenshot and make it texture2d, it’l be none. It can easily be fixed using your another node “Victory Load Texture 2D from file”, and choosing there png, even if file name extension is bmp.
So yeah, not a big deal since I found a fix, but it’l be neat if it worked perfectly good. :slight_smile:

Best regards.

You’re probably using my Create Object node? That is known to crash now, and I will be uploading a fix soon

In the meantime here is the correct node to be using now, which Epic released in 4.9:

[FONT=Comic Sans MS]Welcome to the forums normal_ST!

Great catch!

I’ve updated my plugin to rename files with .png extension



	//Generate new Full File Path!
	FString NewFullFilePath = NewAbsoluteFolderPath + "/" + NewName + **".png"**;
	 
	//Move File!
	return RenameFile(NewFullFilePath, ScreenShotsDir + "/" + OriginalFileName);
}



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

**Latest plugin packaged binaries, Win32 Shipping and Win64 Development on UE4 Wiki: **
https://wiki.unrealengine.com/File:VictoryPluginPackaged.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 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


**Note on Packaging Victory Plugin**

https://forums.unrealengine.com/showthread.php?3851-(39)-Rama-s-Extra-Blueprint-Nodes-for-You-as-a-Plugin-No-C-Required!&p=368790&viewfull=1#post368790

Enjoy!

:)

Rama

Rama, thanks for the fix it worked! But I want to ask about one more thing, can you add overwrite functionality to this node? Because if the file with “New name” name exist, it will do nothing.
Or “Remove File” node will be great actually :smiley:

Thanks for everything again, best regards.

PS: Oh and I actually wanted to try and add this functionality by myself, but I can’t understand how to properly open and compile your source codes.

Update: Oh and seems like your sort function or something else, take not the newly made screenshot, but the oldest available.

Hey Rama, have you thought about this?

I really don’t want to convert my project to c++ just for being able to package in Shipping 64bit :slight_smile:

Could you make this work with strings too? For example this one:

r.SetRes = "1600x900w"

:slight_smile:

How to Package My Plugin Without Affecting BP-Only Project

You can follow these steps:

  1. You can make a separate project that is c++,
  2. then package that project for shipping 64bit,
  3. then move the entire plugin folder, without Intermediate, over to your BP only project.

Intermediate folder is huge and not needed for distribution.

I am not getting paid to do anything of what I do with my Victory BP library so my time to cover every possible case is limited by my need to make money to eat and live and such.

Here is my donations page if you’d like to help remedy this matter:

Victory BP Library Donations
http://lightningfitness.org/donate/

I’ve now described how you or anyone can package for any platform and then include my plugin packaged binaries with their main, non-C++ project.

:slight_smile:

Rama

[COLOR="#0000FF"]Draw Thick Circle With Axis Control[/COLOR]

Fun node for you!

With this node you can draw circles!

And you can control their thickness, as well as how many points make up the circle!

You can also have axis control!

So you can draw circles horizontally, vertically, at angles, any way you like, with convenient BP node inputs!

See pics!

af68277ba636b7e04fc6af9b982616b2340402e4.jpeg


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

**Latest plugin packaged binaries, Win32 Shipping and Win64 Development on UE4 Wiki: **
https://wiki.unrealengine.com/File:VictoryPluginPackaged.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 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


**Note on Packaging Victory Plugin**

https://forums.unrealengine.com/showthread.php?3851-(39)-Rama-s-Extra-Blueprint-Nodes-for-You-as-a-Plugin-No-C-Required!&p=368790&viewfull=1#post368790

Enjoy!

:)

Rama

I want to give the user the ability to import their own meshes into my game via the mapbuilder. So they just place their wave ( *.obj ) file in a certain folder and see it available inside the game.

Dynamic Level Generation: Create Multiple Translated/Rotated Instances of a Level!

65784d2e1f959b9e9b4ea8e4d04f78a466d2e655.jpeg

Dear Community,

The code in this node was first presented by Epic staff, Marc Audy, as code used in Fortnite.

I’ve fully implemented the code as well as making it user-friendly.

In particular I’ve presented a solution for ensuring you can spawn multiple instances of the same UE4 level, by giving you an “Instance Number” that you should increment each time you spawn an instance of a level.

This allows me to enable you to easily create as many uniquely translated and rotated instances of a level as you want!

This is ideal for Dynamic Level Generation!


**Can Include Landscapes and Other Fancy Level Features!**

In my demo I included a landscape in my level "tile."

Level Scripting / Level Blueprint

You can also include level scripting that will run uniquely per level isntance!


**Victory Load Level Instance**

![LoadLevelInst_BPNode.jpg|1280x960](upload://eYkmDTa1zneQsdBlRoVY7LDd06i.jpeg)

C++ Code For You

Here’s my implemenation of the code Marc Audy originally presented to the Community, exactly as it is in my Victory BP Library:



bool UVictoryBPFunctionLibrary::VictoryLoadLevelInstance(
	UObject* WorldContextObject, 
	FString MapFolderOffOfContent, 
	FString LevelName, 
	int32 InstanceNumber,
	FVector Location, FRotator Rotation)
{
    if(!WorldContextObject) return false;
	 
	UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject);
	if(!World) return false;
	//~~~~~~~~~~~
 
	//Full Name
	FString FullName = "/Game/" + MapFolderOffOfContent + "/" + LevelName;
	  
	FName LevelFName = FName(*FullName);
    FString PackageFileName = FullName;   
	
    ULevelStreamingKismet* StreamingLevel = NewObject<ULevelStreamingKismet>((UObject*)GetTransientPackage(), ULevelStreamingKismet::StaticClass());
 
	if(!StreamingLevel)
	{
		return false;
	}
	
	//Long Package Name
	FString LongLevelPackageName = FPackageName::FilenameToLongPackageName(PackageFileName);
	
	**//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// Here is where a unique name is chosen for the new level asset
	//    Ensure unique names to gain ability to have multiple instances of same level!
	//	   <3 Rama**
	
	//Create Unique Name based on BP-supplied instance value
	FString UniqueLevelPackageName = LongLevelPackageName;
	UniqueLevelPackageName += "_VictoryInstance_" + FString::FromInt(InstanceNumber);
     
    //Set!
    StreamingLevel->SetWorldAssetByPackageName(FName(*UniqueLevelPackageName));
	**//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
	 
    if (World->IsPlayInEditor())
    {
        FWorldContext WorldContext = GEngine->GetWorldContextFromWorldChecked(World);
        StreamingLevel->RenameForPIE(WorldContext.PIEInstance);
    }
 
    StreamingLevel->LevelColor = FColor::MakeRandomColor();
    StreamingLevel->bShouldBeLoaded = true;
    StreamingLevel->bShouldBeVisible = true;
    StreamingLevel->bShouldBlockOnLoad = false;
    StreamingLevel->bInitiallyLoaded = true;
    StreamingLevel->bInitiallyVisible = true;
 
	//Transform
    StreamingLevel->LevelTransform = FTransform(Rotation,Location);
 
    StreamingLevel->PackageNameToLoad = LevelFName;
          
    if (!FPackageName::DoesPackageExist(StreamingLevel->PackageNameToLoad.ToString(), NULL, &PackageFileName))
    {        
        return false;
    }
  
	//~~~
	
	//Actual map package to load
	StreamingLevel->PackageNameToLoad = FName(*LongLevelPackageName);
	
	//~~~
	
    // Add the new level to world.
    World->StreamingLevels.Add(StreamingLevel);
     
    return true;
 }	



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

**Latest plugin packaged binaries, Win32 Shipping and Win64 Development on UE4 Wiki: **
https://wiki.unrealengine.com/File:VictoryPluginPackaged.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 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


**Note on Packaging Victory Plugin**

https://forums.unrealengine.com/showthread.php?3851-(39)-Rama-s-Extra-Blueprint-Nodes-for-You-as-a-Plugin-No-C-Required!&p=368790&viewfull=1#post368790

Enjoy!

:)

Rama

The new node looks very interesting!

So if you have an instance of a level, will it maintain all the same characteristics of that level at all times, or only the characteristics that existed when you spawned the instance?

So in my case, if my main map is the primary map, and I spawn map instances to handle world wrap, will the instances update automatically or will I have to respawn them to get updated info into them?

My guess is that it will be only the meshes ( maybe materials too ) because there is only one graph for the level’s logic in blueprint, and it can’t have duplicated variables.

load level instance = Rama the hero! :slight_smile:
you finally implemented an essential part of my wip strategy game, thanks!
and thanks to the guys dealing with it on the other 2 threads, it is worthy to read them to understand what happens:

Pretty sure only characteristics that existed at the time of spawning get updated, the actors and the level BP become unique after being instanced!

This had advantages if you want to create variations of each level instance, like rotating them in different ways or activating level BP “variants” that run on a simple integer/enum

:slight_smile:

Rama

Woohooo!

You’re welcome Sivan!

Rama

That is what I figured, but the instances mirroring the state of the parent would have been a nice bonus! :slight_smile: Being able to blanket copy the existing level and respawning it to get the most current game state should work well enough.

Get All Hardware-Based Screen Resolutions, Including Refresh Rates (Hertz)

d4117a7a04ee5f316cbeae35c6e681739e2c00f8.jpeg

Enjoy getting the screen resolutions of the end user’s hardware in your game now!

It is obtained from the user’s display adapter directly! No guessing or preset values!

Works in packaged games!


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

**Latest plugin packaged binaries, Win32 Shipping and Win64 Development on UE4 Wiki: **
https://wiki.unrealengine.com/File:VictoryPluginPackaged.zip

Enjoy!

:)

Rama

Rama FTW XD

Rama I have a good idea for a node.
If you can take the vertices positions from an obj you can use them to generate mesh ( still without UV ) but this can be a really cool feature.
It will give the user to add obj meshes to packaged game.

Procedure.
1.Obj->Extract vertices locations.
2.I’m pretty sure you are familiar with this one :slight_smile:

We will be able to use a projected material on it.

This is an inside of an obj file file exported from blender ( a simple cube ) Just used a text editor to open it:


# Blender v2.75 (sub 0) OBJ File: ''
# www.blender.org
mtllib untitled.mtl
o Cube
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -0.999999
v 0.999999 1.000000 1.000001
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 1.000000 0.000000 0.000000
vn -0.000000 -0.000000 1.000000
vn -1.000000 -0.000000 -0.000000
vn 0.000000 0.000000 -1.000000
usemtl Material
s off
f 1//1 2//1 3//1 4//1
f 5//2 8//2 7//2 6//2
f 1//3 5//3 6//3 2//3
f 2//4 6//4 7//4 3//4
f 3//5 7//5 8//5 4//5
f 5//6 1//6 4//6 8//6

It seems like it can work, All you need to do is to make a function that will parse these kind of tables.

So what do you say bro?! :slight_smile:

Seems like it can work, why are there not as many vn’s (vertex normals) as verticies?

I am confused as to whether this will really be useful without UV mapping.

I got really far making my own version of 3ds Max within UE4, until I hit UV mapping :slight_smile:

I could dynamically place and move verticies, create edges, and triangles, and then turn this into a colliding procedurally generated mesh.

The complexity of doing the UV mapping gave me quite the pause though :slight_smile:

Stuff just doesnt look good without UV mapping

What is your solution for this, you mention projecting material? What do you mean?

:slight_smile:

Rama