| IntroductionThis is the alpha for my Total War Warhammer3 lua debugger.
It will be extended to other Total War games like Rome 2 and Three Kingdoms. RequirementsSetup
Download the lua debugger mod from steam workshop and activate themOpen VSCodeDebug config
In VSCode, go to the Run and Debug page (ctrl+shift+d) and add the following new debug configurations. For example, the following:  {
     "name": "tw-launch",
     "type": "lua",
     "request": "launch",
     "executable": "<path to warhammer3>/warhammer3.exe",
     "modListFile": "used_mods.txt",
     "encoding": "UTF-8",
     "env": {}
 },
 {
     "name": "tw-wait",
     "type": "lua",
     "request": "attach",
     "executable": "<path to warhammer3>/warhammer3.exe",
     "modListFile": "used_mods.txt",
     "encoding": "UTF-8"
 }
 This will create two debug launch configs. "tw-launch-lua" will start warhammer3 and connect the debugger to it.
 And tw-wait, which will connect when warhammer3 is already 
 Additional settings:
 "arguments": "game_startup_mode campaign_load \"Knights of Caledor.643590582460.save\"; ",
 This setting will add to the commandline arguments the warhammer3 executable is being called with. 
 In the example it shows you how to skip the frontend and immediately load the Knights of Caledor savefile
 "sourceFilesPath": "${workspaceFolder}/packfiles/"
 This setting will add a lua source file location for the debugger. The debugger will search in this folder for lua files.
 It is optional, as the debugger will search in the virtual source file folder for lua source (see step 4)
 "preLaunchTask": "PackMod"
 preLaunchTask will kick a task before the debugger is started. This can be used in the "launch" debugger settings.
 When "PackMod" is used as a task, it will pack the files in the pack folder and install it as a mod. See Build pack Task for more below
Virtual Source Files : Command: "Create Virtual Source Files for Total War" Activating Virtual Source Files is done by pressing ctrl+alt+p and selecting the "Create Virtual Source Files for Total War" command. Virtual Source Files are a virtual folder that will contain all the active lua source files during a debug session.
When launching the debugger, the virtual source files will be updated with the current lua files. The virtual folder contains all the active lua source code that are currently specified in used_mods.txt file.
Which should reflect all the active source files that are currently being used in the game as TW uses this file to load its mods (unless otherwise specified) Warning! Creating the folder for the first time will this will turn off the debugger if it is active. So do this before starting the debugger.Make sure that the lua debugger mod is listed in "common\Total War WARHAMMER III\used_mods.txt" when launching from vscodein VSCode go to Run and Debug (ctrl+shift+d), and use the tw-launch configuration to start warhammer3 with the debugger connected~. Happy debugging! Build Pack TaskExample settings for task:
{
"version": "2.0.0",
"tasks": [
{
"label": "PackMod",
"type": "pack",
"executable": "C:/Games/steamapps/common/Total War WARHAMMER III/warhammer3.exe",
"packfilesDirectory": "pack",
"modName": "test_mod.pack"
}
]
} "packfilesDirectoy": is the subfolder where your mod files are located. This can be DBs, Lua or anything else.
"modName": is the name of your mod.
"executable": location of the executable, is also used to locate the used_mods.txt file and the data folder
 Features
BreakpointsStepping over, in and outInspect local and global variablesPrint to vscode from lua.   debuggee:print("warning", "some warning")    (categories are "warning", "error", "log")Pausing (see limitations and quirks)Break on ErrorVirtual source files that are automatically extracted from the active pack files specified in used_mods.txt Limitations and quirks
Debugger (re)connects everytime warhammer3 switches environment (frontend/campaign/battle), meaning that there is a brief perior during load times where the debugger is not active and will not respond to commands.It is best to use the launch configuration, and not waitPressing pause in vscode will not stop warhammer3 where it is executing in lua, but inside either twdt_frontendstart.lua, tw_battle.lua or tw_campaign.luaDisconnecting and reconnecting the debugger from vscode is not advised, but seems to work. Upcomming Features
Rome 2, Three KingdomsDB editing ThanksThis debugger is a changed version of the devcat LUA debugger: https://github.com/devcat-studio/VSCodeLuaDebug/ Thanks to RPFM, which is used by this extension to extract the live source files |  |