Download

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

You just need to have VS installed, you don’t need to use any C++ in your project. So just install it and then it will work :slight_smile:

Rama, any advice on how you would suggest us (users of this plugin) to test our project in previews like 4.11 to find bugs in 4.11 before the stable version is released, since your plugin does not yet work with 4.11? And if I remove your plugin from my project, it crashes in startup, so that also won#t work… So at the moment I would have to manually remove all nodes I use from your plugin first and then remove your plugin, then create a copy of project in 4.11 preview and then test it, but that would take ages since I use so many different nodes from your plugin everywhere and its probably impossible for me to find them all…

Or do you know an easy way to find nodes from your plugin? I wish they would be all named VictoryXYZ, but only some are.

So… i have to install VS in any case… ok, thanks… i’ll try :wink:

Hello Rama!

I am having some troubles with victory plugin and the consoles. I get some serious crashes with VP enabled.
Is there a “special” way for me to compile it in order to work? Have you ever heard something like this before? My other plugin works just fine.

Because of the NDA’s i cant post here any more details. For any specific questions please pm me

Thank you!!

Hi Rama,

I have been using your plugin with BPs successfully. However, I cannot create a C++ class that extends your BP Library. When I tried to do this, I got this error:

“CompilerResultsLog:Error: Error D:\program files\Epic Games\4.10\Engine\Plugins\VictoryPlugin\Source\VictoryBPLibrary\Public\VictoryISM.h(9) : fatal error C1083: Cannot open include file: ‘VictoryISM.generated.h’: No such file or directory”

I am using Unreal 4.10.2 at the moment. I cannot progress with my project unless I can access your plugin’s functions using C++.

I hope we can solve this issue.

Thanks,

Jamie

Dear John,

Sounds like I need to provide a 4.11 build, though that makes my process of adding new nodes take even longer because then I have to upload an extra version on top of 1. editor 2. packaged and 3. media fire :slight_smile: But Then I’d have to provide all 3 of those for 4.11 as well!

Supporting 2 engine versions by myself for free is so much work for me, I then have to do 6 updates every time I add any new nodes, as described above.

Unless I adopted 4.11 early… then anyone wanting to test my new nodes would also have to adopt 4.11 early…

Thinking about it…

Also I think 4.11 is coming out soon :slight_smile:

Yes do send me a PM with your issue with consoles

:slight_smile:

Rama

Rama’s Victory Subtitle System, BP Access for Subtitles of SoundWaves in SoundCues

Dear Community,

It has come to my attention that there is no way to easily access the subtitles that are inside of SoundWaves which are played in SoundCues via WavePlayer.

For any AAA or indie project that wants to use UE4’s Subtitle system this is actually a rather essential missing element of UE4 Blueprints!

I have developed a simple system to intercept the C++ delegate for subtitles played by UE4’s C++ sound system.

I have exposed this for you in Blueprints!

Now you can use the subtitle data stored in Dialogue or SoundWaves easily in BP, at the time the sound is being played!

I had to use my VictoryPC class to do this, because the C++ Delegate must be binded to a UObject, which prevents me from using just a static BP node.


**Usage**

**So to use my Victory Subtitle System:**

1. In a C++ project you are best suited to extract my code form VictoryPC and add to your appropriate UObject or Actor class

2. In a BP project you should have your Player Controller extend my VictoryPC class which comes with my Victory Plugin.

3. See pictures for the rest!

FAQ

When is Speech Finished?

Please note there is an easy way to know when the sound is finished by binding an event to the return value of my BP ndoe!

Sound Duration?

The total sound duration is called Cue Duration off of my Subtitle Event node.

Multiple Subtitles With Time Stamps for 1 Sound?

My system supports as many subtitles as you entered, and via my BP setup you can display the time stamp of each subtitle, accessing that info in order to visually display the subtitle at the right time.

You also get the total length of the speech sound being played.

Any Kind of sound?

