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
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?
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.
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.
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 ;).
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) ?
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.