C++ Hot Reload vs HotReload vs LiveCoding

Hi there everybody! -> Finally marketplace link: https://www.unrealengine.com/marketp…t/c-hot-reload

I would like to officially present the GitHub repository of C++ Hot Reload (www.hotreload.tech) for UE4. Since 2014 we are working on a low-level solution that allows you to see the changes in the screen in the gap of seconds, reloading the classes individually and allowing you to change the whole structure of your source code.

Regarding UE4; using in your game Build.cs PrivatePchHeaderFile option, even modifying the .h and changing the class layout adding/removing UProperties in the v0.9.97 you’ll be in the gap of 2s when hot reloading (or less in more modern PCs with NVME drive or newer CPUs). The integration is still in BETA.

Current status in v0.9.97 BETA
We have still a long way to go and test with UE4, but we’ll really appreciate your valuable feedback and help to test our Community version for UE, totally free for small teams and individual developers. If you wish to know more or download the latest stable version 0.9.95 for macOS and Windows go to our website: www.hotreload.tech

GitHub of C++ Hot Reload as UE4 Plugin

GitHub UE4 fork (deprecated, just for testing)
https://github.com/CppHotReload/Unre…3.cpphotreload

Twitter
https://twitter.com/cpphotreload

C++ Hot Reload - How it works

C++ Hot Reload for UE4 - Speed up using PCH and macOS support

C++ Hot Reload for UE4 - Changing class structure, UProperty

C++ Hot Reload for UE4 - Reload NON UProperty, private variables

C++ Hot Reload for UE4 - Changing class structure, UProperty

I just downloaded CppHotReload. How does one connect this plugin to unreal engine? (I have 4.22, 4.23 and 4.24 installed, FYI)

I hope this works. Unreal’s hot reload is a buggy mess and Live++ is not good enough yet.

hello guys,

What I meant by “Project setup agnostic” is that it doesn’t matter if you build an EXE or DLL, or if you use several DLLs, link against LIBs, etc. The structure of your solution and any projects it contains does not matter. I put this up because some people were under the impression that Live++ only works for DLLs, and I wanted to clarify that.stories

I’d be happy to change the phrasing on the website if it’s somehow misleading. Would something like “independent of project/solution-setup” be better?

thanks

Yesterday I released C++ Hot Reload in fully plugin mode: GitHub - CppHotReload/UE4: www.hotreload.tech
Also updated the branch I’ve been using: https://github.com/CppHotReload/UnrealEngine/tree/4.23.cpphotreload

Did you find any issue?

Additionally I made another video: https://www.youtube.com/watch?v=G9WnryVNDDA

I still need to find a full documented page about UE4 Hot Reload to make a comparison, if you know where I can find that information, please let me know.

The plugin relays on UE4 HotReload to make it easy to integrate, I removed the previous versions where I create manually the new object and delete the old one. Let me know how works for you the plugin and what you miss to make some test!

It is agnostic. Live++ improves UE4 HotReload virtual table patching (also available since 2014 in C++ Hot Reload) using /FUNCTIONPADMIN from MSVC -> /FUNCTIONPADMIN (Create hotpatchable image) | Microsoft Learn which bounds you to whatever Microsoft does, looking at Edit and Continue I’m really not in calm with that idea.

A basic explanation of how works C++ Hot Reload
C++ Hot Reload reacts when you modify a file, isolate it, wrap it into a dll externally and provides you the functionality to save/load data from private variables, protected, etc without boilrtplate or macros and so forth. It will give you back a pointer to a new version of your class.

That’s why is project or engine agnostic and works for macOS, Windows, clang, MSVC, and even on mobile and consoles.
Reload of iOS from macOS: https://www.youtube.com/watch?v=OsbR7sMABjk
Reload of iOS from PC: https://www.youtube.com/watch?v=Tk7oYw2FRqg

iOS is the most restrictive case… You basically run the logic in the PC CPU and sync the data with the engine. That’s how we can reload code at the same time on multiple devices.

That is not true.

Live++ has no special casing or similar for virtual tables, it is able to patch and hot-reload any kind of function, virtual or not, as it works directly on the binary machine code.
Additionally, Live++ is able to patch 99% of functions **without **using /FUNCTIONPADMIN. As long as a function is >= 5 bytes in size in the binary, it can be patched directly.
Using /FUNCTIONPADMIN allows Live++ to hot-reload the remaining 1% of functions which are smaller than 5 bytes in the binary code.

Live++ is not bound to whatever Microsoft does ;).

I’ll release soon the new version with Win64 and macOS with optimization, changing the .h adding/removing UProperties I’m getting on Win64 - Debug:


Reload time:  2.23441 seconds
Setup time:   0.0173081 seconds
Compile time: 1.96062 seconds
Link time:    0.25648 seconds

However I’m using


PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PrivatePCHHeaderFile = "Test.h";

Not so sure if there is an option to auto-configure the project to include and use PCH file and its include directive in every file. Does someone know about that? or maybe other nice faster to compile options (although now are quite similar to my other implementation in other engines, the 2s gap it’s quite fine) ?

There we go, macOS support and speed up using PCH files currently synced on master branch: GitHub - CppHotReload/UE4: www.hotreload.tech

This is very interesting! I’ll definitely try this when support for UE 4.25 will become available!

Hey guys! took time but it’s on the marketplace!

https://www.unrealengine.com/marketp…t/c-hot-reload

Thanks for the comments!

Looks great, thanks for this.

A please! Hope you like it and helps you to boost your productivity, remember you have support and you can give me feedback for improvements or search for suggestions to boost your project build times on the discord server.

Best!