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

    Originally posted by n00854180t View Post
    @Rama, have you found a solution for doing a Blueprint Implementable Event in a Blueprint Library? I can make a static FTimerDelegate, but the mutli-cast delegates and the event ones don't play nice with the static declaration.
    You could include an AActor class with your plugin, and then use object iterator or worldcontextobject with actor iterator inside the BP library to find the AActor class, assuming you've spawned it once the game starts, from a Blueprint that the end user makes in their content folder.

    Then in the AActor class you can capture all the events that you want to send via the BP Library

    This is the route I went to provide a client with a TCP and UDP socket communication system using global BP nodes!

    Rama
    Last edited by Rama; 08-26-2014, 11:30 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 DotCam View Post
      Ahh cool man! Thanks for the info, I will give that a try! I also use the Substance plugin, so hopefully I can get it going as well, but I can wait on that one for now...

      However, going without Rama's Victory plugin is something I would't wish on even my worst enemy... lol, it's just too much awesome to go without!
      Awww thanks DotCam!

      And thanks for all the info!

      It looks like Stephan Ellis thoroughly addressed the weird 4.4.0 launcher update event here! (very recently)

      https://forums.unrealengine.com/show...l=1#post126515




      Originally posted by AutoLiMax View Post
      Booooom! I got it working.
      I only use 2 plugins which are VAOcean and Rama's Victory plugin, both of which give me the error saying they're not compatible with the current engine version.

      Here's what I did to get them to work.

      - Copied the plugins to the engine/plugins folder.
      - Clicked "GenerateProjectFiles.bat" so they would be recognised in Visual Studio.
      - Opened "UE4.sln" in Visual Studio 2013.
      - Right clicked on the UE4 solution and clicked rebuild.
      - Copied plugins back to the project plugins folder.

      And now all is working fine.
      Usually with previous versions I just slammed the plugins in the project plugins folder and they worked right away!

      Sweeet!

      Wow that's wild! Great work AutoLiMax, and thanks for sharing your solution!

      Rama
      Last edited by Rama; 08-26-2014, 11:26 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 Rama View Post
        You could include an AActor class with your plugin, and then use object iterator or worldcontextobject with actor iterator inside the BP library to find the AActor class, assuming you've spawned it once the game starts, from a Blueprint that the end user makes in their content folder.

        Then in the AActor class you can capture all the events that you want to send via the BP Library

        This is the route I went to provide a client with a TCP and UDP socket communication system using global BP nodes!

        Rama
        Dang, I've been avoiding having to make a separate class, actually. Right now I have it set up so that the blueprint library class holds a number of static members for caching things and getting results back from the threaded calls.

        I may end up changing it later, but for now the static caches works okay.

        Thanks
        Storyteller - An immersive VR audiobook player

        Dungeon Survival - WIP First person dungeon crawler with a focus on survival and environmental gameplay ala roguelikes

        Comment


          Originally posted by n00854180t View Post
          Dang, I've been avoiding having to make a separate class, actually. Right now I have it set up so that the blueprint library class holds a number of static members for caching things and getting results back from the threaded calls.

          I may end up changing it later, but for now the static caches works okay.

          Thanks
          Keep me posted on what you discover!



          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


            Featured BP Nodes

            Trace Data


            I've designed several BP nodes to make doing traces easier!

            Again you can download and use these nodes as a plugin, even in non-C++ project!

            Get Trace Data From Skeletal Mesh Socket
            Click image for larger version

