Announcement

Collapse
No announcement yet.

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

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    How about nodes that handle In-app purchases or maybe tutorials on the subject...? I'm clueless on how to use the nodes provided and the documentation doesn't add up nor does the posts on the forums.

    Comment


      Boy am I glad I randomly stumbled onto this thread. Rama your custom nodes might just allow me to make the game I have been wishing I could make. Thank you so much .

      Comment


        Hi Rama!

        I'm packaging my game to win32 shipping and I have already merged your victorypluginpackaged contents into the original victoryplugin folder.
        I'm getting this error while trying to play the packaged game:

        Failed to open descriptor file
        '../../../Gamename-Win32-Shipping/Gamename-Win32-Shipping.uproject'

        Any ideas?
        Thanks.
        Ben Halpin - Lead Developer - Lazy Games
        Overdosed on Early Access: Overdosed - A Trip To Hell
        Give a 'like' on fb: https://www.facebook.com/Properlazygames Give a 'follow' on twitter: https://twitter.com/ProperLazyGames And why not check out www.lazygames.org

        Comment


          This also happens without the plugin...

          https://answers.unrealengine.com/que...ile-error.html

          Tim
          Tim Bonnke / Owner
          build | Architektur-Visualisierung
          3d Visualization + Interactive Content
          architektur-visualisierung.build

          Comment


            Originally posted by ChristianV View Post
            Boy am I glad I randomly stumbled onto this thread. Rama your custom nodes might just allow me to make the game I have been wishing I could make. Thank you so much .
            You're welcome ChristianV!

            Yay!

            Welcome to the Forums!



            Rama
            100+ UE4 C++ Tutorials on the UE4 Code Wiki, including UE4 Multi-Threading!

            UE4 Marketplace: Melee Weapon Plugin & Compressed Binary Save System Plugin | Rama's C++ AI Jumping Videos | Vertex Snap Editor Plugin

            Visit www.ue4code.com to see lots of videos about my C++ Creations! ♥ Rama

            Comment


              Rama's ISM Editor is Back! Fully Operational in Plugin! Packages!

              Rama's Instanced Static Mesh Editor

              A while back I added an Instanced Static Mesh Editor feature to my Vertex Snap Editor Plugin, which is now a separate plugin from this Victory BP Library:

              Victory Ed Engine ~ Vertex Snapping and Instanced Static Mesh Editor
              https://wiki.unrealengine.com/Rama%2..._experience.21

              There was a bug in my setup that prevented the Instanced Static Meshes from working in a packaged game, and I've now fixed that bug!

              So now my Victory ISM Editor is fully operational for your level-making needs!

              You can now easily manipulate Instanced Static Mesh instances in the level viewport in world space!

              And it works in a packaged game!

              New Video I Filmed Today!


              Original Video Introducing the Concept of Instanced Static Mesh


              ~~~

              Super-Efficient Way to Render 1000s of Meshes!

              In this video you can see my frame rate go from 9 fps with 1500 static mesh actors in the scene, back to over 100 fps, with the simple press of a key! And all the geometry in the level is preserved!

              You can now easily create a super efficient instanced static mesh from a selection of regular static meshes, and also undo the process to make individual edits!

              I explain everything in the video!

              ~~~

              Installation Instructions

              https://wiki.unrealengine.com/Rama%2...n#Installation

              ~~~

              Enjoy!

              Rama
              Last edited by Rama; 10-25-2015, 02:39 AM.
              100+ UE4 C++ Tutorials on the UE4 Code Wiki, including UE4 Multi-Threading!

              UE4 Marketplace: Melee Weapon Plugin & Compressed Binary Save System Plugin | Rama's C++ AI Jumping Videos | Vertex Snap Editor Plugin

              Visit www.ue4code.com to see lots of videos about my C++ Creations! ♥ Rama

              Comment


                New Video About My Instanced Static Mesh Editor! <3 Rama

                Dear Community,

                Make sure to check out my new video about how my Instanced Static Mesh Editor now works in packaged games!

                Yay!

                New Video I Filmed Today!


                You can download my Vertex Snap and Instanced Static Mesh Editor Plugin ehre!

                Epic Wiki Download Link
                https://wiki.unrealengine.com/Rama%2..._experience.21



                Rama
                100+ UE4 C++ Tutorials on the UE4 Code Wiki, including UE4 Multi-Threading!

                UE4 Marketplace: Melee Weapon Plugin & Compressed Binary Save System Plugin | Rama's C++ AI Jumping Videos | Vertex Snap Editor Plugin

                Visit www.ue4code.com to see lots of videos about my C++ Creations! ♥ Rama

                Comment


                  Originally posted by Rama View Post
                  Rama's Instanced Static Mesh Editor
                  Rama
                  Looks very awesome! Can I use it in runtime?

                  I want to be able to use it in my mapbuilder so after building a level out of a lot of cubes, the user can merge them and get better performances.
                  Check out my game OldSchool Nightmare : http://www.indiedb.com/games/oldschool-nightmare

                  Comment


                    Hi, thanks for this plugin, its nice. It would be great if you could state which unreal versions are supported for each version of the plugin. I now had to manually try a few until it did build for 4.8.3

                    Comment


                      Originally posted by cageman View Post
                      Hi, thanks for this plugin, its nice. It would be great if you could state which unreal versions are supported for each version of the plugin. I now had to manually try a few until it did build for 4.8.3
                      I am only one person, I can't manage everything myself, how about you help out and tell us what's the latest version that runs 4.8.3 so others know too?

                      I only maintain the latest version on my media fire, but older versions can be found on the wiki pages, but I can't easily leave notes with each file download directly on the wiki, there's no option to do so that I've been able to figure out.

                      Originally posted by Sahkan View Post
                      Looks very awesome! Can I use it in runtime?

                      I want to be able to use it in my mapbuilder so after building a level out of a lot of cubes, the user can merge them and get better performances.
                      Yes you can, in my Victory BP Library I have made nodes to create VictoryISM actors from an array of static mesh actors!

                      See my post of it here:
                      https://forums.unrealengine.com/show...l=1#post406798



                      Rama
                      Last edited by Rama; 10-25-2015, 07:00 AM.
                      100+ UE4 C++ Tutorials on the UE4 Code Wiki, including UE4 Multi-Threading!

                      UE4 Marketplace: Melee Weapon Plugin & Compressed Binary Save System Plugin | Rama's C++ AI Jumping Videos | Vertex Snap Editor Plugin

                      Visit www.ue4code.com to see lots of videos about my C++ Creations! ♥ Rama

                      Comment


                        Runtime Instanced Static Mesh Tools by Rama

                        Click image for larger version

