Can now launch two versions of the client, for standalone and client

This commit is contained in:
2025-06-04 20:28:09 -04:00
parent 8940dd9e70
commit 9f296916f8
6 changed files with 200 additions and 1007 deletions

1
.gitignore vendored
View File

@@ -4,6 +4,7 @@ gmon.out
.vsconfig .vsconfig
Integration.uproject Integration.uproject
Integration.code-workspace Integration.code-workspace
Integration.code-workspace.ubt
Makefile Makefile
*~ *~

View File

@@ -1,868 +0,0 @@
{
"folders": [
{
"name": "Integration",
"path": "."
},
{
"name": "UE5",
"path": "/home/jyelon/UnrealEngine"
}
],
"settings": {
"typescript.tsc.autoDetect": "off",
"npm.autoDetect": "off"
},
"extensions": {
"recommendations": [
"ms-vscode.cpptools",
"ms-dotnettools.csharp",
"vadimcn.vscode-lldb",
"ms-vscode.mono-debug",
"dfarley1.file-picker"
]
},
"tasks": {
"version": "2.0.0",
"tasks": [
{
"label": "Integration Linux Debug Build",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"Debug",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux Debug Rebuild",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"Debug",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"Integration Linux Debug Clean"
],
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux Debug Clean",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"Debug",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex",
"-clean"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux DebugGame Build",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"DebugGame",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux DebugGame Rebuild",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"DebugGame",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"Integration Linux DebugGame Clean"
],
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux DebugGame Clean",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"DebugGame",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex",
"-clean"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux Development Build",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"Development",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux Development Rebuild",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"Development",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"Integration Linux Development Clean"
],
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux Development Clean",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"Development",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex",
"-clean"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux Test Build",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"Test",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux Test Rebuild",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"Test",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"Integration Linux Test Clean"
],
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux Test Clean",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"Test",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex",
"-clean"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux Shipping Build",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"Shipping",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux Shipping Rebuild",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"Shipping",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"Integration Linux Shipping Clean"
],
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration Linux Shipping Clean",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"Linux",
"Shipping",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex",
"-clean"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 Debug Build",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"Debug",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 Debug Rebuild",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"Debug",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"Integration LinuxArm64 Debug Clean"
],
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 Debug Clean",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"Debug",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex",
"-clean"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 DebugGame Build",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"DebugGame",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 DebugGame Rebuild",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"DebugGame",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"Integration LinuxArm64 DebugGame Clean"
],
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 DebugGame Clean",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"DebugGame",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex",
"-clean"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 Development Build",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"Development",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 Development Rebuild",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"Development",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"Integration LinuxArm64 Development Clean"
],
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 Development Clean",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"Development",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex",
"-clean"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 Test Build",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"Test",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 Test Rebuild",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"Test",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"Integration LinuxArm64 Test Clean"
],
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 Test Clean",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"Test",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex",
"-clean"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 Shipping Build",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"Shipping",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 Shipping Rebuild",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"Shipping",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"Integration LinuxArm64 Shipping Clean"
],
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "Integration LinuxArm64 Shipping Clean",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"Integration",
"LinuxArm64",
"Shipping",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex",
"-clean"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "IntegrationEditor Linux Debug Build",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"IntegrationEditor",
"Linux",
"Debug",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "IntegrationEditor Linux Debug Rebuild",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"IntegrationEditor",
"Linux",
"Debug",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"IntegrationEditor Linux Debug Clean"
],
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "IntegrationEditor Linux Debug Clean",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"IntegrationEditor",
"Linux",
"Debug",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex",
"-clean"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "IntegrationEditor Linux DebugGame Build",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"IntegrationEditor",
"Linux",
"DebugGame",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "IntegrationEditor Linux DebugGame Rebuild",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"IntegrationEditor",
"Linux",
"DebugGame",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"IntegrationEditor Linux DebugGame Clean"
],
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "IntegrationEditor Linux DebugGame Clean",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"IntegrationEditor",
"Linux",
"DebugGame",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex",
"-clean"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "IntegrationEditor Linux Development Build",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"IntegrationEditor",
"Linux",
"Development",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "IntegrationEditor Linux Development Rebuild",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"IntegrationEditor",
"Linux",
"Development",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"IntegrationEditor Linux Development Clean"
],
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
},
{
"label": "IntegrationEditor Linux Development Clean",
"group": "build",
"command": "Engine/Build/BatchFiles/Linux/Build.sh",
"args": [
"IntegrationEditor",
"Linux",
"Development",
"/home/jyelon/integration/Integration.uproject",
"-waitmutex",
"-clean"
],
"problemMatcher": "$msCompile",
"type": "shell",
"options": {
"cwd": "/home/jyelon/UnrealEngine"
}
}
]
},
"launch": {
"version": "0.2.0",
"configurations": [
{
"name": "Launch Integration (Debug)",
"request": "launch",
"program": "/home/jyelon/integration/Binaries/Linux/Integration-Linux-Debug",
"preLaunchTask": "Integration Linux Debug Build",
"args": [
],
"cwd": "/home/jyelon/UnrealEngine",
"type": "cppdbg",
"visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis",
"showDisplayString": true
},
{
"name": "Launch Integration (DebugGame)",
"request": "launch",
"program": "/home/jyelon/integration/Binaries/Linux/Integration-Linux-DebugGame",
"preLaunchTask": "Integration Linux DebugGame Build",
"args": [
],
"cwd": "/home/jyelon/UnrealEngine",
"type": "cppdbg",
"visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis",
"showDisplayString": true
},
{
"name": "Launch Integration (Development)",
"request": "launch",
"program": "/home/jyelon/integration/Binaries/Linux/Integration",
"preLaunchTask": "Integration Linux Development Build",
"args": [
],
"cwd": "/home/jyelon/UnrealEngine",
"type": "cppdbg",
"visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis",
"showDisplayString": true
},
{
"name": "Launch Integration (Test)",
"request": "launch",
"program": "/home/jyelon/integration/Binaries/Linux/Integration-Linux-Test",
"preLaunchTask": "Integration Linux Test Build",
"args": [
],
"cwd": "/home/jyelon/UnrealEngine",
"type": "cppdbg",
"visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis",
"showDisplayString": true
},
{
"name": "Launch Integration (Shipping)",
"request": "launch",
"program": "/home/jyelon/integration/Binaries/Linux/Integration-Linux-Shipping",
"preLaunchTask": "Integration Linux Shipping Build",
"args": [
],
"cwd": "/home/jyelon/UnrealEngine",
"type": "cppdbg",
"visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis",
"showDisplayString": true
},
{
"name": "Launch IntegrationEditor (Debug)",
"request": "launch",
"program": "/home/jyelon/UnrealEngine/Engine/Binaries/Linux/UnrealEditor-Linux-Debug",
"preLaunchTask": "IntegrationEditor Linux Debug Build",
"args": [
"/home/jyelon/integration/Integration.uproject"
],
"cwd": "/home/jyelon/UnrealEngine",
"type": "cppdbg",
"visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis",
"showDisplayString": true
},
{
"name": "Launch IntegrationEditor (DebugGame)",
"request": "launch",
"program": "/home/jyelon/UnrealEngine/Engine/Binaries/Linux/UnrealEditor-Linux-DebugGame",
"preLaunchTask": "IntegrationEditor Linux DebugGame Build",
"args": [
"/home/jyelon/integration/Integration.uproject"
],
"cwd": "/home/jyelon/UnrealEngine",
"type": "cppdbg",
"visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis",
"showDisplayString": true
},
{
"name": "Launch IntegrationEditor (Development)",
"request": "launch",
"program": "/home/jyelon/UnrealEngine/Engine/Binaries/Linux/UnrealEditor",
"preLaunchTask": "IntegrationEditor Linux Development Build",
"args": [
"/home/jyelon/integration/Integration.uproject"
],
"cwd": "/home/jyelon/UnrealEngine",
"type": "cppdbg",
"visualizerFile": "/home/jyelon/UnrealEngine/Engine/Extras/VisualStudioDebugging/Unreal.natvis",
"showDisplayString": true
},
{
"name": "Generate Project Files",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "UnrealBuildTool Linux Development Build",
"program": "/home/jyelon/UnrealEngine/Engine/Build/BatchFiles/RunUBT.bat",
"args": [
"-projectfiles",
"-vscode",
"-project=/home/jyelon/integration/Integration.uproject",
"-game",
"-engine",
"-dotnet"
],
"console": "internalConsole",
"internalConsoleOptions": "openOnSessionStart",
"stopAtEntry": false,
"cwd": "/home/jyelon/UnrealEngine"
}
]
}
}

