Deliverator
Graphical Hackificator
This isn't really a tutorial or anything, just a walk-through of what I've done and discovered so far in the hope it might be useful to people.
1. Install Sid Meier's Civilization V SDK via Steam.
2. Using Regedit set HKEY_CURRENT_USER/Software/FIRAXIS/Tools/ToolAssetPath to C:\Program Files (x86)\Steam\steamapps\common\sid meier's civilization v (if using Vista/Windows 7) or C:\Program Files\Steam\steamapps\common\sid meier's civilization v if using XP.
3. Open Nexus - set the asset directory to be C:\Program Files (x86)\Steam\steamapps\common\sid meier's civilization as well.
4. In the top menu select Nexus > Script Browser > Extract PAK Files. This will unpack all the assets to the directories ...sid meier's civilization v\resource. There are 3 directories Common, DX9 and dx9_low. The 3d art for units, leaders, terrain and buildings is all in together with no subdivision so you'll have to hunt through to find what you are interested in.
5. Some of the DDS files seem to use an unknown compression format that cannot be opened, but unit textures from the DX9 directory can be opened in Paint.NET. This is u_japanese_samurai_diff.dds:
Terrain and Cityset DDS files seem to open fine as well.
6. To look at the 3D assets in Nexus go to Assets/Asset Viewer. Open any *.fxsxml file. The fxsxml is an XML containing the details of the mesh, texture and animation files:
You can also explore the contents of the fxsxml in the Asset Viewer. You can see it has a list of the bones which is interesting.
7. A few windows open when you open an fxsxml file. The only ones I've played with so far are the 3D View and Animation Triggers windows. You'll want to have them both side-by-side (widescreen monitors useful here):
The only hotkeys I've figured out for the 3D View are:
T - Top View
B - Bottom View
F or Z - Front View
L - Some strange sideways view ?
ALT + SHIFT + LMB-Drag can be used to rotate the camera
Switch the drop-down in the top left of the 3D View to EventCode rather than default. Now you can trigger the different animations in the left hand pane of the Animation Triggers view and you should see the unit in the 3D View moving. Sound FX are also triggered as well (this should make syncing sound fx much easier than in Civ4 where you had to edit the KF file in NifSkope and then test in game). You can also set the animation to loop using the Loop button at the top. That's about all I've figured out for now on that.
8. I wanted to see if it was possible to get a reskin showing up in the 3D View so I quickly edited the DDS file to make the rider's clothing blue in Paint.NET.
9. If I overwrite the unpacked DDS file in the resource/DX9 folder with my reskinned version and reopen the fxsxml in Nexus I can see that the change is picked up:
See here for a guide on creating a reskinning copy of a vanilla unit and getting it into the game.
.
1. Install Sid Meier's Civilization V SDK via Steam.
2. Using Regedit set HKEY_CURRENT_USER/Software/FIRAXIS/Tools/ToolAssetPath to C:\Program Files (x86)\Steam\steamapps\common\sid meier's civilization v (if using Vista/Windows 7) or C:\Program Files\Steam\steamapps\common\sid meier's civilization v if using XP.
3. Open Nexus - set the asset directory to be C:\Program Files (x86)\Steam\steamapps\common\sid meier's civilization as well.
4. In the top menu select Nexus > Script Browser > Extract PAK Files. This will unpack all the assets to the directories ...sid meier's civilization v\resource. There are 3 directories Common, DX9 and dx9_low. The 3d art for units, leaders, terrain and buildings is all in together with no subdivision so you'll have to hunt through to find what you are interested in.
5. Some of the DDS files seem to use an unknown compression format that cannot be opened, but unit textures from the DX9 directory can be opened in Paint.NET. This is u_japanese_samurai_diff.dds:
Terrain and Cityset DDS files seem to open fine as well.
6. To look at the 3D assets in Nexus go to Assets/Asset Viewer. Open any *.fxsxml file. The fxsxml is an XML containing the details of the mesh, texture and animation files:
Spoiler :
Code:
<Asset>
<Mesh file="U_Songhai_MuslimCavalry.gr2"/>
<Animation file="U_Songhai_MuslimCavalry_IdleA.gr2" ec="1000"/>
<Animation file="U_Songhai_MuslimCavalry_FidgetA.gr2" ec="1040"/>
<Animation file="U_Songhai_MuslimCavalry_IdleA_Trans_IdleB.gr2" ec="1020"/>
<Animation file="U_Songhai_MuslimCavalry_IdleB.gr2" ec="2000"/>
<Animation file="U_Songhai_MuslimCavalry_FidgetB.gr2" ec="2040"/>
<Animation file="U_Songhai_MuslimCavalry_IdleB_Trans_IdleA.gr2" ec="2020"/>
<Animation file="U_Songhai_MuslimCavalry_Fortify.gr2" ec="1500"/>
<Animation file="U_Songhai_MuslimCavalry_Fortify_Idle_Trans_IdleA.gr2" ec="1580"/>
<Animation file="U_Songhai_MuslimCavalry_Fortify_Idle.gr2" ec="1520"/>
<Animation file="U_Songhai_MuslimCavalry_Fortify_Idle_Fidget.gr2" ec="1540"/>
<Animation file="U_Songhai_MuslimCavalry_Fortify_Idle_Trans_Combat_Ready_Idle.gr2" ec="1560"/>
<Animation file="U_Songhai_MuslimCavalry_Combat_Ready.gr2" ec="1600"/>
<Animation file="U_Songhai_MuslimCavalry_Shuffle.gr2" ec="1450"/>
<Animation file="U_Songhai_MuslimCavalry_Combat_Ready_Idle.gr2" ec="1620"/>
<Animation file="U_Songhai_MuslimCavalry_Combat_Ready_Idle_Trans_IdleA.gr2" ec="1640"/>
<Animation file="U_Songhai_MuslimCavalry_Run_Turn_Left.gr2" ec="1480"/>
<Animation file="U_Songhai_MuslimCavalry_Run_Turn_Right.gr2" ec="1460"/>
<Animation file="U_Songhai_MuslimCavalry_Run.gr2" ec="1400"/>
<Animation file="U_Songhai_MuslimCavalry_Stop_Run.gr2" ec="1440"/>
<Animation file="U_Songhai_MuslimCavalry_Stop_Run_IdleB.gr2" ec="2440"/>
<Animation file="U_Songhai_MuslimCavalry_Charge_Run.gr2" ec="1120"/>
<Animation file="U_Songhai_MuslimCavalry_Charge_Attack.gr2" ec="1140"/>
<Animation file="U_Songhai_MuslimCavalry_AttackA.gr2" ec="1100"/>
<Animation file="U_Songhai_MuslimCavalry_AttackB.gr2" ec="2100"/>
<Animation file="U_Songhai_MuslimCavalry_AttackCity.gr2" ec="1160, 1180"/>
<Animation file="U_Songhai_MuslimCavalry_Victory.gr2" ec="1800"/>
<Animation file="U_Songhai_MuslimCavalry_Bombard_Defense.gr2" ec="1280"/>
<Animation file="U_Songhai_MuslimCavalry_Bombard_Defense_Idle.gr2" ec="1285"/>
<Animation file="U_Songhai_MuslimCavalry_Bombard_Defense_Trans_IdleA.gr2" ec="1290"/>
<Animation file="U_Songhai_MuslimCavalry_DeathB.gr2" ec="2200"/>
<Animation file="U_Songhai_MuslimCavalry_DeathB_Idle.gr2" ec="2220"/>
<Animation file="U_Songhai_MuslimCavalry_DeathA.gr2" ec="1200"/>
<Animation file="U_Songhai_MuslimCavalry_DeathA_Idle.gr2" ec="1220"/>
<Texture file="Unit_Environment_Dull.dds"/>
<Texture file="Unit_Environment_Sharp.dds"/>
<Texture file="Unit_Irradiance.dds"/>
<Texture file="U_Songhai_MuslimCavalry_SREF.dds"/>
<Texture file="U_Songhai_MuslimCavalry_DIFF.dds"/>
<TimedTrigger file="FX_Triggers_U_Songhai_MuslimCavalry.ftsxml"/>
<StateMachine file="1_OMNI_MOUNTED_STATE_01.fsmxml"/>
<AnimGraph file="START_RUN_CHARGE_SHUFFLE.dge"/>
<AnimGraph file="ATTACK_TO_RUN_CHARGE_SHUFFLE.dge"/>
<AnimGraph file="ATTACK_CITY_TO_RUN_CHARGE_SHUFFLE.dge"/>
<AnimGraph file="RUN_CHARGE_SHUFFLE_TO_SHUFFLE_RUN_CHARGE.dge"/>
<AnimGraph file="RUN_CHARGE_SHUFFLE_LOOP.dge"/>
<AnimGraph file="FIDGETS_GRAPH.dge"/>
<AnimGraph file="IDLE_GRAPH.dge"/>
<AnimGraph file="STOP_RUNNING.dge"/>
<AnimGraph file="TRANSITIONS_FOR_IDLES.dge"/>
<AnimGraph file="FORTIFY_GRAPH.dge"/>
<AnimGraph file="COMBAT_READY_GRAPH.dge"/>
<AnimGraph file="FORTIFY_LEAVE_GRAPH.dge"/>
<AnimGraph file="ENTER_COMBAT_READY_GRAPH.dge"/>
<AnimGraph file="LEAVE_COMBAT_READY.dge"/>
<AnimGraph file="DEATH_GRAPH.dge"/>
<AnimGraph file="ENTER_BOMBARD_DEFEND_GRAPH.dge"/>
<AnimGraph file="BOMBARD_DEFEND_LOOP_GRAPH.dge"/>
<AnimGraph file="DEATH_FINAL_GRAPH.dge"/>
<AnimGraph file="LEAVE_BOMBARD_DEFEND_TRANS_IDLE_A_GRAPH.dge"/>
<AnimGraph file="ENTER_FORTIFY.dge"/>
<AnimGraph file="MOUNTED_RUNNING_LOOP.dge"/>
<AnimGraph file="MELEE_ATTACKS.dge"/>
<AnimGraph file="FORTIFY_FIDGET_GRAPH.dge"/>
<AnimGraph file="SHUFFLE_STOP_GRAPH.dge"/>
<AnimGraph file="IDLE_OFFSET_CONTINUE_TRUE_GRAPH.dge"/>
<BoneUsage>
<Bone name="Horse"/>
<Bone name="Base HumanRPalm"/>
<Bone name="Base HumanRibcage"/>
<Bone name="Base HumanLPalm"/>
<Bone name="Sword"/>
</BoneUsage>
</Asset>
You can also explore the contents of the fxsxml in the Asset Viewer. You can see it has a list of the bones which is interesting.
7. A few windows open when you open an fxsxml file. The only ones I've played with so far are the 3D View and Animation Triggers windows. You'll want to have them both side-by-side (widescreen monitors useful here):
The only hotkeys I've figured out for the 3D View are:
T - Top View
B - Bottom View
F or Z - Front View
L - Some strange sideways view ?
ALT + SHIFT + LMB-Drag can be used to rotate the camera
Switch the drop-down in the top left of the 3D View to EventCode rather than default. Now you can trigger the different animations in the left hand pane of the Animation Triggers view and you should see the unit in the 3D View moving. Sound FX are also triggered as well (this should make syncing sound fx much easier than in Civ4 where you had to edit the KF file in NifSkope and then test in game). You can also set the animation to loop using the Loop button at the top. That's about all I've figured out for now on that.
8. I wanted to see if it was possible to get a reskin showing up in the 3D View so I quickly edited the DDS file to make the rider's clothing blue in Paint.NET.
9. If I overwrite the unpacked DDS file in the resource/DX9 folder with my reskinned version and reopen the fxsxml in Nexus I can see that the change is picked up:
See here for a guide on creating a reskinning copy of a vanilla unit and getting it into the game.
.