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

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

Hello !

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 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 ,

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 , I got 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 .

Thanks,

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 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 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 with consoles

:slight_smile:

'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 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 for you in Blueprints!

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

I had to use my VictoryPC class to do , 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 Stamps for 1 Sound?

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

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.

 is  my own code for you, at no cost!



```


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

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

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

	FVictorySubtitleCue()
		: (0)
	{ } 
	FVictorySubtitleCue(const FText& InText, float InTime)
	: SubtitleText(InText)
	, (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 ! 
	*/ 
	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

*/

#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(,Sound,VolumeMultiplier,PitchMultiplier,StartTime);
	if(Audio)
	{
		//Subtitle Delegate for You!
		//		<3
		Audio->OnQueueSubtitles.BindDynamic(, &AVictoryPC::Subtitles_CPPDelegate);
	}      
	
	/*
		Note that the OnAudioFinished is BP assignable off of return of  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.));
	} 
	  
	**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!

:)

Hi , 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 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 , 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 :


//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 of a nudge in the right direction? 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…

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 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…

, is there usually a high labor cost associated with updating nodes to work with the newest engine versions? Obviously just the 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 the extra nodes you’ve added are like a bonus at that .

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

Hi ,

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

And also how can one use these features for mobile? Like the instanced static mesh 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 for the awesome work, but please share some guidelines on how i can get to work.

Hi ,

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 material ingame. way I want to achieve the possibility to change the texture od the material at runtime. How can that be ?

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

Good luck!

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

Hi ,

first of , 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 texture to a material

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 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 path”. Can anybody help here?

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

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:

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

Edit - Just to note, 's node is a pure one (green rather than blue), 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 or not. In your example, '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).

@Dannington

Thanks for helping out in my thread !



[QUOTE=kinzua01;470878]
Hi ,

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

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

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

Thanks a ton for the awesome work, but please share some guidelines on how i can get  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... :)

Supporting Pre-Release Engine Builds

Compiling is not the, constantly adding to and updating two engine versions worth of updates every I want to add a node:

  1. victory plugin editor version
  2. victory plugin packaged binaries
  3. victory plugin editor + packaged on media fire

is what takes the :slight_smile:

It is the distribution of the software that is taking me the , not the software itself :slight_smile:

The labor is in having to maintain two versions of updates. And I really am not getting very many donations at , so maintaining Victory Plugin for two engine versions is just beyond my capacity when offering whole plugin for free to the community.

Epic really needs to think about when it comes for marketplace plugins, because if everyone is so impatient to be on the not-entirely-stable-supposed-to-be-test branch, rather than the stable tested branch, it is going to bother everyone if plugin makers dont always upload for the test branch.

But as I said, having to maintain two versions of the plugin becomes ridiculous.

I wonder why everyone wants the unstable-declared-to-be-test branch more than the official release?

The point of a test branch is for testing, not mainline development!

Yet everyone seems to move over to the latest and supposedly greatest, even though it is just a test branch.

What to do?

Perhaps for certain pre-release builds that are highly preferred, I would simply stop supporting the previous engine version and move on to the pre-release version.

I am under the presumption that discussion will become a moot point within a few days, when 4.11 is released, but if it seems to be taking too long I will do the upgrade.

:slight_smile: