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

    I'd like to ask here, what do you need to do to have a packaged content only project work correctly when using this Victory plugin?
    When I try to run my compiled project it crashes, telling me "Plugin 'VictoryPlugin' failed to load because module 'VictoryBPLibrary' could not be found".
    I've looked through the wikipage and searched answerhub/this thread but haven't found anything telling me why this is occurring?
    To use the VictoryPlugin are you required to compile with C++ or something? I'd really appreciate some help with this.

    EDIT:
    Forgot to mention I noticed there are VictoryBP binaries found in the .zip, however they are only for 64 bit. Are these files you need to place somewhere, and if so does that mean the VictoryBP plugin won't work on a 32bit system?
    Last edited by SwiftIllusion; 11-16-2014, 10:51 PM.

    Comment


      Originally posted by SwiftIllusion View Post
      To use the VictoryPlugin are you required to compile with C++ or something? I'd really appreciate some help with this.
      Really Easy Way To Package Victory Plugin

      Until 4.7, you do need to add code to your project, you can add an empty class of your choosing using File -> Add Code To Project.

      I have a tutorial on this here!
      https://wiki.unrealengine.com/How_to...ect_in_8_Steps

      ~~~

      4.7

      Once 4.7 rolls around we should no longer have to do this conversion to C++ for packaging plugins, according to Epic Ben Marsh.

      Enjoy!

      Rama

      PS: You will need Visual Studio 2013 for Windows Desktop, see my wiki mentioned above
      Last edited by Rama; 11-17-2014, 04:19 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


        Originally posted by Dakraid View Post
        Thank you Rama *-*
        Your plugin is making my and (I assume) the lives of many here easier with every release!
        You really deserve a medal for your contributions

        Greetz,
        Dakraid
        You're welcome Dakraid!

        Great to hear from you!



        Originally posted by Shantaram View Post
        Your plugin is awesome, its helping a lot with our projects.
        Right now we are trying to rename a saved file through FPlatformFileManager and going through your tutorial on File Management, we can't figure out how to rename a saved file. Can you please guide us how to do that?

        Thanks,
        When you say save file, you mean the .sav files generated by Epic using the BP Save System?

        I presume you'd like a BP node to rename save file, you are not talking about using C++ right?
        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


          Rename All Files

          Originally posted by Rama View Post
          You're welcome Dakraid!

          Great to hear from you!





          When you say save file, you mean the .sav files generated by Epic using the BP Save System?

          I presume you'd like a BP node to rename save file, you are not talking about using C++ right?
          This is what I am trying to do, I am rendering out different buffer Visualization passes in an Sequence PNG files using Matinee Movie Option and it works fine but the only problem is, it always name it "MovieFrame#####" and I want to change that to like "RoughnessPass##", "AmbientOcclusionPass##" so after outputting those files, I want to write a function where it iterates through all those files and rename it.

          Thanks,

          Comment


            First off, great plugin. It seems like it's really helping out.

            My issue is that if I run my game as a server, it crashes immediately, saying "Cast of NULL to blueprint failed." This doesn't happen if I remove the plugin. Any ideas? :/

            Comment


              Originally posted by rosella500 View Post
              First off, great plugin. It seems like it's really helping out.

              My issue is that if I run my game as a server, it crashes immediately, saying "Cast of NULL to blueprint failed." This doesn't happen if I remove the plugin. Any ideas? :/
              Can you give me the whole crash log?

              Do you mean using ?listen or as dedicated server?

              Please load the editor / run the game from commandline with -log and send me the whole log after verifying the date and time at the top of the log as being your must recent test.

              I run games as a listen server all the time without any issues with the plugin

              So I need more info!

              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 Shantaram View Post
                This is what I am trying to do, I am rendering out different buffer Visualization passes in an Sequence PNG files using Matinee Movie Option and it works fine but the only problem is, it always name it "MovieFrame#####" and I want to change that to like "RoughnessPass##", "AmbientOcclusionPass##" so after outputting those files, I want to write a function where it iterates through all those files and rename it.

                Thanks,
                Check out these wikis of mine!

                I share code for how to iterate over files and directories!

                File Management
                https://wiki.unrealengine.com/File_M...iles,_and_More

                Create Directory Recursively
                https://wiki.unrealengine.com/Algori...ry_Recursively
                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


                  Click image for larger version

