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

Hey ,

I’ve used the victoryBP plugin on a previous version of UE4 and it worked perfectly.
But now I have updated to 4.4.0 and have downloaded the most recent version of the plugin and copied it to the plugin folder in my project directory.
When I click to open my project pops up:
victory1.JPG

When I click either “yes” or “no” pops up:
Victory.JPG

I have been trying to sort out for a while now and I can’t continue my project until it is sorted. :frowning:

Is there anything I can do to fix ? How do I recompile the plugin to work with engine version?

Thanks!

Just so you know is an that started a couple days ago and has affected many of us, there was an update available for version 4.4.0 (and I guess if you just installed, it also affects new downloads as well), it was about 1.3gb in size, but did not actually update anything, however it has broken compatibility with of my plugins as well. I have not heard any official word about it (aside from an apology in THREAD from a couple days ago, scroll down), but there is another thread that just started HERE which you should keep an eye on for an official word on what we should do.

In order to compile the plugin, you need Visual Studio installed, and have to open up the C++ project from the source folder in the plugin, and then build for the latest version (you will need the engine code off of Github to do ). If you don’t want to go that route, I think we will have to wait to find out what the official word is for now. Hope that helps! :slight_smile:

Booooom! I got it working.
I only use 2 plugins which are VAOcean and '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 is working fine.
Usually with previous versions I just slammed the plugins in the project plugins folder and they worked right away!

Sweeet!

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 's Victory plugin is something I would’t wish on even my worst enemy… , it’s just too much awesome to go without! :smiley:

Yeah give it a try and post back if it works. If so then its a possible fix for everyone running the source version!

You could include an AActor class with your plugin, and then use 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 the events that you want to send via the BP Library :slight_smile:

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

Awww thanks !

And thanks for the info!

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

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

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 :slight_smile:

Keep me posted on what you discover!

:slight_smile:

[FONT=Comic Sans MS]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

:slight_smile:

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 to 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.

[FONT=Comic Sans MS]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!


**[FONT=Comic Sans MS]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  new build, I have verified it fixes the crashes for me!

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

Have you made request?! (feedback section I suppose)

sounds like fun to me!

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 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 functionality. It’d be particularly useful for modding, for instance.

Well if you make a thread about it send me the link!

First , thanks for your contributions!

I’m having an with the Get Rendered Actors function, I’m not sure where the lies, but when my camera is not facing any actors I still appear to be rendering several. I was trying to use 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 ?

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 at some point soon, just remind me by pm if I haven’t it in a while :slight_smile:

Two New BP Nodes

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


**Get Screen Resolutions**

Obtains a list of  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**
![3975ab3d6a15f4e36483e111fc160973adf7e86d.jpeg|1280x960](upload://8cjjRazEUm77M7U8S6HTegXHO5n.jpeg)

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  supported screen resolutions, on the press of a key, using blueprints!

(open in new tab to see full size)

https://d3ar1piqh1oeli.cloudfront.net/e/e0/ScreenResolutions.jpg/1400px-ScreenResolutions.jpg

Load String Array From Text File

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!

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

Node created as per request:

Get Current Operating System

annnnd

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

These two nodes can be used to

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

  2. obtain the amount of milliseconds/seconds/minutes/hours that have passed since the 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 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 between two key presses :slight_smile:

Enjoy!