From 52dbcc2aa0e63eba3ff593bd17b9139f00423730 Mon Sep 17 00:00:00 2001 From: spuds Date: Wed, 24 Aug 2022 16:32:28 +0100 Subject: [PATCH] Weird it didn't commit --- README.md | 2 +- book.toml | 2 +- src/Home.md | 16 +++++-- src/SUMMARY.md | 20 +++++--- src/Specific-Guides/Dialogue.md | 5 ++ .../{ => Disabling}/Disabling.md | 0 .../{ => Disabling}/NoCastle.png | Bin .../{ => Disabling}/Reference.png | Bin .../{ => Disabling}/Structure.png | Bin src/Specific-Guides/Levels.md | 16 +++---- src/Specific-Guides/Logic-Mods/Blueprint.md | 43 ++---------------- src/Specific-Guides/Logic-Mods/Creation.md | 2 + src/Specific-Guides/Logic-Mods/Injector.md | 8 ++++ src/Specific-Guides/Logic-Mods/Installing.md | 8 ++++ src/Specific-Guides/Logic-Mods/Profile.md | 9 ++++ .../Logic-Mods/Project-Setup.md | 14 ++++++ src/Specific-Guides/Logic-Mods/UML-Setup.md | 15 ++++++ src/Specific-Guides/Materials.md | 25 ---------- src/Specific-Guides/Materials/Engine.md | 11 +++++ src/Specific-Guides/Materials/UAssetGUI.md | 10 ++++ .../{ => Materials}/UassetGUI.png | Bin src/Specific-Guides/{ => Materials}/nodes.png | Bin src/Specific-Guides/Models/Meshes.md | 22 +++++++-- .../{ => UAssetAPI}/UAssetAPI.md | 0 src/Specific-Guides/UAssetGUI.md | 1 - src/The-Basics/Basics.md | 4 ++ src/The-Basics/Engine/Creation.md | 1 + src/The-Basics/Engine/Setting-Up.md | 2 + src/The-Basics/Paking/Final-Paking.md | 4 ++ src/The-Basics/Unpaking/AES-Keys.md | 8 +++- src/The-Basics/Unpaking/FModel.md | 6 +++ src/The-Basics/Unpaking/Options.md | 3 ++ src/The-Basics/Unpaking/QuickBMS.md | 8 ++++ src/The-Basics/Unpaking/UnrealPak.md | 8 +++- src/Tools/Asset-Editors.md | 6 ++- src/Tools/Libraries.md | 8 ++++ src/Tools/Locres-Editors.md | 4 +- src/Tools/Modelling.md | 6 ++- src/Tools/Pak-Explorers.md | 2 + 39 files changed, 201 insertions(+), 98 deletions(-) rename src/Specific-Guides/{ => Disabling}/Disabling.md (100%) rename src/Specific-Guides/{ => Disabling}/NoCastle.png (100%) rename src/Specific-Guides/{ => Disabling}/Reference.png (100%) rename src/Specific-Guides/{ => Disabling}/Structure.png (100%) create mode 100644 src/Specific-Guides/Logic-Mods/Creation.md create mode 100644 src/Specific-Guides/Logic-Mods/Injector.md create mode 100644 src/Specific-Guides/Logic-Mods/Installing.md create mode 100644 src/Specific-Guides/Logic-Mods/Profile.md create mode 100644 src/Specific-Guides/Logic-Mods/Project-Setup.md create mode 100644 src/Specific-Guides/Logic-Mods/UML-Setup.md delete mode 100644 src/Specific-Guides/Materials.md create mode 100644 src/Specific-Guides/Materials/Engine.md create mode 100644 src/Specific-Guides/Materials/UAssetGUI.md rename src/Specific-Guides/{ => Materials}/UassetGUI.png (100%) rename src/Specific-Guides/{ => Materials}/nodes.png (100%) rename src/Specific-Guides/{ => UAssetAPI}/UAssetAPI.md (100%) diff --git a/README.md b/README.md index eef1f93..1a39116 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# If you came here for the guide go to https://bananaturtlesandwich.github.io/UE4-Modding-Guide :) \ No newline at end of file +## If you came here for the guide go to https://bananaturtlesandwich.github.io/UE4-Modding-Guide :) \ No newline at end of file diff --git a/book.toml b/book.toml index 3069234..d4bec16 100644 --- a/book.toml +++ b/book.toml @@ -6,6 +6,6 @@ src = "src" title = "UE4 Modding Guide" [output.html] -default-theme = "navy" +default-theme = "coal" git-repository-url = "https://github.com/bananaturtlesandwich/UE4-Modding-Guide" edit-url-template = "https://github.com/bananaturtlesandwich/UE4-Modding-Guide/edit/main/{path}" \ No newline at end of file diff --git a/src/Home.md b/src/Home.md index 9de1c7f..2ea87b5 100644 --- a/src/Home.md +++ b/src/Home.md @@ -2,13 +2,21 @@ [![](https://img.shields.io/badge/Nexus%20page-orange?style=for-the-badge&logo=data:image/png;base64,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)](https://www.nexusmods.com/bluefire/) ![](https://img.shields.io/github/deployments/bananaturtlesandwich/Blue-Fire-Modding-Guide/github-pages?label=website%20build&style=for-the-badge) -*If you wish to use this guide to rip assets out of a game and use them for your own benefit and not to mod, kindly **piss off*** -- This is a general guide for Unreal Engine 4 game modding that uses Blue Fire for examples -(*Unfortunately Blue Fire doesn't have a big enough modding scene to fascilitate a guide this detailed anyway*) +**If you wish to use this guide to rip assets out of a game and use them for your own benefit and not to mod, kindly piss off** + +This is a general guide for Unreal Engine 4 game modding that uses Blue Fire for examples + +*Blue Fire doesn't have a big enough modding scene to fascilitate a guide like this anyway* + ### Credits - FatihG_ and Fluffyquack for being patient with me at the start + - [Buckminsterfullerene](https://github.com/Buckminsterfullerene02) for making the UE modding discord and pooling resources + - [atenfyr/adolescent](https://github.com/atenfyr) for making UassetAPI and GUI - - [RusselJ](https://github.com/RussellJerome) for making the [modloader](https://github.com/RussellJerome/UnrealModLoader) + + - [RusselJ](https://github.com/RussellJerome) for making the Unreal Modloader + - [Dmgvol](https://github.com/Dmgvol) for making cool things + - [Robi Studios](https://www.robistudios.com/) for making [Blue Fire](https://store.steampowered.com/app/1220150/Blue_Fire/) - you guys are awesome! diff --git a/src/SUMMARY.md b/src/SUMMARY.md index fa2360c..48bb1d9 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -27,16 +27,24 @@ --- # Specific Guides -- [Models]() - - [Meshes](Specific-Guides/Models/Meshes.md) - - [Skeletons/Rigs](Specific-Guides/Models/Rigs.md) -- [Disabling objects](Specific-Guides/Disabling.md) -- [Editing materials](Specific-Guides/Materials.md) +- [Models (Whole section is WIP)]() + - [Meshes]() + - [Skeletons]() +- [Disabling objects](Specific-Guides/Disabling/Disabling.md) +- [Materials]() + - [Via UAssetGUI](Specific-Guides/Materials/UAssetGUI.md) + - [In Engine](Specific-Guides/Materials/Engine.md) - [Text and Dialogue](Specific-Guides/Dialogue.md) - [Level Editing](Specific-Guides/Levels.md) - [Using UAssetGUI](Specific-Guides/UAssetGUI.md) -- [Using UAssetAPI](Specific-Guides/UAssetAPI.md) +- [Using UAssetAPI](Specific-Guides/UAssetAPI/UAssetAPI.md) - [Blueprint modding](Specific-Guides/Logic-Mods/Blueprint.md) + - [UML setup](Specific-Guides/Logic-Mods/UML-Setup.md) + - [.profile creation](Specific-Guides/Logic-Mods/Profile.md) + - [Project setup](Specific-Guides/Logic-Mods/Project-Setup.md) + - [Mod creation](Specific-Guides/Logic-Mods/Creation.md) + - [Installing](Specific-Guides/Logic-Mods/Installing.md) + - [Auto-Injector setup](Specific-Guides/Logic-Mods/Injector.md) --- # Tools and Resources diff --git a/src/Specific-Guides/Dialogue.md b/src/Specific-Guides/Dialogue.md index 7351cef..267f0de 100644 --- a/src/Specific-Guides/Dialogue.md +++ b/src/Specific-Guides/Dialogue.md @@ -5,8 +5,13 @@ This guide will cover using the [.locres text tool](https://cdn.discordapp.com/a **These mods have major compatibility issues but replacement mods in general do** - Run the executable and select a .locres file extracted from the `Localization` folder + - This is a raw asset so no need to specifically use umodel or fmodel + - This will generate a .txt containing all of the dialogue in the game + - Make any changes you wish + - Once you are done convert the .txt back to .locres using the executable + - Pack the file with the right file structure and your changes will be saved \ No newline at end of file diff --git a/src/Specific-Guides/Disabling.md b/src/Specific-Guides/Disabling/Disabling.md similarity index 100% rename from src/Specific-Guides/Disabling.md rename to src/Specific-Guides/Disabling/Disabling.md diff --git a/src/Specific-Guides/NoCastle.png b/src/Specific-Guides/Disabling/NoCastle.png similarity index 100% rename from src/Specific-Guides/NoCastle.png rename to src/Specific-Guides/Disabling/NoCastle.png diff --git a/src/Specific-Guides/Reference.png b/src/Specific-Guides/Disabling/Reference.png similarity index 100% rename from src/Specific-Guides/Reference.png rename to src/Specific-Guides/Disabling/Reference.png diff --git a/src/Specific-Guides/Structure.png b/src/Specific-Guides/Disabling/Structure.png similarity index 100% rename from src/Specific-Guides/Structure.png rename to src/Specific-Guides/Disabling/Structure.png diff --git a/src/Specific-Guides/Levels.md b/src/Specific-Guides/Levels.md index c38c00b..56fe7b1 100644 --- a/src/Specific-Guides/Levels.md +++ b/src/Specific-Guides/Levels.md @@ -1,16 +1,14 @@ # Level Editing/Replacing +**The process is exactly the same as adding any level in unreal engine** -*For Blue Fire, the process is easier for voids as all other environments do not use dynamic lighting* -*The process is basically the same as adding any level in unreal engine* - -- First export the level model using umodel +For now this just details replacing the course model but I do have a project brewing... +- First export the course model - Open in your 3d software of choice and start editing/ replacing content - If there also a model for damage zones then import that too -- All collision will have to be done manually(In blender, to make collision you must put UCX_*corresponding model*_*collision number*(if you put collision all in one model then it will be merged in engine)) +- All collision will have to be done manually +- In blender, to make collision you must name it UCX_*corresponding model*_*collision number* - When adding collision use shapes with no inward sloping faces(cuboids and triangular prisms) - Alternatively, you could turn on advanced collision in engine for convenience at the cost of extra processing needed for its calculation or add collision in the model viewer by turning on collision view -- Set up a UE4 project(turn off use pak file) and import the course model into the proper folders +- Import the course model into the proper folders in your unreal project - Link materials and material instances like normal -- Save content and package - -For editing other things in the level/map parse the umap file using [DRGParser](https://github.com/Buckminsterfullerene02/DRG-Modding/tree/main/DRGParser) and you can view all the names and their location in the umap among other things +- Save content and package \ No newline at end of file diff --git a/src/Specific-Guides/Logic-Mods/Blueprint.md b/src/Specific-Guides/Logic-Mods/Blueprint.md index 720ecbf..9b8df29 100644 --- a/src/Specific-Guides/Logic-Mods/Blueprint.md +++ b/src/Specific-Guides/Logic-Mods/Blueprint.md @@ -1,44 +1,9 @@ # Blueprint mods -**Contents** -- [UML setup](./Blueprint.md#uml-setup) -- [Project setup](./Blueprint.md#project-setup) -- [Mod creation](./Blueprint.md#) -- [Packaging](./Blueprint.md#) -- [.profile setup](./Blueprint.md#configuring-the-profile) -- [Auto-injector setup](./Blueprint.md#auto-injector-setup) +The following section details the creation of mods that use blueprints loaded in game to execute blueprint code -# UML setup -- Blueprint mods use a modloader to inject blueprint (Unreal's visual scripting system) into a game -- This allows addition of custom logic and events +In this guide I use Unreal Mod Loader as the loader as it is the most accessible and general tool -- Download the [Universal Unreal Modloader](https://github.com/RussellJerome/UnrealModLoader/releases/) by [RusselJ](https://github.com/RussellJerome) -- This will contain a .exe, some .dlls and some .profile files in the profiles folder -![](../images/modloader.png) -- If your game does not have a .profile file contained in the release setup instructions are [here](./Blueprint.md#configuring-the-profile) +However there are many other ways that blueprints can be loaded e.g via startup map, inheritance dummying, game-mode editing or level blueprint loading -- Run the .exe and then run the game to check that everything works fine (only report to `#support` if it's a red error) -- This should also generate a folder called `LogicMods` in Paks and a folder called `CoreMods` in Content - -# Project setup -- Open the game folder where the Engine folder in located and copy the name of the other folder in that directory -![](../images/projectname.png) -- Now create a new Unreal Engine project with this name -- In project settings set pak chunking to true and keep use pak file checked -- Create a folder called `Mods`(remember capitals) and then create a new folder with the name of the mod -- Now create a new blueprint actor (I normally name it `ModActor`) - -# Configuring the .profile - -- To set up the .profile file, you will need to know 2 things: the name of the game binary located in `Game store/Game name/Game project name/Binaries/Win64` and the version of unreal engine the game runs on -(**found by hovering your mouse over the same binary and looking at the version number**) -![](../images/version.png) -- Copy the BasicExampleGame.profile and rename it to the name of your game binary -- Then set the values according to the instructions using the UE4 version of your game(1 is true and 0 is false) -- Share the new .profile to the `#profiles` channel in [Russel's Exclusive Disco Club](https://discord.gg/ErTzBGtAUn) so that other's won't have to go through this process - -# Auto Injector setup -- Out of the box, the modloader comes with an auto-injector (instructions are in the README but I'll explain here anyway) -- Open the ModLoaderInfo.ini and edit the path to where your modloader dll is stored -- Copy all the files(README isn't needed) to where the game binary is stored (in `Game store/Game name/Game project name/Binaries/Win64`) -- Run the binary and the modloader should auto-inject into the process (The auto-injector doesn't work for some games annoyingly) \ No newline at end of file +But the mod creation part stays relatively the same - effectively the same as any content creation for an unreal engine 4 game with blueprints \ No newline at end of file diff --git a/src/Specific-Guides/Logic-Mods/Creation.md b/src/Specific-Guides/Logic-Mods/Creation.md new file mode 100644 index 0000000..c1464a3 --- /dev/null +++ b/src/Specific-Guides/Logic-Mods/Creation.md @@ -0,0 +1,2 @@ +# Mod creation +- Now that you have your mod actor, the possibilities are essentially endless \ No newline at end of file diff --git a/src/Specific-Guides/Logic-Mods/Injector.md b/src/Specific-Guides/Logic-Mods/Injector.md new file mode 100644 index 0000000..54f1ec8 --- /dev/null +++ b/src/Specific-Guides/Logic-Mods/Injector.md @@ -0,0 +1,8 @@ +# Auto Injector setup +- Out of the box, the modloader comes with an auto-injector (instructions are in the README but I'll explain here anyway) + +- Open the ModLoaderInfo.ini and edit the path to where your modloader dll is stored + +- Copy all the files(README isn't needed) to where the game binary is stored (in `Game store/Game name/Game project name/Binaries/Win64`) + +- Run the binary and the modloader should hopefully auto-inject into the process \ No newline at end of file diff --git a/src/Specific-Guides/Logic-Mods/Installing.md b/src/Specific-Guides/Logic-Mods/Installing.md new file mode 100644 index 0000000..8ad026c --- /dev/null +++ b/src/Specific-Guides/Logic-Mods/Installing.md @@ -0,0 +1,8 @@ +# Installing +- Cook the project as normal + +- Rename the pak chunk you assigned to the name of the folder + +- Place in the LogicMods folder first generated when you ran the UML exe + +- Run the game and you should see the mod registered as loaded in the UML console \ No newline at end of file diff --git a/src/Specific-Guides/Logic-Mods/Profile.md b/src/Specific-Guides/Logic-Mods/Profile.md new file mode 100644 index 0000000..af7b159 --- /dev/null +++ b/src/Specific-Guides/Logic-Mods/Profile.md @@ -0,0 +1,9 @@ +# .profile creation + +- To set up the .profile file, you will need to know 2 things: the name of the game binary located in `Game store/Game name/Game project name/Binaries/Win64` and the version of unreal engine the game runs on +(**found by hovering your mouse over the same binary and looking at the version number**) + +- Copy the BasicExampleGame.profile and rename it to the name of your game binary +- Then set the values according to the instructions using the UE4 version of your game (1 is true and 0 is false) +- Hopefully the signatures UML uses work for your game - if not then you will need to reverse engineer the game (for help consult [Russel's Exclusive Disco Club](https://discord.gg/ErTzBGtAUn)) +- Share the new .profile to the `#profiles` channel in [Russel's Exclusive Disco Club](https://discord.gg/ErTzBGtAUn) so that other's won't have to go through this process \ No newline at end of file diff --git a/src/Specific-Guides/Logic-Mods/Project-Setup.md b/src/Specific-Guides/Logic-Mods/Project-Setup.md new file mode 100644 index 0000000..3df6528 --- /dev/null +++ b/src/Specific-Guides/Logic-Mods/Project-Setup.md @@ -0,0 +1,14 @@ +# Project setup +- Open the folder where the Engine folder is located and copy the name of the other folder in that directory + +- Now create a new Unreal Engine project with this name + +- In project settings set pak chunking to true and keep use pak file checked + +- Create a folder called `Mods`(remember capitals) and then create a new folder with the name of the mod + +- Now create a new blueprint actor (I normally name it `ModActor`) + +- Create a PrimaryDataAsset and tick label assets in my directory + +- Then assign the PrimaryDataAsset a pak chunk number \ No newline at end of file diff --git a/src/Specific-Guides/Logic-Mods/UML-Setup.md b/src/Specific-Guides/Logic-Mods/UML-Setup.md new file mode 100644 index 0000000..dc50df7 --- /dev/null +++ b/src/Specific-Guides/Logic-Mods/UML-Setup.md @@ -0,0 +1,15 @@ +# UML setup + +- We will use UML to inject custom actors to run blueprint (Unreal's visual scripting system) + +- This allows addition of custom logic, events, etc. + +- Download the [Universal Unreal Modloader](https://github.com/RussellJerome/UnrealModLoader/releases/) by [RusselJ](https://github.com/RussellJerome) + +- This will contain a .exe, some .dlls and some .profile files in the profiles folder + +- If your game does not have a .profile file contained in the release setup instructions to create one are [here](Profile.md) + +- Run the .exe and then run the game to check that everything works fine + +- This should also generate a folder called `LogicMods` in Paks and a folder called `CoreMods` in Content \ No newline at end of file diff --git a/src/Specific-Guides/Materials.md b/src/Specific-Guides/Materials.md deleted file mode 100644 index 0793de0..0000000 --- a/src/Specific-Guides/Materials.md +++ /dev/null @@ -1,25 +0,0 @@ -# Materials - -To create a child of an existing material use the [in engine method](./Materials.md#in-engine-method) - -### Asset Editing -- Download [UassetGUI](https://github.com/atenfyr/UAssetGUI/releases) by atenfyr -- Set the version to the version of UE4 your game uses -- Open the target material and search the exports for parameter values -- These can be changed in any way you wish -![](UassetGUI.png) -- File < Save as and recreate the file structure like normal -- Delete the .bak files (and the .uasset because you only changed values) and package - -### In Engine -- Export the material instance you wish to modify normally using umodel -- Create a new dummy material in your project and create parameters inside the material for each of the parameters in the props.txt -- Set them with their default values and names -- Connect all the parameters to the main node using math nodes -- how you do this is not important - what's important is they are there - ![](nodes.png) -- Once that is done, save the material and create a material instance of it -- You can now edit the parameters as you please -- Once you are happy with the changes, save and package the project -- Package as normal except remove the parent material asset as it was a dummy - diff --git a/src/Specific-Guides/Materials/Engine.md b/src/Specific-Guides/Materials/Engine.md new file mode 100644 index 0000000..0332db6 --- /dev/null +++ b/src/Specific-Guides/Materials/Engine.md @@ -0,0 +1,11 @@ +# In Engine +- Export the material instance you wish to modify normally using umodel +- Create a new dummy material in your project in the same location and create parameters inside the material for each of the parameters in the props.txt +- Set them with their default values and names +- Connect all the parameters to the main node +- How you connect is not important - what's important is they are connected (I used math nodes) + ![](nodes.png) +- Right-click and create a material instance to either replace an existing one or to use yourself +- You can now edit the parameters that are used as you please +- Once you are happy with the changes, save and package the project +- Package as normal except remove the parent material asset as it was a dummy \ No newline at end of file diff --git a/src/Specific-Guides/Materials/UAssetGUI.md b/src/Specific-Guides/Materials/UAssetGUI.md new file mode 100644 index 0000000..d6fb05d --- /dev/null +++ b/src/Specific-Guides/Materials/UAssetGUI.md @@ -0,0 +1,10 @@ +**To create a child material either copy an existing one and use this method or use the [in engine method](Engine.md) - this also allows you to change parameters that may not be present in the existing one** + +# Via UAssetGUI +- Download [UassetGUI](https://github.com/atenfyr/UAssetGUI/releases) by atenfyr +- Set the version to the version of UE4 your game uses +- Open the target material and search the exports for parameter values +- These can be changed in any way you wish +![](UassetGUI.png) +- File < Save as and recreate the file structure like normal +- Delete the .bak files (and the .uasset because you only changed values) and package \ No newline at end of file diff --git a/src/Specific-Guides/UassetGUI.png b/src/Specific-Guides/Materials/UassetGUI.png similarity index 100% rename from src/Specific-Guides/UassetGUI.png rename to src/Specific-Guides/Materials/UassetGUI.png diff --git a/src/Specific-Guides/nodes.png b/src/Specific-Guides/Materials/nodes.png similarity index 100% rename from src/Specific-Guides/nodes.png rename to src/Specific-Guides/Materials/nodes.png diff --git a/src/Specific-Guides/Models/Meshes.md b/src/Specific-Guides/Models/Meshes.md index 28663ae..b5d15f9 100644 --- a/src/Specific-Guides/Models/Meshes.md +++ b/src/Specific-Guides/Models/Meshes.md @@ -1,20 +1,32 @@ -*It's suggested you know how to use blender for this* +**It's suggested you know how to use blender for this watch a tutorial or smthn** # Meshes - First download [blender](https://www.blender.org/download/) and add the appropriate version of the [PSK importer](https://github.com/matyalatte/blender3d_import_psk_psa) to blender as an add-on in Edit > Preferences > Install + - Export the model that you want to change using umodel and open a new blender project. Delete all the objects in the scene (cameras, lights, etc.) + - Go to File > Import > PSK and select the exported mesh ![](Importing.png) + - Set the units to metric ![](Units.png) + - You can now edit the model or add meshes, change UVs and vertex colours but do not change any names of the materials + - Right-click the model when selected and shade smooth ![](Smoothing.png) + - Once you are satisfied with your creation, export the model as a .fbx with these settings (Most important are Face smoothing and unchecked add leaf bones) ![](Exporting.png) -- Rename it the name of the psk you imported. + +- Rename it the name of the psk you imported + - Set up the UE4 project like normal(remember to turn off use pak file) and import the fbx into its respective folder -- You should get materials with it if you import it with default settings. put the materials in the folders they were in when exported and look in the props.txts that is in that folder. -- If there is a reference to a parent material, then right click and create an instance of that material in UE4. delete the parent material and remove the _Inst from the end of the material instance's name. -- Replace the references to the materials in the model and in the same order as in the mesh's props.txt. Once all that has been done you can package content and close the UE4 editor once packaging is complete. + +- You should get materials with it if you import it with default settings. put the materials in the folders they were in when exported and look in the props.txts that is in that folder + +- If there is a reference to a parent material, then right click and create an instance of that material in UE4. delete the parent material and remove the _Inst from the end of the material instance's name + +- Replace the references to the materials in the model and in the same order as in the mesh's props.txt. Once all that has been done you can package content and close the UE4 editor once packaging is complete + - Follow the same steps as normal in packaging except delete all the material uassets and uexps before using unrealpak. This is so the blank materials don't replace the actual ones. The mesh only needs references to the material. It should then work in game \ No newline at end of file diff --git a/src/Specific-Guides/UAssetAPI.md b/src/Specific-Guides/UAssetAPI/UAssetAPI.md similarity index 100% rename from src/Specific-Guides/UAssetAPI.md rename to src/Specific-Guides/UAssetAPI/UAssetAPI.md diff --git a/src/Specific-Guides/UAssetGUI.md b/src/Specific-Guides/UAssetGUI.md index 3796f19..b79b7c3 100644 --- a/src/Specific-Guides/UAssetGUI.md +++ b/src/Specific-Guides/UAssetGUI.md @@ -4,7 +4,6 @@ - It allows the editing of unreal engine 4 assets through an intuitive user interface - This skips having to dummy assets like materials just to change values that are already in the .uasset - **However for larger-scale mods such as my randomiser, [UassetAPI](https://github.com/atenfyr/UAssetAPI) may be able to suit your needs better** - - First, download the .exe and prerequisite .dlls from [this page](https://github.com/atenfyr/UAssetGUI/releases)(It needs dotnet to run) - Extract a .uasset and .uexp using Fmodel's export function or umodel's save packages function - Right-click any .uasset(include the associated .uexp inside the same folder) and click "open with" diff --git a/src/The-Basics/Basics.md b/src/The-Basics/Basics.md index 007d548..4f1196f 100644 --- a/src/The-Basics/Basics.md +++ b/src/The-Basics/Basics.md @@ -3,9 +3,13 @@ This section walks you through the basic creation of a patch mod which includes You will need to know: - The file path to your game - if on steam go to your game in your library and navigate to Properties > Local Files > Browse (By default it is `C:\Program Files (x86)\Steam\steamapps\common\Your game`) + - The name of your game's project file - this is the name of the folder in your game's file path that isn't Engine ![](projectname.png) + - The file path to your game's executable - `Game file path/Game name/Binaries/Win64` + - The file path to where your game's content is stored - `Game file path/Game name/Content` + - the version of unreal your game uses - either hover over the .exe or right-click the .exe > Properties > Details and the version of unreal is the File Version which should be in the format 4.XX.X - we only care abount the 4.XX because minor versions don't fundamentally change how content is configured ![](version.png) \ No newline at end of file diff --git a/src/The-Basics/Engine/Creation.md b/src/The-Basics/Engine/Creation.md index 15edc6f..08a96c6 100644 --- a/src/The-Basics/Engine/Creation.md +++ b/src/The-Basics/Engine/Creation.md @@ -2,6 +2,7 @@ ### Content creation **I will not cover content creation in this. Just examples.** - For this example I will use my Fara discord shirt mod + - In this mod I modified the texture for Fara so that it had a discord logo ![](FaraTex.png) diff --git a/src/The-Basics/Engine/Setting-Up.md b/src/The-Basics/Engine/Setting-Up.md index 4917081..886fc20 100644 --- a/src/The-Basics/Engine/Setting-Up.md +++ b/src/The-Basics/Engine/Setting-Up.md @@ -1,7 +1,9 @@ # Setting up - Install the version of Unreal Engine 4 that your game uses from the [Epic Games Launcher](https://www.unrealengine.com/en-US/download) + - Open up UE4 and create a blank game project with no starter content (it's unnecessary) ![](NewProject.png) ![](NewProject2.png) + - Go into edit > project settings and uncheck use pak file ![](Unchecking.png) \ No newline at end of file diff --git a/src/The-Basics/Paking/Final-Paking.md b/src/The-Basics/Paking/Final-Paking.md index 95a420f..c47cfbd 100644 --- a/src/The-Basics/Paking/Final-Paking.md +++ b/src/The-Basics/Paking/Final-Paking.md @@ -1,9 +1,13 @@ # Final Packaging - Create a folder named `The name of your mod_P` (the `_P` clarifies it as a patch so that it overwrites original game content) + - Create a folder the name of your Game's project name + - Go into the folder where you packaged your mod and copy the Content folder in `WindowsNoEditor\ProjectName` into this folder + - Folder structure is very important for UE4 modding so make sure spellings of the folders are the same as they were when exported + - Download [Unrealpak](https://fluffyquack.com/tools/unrealpak.rar) by FluffyQuack and drag the mod folder onto UnrealPak-with-compression.bat ![](Packaging.png) diff --git a/src/The-Basics/Unpaking/AES-Keys.md b/src/The-Basics/Unpaking/AES-Keys.md index 464c0c8..9209ab0 100644 --- a/src/The-Basics/Unpaking/AES-Keys.md +++ b/src/The-Basics/Unpaking/AES-Keys.md @@ -1,8 +1,14 @@ # AES Keys - If you have directed here then your pak file is encrypted using an AES key + - You can check this using [AESkeyFinder](https://zenhax.com/viewtopic.php?t=9407&start=20) + - Copy your game's executable into the folder you installed the program + - Run the RUN Find 256-bit UE4 AES Key.bat file + - Copy the generated key into the prompt you were given + - The pak should now be able to be opened -- If not try another key \ No newline at end of file + +- If not try another key if more were generated \ No newline at end of file diff --git a/src/The-Basics/Unpaking/FModel.md b/src/The-Basics/Unpaking/FModel.md index bb56b92..89c79bd 100644 --- a/src/The-Basics/Unpaking/FModel.md +++ b/src/The-Basics/Unpaking/FModel.md @@ -1,9 +1,15 @@ # Fmodel - Install [Fmodel](https://fmodel.app/) by the Fmodel team + - Launch the program and you should be greeted with the startup screen ![](Fmodel.png) + - Set the folder to your Paks folder using the `...` button and proceed + - Click on Settings and change the Unreal Version to your game's version (it will have to restart if changed) + - If there is red dot next to a pak file, go to Directory > AES and read [this](AES-Keys.md) + - Find something you want to replace or modify - *start with something simple (I'll be using a texture)* + - Double-click the asset (if a texture then the texture will appear on the right - you can then right-click > Save Texture) \ No newline at end of file diff --git a/src/The-Basics/Unpaking/Options.md b/src/The-Basics/Unpaking/Options.md index b43c027..69091d5 100644 --- a/src/The-Basics/Unpaking/Options.md +++ b/src/The-Basics/Unpaking/Options.md @@ -1,9 +1,12 @@ # Pak Decompression Options - The following section illustrates a few different options for unpacking a pak archive for your game + - This section doesn't have to be done in any order - use whatever tool you prefer + - Your game's `Paks` folder should be located in your game's `Content` folder - If this folder doesn't exist or there is no pak files to unpack and there is only raw assets then you can completely skip this section + - If there are multiple pak files then your game has split its paks into chunks - This shouldn't affect the process significantly - There are more options found in [Pakers/Unpakers](../../Tools/Pakers.md) and [Pak Explorers](../../Tools/Pak-Explorers.md) that I won't go into detail about in this section \ No newline at end of file diff --git a/src/The-Basics/Unpaking/QuickBMS.md b/src/The-Basics/Unpaking/QuickBMS.md index 9c49597..a81230c 100644 --- a/src/The-Basics/Unpaking/QuickBMS.md +++ b/src/The-Basics/Unpaking/QuickBMS.md @@ -6,13 +6,21 @@ **With this method you will need to extract models and textures from the raw assets using [umodel](UEViewer.md) or [fmodel](FModel.md)** - Download [QuickBMS](https://aluigi.altervista.org/papers/quickbms.zip) by Luigi Auriemma and [unrealtournament.bms](https://aluigi.altervista.org/bms/unreal_tournament_4.bms) and place them into your paks folder + - If the total file size of your pak/s is below 4 GB drag the bms file onto quickbms.exe (1,000,000 KB is one GB) + - If not use quickbms_4gb_files.exe ![](QuickBMS.png) + - A window should pop up asking for the archive + - Select your pak file that should look like `Game Project Name-WindowsNoEditor.pak` + - If your game uses pak chunks type * into the text box instead to extract the folder + - Now select the output folder (this can be wherever) + - If compatible then the file should commence extraction ![](QuickBMS-Extraction.png) + - If your pak is incompatible, try one of the other methods \ No newline at end of file diff --git a/src/The-Basics/Unpaking/UnrealPak.md b/src/The-Basics/Unpaking/UnrealPak.md index a204095..85b12a4 100644 --- a/src/The-Basics/Unpaking/UnrealPak.md +++ b/src/The-Basics/Unpaking/UnrealPak.md @@ -14,13 +14,17 @@ However here's a summary if some things are unclear: - Open command prompt and drag unrealpak.exe into command prompt. This .exe should be stored in UE_4.XX\Engine\Binaries\Win64\UnrealPak.exe - ![](unrealpak.png) - Then put a space and drag the pak file into command prompt + - Put a space and type -Extract + - Put a space after that and enter the directory of the folder you want the assets to be extracted to + - Press enter and the game files should extract to the folder -- If there is an error, remember that syntax in important- here's mine for blue fire as reference + +- If there is an error, remember that syntax in important - here's mine for blue fire as reference `"C:\Program Files (x86)\UE_4.25\Engine\Binaries\Win64\UnrealPak.exe" "C:\Program Files (x86)\Steam\steamapps\common\Blue Fire\Blue Fire\Content\Paks" -Extract C:\modding\BF_Unpaked` + - If your game is incompatible, try a different method \ No newline at end of file diff --git a/src/Tools/Asset-Editors.md b/src/Tools/Asset-Editors.md index aca9db6..3095a09 100644 --- a/src/Tools/Asset-Editors.md +++ b/src/Tools/Asset-Editors.md @@ -2,7 +2,11 @@ These are tools able to parse and edit cooked .uasset and .umap files - [UAssetAPI](https://github.com/atenfyr/UAssetAPI) by [atenfyr](https://github.com/atenfyr) is an API that can read and modify UE4 game assets via C# scripting and reversible .json export - is brilliant for large scale edits or automation - - [UAssetGUI](https://github.com/atenfyr/UAssetGUI/releases) by [atenfyr](https://github.com/atenfyr) is more friendly than coding with uassetAPI due its interface (also has dark mode :p) + + - [UAssetGUI](https://github.com/atenfyr/UAssetGUI/releases) by [atenfyr](https://github.com/atenfyr) is more friendly than coding with uassetAPI due its interface - also it has dark mode :p + - [Heilos's](https://github.com/kaiheilos) [Asset editor](https://github.com/kaiheilos/Utilities) is an alternative to UAssetGUI + - [DAUM](https://github.com/DarthPointer/DAUM) by [Drillboy Jenkins](https://github.com/DarthPointer) is a CLI program written using UAssetAPI with a lot of flexibility + - [DRGEditor](https://github.com/craigmc08/drg-editor) by [craigmc08](https://github.com/craigmc08) is another alternative that is more specific to Deep Rock Galactic \ No newline at end of file diff --git a/src/Tools/Libraries.md b/src/Tools/Libraries.md index 634a1df..a85ffc6 100644 --- a/src/Tools/Libraries.md +++ b/src/Tools/Libraries.md @@ -1,13 +1,21 @@ # Libraries ### Rust crates - [uasset](https://docs.rs/uasset) + - [unreal unpak](https://docs.rs/rust-unreal-unpak) + - [unreal automation tools](https://docs.rs/cargo-uat) + ### Python - [PyPakParser](https://pypi.org/project/PyPAKParser/) + ### C sharp - [UassetAPI](https://github.com/atenfyr/UAssetAPI) + - [UETools](https://github.com/UETools/UETools) + - [UnSave](https://www.nuget.org/packages/UnSave) + - [UnSave.Extensions](https://www.nuget.org/packages/UnSave.Extensions) + - [PakReader](https://www.nuget.org/packages/PakReader/) \ No newline at end of file diff --git a/src/Tools/Locres-Editors.md b/src/Tools/Locres-Editors.md index ce593bc..d8ce00e 100644 --- a/src/Tools/Locres-Editors.md +++ b/src/Tools/Locres-Editors.md @@ -1,6 +1,8 @@ # Locres Editors These are tools that can edit localisation files -- [UE4LocalizationsTool](https://github.com/amrshaheen61/UE4LocalizationsTool) by [amr shaheen](https://github.com/amrshaheen61) allows edits in program or via reversible .txt export - [locres editor](https://cdn.discordapp.com/attachments/775093920915914794/836699867920859207/unreal_locres_texttool.exe) (unknown author) that allows edits via reversible .txt export + +- [UE4LocalizationsTool](https://github.com/amrshaheen61/UE4LocalizationsTool) by [amr shaheen](https://github.com/amrshaheen61) allows edits in program or via reversible .txt export + - [UnrealLocres](https://github.com/akintos/UnrealLocres) by [akintos](https://github.com/akintos) is CLI program that allows edits via reversible .txt export \ No newline at end of file diff --git a/src/Tools/Modelling.md b/src/Tools/Modelling.md index e9a53f6..093e724 100644 --- a/src/Tools/Modelling.md +++ b/src/Tools/Modelling.md @@ -1,5 +1,7 @@ # Modelling These are tools that are helpful in unreal engine model modding - [Blender](https://www.blender.org/download/) by the [Blender foundation](https://www.blender.org/) is an open-source and extensible 3d modelling software - - [PSK and PSA importer](https://github.com/matyalatte/blender3d_import_psk_psa) is a fork of [this repo](https://github.com/Befzz/blender3d_import_psk_psa) by [Befzz](https://github.com/Befzz) that adds to the import and export features with automated scaling and also armature merging different formats - - [Blender UEXP](https://github.com/AlexP0/Blender_UEXP) by [AlexP0](https://github.com/AlexP0) allows the editing of vertex transforms in the .uexp file - good for proportion changes and doesn't require exporting to a \ No newline at end of file + + - [PSK and PSA importer](https://github.com/matyalatte/blender3d_import_psk_psa) is a fork of [this repo](https://github.com/Befzz/blender3d_import_psk_psa) by [Befzz](https://github.com/Befzz) which is a blender plugin that adds import and export features and also armature merging for psk files + + - [Blender UEXP](https://github.com/AlexP0/Blender_UEXP) by [AlexP0](https://github.com/AlexP0) allows the editing of vertex transforms in the .uexp file \ No newline at end of file diff --git a/src/Tools/Pak-Explorers.md b/src/Tools/Pak-Explorers.md index 3df8456..38e492f 100644 --- a/src/Tools/Pak-Explorers.md +++ b/src/Tools/Pak-Explorers.md @@ -2,5 +2,7 @@ These are tools capable of parsing a game's pak file and allowing the display and export of game files contained inside - [Umodel](https://www.gildor.org/en/projects/umodel) by [Gildor](https://github.com/gildor2) is the most reliable and fast, allowing loading of both loose and paked files as well as a command line + - [Fmodel](https://fmodel.app/) by the fmodel team allows more extensive support for certain formats such as sound files and allows export of (irreversibly) json-serialised assets - also has more customisation options + - [UnrealPakViewer](https://github.com/bananaturtlesandwich/UnrealPakViewer) by [jashking](https://github.com/jashking) allows powerful filtering of pak file contents however can only export to json and csv (linked to my repo for now as I'm waiting for my pull request for the guide translation to be accepted) \ No newline at end of file