View File

@@ -0,0 +1,107 @@
{
"macros": {
"macros-explanation" : [
"We have written a simple macro preprocessor for json.",
"The following macros can be invoked from later in the json",
"file. The macro preprocessing is done as part of the",
"python script build-everything.py"
],
"luprex-launch-config" : {
"name": "CONFIGNAME",
"request": "launch",
"program": "UE5/Engine/Binaries/Linux/UnrealEditor-Linux-DebugGame",
"preLaunchTask": "Make All",
"args": [
"INTEGRATION/Integration.uproject",
"-userdir=User/USERNAME",
"-LuprexServer=SERVER"
],
"cwd": "INTEGRATION",
"type": "lldb",
"initCommands": [
"command script import UNREALENGINE/Engine/Extras/LLDBDataFormatters/UEDataFormatters_2ByteChars.py",
"settings set target.inline-breakpoint-strategy always",
"target stop-hook add --one-liner \"p ::UngrabAllInputImpl()\""
]
}
},
"folders": [
{
"name": "Integration",
"path": "INTEGRATION"
},
{
"name": "UE5",
"path": "UNREALENGINE"
}
],
"settings": {
"typescript.tsc.autoDetect": "off",
"lldb.dereferencePointers": false,
"npm.autoDetect": "off",
"files.watcherExclude": {
"UE5/Engine/**": true,
"UE5/Samples/**": true,
"UE5/Templates/**": true
},
"files.associations": {
"**/include/**": "cpp",
"**/bits/**": "cpp",
"**/c++/**": "cpp",
"**/x86_64-linux-gnu/**": "cpp",
"*.ipp": "cpp",
"*.inc": "cpp"
}
},
"extensions": {
"recommendations": [
"vadimcn.vscode-lldb",
"dfarley1.file-picker",
"ms-python.python",
"ms-vscode.cpptools",
"ms-dotnettools.csharp",
"ms-vscode.mono-debug"
]
},
"tasks": {
"version": "2.0.0",
"tasks": [
{
"label": "Make All",
"group": {
"kind": "build",
"isDefault": true
},
"command": "make all",
"presentation": {
"clear": true
},
"problemMatcher": "$msCompile",
"type": "shell"
},
{
"label": "Make Clean",
"group": "build",
"command": "make clean",
"presentation": {
"clear": true
},
"problemMatcher": "$msCompile",
"type": "shell"
}
]
},
"launch": {
"version": "0.2.0",
"configurations": [
{
"macro": "luprex-launch-config",
"vars": {"CONFIGNAME":"Luprex Standalone", "SERVER":""}
},
{
"macro": "luprex-launch-config",
"vars": {"CONFIGNAME":"Luprex Client", "SERVER":"192.168.0.100"}
}
]
}
}

