Jass Hot Code Reload (JHCR) is an integrated feature in Wurst that allows you to reload your Warcraft III map’s code while the game is still running. This drastically speeds up iteration because you do not need to restart the map (and replay from the beginning) whenever you change your code.
Prerequisite: If you have not installed Wurst and Visual Studio Code yet, start with the Wurst Setup Guide to get your environment ready.
Once you have Wurst and Visual Studio Code, follow these steps to set up JHCR:
Download JHCR Download the latest version here and extract it to a folder on your machine.
wurst.jhcrExe
.C:\apps\jhcr.exe
).wurst.customMapDataPath
setting.C:\Users\YourName\Documents\Warcraft III\CustomMapData
or
C:\Users\YourName\OneDrive\Documents\Warcraft III\CustomMapData
--preload-path
option.Once everything is set up, you can run your map with JHCR directly from Visual Studio Code. This is called Hot Code Reload.
F1
in Visual Studio Code.wurst: Hot Run a Wurst map with Jass Hot Code Reload (JHCR)
Enter
to select it.Enter
again.Warcraft III will now start and load your map with JHCR support.
Once your map is running in Warcraft III:
F1
.wurst: Hot reload code for a Wurst map started with Jass Hot Code Reload (JHCR)
Enter
.ESC
to trigger the actual reload.You should see a message like: Code reloaded, status: 1
This indicates a successful reload. Other status codes include:
If you find yourself reloading and restarting your map frequently, you can speed up your workflow even more by assigning keyboard shortcuts in Visual Studio Code for the following commands:
wurst: Hot Run a Wurst map with Jass Hot Code Reload (JHCR)
wurst: Hot reload code for a Wurst map started with Jass Hot Code Reload (JHCR)
To do this, open Keyboard Shortcuts in VS Code (usually under File > Preferences > Keyboard Shortcuts or by pressing Ctrl+K, Ctrl+S
on Windows) and set bindings for the commands above.
init
print("Hello")
After reloading, you will not see this message re-printed, because initializers aren’t re-run.
init
doPeriodically(1.) cb ->
print("Hello") // If you change this to "There" and reload, the new text will show.
Here, the text printed every second will change after a successful reload.
Despite these constraints, JHCR is still extremely useful for experimenting with small features, fine-tuning values, and rapidly iterating on game logic.
Enjoy faster development and real-time testing with Jass Hot Code Reload!