Name:	tracedata_from_mesh_and_getskelmesh.jpg
Views:	2
Size:	212.0 KB
ID:	1050430



            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
              Keep me posted on what you discover!



              Rama
              So I ended up just keeping my static members as a cache - it works just fine. One thing that I had to do though, is make a special blueprint callable cache clean up function that the user has to call on the End Play event. That way, if you PIE and then stop it, it clears the cache properly. Shouldn't happen as often in a packaged build where the game gets totally closed between sessions.

              I was going to override BeginDestroy, but it only works on instances of UObjects, so that was out too.

              ----------

              Finally, during my investigations to get this to all work, I realized that there's *almost* no reason that FIOSystem::LoadCompressedData doesn't work directly with ZIP compressed streams (to be clear, I'm not speaking to the reading of the ZIP directory structure and stuff, which is totally separate, just the decompression of a given block that represents a file).

              There are two main, fairly small things, that could be changed to get direct zip support in LoadCompressedData:

              * The checks in FulfillCompressedRead that look at the first two bytes of the stream to check for a PAK header would need to be skipped in the case of a zip compressed stream (otherwise it just errors).
              * The actual thread that uncompresses the data would need to be changed to call the appropriate ZLIB inflate() functions instead of calling ZLIB's uncompress().
              * A way to tell LoadCompressedData what type of compressed data it is - pak or zip.

              Of course, there are a bunch of perfectly reasonable issues with putting that in there, namely that to support zips to the standard that people would expect, it would require additional work. My own work only really deals with "normal" compressed zips, and doesn't handle zip64 or any of the other fancy things that you can do with zip files.

              So to close, it seems like basic async zip support could fairly easily be added into the current FIOSystem. For my part, I'm not going to work on that right now because my system (which just does a regular FIOSystem::LoadData and then decompresses it in a Runnable thread) works for my purposes.

              But I think it's safe to say that plenty of UE4 devs would love to have the ability to load zip-archived data asynchronously during their games.
              Storyteller - An immersive VR audiobook player

              Dungeon Survival - WIP First person dungeon crawler with a focus on survival and environmental gameplay ala roguelikes

              Comment


                Originally posted by Vernatia View Post
                The problem stems from two pointers not being initialised:

                SelectedVertexBuffer = nullptr;
                HighlightedVertexBuffer = nullptr;

                Needed to be added to your JoyInit function, as they were causing constant crashing when right clicking on an object, when that object wasn't selected.
                It would also crash occasionally when left clicking.
                Thank You Vernatia!

                I have been meaning to get around to debugging that crash, and you just fixed it for me!

                Thanks so much for posting!

                And congrats on your first post! An exceptionally helpful first post for me!

                Welcome to the forums!



                ~~~

                New Plugin Build is Live!

                The fix Vernatia mentioned is now live!

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

                If you were experiencing crashes with Vertex Snap plugin, try this new build, I have verified it fixes the crashes for me!

                I never got around to debugging it but Vernatia found the solution!

                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 n00854180t View Post
                  So to close, it seems like basic async zip support could fairly easily be added into the current FIOSystem. For my part, I'm not going to work on that right now because my system (which just does a regular FIOSystem::LoadData and then decompresses it in a Runnable thread) works for my purposes.

                  But I think it's safe to say that plenty of UE4 devs would love to have the ability to load zip-archived data asynchronously during their games.
                  Have you made this feature request?! (feedback section I suppose)

                  sounds like fun to me!

                  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
                    Have you made this feature request?! (feedback section I suppose)

                    sounds like fun to me!

                    Rama
                    Haven't yet - I was thinking I'd actually implement a simple version first as a proof of concept. Unfortunately it's a little weird because the developer using the functions would have to understand that reading out the file/folder structure data from the zip would be entirely separate, so it couldn't be used to load an entire zip file, as it does with pak files.

                    Also there's the issue of the other types of zip support - my support only handles the single normal compression level, so that would need to be dealt with. Then there's zip64 etc.

                    Anyway, I probably will make a thread about it either way soon, I think it'd be rad for devs to have this functionality. It'd be particularly useful for modding, for instance.
                    Storyteller - An immersive VR audiobook player

                    Dungeon Survival - WIP First person dungeon crawler with a focus on survival and environmental gameplay ala roguelikes

                    Comment


                      Originally posted by n00854180t View Post
                      Anyway, I probably will make a thread about it either way soon, I think it'd be rad for devs to have this functionality. It'd be particularly useful for modding, for instance.
                      Well if you make a thread about it send me the link!

                      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


                        First all, thanks for all your contributions!

                        I'm having an issue with the Get Rendered Actors function, I'm not sure where the issue lies, but when my camera is not facing any actors I still appear to be rendering several. I was trying to use this node as a way to check if a player can see another player or not, but it seems to always render actors I can't even see... what might I be doing wrong here, or should I be using a different method to accomplish this?

                        Comment


                          Originally posted by cerdom View Post
                          First all, thanks for all your contributions!

                          I'm having an issue with the Get Rendered Actors function, I'm not sure where the issue lies, but when my camera is not facing any actors I still appear to be rendering several. I was trying to use this node as a way to check if a player can see another player or not, but it seems to always render actors I can't even see... what might I be doing wrong here, or should I be using a different method to accomplish this?
                          You can check the angle of the Control Rotation of the player to the location you want to test

                          You compare the angle between the player and the destination with the viewing angle of player

                          So its something like

                          Angle to Target is
                          (Target.Location - PlayerCharacter->GetActorLocation) to Rotator

                          and

                          GetPlayerController->GetControlRotation()

                          then you compare the two rotators to see how far part they are from each other.

                          you can use my Victory BP normalize rotators function to make sure the values will come out right

                          I can make a node for this at some point soon, just remind me by pm if I haven't done it in a while

                          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 New BP Nodes

                            The download link in original post is now updated with two new nodes!

                            ~~~

                            Get Screen Resolutions

                            Obtains a list of all the screen resolutions supported by the user's current display adapter!

                            Option to include or exclude the refresh rates that are available for each resolution!


                            New version of Get Screen Resolutions
                            Click image for larger version

Name:	ResolutionsNoRefreshRates.jpg
Views:	3
Size:	231.4 KB
ID:	1050797

                            ~~~

                            Combine Strings

                            Combine two strings with an optional separator and labels that will appear in front of each member of the pair.

                            ~~~

                            Picture

                            I used the two nodes above to print out a listing of all supported screen resolutions, on the press of a key, using blueprints!

                            (open in new tab to see full size)
                            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


                              Load String Array From Text File

                              This node is a compliment to the node that saves string to text file!

                              1. Loads a String Array from a Text File, where each entry in the array is one line from the file!

                              2. Option to specify that white space lines should be ignored, tested and working! (only checks spaces and newlines at moment)

                              3. Returns the size of the String array that was created!

                              4. Returns false if the file could not be opened


                              Picture:


                              Enjoy!

                              Rama

                              PS: re-download the plugin from the link in first post to get this update!



                              Node created as per this request:

                              https://forums.unrealengine.com/show...l=1#post121696
                              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 Current Operating System Time

                                annnnd

                                Get Milliseconds/Seconds/Minutes/Hours Passed Since Previous Recorded Time!


                                These two nodes can be used to

                                1. obtain the current local Operating System Time for your computer.

                                2. obtain the amount of milliseconds/seconds/minutes/hours that have passed since the time you recorded for the first node! You can stores as many times as you want! They are simply stored as a string!


                                You can use these two nodes to record down to the sub-millisecond the amount of time passing between game events!

                                The milliseconds portion is a float, so you can record far smaller than 1 millisecond!


                                In the attached picture I record the amount of real-world time between two key presses

                                Click image for larger version

Name:	DateTime1.jpg
Views:	2
Size:	357.2 KB
ID:	1051009

                                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

                                Working...
                                X