View File

@@ -36,6 +36,10 @@ ALuprexGameModeBase::ALuprexGameModeBase()
ResetToInitialState(); ResetToInitialState();
OnWorldPreActorTickHandle = FWorldDelegates::OnWorldPreActorTick.AddUObject(this, &ALuprexGameModeBase::OnWorldPreActorTick); OnWorldPreActorTickHandle = FWorldDelegates::OnWorldPreActorTick.AddUObject(this, &ALuprexGameModeBase::OnWorldPreActorTick);
OnWorldPostActorTickHandle = FWorldDelegates::OnWorldPostActorTick.AddUObject(this, &ALuprexGameModeBase::OnWorldPostActorTick); OnWorldPostActorTickHandle = FWorldDelegates::OnWorldPostActorTick.AddUObject(this, &ALuprexGameModeBase::OnWorldPostActorTick);
FString LuprexServer;
FParse::Value(FCommandLine::Get(), TEXT("-LuprexServer="), LuprexServer);
UE_LOG(LogTemp, Display, TEXT("LuprexServer = %s"), *LuprexServer)
} }
ALuprexGameModeBase::~ALuprexGameModeBase() ALuprexGameModeBase::~ALuprexGameModeBase()

View File

@@ -60,6 +60,69 @@ def shell(dir, cmd):
print("Running:", cmd) print("Running:", cmd)
subprocess.run(cmd, shell=True, check=True, cwd=dir) subprocess.run(cmd, shell=True, check=True, cwd=dir)
#
# This is the code for a simple json macro preprocessor.
# It is used to write json files containing macros, which can
# then be macroexpanded later in the json file. The json
# file should have a 'macros' section at the top level.
#
def replace_strings_recursively(template, variables):
if isinstance(template, str):
# Then apply macro-local substitutions
for key, value in variables.items():
template = template.replace(key, str(value))
return template
elif isinstance(template, list):
return [replace_strings_recursively(item, variables) for item in template]
elif isinstance(template, dict):
return {k: replace_strings_recursively(v, variables) for k, v in template.items()}
else:
return template
def macroexpand_json_recursively(data, macros):
if isinstance(data, dict):
if "macro" in data and "vars" in data:
macro_name = data["macro"]
variables = data["vars"]
base_macro = macros[macro_name]
expanded = replace_strings_recursively(base_macro, variables)
return macroexpand_json_recursively(expanded, macros)
else:
return {
key: macroexpand_json_recursively(value, macros)
for key, value in data.items()
}
elif isinstance(data, list):
return [macroexpand_json_recursively(item, macros) for item in data]
else:
return data
def macroexpand_json(source_filename, output_filename, globals):
"""
Load JSON from `source_filename`, perform macro expansion using any
macros defined in the "macros" block, and write the expanded JSON to
`output_filename`. Global variables are passed as a Python dict.
"""
# Load the input template
with open(source_filename, "r") as f:
data = json.load(f)
# Extract and remove macros
macros = data.pop("macros", {})
# Expand macros
expanded = macroexpand_json_recursively(data, macros)
# Expand global variables
expanded2 = replace_strings_recursively(expanded, globals)
# Write output
with open(output_filename, "w") as f:
json.dump(expanded2, f, indent=4)
# #
# Find the two repositories and verify them. # Find the two repositories and verify them.
# #
@@ -72,6 +135,12 @@ if not os.path.isdir(f"{INTEGRATION}/Source/Integration"):
if not os.path.isdir(f"{UNREALENGINE}/Engine/Source/Editor"): if not os.path.isdir(f"{UNREALENGINE}/Engine/Source/Editor"):
sys.exit(f"Integration repository is not valid: {UNREALENGINE}") sys.exit(f"Integration repository is not valid: {UNREALENGINE}")
JSONGLOBALS= {
"INTEGRATION": INTEGRATION,
"UNREALENGINE": UNREALENGINE,
"USERNAME": USER,
}
# #
# Create the Saved/UnrealBuildTool directories. These will hold # Create the Saved/UnrealBuildTool directories. These will hold
# the file BuildConfiguration.xml # the file BuildConfiguration.xml
@@ -118,19 +187,21 @@ writefile(f"{INTEGRATION}/Source/Integration/lpx-paths.hpp", f"""
# #
print("Applying patch to Unreal Engine...") print("Applying patch to Unreal Engine...")
PATCHED_FILES = []
for line in readfile(f"{INTEGRATION}/EnginePatches/EnginePatch").splitlines(): for line in readfile(f"{INTEGRATION}/EnginePatches/EnginePatch").splitlines():
if line.startswith("--- a/"): if line.startswith("--- a/"):
shell(UNREALENGINE, f"git checkout HEAD {line[6:]}") PATCHED_FILES.append(line[6:])
if PATCHED_FILES:
shell(UNREALENGINE, "git checkout HEAD -- " + " ".join(PATCHED_FILES))
shell(UNREALENGINE, f"git apply {INTEGRATION}/EnginePatches/EnginePatch") shell(UNREALENGINE, f"git apply {INTEGRATION}/EnginePatches/EnginePatch")
# #
# Write Integration.uproject. # Write Integration.uproject.
# #
UPROJECTTEMPLATE=readfile(f"{INTEGRATION}/EnginePatches/uproject") macroexpand_json(f"{INTEGRATION}/Integration.uproject.tpl.json",
UPROJECT=json.loads(UPROJECTTEMPLATE) f"{INTEGRATION}/Integration.uproject",
with open(f"{INTEGRATION}/Integration.uproject", "w") as rewritten: JSONGLOBALS)
json.dump(UPROJECT, rewritten, indent=4)
# #
# Run Setup.sh in UNREALENGINE # Run Setup.sh in UNREALENGINE
@@ -138,17 +209,6 @@ with open(f"{INTEGRATION}/Integration.uproject", "w") as rewritten:
shell(UNREALENGINE, f"{UNREALENGINE}/Setup.{BAT}") shell(UNREALENGINE, f"{UNREALENGINE}/Setup.{BAT}")
#
# Use UnrealBuildTool to generate a rough draft of Integration.code-workspace.
# We're not going to use it, but we set it aside as a reference that you can
# study to make changes to this script.
#
Path(f"{INTEGRATION}/Integration.code-workspace").unlink(missing_ok=True)
Path(f"{INTEGRATION}/Integration.code-workspace.old").unlink(missing_ok=True)
shell(INTEGRATION, f'{UNREALENGINE}/GenerateProjectFiles.{BAT} -projectfiles -project="{INTEGRATION}/Integration.uproject" -game')
Path(f"{INTEGRATION}/Integration.code-workspace").rename(f"{INTEGRATION}/Integration.code-workspace.old")
# #
# Create a trivial makefile that calls into the unreal build system. # Create a trivial makefile that calls into the unreal build system.
# #
@@ -166,135 +226,24 @@ clean:
""") """)
# #
# Build our own Integration.code-workspace from scratch. # Use UnrealBuildTool to generate Integration.code-workspace.ubt
#
# We're not going to use it, but we keep it as a reference that you can
# use when editing Integration.workspace-template.
# #
WORKSPACE={} Path(f"{INTEGRATION}/Integration.code-workspace").unlink(missing_ok=True)
Path(f"{INTEGRATION}/Integration.code-workspace.ubt").unlink(missing_ok=True)
WORKSPACE["folders"] = [] shell(INTEGRATION, f'{UNREALENGINE}/GenerateProjectFiles.{BAT} -projectfiles -project="{INTEGRATION}/Integration.uproject" -game')
WORKSPACE["folders"].append({ "name": "Integration", "path": "." }) Path(f"{INTEGRATION}/Integration.code-workspace").rename(f"{INTEGRATION}/Integration.code-workspace.ubt")
WORKSPACE["folders"].append({ "name": "UE5", "path": UNREALENGINE })
WORKSPACE["settings"] = {}
WORKSPACE["settings"]["typescript.tsc.autoDetect"] = "off"
WORKSPACE["settings"]["lldb.dereferencePointers"] = False
WORKSPACE["settings"]["npm.autoDetect"] = "off"
WORKSPACE["settings"]["files.watcherExclude"] = {}
WORKSPACE["settings"]["files.watcherExclude"]["/home/jyelon/UnrealEngine/Engine/**"] = True
WORKSPACE["settings"]["files.watcherExclude"]["/home/jyelon/UnrealEngine/Samples/**"] = True
WORKSPACE["settings"]["files.watcherExclude"]["/home/jyelon/UnrealEngine/Templates/**"] = True
WORKSPACE["settings"]["files.associations"] = {
"*.ipp": "cpp",
"locale": "cpp",
"random": "cpp",
"queue": "cpp",
"stack": "cpp",
"__locale": "cpp",
"functional": "cpp",
"sstream": "cpp",
"regex": "cpp",
"*.inc": "cpp",
"strstream": "cpp",
"string_view": "cpp",
"typeindex": "cpp",
"typeinfo": "cpp",
"scoped_allocator": "cpp",
"array": "cpp",
"hash_map": "cpp",
"hash_set": "cpp",
"bitset": "cpp",
"slist": "cpp",
"initializer_list": "cpp",
"valarray": "cpp",
"__hash_table": "cpp",
"__split_buffer": "cpp",
"__tree": "cpp",
"deque": "cpp",
"list": "cpp",
"map": "cpp",
"set": "cpp",
"span": "cpp",
"string": "cpp",
"unordered_map": "cpp",
"unordered_set": "cpp",
"vector": "cpp",
"ranges": "cpp",
"utility": "cpp",
"ratio": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"__bit_reference": "cpp",
"__node_handle": "cpp",
"atomic": "cpp",
"__memory": "cpp",
"limits": "cpp",
"optional": "cpp",
"variant": "cpp"
}
WORKSPACE["extensions"] = {}
WORKSPACE["extensions"]["recommendations"] = [
"vadimcn.vscode-lldb",
"dfarley1.file-picker",
"ms-python.python",
"ms-vscode.cpptools",
"ms-dotnettools.csharp",
"ms-vscode.mono-debug"
]
WORKSPACE["tasks"] = {}
WORKSPACE["tasks"]["version"] = "2.0.0"
WORKSPACE["tasks"]["tasks"] = []
WORKSPACE["tasks"]["tasks"].append({
"label": "Make All",
"group": { "kind": "build", "isDefault": True },
"command": "make all",
"presentation" : { "clear" : True },
"problemMatcher": "$msCompile",
"type": "shell",
})
WORKSPACE["tasks"]["tasks"].append({
"label": "Make Clean",
"group": "build",
"command": "make clean",
"presentation" : { "clear" : True },
"problemMatcher": "$msCompile",
"type": "shell",
})
WORKSPACE["launch"] = {}
WORKSPACE["launch"]["version"] = "0.2.0"
WORKSPACE["launch"]["configurations"] = []
WORKSPACE["launch"]["configurations"].append({
"name": "Launch Editor with Luprex",
"request": "launch",
"program": f"{UNREALENGINE}/Engine/Binaries/Linux/UnrealEditor-Linux-DebugGame",
"preLaunchTask": "Make All",
"args": [
f"{INTEGRATION}/Integration.uproject",
"-userdir=User/jyelon"
],
"cwd": UNREALENGINE,
"type": "lldb",
"initCommands": [
f"command script import {UNREALENGINE}/Engine/Extras/LLDBDataFormatters/UEDataFormatters_2ByteChars.py",
"settings set target.inline-breakpoint-strategy always",
"target stop-hook add --one-liner \"p ::UngrabAllInputImpl()\""
]
})
# #
# Write Integration.code-workspace. # Build Integration.code-workspace from Integration.workspace-template.
# #
with open(f"{INTEGRATION}/Integration.code-workspace", "w") as rewritten: macroexpand_json(f"{INTEGRATION}/Integration.code-workspace.tpl.json",
json.dump(WORKSPACE, rewritten, indent=4) f"{INTEGRATION}/Integration.code-workspace",
JSONGLOBALS)
# #
# Do an initial build of Luprex # Do an initial build of Luprex