Name:	VictoryISM.jpg
Views:	2
Size:	299.4 KB
ID:	1091866

                        Dear Community,

                        Hi everyone!

                        So I have an immediate solution for the issues people are having with instanced static mesh actors working in packaged games!

                        I've created two BP nodes that let you easily specify which actors you want to convert to Instanced Static Mesh Actors at runtime!

                        This means that while in the editor, the actors are independent and can be moved around normally (the main advantage I sought to achieve with my ISM editor mode).

                        But once runtime starts, you can run my BP node to convert all the actors of a specified blueprint/class to instanced static mesh actors!

                        The other node lets you quickly and easily iterate over all Victory Instanced Static Mesh Actors (VictoryISM) that have been created during runtime!

                        ~~~

                        Make Dynamic Level Generation Super-Efficient!

                        When dynamically generating levels your level unit size has to get smaller the more detailed and varied you want the levels to be. This means that for detailed dynamically generated levels, you usually end up with a very high actor count!

                        Well using my two new BP nodes, you can make dynamic level generation super-efficient by turning 100s of actors sharing the same static mesh asset into a single static mesh!

                        Remember, the scaling, rotation, and translation of the static meshes can be anything you want!

                        ~~~

                        Two New Advantages For You

                        The two new advantages of this new system are:

                        a. You can use my BP nodes with actors that you have created yourself at runtime, such as for dynamically generated levels, MAZES, and such

                        b. This system will work with packaged games, since the instanced static mesh components do not need to serialize properly (as they currently dont seem to be doing). The serialization/cooking process becomes irrelevant since the actors are only converted to Instanced Static Mesh Actors at level start!

                        ~~~

                        Use of TMap, One Instanced Static Mesh Per Static Mesh Asset

                        I use a C++ TMap to group all the actors of the class you specify, and create as many instanced static mesh actors as are required.

                        Each Instanced Static Mesh Actor can only represent actors that share the same static mesh asset, so I group all the found actors by their static mesh asset!

                        Here's the code where I do this!

                        Code:
                        //I want one array of actors for each unique static mesh asset!  -Rama
                        TMap< UStaticMesh*,TArray<AActor*> > VictoryISMMap;
                        
                        //Note the ActorClass filter on the Actor Iterator! -Rama
                        for (TActorIterator<AActor> Itr(World, ActorClass); Itr; ++Itr)
                        {
                        	//Get Static Mesh Component!
                        	UStaticMeshComponent* Comp = Itr->FindComponentByClass<UStaticMeshComponent>();
                        	if(!Comp) continue; 
                        	if(!Comp->IsValidLowLevel()) continue;
                        	//~~~~~~~~~
                        	
                        	//Add Key if not present!
                        	if(!VictoryISMMap.Contains(Comp->StaticMesh))
                        	{
                        		VictoryISMMap.Add(Comp->StaticMesh);
                        		VictoryISMMap[Comp->StaticMesh].Empty(); //ensure array is properly initialized
                        	}
                        	
                        	//Add the actor!
                        	VictoryISMMap[Comp->StaticMesh].Add(*Itr);
                        }
                        Then, I loop over the TMap, and access the Array of actors that I created that all share the same Static Mesh asset, and then turn the whole lot of them into a single Instanced Static Mesh Actor!

                        Code:
                        //For each Static Mesh Asset in the Victory ISM Map
                        for (TMap< UStaticMesh*,TArray<AActor*> >::TIterator It(VictoryISMMap); It; ++It)
                        {
                        	//Get the Actor Array for this particular Static Mesh Asset!
                        	TArray<AActor*>& ActorArray = It.Value();
                        	
                        	//No entries?
                        	if(ActorArray.Num() < 1) continue;
                        	//~~~~~~~~~~~~~~~~~~
                        	  
                        	//Get the Root
                        	UStaticMeshComponent* RootSMC = ActorArray[0]->FindComponentByClass<UStaticMeshComponent>();
                        	if(!RootSMC) continue;
                        	//~~~~~~~~~~
                        	
                        	//Gather transforms!
                        	TArray<FTransform> WorldTransforms;
                        	for(AActor* Each : ActorArray)
                        	{
                        		WorldTransforms.Add(Each->GetTransform());
                        		 
                        		//Destroy original?
                        		if(DestroyOriginalActors)
                        		{
                        			Each->Destroy();
                        		}
                        	}
                        	  
                        	//Create Victory ISM
                        	FActorSpawnParameters SpawnInfo;
                        	SpawnInfo.bNoCollisionFail 		= true; //always create!
                        	SpawnInfo.bDeferConstruction 	= false;
                        	 
                        	AVictoryISM* NewISM = World->SpawnActor<AVictoryISM>(
                        		AVictoryISM::StaticClass(), 
                        		RootSMC->GetComponentLocation() ,
                        		RootSMC->GetComponentRotation(), 
                        		SpawnInfo 
                        	);
                        	
                        	if(!NewISM) continue;
                        	//~~~~~~~~~~
                        	
                        	//Mesh
                        	NewISM->Mesh->SetStaticMesh(RootSMC->StaticMesh);
                        
                        	//Materials
                        	const int32 MatTotal = RootSMC->GetNumMaterials();
                        	for(int32 v = 0; v < MatTotal; v++)
                        	{
                        		NewISM->Mesh->SetMaterial(v,RootSMC->GetMaterial(v));
                        	}
                        	 
                        	//Set Transforms!
                        	for(const FTransform& Each : WorldTransforms)
                        	{
                        		NewISM->Mesh->AddInstanceWorldSpace(Each);
                        	}
                        	
                        	//Add new ISM!
                        	CreatedISMActors.Add(NewISM);
                        }
                        
                        //Clear memory
                        VictoryISMMap.Empty();
                        ~~~

                        Easy to Edit, High Performance at Runtime!

                        The result of using my BP nodes to turn all actors of a certain class to instanced static mesh actors is that you can now maintain easy editing of the actors while in the editor, and during game-time still gain the performance advantages of converting a large number of actors that share the same static mesh asset into a single actor!

                        You can also now convert the large quantity of actors in dynamically generated levels into high performance instanced static mesh actors!



                        Rama
                        100+ UE4 C++ Tutorials on the UE4 Code Wiki, including UE4 Multi-Threading!

                        UE4 Marketplace: Melee Weapon Plugin & Compressed Binary Save System Plugin | Rama's C++ AI Jumping Videos | Vertex Snap Editor Plugin

                        Visit www.ue4code.com to see lots of videos about my C++ Creations! ♥ Rama

                        Comment


                          Vertex Snap Editor and Instanced Static Mesh Editor

                          Dear Community,

                          My Vertex Snap Editor Plugin is now a separate plugin, called VictoryEdEngine!

                          Download Link (145kb)
                          https://wiki.unrealengine.com/File:VictoryEdEngine.zip

                          This is a plugin that does not package with your game as it is only designed to modify Unreal Engine 4 to add support for vertex snapping while in the Level Editor Viewport.

                          More Details about my Vertex Snapping Editor Feature

                          Installation Steps
                          https://wiki.unrealengine.com/Rama%2...ertex_Snapping

                          Enjoy!

                          Rama
                          100+ UE4 C++ Tutorials on the UE4 Code Wiki, including UE4 Multi-Threading!

                          UE4 Marketplace: Melee Weapon Plugin & Compressed Binary Save System Plugin | Rama's C++ AI Jumping Videos | Vertex Snap Editor Plugin

                          Visit www.ue4code.com to see lots of videos about my C++ Creations! ♥ Rama

                          Comment


                            Fatal crash caused by get IP node

                            Originally posted by Rama View Post
                            BP Node to Get Your Computer's IP Address!

                            Dear Community,

                            I've finally succeeded at implementing a node that many have been trying to implement since the Beta!

                            This is a BP node that gets the IP address of your computer!

                            My node relies on http://api.ipify.org, a free and easy way to get your current IP address.

                            Because this node involves an HTTP request I can't make it a static library node, so I instead made a VictoryPC class that contains only this functionality.

                            Rama
                            Hi Rama,

                            I'm finding your BP library very useful for the most part. However I noticed that when calling this node without an internet connection, it not only fails, but crashes the entire game (and editor!).

                            Is there a way to check for a live internet connection before sending the HTTP request, perhaps by changing the C++ source?

                            Thanks!

                            Comment


                              Hi Rama,

                              I don't get you VictoryEdEngine to work. (UE 4.9.2)

                              I copied the folder from the zip to MyProject/Plugins and it is listed and enabled in the editor plugin window.
                              I closed the editor, added the line as suggested (UnrealEdEngine=/Script/VictoryBPLibrary.VictoryEdEngine) to the DefaultEngine.ini and restarted.
                              It crashes at 79% with the following message:

                              Code:
                              [2015.10.28-14.40.30:872][  0]LogUObjectGlobals:Warning: Failed to find object 'Class /Script/VictoryBPLibrary.VictoryEdEngine'
                              Last edited by Cassio_90; 10-28-2015, 10:52 AM.

                              Comment


                                Originally posted by Extragorey View Post
                                Is there a way to check for a live internet connection before sending the HTTP request, perhaps by changing the C++ source?
                                Just an update on this. I've found that the following change to the source is a good solution:

                                Code:
                                // Original function
                                // Crashes engine with fatal error when offline
                                void AVictoryPC::HTTPOnResponseReceived(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
                                {
                                	this->VictoryPC_GetMyIP_DataReceived(Response->GetContentAsString());
                                }
                                
                                // Fixed function 
                                // Returns empty string when offline
                                void AVictoryPC_Fixed::HTTPOnResponseReceived(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful) {
                                    FString response = "";
                                    if (bWasSuccessful)
                                        response = Response->GetContentAsString();
                                
                                    this->VictoryPC_GetMyIP_DataReceived(response);
                                }

                                Comment

                                Working...
                                X