Name:	FindPlayerStart.jpg
Views:	3
Size:	285.1 KB
ID:	1060930

                  Rama's Multiplayer Game Mode Solution


                  Find Player Start

                  Choose Player Start

                  Can Player Restart


                  These core Multiplayer functions are now fully implementable/overridable in Blueprints![/SIZE][/B]

                  I have found a solution for the issue of implementing FindPlayerStart, ChoosePlayerStart, and CanPlayerRestart in Blueprints!

                  And I've tested it as working!


                  You can now implement core network coding of choosing player starts entirely in Blueprints!


                  ~~~

                  How To Use

                  In my picture below I show how to use my Game Mode overrides!

                  1. First make a new BP and select my VictoryGameMode class which comes with my Victory BP Library (make sure you have the latest download https://wiki.unrealengine.com/File:VictoryPlugin.zip)

                  If you already have a Game Mode BP, choose File -> Reparent and use my Victory Game Mode BP


                  2. Make sure you are using my Victory Game Mode in your World Settings!

                  3. Setup the Victory Game Mode BP the same as my picture below!

                  4. Celebrate! You can now implement core multiplayer logic in Blueprints!

                  (right click -> new tab to see larger pic)
                  Click image for larger version

Name:	VictoryGameMode.jpg
Views:	1
Size:	290.1 KB
ID:	1060933

                  ~~~

                  CPP Override and CPP Override Var

                  Please note the notation I am using, any variable that has CPPOverride Var in its name is used only with the corresponding event. This is how I enable you to implement core multiplayer coding logic in Blueprints!

                  ~~~

                  Simple Data Types

                  Please note that for the function that is designed to return a boolean value, CanPlayerRestart, you must pass the boolean and also a special variable, CPPOverride SelfReference, this is how you tell the CPP that you are implementing the Game Mode function in BP!

                  ~~~

                  Non Destructive Solution

                  My solution is entirely optional and if you do not implement the event in Blueprints, and your programmer does it in C++, my solution will not interfere at all with your existing code base!

                  ~~~

                  Log Message

                  If you do implement my solution in BP, I am printing log information to indicate this, so you/your programmer knows you are using a BP override and any C++ code will not be run.

                  ~~~

                  C++ Code

                  Here is my C++ code for FindPlayerStart which shows how I worked around the issue of overriding FindPlayerStart via Blueprints!

                  Again I've tested this as entirely working in PIE and commandline games!

                  .h
                  Code:
                  //Find Player Start
                  public:
                  	/** Use this var inside the body of CPP Override ~ Find Player Start event to override the C++ functionality! */
                  	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Victory Game Mode")
                  	AActor* CPPOverrideVar_FindPlayerStart;
                  	
                  	/** 
                  	 * Use CPPOverrideVar_FindPlayerStart inside of this event to implement FindPlayerStart in BP ! <3 Rama
                  	 *
                  	 * Return the 'best' player start for this player to start from.
                  	 * @param Player - is the AController for whom we are choosing a playerstart
                  	 * @param IncomingName - specifies the tag of a Playerstart to use
                  	 * @returns Actor chosen as player start (usually a PlayerStart)
                  	 */
                  	UFUNCTION(BlueprintImplementableEvent, meta=(FriendlyName = "CPP Override ~ Find Player Start"))
                  	virtual void CPPOverride_FindPlayerStart();
                  
                  	virtual class AActor* FindPlayerStart( AController* Player, const FString& IncomingName = TEXT("") ) override;
                  .cpp
                  Code:
                  //Find
                  AActor* AVictoryGameMode::FindPlayerStart( AController* Player, const FString& IncomingName )
                  {
                  	//Clear any previous to indicate whether BP did an override
                  	CPPOverrideVar_FindPlayerStart = NULL;
                  	
                  	//=======================
                  	//BP Hook by Rama
                  	this->CPPOverride_FindPlayerStart();
                  	//=======================
                  	
                  	if(CPPOverrideVar_FindPlayerStart) //Did BP programmer set the var?
                  	{ 
                  		//Indicate that the BP override was found and is being used.
                  		UE_LOG(VictoryGameModeLog, Log, TEXT("\n\n"));
                  		UE_LOG(VictoryGameModeLog, Log, TEXT("FindPlayerStart: CPP override found in %s and used instead of C++ implementation"), *GetName());
                  		UE_LOG(VictoryGameModeLog, Log, TEXT("\n\n"));
                  
                  		return CPPOverrideVar_FindPlayerStart;
                  	} 
                  	 
                  	//Default C++ Implementation
                  	return Super::FindPlayerStart(Player,IncomingName);
                  }
                  ~~~

                  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


                    60+ Extra BP Nodes For You!

                    No c++ required!

                    No compile required!

                    Download and plug in!

                    Latest plugin download is here:
                    https://wiki.unrealengine.com/File:VictoryPlugin.zip



                    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


                      Two Nodes For You!

                      Get Object Path

                      Load Object From Asset Path!


                      Now you can use Right Click -> Copy Reference and past that into my BP node to load an object directly from asset path!

                      You can also pass in a UObject to retrieve its full asset path using my other node, and these two nodes work together!

                      I used this system in my C++ based In-game editor to load levels from hard disk!

                      I simply save out the asset paths and then load objects from their paths, setting any user-changed variables!

                      Now you can do the same thing entirely in Blueprints!

                      Enjoy!

                      Rama

                      Latest Victory BP Library Plugin Download
                      https://wiki.unrealengine.com/File:VictoryPlugin.zip

                      Click image for larger version

Name:	LoadObjectFromPath.jpg
Views:	3
Size:	305.8 KB
ID:	1058067
                      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


                        Get All Widgets of Class

                        Ideal for UMG Level Transitions


                        I needed this node for Solus and so I am now sharing it with you!

                        The issue was that I could not save a reference to my new widget because it is loaded and then a level change occurs which resets all my HUD variables.

                        So I needed to access the widget after it was created dynamically, not relying on stored references within the HUD class.

                        I also did not want to have to store a reference to it in my Game Instance class cause then that leads to garbage collection issues.

                        I had to make the node for my own use and I have tested it as working in Solus!


                        Now you can retrieve an array of any type of user-made UMG widget that is currently in your game at any time!


                        ~~~

                        Download

                        https://wiki.unrealengine.com/File:VictoryPlugin.zip

                        ~~~

                        C++ Code

                        Here's what my C++ for this node looks like!

                        Code:
                        void UVictoryBPFunctionLibrary::GetAllWidgetsOfClass(UObject* WorldContextObject, TSubclassOf<UUserWidget> WidgetClass, TArray<UUserWidget*>& FoundWidgets)
                        {
                        	//Prevent possibility of an ever-growing array if user uses this in a loop
                        	FoundWidgets.Empty();
                        	//~~~~~~~~~~~~
                        	 
                        	if(!WidgetClass) return;
                        	if(!WorldContextObject) return;
                        	 
                        	UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject);
                        	if(!World) return;
                        	//~~~~~~~~~~~
                        	
                        	for(TObjectIterator<UUserWidget> Itr; Itr; ++Itr)
                        	{
                        		if(Itr->GetWorld() != World) continue;
                        		//~~~~~~~~~~~~~~~~~~~~~
                        		
                        		if(Itr->IsA(WidgetClass))
                        		{
                        			FoundWidgets.Add(*Itr);
                        		}
                        	}
                        }
                        ~~~

                        Pic

                        (right click -> open in new tab to see it better)
                        Click image for larger version