You can play any sound you want with my node and if it has UE4 subtitles set via the appropriate asset (SoundWave or Dialogue) my OnVictorySubtitlesQueued Event will be called!


**C++ Code**

Here is the C++ code if you wish to extract it easily into your own project.

This is all my own code for you, at no cost!



```


//Exposing the UE4 Subtitle system for Solus
// <3 Rama
USTRUCT(BlueprintType)
struct **FVictorySubtitleCue**
{
	GENERATED_USTRUCT_BODY()

	/** The text to appear in the subtitle. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=SubtitleCue)
	FText SubtitleText;

	/** The time at which the subtitle is to be displayed, in seconds relative to the beginning of the line. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=SubtitleCue)
	float Time;

	FVictorySubtitleCue()
		: Time(0)
	{ } 
	FVictorySubtitleCue(const FText& InText, float InTime)
	: SubtitleText(InText)
	, Time(InTime)
	{}
};


UCLASS()
class VICTORYBPLIBRARY_API AVictoryPC : public APlayerController
{
	GENERATED_BODY()

public:
	AVictoryPC(const FObjectInitializer& ObjectInitializer);
	
	/** 
	* When the sound is played OnVictorySubtitlesQueued will be called with the subtitles!
	* You can bind an event off of the audio component for OnAudioFinished to know hwen the sound is done! 
	*/ 
	UFUNCTION(Category="Victory Subtitles", BlueprintCallable, BlueprintCosmetic, meta=( UnsafeDuringActorConstruction = "true", Keywords = "play" ))
	UAudioComponent* **VictoryPlaySpeechSound**(class USoundBase* Sound, float VolumeMultiplier = 1.f, float PitchMultiplier = 1.f, float StartTime = 0.f);
	
	UFUNCTION(Category="Victory Subtitles", BlueprintImplementableEvent)
	void **OnVictorySubtitlesQueued**(const TArray<struct FVictorySubtitleCue>& VictorySubtitles, float CueDuration);
	
	UFUNCTION()
	void **Subtitles_CPPDelegate**(const TArray<struct FSubtitleCue>& VictorySubtitles, float CueDuration);
};


```





```


/*

	By Rama

*/

#include "VictoryBPLibraryPrivatePCH.h"
#include "VictoryPC.h"
 
#include "Runtime/Engine/Classes/Kismet/GameplayStatics.h"

UAudioComponent* AVictoryPC::**VictoryPlaySpeechSound**(
	USoundBase* Sound
	,float VolumeMultiplier
	,float PitchMultiplier
	, float StartTime)
{

	UAudioComponent* Audio = UGameplayStatics::SpawnSound2D(this,Sound,VolumeMultiplier,PitchMultiplier,StartTime);
	if(Audio)
	{
		//Subtitle Delegate for You!
		//		<3 Rama
		Audio->OnQueueSubtitles.BindDynamic(this, &AVictoryPC::Subtitles_CPPDelegate);
	}      
	
	/*
		Note that the OnAudioFinished is BP assignable off of return of this node!
		
		//called when we finish playing audio, either because it played to completion or because a Stop() call turned it off early
		UPROPERTY(BlueprintAssignable)
		FOnAudioFinished OnAudioFinished;
	*/
	
	return Audio;
}
 
void AVictoryPC::**Subtitles_CPPDelegate**(const TArray<struct FSubtitleCue>& Subtitles, float CueDuration)
{
	TArray<FVictorySubtitleCue> VictorySubtitles; 
	for(const FSubtitleCue& Each : Subtitles)
	{
		VictorySubtitles.Add(FVictorySubtitleCue(Each.Text,Each.Time));
	} 
	  
	**OnVictorySubtitlesQueued**(VictorySubtitles,CueDuration);
}


```



**Latest plugin download on the UE4 Wiki: (7.16 mb) **

Plugin Release Dates and UE4 Engine Versions


**Donations**

Donations can be sent to me via:
http://lightningfitness.org/donate/

