ACE COMBAT 8 MOD v18.5 - Editing Resource Parameters

This guide explains where the configurable values are stored and how to edit and rebuild the mod resources. It is intended for users familiar with cooked Unreal Engine assets. The examples are custom settings to illustrate the process; they are not additional settings verified in-game by the author.

1. WHAT "EDITING THE PAK" MEANS

Each module is distributed as four matching files: .pak, .sig, .utoc and .ucas. The editable cooked assets are held in the IoStore container described by .utoc and stored in .ucas. Opening the small .pak file in an archive program is not enough to edit these parameters.

The process is:
Back up the module -> extract/convert its cooked assets -> edit the asset properties -> save the assets -> rebuild the module's IoStore container -> read it back -> install the complete matching file set and check your changes in-game.

Supported TONI and APS parameters can be changed without rebuilding dinput8.dll. Keep the v18.5 core installed. This does not mean that every part of the mod is configurable through resources: runtime hooks, supported-aircraft registration, object cleanup, internal capacities, translated descriptions and the default 50-second cloud-contraction patch still include DLL-side implementation.

2. REQUIRED TOOLS AND INPUTS

- retoc with UE5.4 support, for IoStore conversion and repacking:
  https://github.com/trumank/retoc
- UAssetGUI / UAssetAPI with UE5.4 and unversioned-property support:
  https://github.com/atenfyr/UAssetGUI
- Matching .usmap mappings for the game build AND the mod's custom Blueprint classes.
- A working, read-only game dependency context for conversion, including the relevant original containers and global/script-object information when required by the tool.

The assets use unversioned properties. Selecting UE5.4 alone does not replace the .usmap requirement. A mapping for another game build, or one missing the custom classes, can decode the properties incorrectly.

The current player download does NOT include a .usmap, an asset-editing kit, the original Unreal project, or the DLL source. You must already have suitable mappings and a working extraction setup. If those inputs are unavailable, the player ZIP alone is not a complete editing toolkit. Do not guess missing property layouts or try to fix an incorrect mapping by adding arbitrary fields.

Use your own game installation for any required dependency data. Game files and decryption material are not supplied by this guide. Configure any required local access before using the examples below.

Work outside the installed game directory, and close the game before replacing files. Preserve a complete original copy of every module you edit.

3. RESOURCE LOCATIONS

TONI module prefix:
pakchunk99-ACE8PlayerTonitrus_4_P

Main configurable asset:
Game/Content/Blueprints/Weapons/PlayerStoryPrototype/MPBM_Tonitrus/BP_plwp_mpbm_x0.uasset
Class-default export: Default__BP_plwp_mpbm_x0_C

APS module prefix:
pakchunk99-ACE8PlayerAPS_01_P

Weapon asset:
Game/Content/Blueprints/Weapons/PlayerAPS/BP_plwp_aps.uasset
Class-default export: Default__BP_plwp_aps_C

Effect asset:
Game/Content/Blueprints/Weapons/PlayerAPS/BP_PlayerAPS_Effect.uasset
Class-default export: Default__BP_PlayerAPS_Effect_C

Edit the existing properties in the class-default export. Keep the .uasset and .uexp files together, along with any other companion files emitted by your converter. Do not rename the assets, change their internal paths, change weapon IDs, or add Blueprint variables as part of a simple parameter edit.

4. EXTRACTING AND SAVING ASSETS

The following are command-line examples, not bundled scripts. Paths and mapping names are placeholders for your own setup. The retoc options shown are documented by the upstream tool; check your installed tool version if its syntax differs.

Assume C:\ACE8Edit\Context is a prepared, readable dependency context containing the selected v18.5 module and the game containers needed to resolve its imports. Keep only one version of the selected module in that context. The output folders must be outside it.

Extract the TONI module assets:
retoc.exe to-legacy --version UE5_4 --no-shaders --filter PlayerStoryPrototype "C:\ACE8Edit\Context" "C:\ACE8Edit\TONI"

Extract the APS module assets:
retoc.exe to-legacy --version UE5_4 --no-shaders --filter PlayerAPS "C:\ACE8Edit\Context" "C:\ACE8Edit\APS"

These filters select asset paths, not container filenames. Check the extracted contents: the standard v18.5 TONI module contains 10 assets and APS contains 6. Preserve all assets belonging to the module, including unchanged curves and effects. A folder containing only the single Blueprint you want to edit is not a complete replacement module.

If conversion reports failed assets, missing imports, missing script objects, or unreadable encrypted dependencies, correct the extraction setup before editing. A partially extracted folder must not become your replacement package.