Name:	GetAllWidgetsOfClass.jpg
Views:	4
Size:	291.4 KB
ID:	1061324

                        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


                          I'm sorry if I sound ignorant, I just registered and I'm checking out how the blueprint system works, but I'd like to ask a question about your plugin. Why is it a plugin and not integrated into the engine? I mean things like vertex snapping are awesome and honestly I'm surprised that it wasn't in the editor by default. And it seems like you've expanded the blueprint system quite a bit, so what gives? Again I'm sorry if the answer is obvious,I just don't know how things are running here. I come from Unity and everything there was in the asset store, I guess I had the wrong idea how open source works.

                          Comment


                            Originally posted by Kensei View Post
                            I'm sorry if I sound ignorant, I just registered and I'm checking out how the blueprint system works, but I'd like to ask a question about your plugin. Why is it a plugin and not integrated into the engine? I mean things like vertex snapping are awesome and honestly I'm surprised that it wasn't in the editor by default. And it seems like you've expanded the blueprint system quite a bit, so what gives? Again I'm sorry if the answer is obvious,I just don't know how things are running here. I come from Unity and everything there was in the asset store, I guess I had the wrong idea how open source works.
                            I had a hard time understand this, but I give it a try...

                            I guess your question is why this isn't directly added to the Unreal Engine source code, right?
                            Keep in mind open source doesn't mean everyone can directly get his code into the engine (or a project for that matter) without hesitation. Open source means that you have access to the full source code and can edit it yourself, but not that you can contribute your code directly to the "root" project.

                            In the case of the UE4: there is a control instance by/from Epic. They check the contributed code and make sure that it works on all platforms and in every way, which in my opinion is a good thing as it keeps out crappy code even though it costs time.

                            Some of the additions of his work are, as far as I know and heard it, getting integrated into the engine, but that takes time as the code has to go through quality assurance and all the other stuff which Epic puts third party code through.

                            I hope that I got it right, if not just tell me I will try to correct the post then ^^

                            Greetz,
                            Dakraid

                            Comment


                              That's an excellent answer to my question. Thank you.

                              Comment


                                Originally posted by Dakraid View Post
                                In the case of the UE4: there is a control instance by/from Epic. They check the contributed code and make sure that it works on all platforms and in every way, which in my opinion is a good thing as it keeps out crappy code even though it costs time.

                                Some of the additions of his work are, as far as I know and heard it, getting integrated into the engine, but that takes time as the code has to go through quality assurance and all the other stuff which Epic puts third party code through.

                                I hope that I got it right, if not just tell me I will try to correct the post then ^^

                                Greetz,
                                Dakraid
                                Great answer Dakraid!

                                I agree, although it means it takes longer to get code integrated, Epic's quality assurance standards are really important!

                                Great to hear from you Kensei!

                                Yes I do wish my vertex snapping would get integrated the but the engineers at Epic responsible for handling such matters have been rather exceedingly busy lately.

                                I hope they get to it one day, I already did all the work for them!

                                Github Link:
                                https://github.com/EpicGames/UnrealEngine/pull/62

                                Editor Vertex Snap Videos
                                https://forums.unrealengine.com/show...s-Pull-Request

                                Rama
                                Last edited by Rama; 11-23-2014, 04:01 PM.
                                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

                                Working...
                                X