Xist's Unreal C++ Build & Dev Tools. Requires PowerShell 7+.
Main Branch: https://github.com/XistGG/UnrealXistTools/
- Make sure you are using PowerShell 7+
winget install Microsoft.PowerShell
- Clone this repository
- Add this repository clone folder to your
$env:PATH
- UProjectClean.ps1
- Completely Clean/Reset Repo/Depot
- Removes all generated C++ Build files
- Regenerate Project Files
- UEdit.ps1
- Edit a project in Unreal Editor
- UnrealVersionSelector.ps1
- Easy-to-use interface to Epic's UnrealVersionSelector.exe
- MigrateUEMarketplacePlugin.ps1
- Migrate a C++ plugin from one Engine version to another
- UEngine.ps1
- View and Modify Custom Engine Builds (read/write Epic's Windows registry keys)
- CreateCleanLyraUProject.ps1
- Setup Default Lyra Project on Git
- UProject.ps1
- Get Project Settings
- UProjectFile.ps1
- Get the
.uprojectfile associated with a path (current directory by default)
- Get the
- UProjectSln.ps1
- Get the
.slnfile associated with a path (current directory by default)
- Get the
- P4EncodePath.ps1
- Encode (or
-Decode) paths for P4
- Encode (or
- P4ImportBulk.ps1
- Import a massive number of files into a new depot without breaking P4
(tested by importing 800k+ files from UDN P4
//UE5/Release-5.2)
- Import a massive number of files into a new depot without breaking P4
(tested by importing 800k+ files from UDN P4
- P4Info.ps1
- Makes it real easy to extract
p4 infovalues
- Makes it real easy to extract
view source: UProjectClean.ps1
more information: How to Create a Lyra-based Project in Git
- Clones Lyra From Epic Source Github
- Copies Lyra Content From Epic Launcher
- Setups default branches
lyra-mainlyra-apilyra-game
-EngineRepositoryUrl(optional, default: "https://github.com/EpicGames/UnrealEngine")- URL of the Unreal Engine repository.
-EngineBranch(optional, default: "5.2")- Branch of the Unreal Engine to use.
-WorkspaceDir(required):- Directory where your project will be created.
-UE5Root(required):- Directory where Unreal Engine is located.
-LyraContentDir(required):- Directory containing the Lyra content.
-LyraMainBranch(optional, default: "lyra-main"):- Name of the main Lyra branch.
-LyraApiBranch(optional, default: "lyra-api"):- Name of the Lyra API branch.
-GameBranch(optional, default: "lyra-game"):- Name of the game branch.
-GameName(optional, default: "Lyra"):- Name of your game project.
Generate a default clean lyra project on UE5.2
CreateCleanLyraUProject.ps1 -GameName "MyGame" -WorkspaceDir "\\Projects\MyGame" -UE5Root "\\UnrealEngineSource" -LyraContentDir "\\LyraContent"view source: UProjectClean.ps1
- Delete all
Binaries(generated data) - Delete all
Intermediate(generated data) - Delete all
*.sln(generated data) - Delete all
.idea(if you set-Ideaswitch) - Delete all
DerivedDataCache(if you set-DDCswitch) - Generate Project Files
Supports the -Debug flag, add it to any command to gain more insight.
Clean the project in the current directory:
UProjectClean.ps1Clean a specific MyGame.uproject:
UProjectClean.ps1 MyGame.uprojectStart Unreal Editor: Open the .uproject associated with the current directory.
Alias for UnrealVersionSelector.ps1 -Editor $(&UProjectFile.ps1 -Path:$Path).FullName
Note that as this uses UnrealVersionSelector under the hood, you must have compiled your
editor and project in Development Editor mode. When opening a project in editor, the
underlying UVS requires that we use a Development editor.
Supports the -Debug flag, add it to any command to gain more insight.
Open the .uproject file in the current directory:
UEdit.ps1Open the .uproject file in the specified directory:
UEdit.ps1 path/to/projectview source: UnrealVersionSelector.ps1
- Allows developer to refer to
.uprojectfiles via relative paths - Infers the name of
.uprojectfiles based on current directory - Executes Epic's
UnrealVersionSelector.exefor base functionality
Supports the -Debug flag, add it to any command to gain more insight.
See -Help for Usage.
Generate project files:
UnrealVersionSelector.ps1 -ProjectFilesChoose which Engine to use:
UnrealVersionSelector.ps1 -SwitchVersionChoose a Specific Engine:
UnrealVersionSelector.ps1 -SwitchVersionSilent /Project/Root/Engine/Binaries/../..Start Rider: Open the .uproject associated with the current directory.
Supports the -Debug flag, add it to any command to gain more insight.
Open the .uproject file in the current directory:
Rider.ps1Open the .sln file in the current directory:
Rider.ps1 -slnStart Visual Studio: Open the .sln associated with the current directory.
Supports the -Debug flag, add it to any command to gain more insight.
Open the .sln file in the current directory:
VS.ps1Diff 2 files (for example can be used from p4v as the diff tool)
VS.ps1 -diff file1 file2view source: MigrateUEMarketplacePlugin.ps1
Required Arguments:
-PluginName-FromPathToSourceEngineRoot-ToPathToDestinationEngineRoot
Optional Arguments:
-ToThirdParty- If present, causes the plugin to be migrated to your
Plugins/ThirdPartydirectory rather than to the defaultPlugins/Marketplace
- If present, causes the plugin to be migrated to your
-Debug- If present, this switch causes additional debugging output to be written
-Force- If the destination plugin already exists, forcefully remove it and overwrite with the newly built plugin
- If this switch is not present, the script will abort rather than overwrite an existing plugin
MigrateUEMarketplacePlugin.ps1 -Plugin AutoSizeComments -From "E:/EpicLauncher/UE_5.1" -To "E:/MyEngine_5.2" -Debug -Force
MigrateUEMarketplacePlugin.ps1 -Plugin BlueprintAssist -From "E:/EpicLauncher/UE_5.1" -To "E:/MyEngine_5.2" -Debug -Force
MigrateUEMarketplacePlugin.ps1 -Plugin VisualStudioTools -From "E:/EpicLauncher/UE_5.1" -To "E:/MyEngine_5.2" -Debug -ForceIn the above example, you would have told the Epic Games Launcher to install UE 5.1 into
the folder E:/EpicLauncher/UE_5.1
and you would have installed these plugins from the UE Marketplace into the UE 5.1 Engine.
These commands would then copy 3 plugins from the UE Marketplace into your custom engine
at E:/MyEngine_5.2
including AutoSizeComments, BlueprintAssist and VisualStudioTools.
- By default selects the engine used by the current or named project
-Listlists all available custom engines-Nameselects from available custom engines-NewNamerenames an engine to your choice of names-UProjectselects the engine associated with the given .uproject-Startstarts the engine editor (Win64 only)
See -Help for more Usage info.
Display a list of all custom engines on this system:
UEngine.ps1 -ListRename the OldRandomGUIDName custom engine as MyEngine
UEngine.ps1 OldRandomGUIDName -NewName MyEngineReturns JSON parsed contents of $UProjectFile as a PowerShell Object
Supports the -Debug flag, add it to any command to gain more insight.
View the current .uproject in terminal:
UProject.ps1Get the Engine Association of a specific .uproject:
$(UProject.ps1 project.uproject).EngineAssociationReturns the .uproject file relevant to the -Path
(implicit first string parameter, or current directory by default).
Example: /project/project.uproject
Supports the -Debug switch.
Enable it to see debug info to help you understand how the .uproject is being assigned.
Select the default .uproject for the current directory:
UProjectFile.ps1Select the default .uproject in the specified directory:
UProjectFile.ps1 /projectSelect a specific .uproject:
UProjectFile.ps1 project.uprojectReturns the .sln file relevant to the -Path
(implicit first string parameter, or current directory by default).
Example: /project/project.sln
Supports the -Debug switch.
Enable it to see debug info to help you understand how the .sln is being assigned.
Select the default .sln for the current directory:
UProjectSln.ps1Select the default .sln in the specified directory:
UProjectSln.ps1 /projectSelect a specific .sln:
UProjectSln.ps1 project.slnEncodes or Decodes a P4 path. See -Help for more details.
See P4 filespecs for more info regarding P4 path encoding requirements.
See -Help for Usage.
Import a massive number of files into a new depot without breaking P4.
As of Jan-2023 I am unable to get P4 to successfully import UDN in one commit. Perhaps it is related to RAM availability?
With this script, I can break the 800k+ files into batches and submit those, which works great.
Supports the -Debug flag, add it to any command to gain more insight.
See -Help for Usage.
Extracts p4 info output into a Dictionary, which it returns as the result.
You can then grab specific keys if you want, for example:
$P4Username = (P4Info.ps1)."User name"You can also use this to initialize .p4config files like:
P4Info.ps1 -Config > .p4configTry the -Debug switch to see the parse info.