A question about unreal engine 4.5 with the new hot reload.

I didn’t install it because i wanna wait for the official release.
Is it getting anyway near to the compile time and workflow that unity3d has with c# ?

Hot reload in 4.5 improves iteration time by quite a lot. The reload process takes only a few moments after compiling and the effect can be seen right away. Adding new classes and doing a few quick iterations to get your initial implementation right is not a chore at all. It makes working with blueprints based on C++ much less annoying as well… I can hybrid prototype between C++ and blueprints without any issue.

The next nice new feature I am looking forward to is the auto-save on blueprint compile… Usually I remember to save, but I do hate having to redo things if I have a crash.

Thanks, usually i save before i compile lol. Just to be more exact, how many seconds passes from the moment you decide to start compiling the code to the moment it is actually running the game with the influence of the code you’v just wrote ?

It is very dependent on how much code you have to compile and how it is structured. Compile times are not much changed from 4.4, that is just C++. The reload itself might take about 10-20 seconds again depending on how many modules have to be reloaded, it could be longer. Usually for my use it takes about 30-45 seconds total to compile and reload. If your module is larger it might take a minute, but you have much less interupted workflow because both the code and the editor are right there.

Sounds great. Thanks :slight_smile:

On that note, I tried it out with writing a custom game-specific Blueprint node and it seems I still need to restart the editor to reliably get that node to show up in Blueprints. Did you have the same experience?

I’ve noticed that sometimes it doesn’t show up in the context menu if if the blueprint is open at the time of compile. I’ve only had to close and reopen the BP to get the list to repopulate.

Hmm nope, when I make a change to a node it doesn’t show up even when I delete the node in the BP, save, compile BP, close BP, Recompile Game Code and reopen the BP.

I’m inheriting from UEdGraphNode like the guy in the Wiki. Is that why maybe?

That may be an oversight, I have not had a problem with function nodes in blueprints inheriting from C++ classes, but I admit, I have not tried it with UEdGraphNode. I would hazard that the wiki page is a bit out of date, and that may have been the best way of doing things at that time.

UEdGraphNode is the base class for all editor graph nodes which is actually a terribly complicated system, I went cross-eyed trying to figure it out last time I looked. I would assume extending it is unexpected unless you are really dedicated to making new editor graph functionality. That is where I would start if I wanted to make something like a realistic circuit diagram graph where wires carried “charge” rather than passing around UObjects.

I would try inheriting from UBlueprintFunctionLibrary which is the expected way of creating new globally accessible nodes using the standard UFUNCTION macros. Most everything you would want to achieve can be done by using UFUNCTION macro.

Yeah extending UBlueprintFunctionLibrary seems like a better choice, so thanks for that. After some testing it doesn’t solve the issue though. I still need to restart the editor to see changes in custom BP nodes. Say if I change the friendly name or a default parameter value. No big deal of course, was just wondering if I’m doing something wrong or there’s a bug or wrong setting or something.

Here’s the code btw:


#pragma once

#include "MyGameBlueprintLibrary.generated.h"

UCLASS()
class MYGAME_API UMyGameBlueprintLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_UCLASS_BODY()

	UFUNCTION(BlueprintCallable, meta = (FriendlyName = "Hello World", Keywords = "String Hello World"), Category = Game)
	static FString HelloWorld(FString String = FString("Hello!"));

};


#include "MyGame.h"
#include "MyGameBlueprintLibrary.h"

UMyGameBlueprintLibrary::UMyGameBlueprintLibrary(const class FPostConstructInitializeProperties& PCIP)
: Super(PCIP)
{

}

FString UMyGameBlueprintLibrary::HelloWorld(FString String)
{
	return String;
}


It would be worth reporting this on answerhub if there is not anything on it already. I would like to see this working as well.