Open the relevant .uasset in UAssetGUI using UE5.4 and the correct mapping. You may edit the properties in the GUI, or export the full UAssetAPI JSON, edit it, and import it again.

For example, after registering an appropriate mapping in UAssetGUI under the name YOUR_TONI_MAPPING:
UAssetGUI.exe tojson "C:\ACE8Edit\TONI\Game\Content\Blueprints\Weapons\PlayerStoryPrototype\MPBM_Tonitrus\BP_plwp_mpbm_x0.uasset" "C:\ACE8Edit\toni.json" VER_UE5_4 YOUR_TONI_MAPPING

After editing the JSON, import it back into your WORKING COPY:
UAssetGUI.exe fromjson "C:\ACE8Edit\toni.json" "C:\ACE8Edit\TONI\Game\Content\Blueprints\Weapons\PlayerStoryPrototype\MPBM_Tonitrus\BP_plwp_mpbm_x0.uasset" YOUR_TONI_MAPPING

YOUR_TONI_MAPPING is an example name, not a mapping included with this download. For APS, use the corresponding assets and suitable APS mappings. UAssetGUI versions differ in whether the mapping argument can be a filesystem path or must be a registered mapping name; the registered-name form is supported by the documented CLI.

Preserve the full asset structure when editing JSON. Change the existing property Value, not its type, array position, import references, or unrelated serialized data. Make an unmodified save/reload check first if you have not used your tool and mapping combination with these assets before.

5. COMMON TONI SETTINGS

In Default__BP_plwp_mpbm_x0_C:

LockonRange
Default: 500000.0
Unit: centimeters. 500000 cm = 5000 m.
Controls the designator's configured range. For a 7000 m example, use 700000.0, not 7000.
The mod does not impose a separate 5000 m ceiling on this field. Native target-selection, obstruction and other game conditions still apply, so a larger value does not guarantee every target can be designated at that distance.

LifeTime
Default: 8.0 seconds.
Used for the designation-beam visual lifetime. This is not the duration of the entire explosion sequence.

LoadTime
Default: 0.5 seconds.
Native weapon reload time.

Use finite positive values for these settings. The designator's Damage field is not a simple overall strike-damage multiplier. The strike and its effects involve other assets; do not change unrelated fields assuming they all describe the final impact.

6. COMMON APS SETTINGS

In Default__BP_plwp_aps_C:

LifeTime                          30.0 seconds   Protection duration and refreshed duration
BarrierChargeDuration             1.4 seconds   Charge/interception-ready timing
BarrierEndFadeTime                1.0 seconds   End fade
BarrierDamageRadiusMeters       900.0 meters    Protection radius
LoadTime                          0.5 seconds   Reload time
BarrierDamageParticleSmallInterval 0.15 seconds Small-ripple interval

All of these values must remain finite and greater than zero. Do not use zero to mean "instant" or "unlimited."

For a 45-second duration example, change LifeTime from 30.0 to 45.0. The core derives the active timing, HUD countdown and ending timer from this configured duration. It combines the duration with BarrierEndFadeTime where needed for cleanup.

Do not use BarrierActiveDuration as the independent duration setting. Its shipped value is 31.0, corresponding to 30 seconds plus a 1-second fade, and the runtime code manages this timing. Editing LifeTime is the supported entry point.

For a 1200 m radius example, change BarrierDamageRadiusMeters from 900.0 to 1200.0. Unlike TONI LockonRange, this field is already measured in meters.

In Default__BP_PlayerAPS_Effect_C:

BarrierInTime
Default: 1.4 seconds; finite and greater than zero.
Controls the native deployment duration. Charge timing, deployment timing and color-transition timing are separate settings; changing one does not automatically rescale every effect curve or animation setting in the resource.

7. HOW THE CUSTOM TAGS WORK

Additional parameters are stored in the existing Actor Tags array on the corresponding class-default export. A tag is an FName containing a complete entry such as:
ACE8.APS.ContactRefreshSeconds=0.25

Edit the numeric portion of the existing entry. Keep the key spelling, the equals sign, the number of values, and their order. Use ordinary ASCII commas as separators and a decimal point for fractional values. Do not add units, comments, localized punctuation, NaN, Infinity, or extra trailing values. Using no spaces inside these entries avoids ambiguous formatting.

Required keys must not be missing or duplicated. Invalid configuration produces an error; there is no automatic fallback to the original default values. The private tag settings are cached when the module is initialized, so fully restart the game after installing changed resources.

IMPORTANT: A tag is an FName, not an arbitrary text blob. In a UAssetAPI JSON export, the tag text appears in NameMap and in the Tags array's NamePropertyData Value. When editing the existing entry manually, keep both references consistent and preserve the order of unrelated names. If your editor appends a new name instead, NamesReferencedFromExportDataCount must cover it. For the three shipped v18.5 configurable assets, this count matches the full NameMap length. Never blindly reuse an old count after appending names.