Enjoy!

:)

Rama

Hi Rama, thanks for your answer! :slight_smile:

I know 4.11 is coming soon, but since I was never able to test the previews I fear there might be bugs I could have reported to Epic earlier…

I would be absolutely fine with compiling your plugin myself (I do that anyway since I use a custom build of the engine), so if you could provide only source for preview versions that would already be very helpful, if it saves you time because you don’t have to compile them.

I have tried to manually compile your plugin for 4.11, but there were a few errors and I don’t know how to fix them :frowning:

Hi Rama, i’m such a dummy with C++!

I’ve hijacked your blueprint function library tutorial code to try to get my machine’s local IP address with this:


//Happy Message
virtual UMyBlueprintFunctionLibrary::GetHappyMessage()
{

	return GetLocalHostAddr(FOutputDevice & Out, bool & bCanBindAll);
}



But it just winds up not compiling and throwing up problems with the SocketSubsystem.h include.

The sample code from the docs is


virtual TSharedRef< FInternetAddr > GetLocalHostAddr
(
    FOutputDevice & Out,
    bool & bCanBindAll
)

Any chance of a nudge in the right direction? This is the kind of bodgy assemblies I can return in python - I just don’t get it with C++ (But i’d love to!)

Hi Rama…

Curious… I went to your github and it says that its not been updated since September. Are you still allowing access to the source? Honestly, I learn by reading other people’s code and if I do use it anyplace, you will get credit. Thanks for all your work!

teak

I love the Victory library, but I must confess that I really do miss not being able to work with preview builds anymore. I understand the reason why, of course…

Rama, is there usually a high labor cost associated with updating nodes to work with the newest engine versions? Obviously just the time spent maintaining two branches isn’t ideal… But maybe when a new version preview release drops (just Preview 1, not updated), it would be beneficial to just quickly toss out a single compatible version of the plugin as-is? Keep updates to the main version (not the preview version) until it becomes official… But with the multi-month cycle on preview releases, even if it would mean that not EVERY new Victory node could be tested, people who are legacy-bound to Victory because they use existing nodes would be able to start testing in preview releases, even if it meant having to wait a little while for Victory to catch up.

I know for my own part 99% of what I want and need Victory for, at the moment anyway, isn’t the stuff you’re rolling out now, and I confess—sorry to say—I’d rather wait until “4.11 drops proper and Victory gets updated for it” for access to subtitles in sound cues than I would for access to the newest engine features. I (typically) only update Victory when it’s needed due to an engine update, and all the extra nodes you’ve added are like a bonus at that time.

And it would only literally be a single upload (the editor version) since I think the common-sense case could be made that nobody is attempting to package a game made in a preview release (certainly Epic cautions strongly against doing so). It would be a one-time deal when the first version of a new preview release dropped to provide a degree of compatibility for testing projects, which is what the previews are FOR.

Just a thought.

I’m on the latest version of the editor and I can’t see the VictoryPlugin even if I pasted the folder in the Plugins folder… Any idea?

Excellent work as always. I too would like a 4.11 version on Git. But i can wait, surely it wont be long now.

Good luck with Solus Rama :slight_smile:

Hi all,

I’ve been following this thread lately and have chanced upon a project to finally utilise the awesome features of the Victory Plugin.
But i can’t get this plugin to work on Mac.
Can someone please share a installation setup to get this working on Mac? :slight_smile:

And also how can one use these features for mobile? Like the instanced static mesh feature for iOS and android?
Any help would be grateful. I read the thread where someone else was trying to get the plugin work on mac.

Thanks a ton Rama for the awesome work, but please share some guidelines on how i can get this to work.

Hi Rama,

I’ve got some kind of stupid question. I wanted to use your “Load Texture 2D From File” plugin and it seems to work perfectly. The example setup you pictured does its job and shows the height and the width of the image loaded in the game. But I want to actually connect the loaded image to a material and use this material ingame. This way I want to achieve the possibility to change the texture od the material at runtime. How can that be done?

