Project Wingman - Simple Texture Replacement Guide
https://superostrich.xyz/pw.html#guides
Packing your mod into a .pak file
Python 3 - required to run python scripts
Important! During installation you must check ‘Add Python 3.x to PATH’
UE Viewer - unreal engine resource viewer for viewing and extracting textures & models
u4Pak.py - python script for re-packing game assets
Header7.py - python script for easily adding and removing headers from textures
DDS Import/Export Plugins for your preferred image editor
Photoshop
https://developer.nvidia.com/gameworksdownload#?dn=texture-tools-for-adobe-photoshop-8-55
GIMP
https://code.google.com/archive/p/gimp-dds/downloads
In this example we have now extracted all of the FA16 textures from Project Wingman. The .ubulk files are your textures.
The folder structure & filenames for aircraft in Project Wingman aren’t completely uniform but usually the textures folder contains the ORM, Emissive, and Normal Maps, while the skins subfolder usually contains the diffuse textures for each skin slot.
Example:
textures\F-16CSubstance_Aircraft_Normal.ubulk | Normal Map |
textures\F-16CSubstance_Aircraft_OcclusionRoughnessMetallic.ubulk | ORM texture |
textures\Skin\F16_01.ubulk | Skin 1 diffuse texture |
textures\Skin\F16_02.ubulk | Skin 2 diffuse texture |
textures\Skin\F16_03.ubulk | Skin 3 diffuse texture |
textures\Skin\F16_04.ubulk | Skin 4 diffuse texture |
Pay attention to these paths, it will be critical when packing your mod! If you mod doesn’t work, 9 times out of 10 it’s because the path or filename is incorrect.
Ubulk files are DDS textures without headers. Aircraft will have two textures, continuing with our FC16 Skin 1 example;
F16_01.ubulk = diffuse texture, this is the paintjob and surface details of the aircraft
F-16CSubstance_Aircraft_OcclusionRoughnessMetallic.ubulk = Occlusion, Roughess, Metallic; this controls how light interacts with the diffuse texture.
In order to edit these textures, you will need to add a DDS header as follows.
Diffuse Texture | ORM Texture (without alpha channel) |
In ORM textures, each RGB channel controls a different property. The values of each property can be referenced in the table below.
Channel | Effect | White | Black |
Red | Occlusion | Less Occlusion | More Occlusion |
Green | Roughness | Rough | Smooth |
Blue | Metallic | Metallic | Non-metallic |
Note: All skin slots on a particular aircraft share the same ORM file.
Once you have finished editing your texture, and have saved it as a DDS file, you’re ready to package it for use in game!
Continuing with our FC16 Skin 1 example;
New Path :
Your_Packing_Folder\ProjectWingman\Content\Assets\Objects\Aircraft\F16C\Textures\Skin\F16_01.ubulk
Important! Keep the “ _P.pak” at the end of the filename
To install your new mod into the game simply give your .pak file a meaningful name (or not) and copy it into
..\steamapps\common\Project Wingman\ProjectWingman\Content\Paks\~mods
I packed my texture and it won’t load in game
I packed my texture and now that skin slot looks blurry and/or my game crashes
Header7 and or u4pak doesn’t work
This guide draws heavily upon this AC7 guide made by @dapperdapperdan