Re-extracting the FINAL rebuilt container is the way to check that the changed tag actually survived conversion. A successful JSON import alone is not sufficient.

8. APS TAG REFERENCE

On BP_plwp_aps:

ACE8.APS.ContactRefreshSeconds=0.25
Full contact-list refresh interval in seconds; must be finite and positive.

ACE8.APS.SwarmScanSeconds=0.10000000149011612
Swarm scan interval in seconds, approximately 0.1; must be finite and positive.

Larger intervals mean less frequent refreshes and potentially slower reactions to newly relevant contacts. Smaller intervals mean more frequent work. These are scheduling controls, not a guaranteed FPS improvement; keep the defaults unless you intend to evaluate the trade-off.

On BP_PlayerAPS_Effect:

ACE8.APS.ColorTransitionSeconds=1.3999999761581421
Color-transition duration, approximately 1.4 seconds; finite and positive.

ACE8.APS.RippleScale=2
Multiplier relative to the private effect's default ripple size; finite and positive.

ACE8.APS.RippleSortPriority=200
Signed 32-bit integer controlling translucent ripple sorting.

ACE8.APS.RingColors=40,5,16.666656494140625,3.125,10.416666030883789,25
Six finite values: start R,G,B, then end R,G,B. These are linear/emissive values, not 0-255 display RGB. Values greater than 1 are intentional in the supplied settings.

9. TONI TAG REFERENCE

All of the following belong to BP_plwp_mpbm_x0.

ACE8.TONI.Designator=10000,100000,-1000000,6,5000,0,0,0.30000001192092896
Eight values in order:
1) Lock handoff allowance, centimeters; non-negative. Default 10000 = 100 m. This accommodates movement between target handoff and the first update; it is not an additional lock-on-range setting.
2) Upward terrain-trace offset, centimeters; non-negative. Default 100000.
3) Absolute bottom Z of the terrain trace, centimeters; negative. Default -1000000.
4) Descent timeout, seconds; positive. Default 6.
5-8) Laser R,G,B,A; finite values. The default RGB is HDR/emissive, not 0-255 RGB.

ACE8.TONI.IncomingAngleDegrees=30
Maximum deviation from vertical, from 0 through 90 degrees.

ACE8.TONI.SeaHeightMarginMeters=100
Positive height margin used by the ship/sea branch, in meters.

ACE8.TONI.VisualTailSeconds=3,10
Two positive durations: ordinary visual tail and longer dust tail, in seconds.

ACE8.TONI.LayerCount=7
Number of active timeline layers, integer 1 through 7. More than seven layers requires a different core implementation; adding another tag cannot expand the current capacity.

ACE8.TONI.LayerN entries contain seven values:
source,delaySeconds,uniformScale,heightOffsetCm,visualLifetimeSeconds,playbackRate,renderProfile

source: integer -1 for the main layer, or 0 through 6 for the existing companion-effect indices. These are resource references, not damage values.
delaySeconds: finite, non-negative. Active layers must be in non-decreasing delay order.
uniformScale, visualLifetimeSeconds, playbackRate: finite and positive.
heightOffsetCm: finite, relative to the impact point; negative values are allowed.
renderProfile: integer 1 through 8.

The shipped layer entries are:
ACE8.TONI.Layer0=6,0,1,0,6,1,8
ACE8.TONI.Layer1=1,0,20,47229.2109375,9,1,3
ACE8.TONI.Layer2=-1,0.11045833677053452,35.299999999999997,-200223.7890625,15,1,1
ACE8.TONI.Layer3=2,0.16562500596046448,25.112499438691884,16520.2109375,9,1,4
ACE8.TONI.Layer4=0,0.25337499380111694,1,52779.210935306503,9,10,2
ACE8.TONI.Layer5=4,0.53958332538604736,1,0,9,1,6
ACE8.TONI.Layer6=3,0.6524166464805603,35.299999999999997,14463.736523183899,6.5,4.5,5

ACE8.TONI.RenderingN entries contain four values:
translucencySortPriority,castShadow,emissiveLightSource,yawDegrees

Sort priority must be a signed 32-bit integer. The two flags must be 0 or 1. Yaw must be finite. Keep all eight rendering entries, including profiles that are not referenced by your current active layer selection.

The shipped rendering entries are:
ACE8.TONI.Rendering1=101,1,0,0
ACE8.TONI.Rendering2=107,0,0,-40
ACE8.TONI.Rendering3=100,1,1,110
ACE8.TONI.Rendering4=100,1,0,0
ACE8.TONI.Rendering5=105,0,0,0
ACE8.TONI.Rendering6=106,0,0,0
ACE8.TONI.Rendering7=100,0,0,110
ACE8.TONI.Rendering8=100,0,0,0