Thanks a lot!

If I understand your correctly, you would make the texture a parameter in the material, then reference the material somewhere in your blueprints and call “Set Texture Parameter” to set it to the texture you just loaded. :slight_smile:

Hi 3Dler,

Make your material - right click on the texture loader you’re using and change it to the parameter version. Name the parameter (in the bottom left box) as ImageTexture or something.

In you blueprint - probably off of the Begin Play node, make a create dynamic material node - and select your material as the source - promote the created texture to a variable. Set the material of your object or whatever to this texture using the set material node.

Now you can drag off the new dynamic material variable and choose set texture parameter and feed any new texture into it - in the parameter box you need to type ImageTexture. You can feed the loaded texture into this.

Good luck!

every time i want to package my project i get an error… automation tool was unable to run successfully

Hi John & Dannington,

first of all, thanks for your kind and fast answers. What I’m trying to do is:

-Loading an image from a path and make it a texture
-apply this texture to a material

This way I want to achieve the possibility to change the texture in the PACKAGED game by changing the image which is applied to the material. So lets say, I’ve got a cube with a bird on it. The image of the bird lays at C:\pictures\ exture01.jpg. If I swap this image to a picture of a dog (of course also named “texture01”), in the packaged game there should be a dog on the cube now, as the texture for the cube is loaded from the path C:\pictures\ exture01.jpg.

I managed to load the image. But I don’t get how to say a material: “Use the image from this path”. Can anybody help here?

Below there’s a screenshot which hopefully maked clear what I’m trying to achieve.

dc9164b39e1d3ced6b6a416e30225bbeab30a9b2.png

EDIT: And I also can’t package the game. First it takes extraordinarily long and than I get an unknown error.

Hi 3Dler

Here is what your material should (roughly) look like:

08b0d24d644479da25751ac6318c378b1dba616c.jpeg

And this is the BP - Because I didn’t have Rama’s plugin installed in this project I used the async image downloader - rama’s loader is probably better for you, so just replace that node with rama’s loader.

Edit - Just to note, Rama’s node is a pure one (green rather than blue), this means it doesn’t need to be in the execution path. It’s good to understand the difference - I think of the data being dragged out of these pure nodes when the node which is asking for it is executed. You may already know this or not. In your example, Rama’s node would only be called if your ‘Set - texture2d’ node was executed (Which it isn’t in your case - it’s execution pins aren’t connected to anything).

46a5edb99a8c0ef2fe241a02527678494ab2a9e1.jpeg

Dan

@Dannington

Thanks for helping out in my thread Dan!



[QUOTE=kinzua01;470878]
Hi all,

I've been following this thread lately and have chanced upon a project to finally utilise the awesome features of the Victory Plugin.

But i can't get this plugin to work on Mac. 
Can someone please share a installation setup to get this working on Mac? :)

And also how can one use these features for mobile? Like the instanced static mesh feature for iOS and android?

Thanks a ton Rama for the awesome work, but please share some guidelines on how i can get this to work.
[/QUOTE]


Someone in the community needs to help me out with a Mac version as I dont have a Mac so I can't reliably test for it :)

Regarding mobile, Epic is very careful that the features they release work with mobile, I believe instancd static meshes should work yes :)

Thanks!



[QUOTE=SudoEPM;470593]
I'm on the latest version of the editor and I can't see the VictoryPlugin even if I pasted the folder in the Plugins folder... Any idea?
[/QUOTE]


The "latest" version of the engine is a pre-release build not an official build, something that does seem to confuse a lot of people the way it is currently presented.

But a message clearly indicates that you should not be working on your main projects in 4.11 yet as it is not an official release.

The last official release is 4.10, that is what my plugin is still working with.


I wonder how Epic is going to handle everyone wanting their marketplace plugins updated to the pre-release engine builds... :)

Rama