Changing visual scale, lifetime or playback speed changes the presentation; it is not a general damage or blast-radius control. The existing effect assets and companion references must remain compatible with the core.

10. IEWS+ AND GUIDANCE PACKAGES

IEWS+ uses the module prefix pakchunk99-ACE8UniversalIEWS_17_P and this asset:
Game/Content/Blueprints/Weapons/PlayerUniversalIEWS/BP_plwp_iews_universal.uasset
Class-default export: Default__BP_plwp_iews_universal_C

Its existing native fields include:
SupportTimeCampaign       26.0 seconds
JammingTimeCampaign       26.0 seconds
SupportEffectRangeMeter 3200.0 meters
JammingEffectRangeMeter 3200.0 meters
LoadTime                   0.5 seconds

Its LifeTime is separately set to 30.0 seconds. Do not assume LifeTime alone changes the support and jamming windows. These are existing native fields; this module does not use the TONI/APS tag schema. Changes still need compatible lifecycle and effect timing, followed by your own in-game check.

The three guidance downloads in the package remain mutually exclusive. Their asset sets differ, so do not edit one and combine it with another mode. The MSL-only module includes:
Live/Content/Blueprints/Weapons/MSL/PLAYER/MSL/BP_plwp_msl_a0.uasset
Live/Content/Datatables/PLAYER/DT_WeaponSettings.uasset

The MSL class currently has HomingForesightAmount=1.0, but this is a native steering parameter, not a documented global strength slider. The module also includes a weapon-settings table. A complete guide to redesigning native guidance or changing every weapon is outside the scope of the v18.5 TONI/APS configuration interface described here.

11. REBUILD THE COMPLETE MODULE

Keep all 10 TONI assets or all 6 APS assets in their correct relative paths under the respective working folder, preserving unchanged assets and converter metadata as required. Create a separate output directory.

TONI example:
retoc.exe to-zen --version UE5_4 --no-parallel "C:\ACE8Edit\TONI" "C:\ACE8Edit\Repacked\pakchunk99-ACE8PlayerTonitrus_4_P.utoc"

APS example:
retoc.exe to-zen --version UE5_4 --no-parallel "C:\ACE8Edit\APS" "C:\ACE8Edit\Repacked\pakchunk99-ACE8PlayerAPS_01_P.utoc"

Preserve the exact module basenames. Keep the newly generated .utoc and its matching .ucas together. For this mod's existing loading setup, use the original v18.5 .pak and .sig supplied with that module. If retoc emits a replacement .pak, replace that generated entry with the original supplied .pak and preserve its matching .sig. Do not substitute an unrelated module's files.

The result is one matching four-file set for each edited module: the rebuilt .utoc/.ucas plus that module's original .pak/.sig. Do not mix an old .utoc with a new .ucas or install only the single edited Blueprint as a replacement for the full module.

Before installation, re-extract the rebuilt container using a fresh dependency context that contains the rebuilt module instead of its original counterpart. Reopen the changed assets and verify the actual values, all required tags, names and references. Check that conversion reported zero failed assets. The game must still load those resources successfully; conversion success does not prove runtime behavior.

12. INSTALL, CHECK AND REVERT

Back up the original module's four files outside the game directory. With the game closed, place the complete edited set in Game\Content\Paks, keeping the matching v18.5 dinput8.dll. Remove duplicate copies of the same module from any other mod-loading folder.

Fully restart the game. For the parameter you changed, check the corresponding behavior yourself: TONI designation range and impact, or APS activation, refresh, HUD timing and normal expiration. Revert to the untouched four-file set if the result is not as intended.

The weapon-description text is static and does not automatically update to match your custom numbers. A description still saying 5000 m or 30 seconds does not by itself mean your resource edit was ignored.

Logs are next to AceCombat8.exe:
Game\Binaries\Win64\ACE8PG-loader.log
Game\Binaries\Win64\ACE8-TONI-runtime.log

Preserve the logs before restarting after an error. Missing/duplicate configuration keys, invalid numbers and incompatible resources must be corrected rather than ignored.

Your edited files will no longer match the original release checksums. Keep your custom build and original backup separately. An official reinstall can replace custom files, and an installer restore may stop because its recorded file hashes no longer match. Use your own backup to manage this manual modification.

This document describes the v18.5 resource interface. It does not provide the DLL source, game decryption material or a ready-to-use mapping package, and it does not claim that arbitrary custom values have been tested.
