AKA the tutorial I wish I had when I was starting out. This guide assumes a passing familiarity with corsix mod studio.
If you haven't installed 3ds max 2008 read this first: https://forums.revor...p-3ds-max-2008/
Getting started
Installing
Install to C:\Program Files (x86)\THQ\Dawn of War - Dark Crusade\ModTools
Modtools archive
https://www.mediafir...etup_v1.7z/file
The OE uses .rsh textures in C:\Program Files (x86)\THQ\Dawn of War - Dark Crusade\ModTools\DataGeneric\My_Mod\art\ebps\races\race_name\texture_share Textures used by the OE are automatically generated when you export from 3ds max.
Do not use textures from data generic in your mod as they have been reported to cause issues. Instead use IBBoards texture tool to convert textures in datasrc. Texturing is outside the scope of this tutorial.
Use DawnOfWarUnSGA to extract the games fx and sound folders in Dawn of War - Soulstorm\DXP2 then copy them to the locations below.
C:\Program Files (x86)\THQ\Dawn of War - Dark Crusade\My_Mod\Data\art\FX
C:\Program Files (x86)\THQ\Dawn of War - Dark Crusade\My_Mod\Data\Sound
File types, importing and exporting
The OE opens .ebp and .sgm files that must be in C:\Program Files (x86)\THQ\Dawn of War - Dark Crusade\ModTools\DataGeneric\My_Mod\art\ebps\races\race_name\troops Henceforth I’ll refer to this as Datageneric for brevity. Datageneric must have an .ebp and .sgm with the same name. The .sgm contains the model and animation data exported from 3dsmax while the .ebp has all the data OE adds such as the action tree and file paths for sounds and fx.
OE exports to C:\Program Files (x86)\THQ\Dawn of War - Dark Crusade\My_Mod\Data\art\ebps\races\race_name and automatically converts the .ebp to a .whe file while the .sgm becomes a .whm file. OE will only make a new .whm if the .sgm has changed. Note that My_Mod isn’t actually your mod folder but a special folder used only for the OE to export to. Name your mod folder something else.
Some units will crash OE when it tries to open the file, even if I haven't made any changes to the unit. Always open a model in OE before doing any work in 3ds max, there is nothing worse then spending hours on animation just to find out that OE can't open the exported file.
Action tree and hierarchy
Launch OE though the relic's tools dropdown in corsix mod studio.
To get started open a .ebp, then on the left side panel expand Anims / Motions / Actions then expand Action Tree then default. Default is where most of a models animations are organized. Animations are grouped into motions and motions are grouped into actions. Actions can also contain a list of actions. Highlight default in the action tree then expand Action Properties on the right side of the OE. Also expand the idle action.
Screenshot1 https://www.dropbox....kdpa/1.PNG?dl=0
As you can see the idle action has a motion group called idle_all and three idle motions, which each have one idle animation. The green film strip indicates a motion, the blue strip is a motion group and the purple film strip is an action. Animations have some 1s and 0s next to them.
When you select an action or motion in the action tree the OE will play all animations grouped under it. For example if I select default it will show all idle, moving, shooting and aiming animations depending on what variables are enabled in the bottom panel. If I select the idle action it will only play idle animations and so on.
Certain action names are automatically added the the top level of the action tree. Here is an incomplete list:
capture
default
die
jump_breakdown
jump_godown
jump_goup
jump_setup
melee_attack
melee_charge
melee_damage
melee_move
thrown
thrown_getup
spawn
special_ability_1
special_attack_1
sync_death_1
sync_kill_1
Variables
The variables panel listed along the bottom lets you simulate various ingame conditions. For example if I have the default action group selected it will play an idle animation, but if I increase the velocity variable above 0 the unit will start to walk, assuming the unit has been set up correctly. This is your primary method of testing if motions and actions work as intended. Each variable has a drop down list to let you choose other variables, far more then the 8 visible here.
Some variables like velocity are always available while others require a clause to be set up(more on that below)
Conditions and Clauses
Clauses are simple tests to see if something is true or false. Clauses are grouped into conditions as shown below.
Screenshot2 https://www.dropbox....vdxz/2.PNG?dl=0
As you can see the idle action will only play if all clauses in the idle condition are true. Clauses come in three types, boolean is a simple true or false test, float compares two numbers. In the move clause, if velocity is greater then 0 the clause is true.
Below you can see how conditions and variables are connected.
Screenshot3 https://www.dropbox....ciu3/3.PNG?dl=0
String clauses are particularly important because they tell the game when to use each weapon animation. The hardpoint name and visibility of weapon upgrades are both set by string clauses as shown below.
Screenshot4 https://www.dropbox....hxre/4.PNG?dl=0
If you want to add new string clauses for weapon types go to C:\Program Files (x86)\THQ\Dawn of War - Dark Crusade\ModTools\ToolsData and open ConditionStringPresets.lua
Conditions only serve one purpose: it adds the possibility of grouping clauses. So for example you could make a condition that checks if the unit is getting damage and jumping at the same time. Often only one clause will be in the condition, but it needs to be added, since only conditions can be used in actions. In actions, conditions determine which sub-action or sub-motion is played.
Setting up hardpoints
Every weapon upgrade has a vis file, and each vis file has a unique condition and clause that determines what the epb calls the vis file and aim animations. In corsix in the units .ebp file is the combat_ext that contains a list of hardpoints. Select hardpoint_01>weapon_table>weapon_01 and you will see name_for this weapon_choice which makes the weapon visible. Hardpoint_01 contains a list of motions that tells the game what animations to use for that hard point. The names of these motions are also set in the OE with string clauses, as shown in screenshot 5.
Screenshot5 https://www.dropbox....pdlm/5.PNG?dl=0
Every ranged weapon has muzzle and origin coordinates that define where the guns default position is, in its ebp under combat_ext. These determine where projectiles will spawn for artillery and where the guns will point when they have nothing to do. To find these coordinates look at the aim animation in OE when the gun is pointing straight ahead then in the top left click info>display markers, it will show the x, y and z values in that order.
Commander wargear
Wargear has a vis file and clause to put it on a hardpoint just like a weapon upgrade. The wargear research upgrades the weapon hardpoint, and that enables its vis file. The wargear research contains the modifiers the wargear applies. If the wargear enables an ability, the wargear research will be listed as a requirement in the ability file.
Modifiers
Modifiers change the speed at which motions play. Having a modifier will make the motion automatically speed up or slow down to match the units movement speed or fire rate of the weapon. Its highly recommended to have a modifier on every walking and shooting motion to ensure that the units feet are not gliding across the ground and that the shooting and damage application remain in sync. Weapons that fire a continuous stream of bullets don’t need a modifier. Modifiers are very simple to set up, just do it.
Screenshot6 https://www.dropbox....evz0/6.PNG?dl=0
In the screenshot above, ref value is the speed the unit needs to play the animation at 100% speed. If I changed the hazard suits speed to 11 in corsix, the walk anim would play at half speed., because 11 is half of 22. To find the ref value observe the unit walk ingame, keep changing the units speed in corsix until its feet no longer glide across the ground, thats what your ref value should be.
To set up a weapon speed modifier choose the same variable the weapon uses in its firing clause, ie Weapon_Range_Firing_Main or similar, choose absolute time, and default 0. Give the modifier the name of the weapon. Now select the weapons firing motion, under Motion Properties>Timing add the modifier and check the 'Ignore Transitions' box.
Events and fx
Every motion has a list of events. An event can be a visual fx or a sound. Next to each event is the time in the animation that the event is played. In the bottom panel you can change frames to seconds and scrub through the animation to find the exact time you want the event to play, then add that time to the event in the events section of the motion properties.
Screenshot7 https://www.dropbox....cfpk/7.PNG?dl=0
In the top left I select Info>Display Markers and open event properties on the right. I also selected the burst cannon vis motion to make the gun visible in the window. I’ve now selected the marker parameter and I can change it with the drop down list above. The green line indicates the direction the marker is pointing and therefore the direction the tracer will go. Markers are set in the ref animation and they must be attached to a bone. Markers in other animations aren’t usable.
Screenshot8 https://www.dropbox....uoba/8.PNG?dl=0
This is the end of the getting started / ui tutorial.
Advanced uses / Extra features
Changing unit scale
In your_mod_name\Data\art\ebps\races\race_name\troops make a .lua that shares the .whe name, and add this code to it.
simvis_attributes = { melee_size = 1, melee_block_ratio = 50, melee_unsynced_damage_ratio = 5, selection_volume = 1, selection_ground = 1, vis_scale_min = 2.40, vis_scale_max = 2.40, -- Shadow Types: -- 0 = None -- 1 = blob (rotated by light dir) -- 2 = blob (rotated by object dir) -- 3 = shadow map -- 4 = stencil shadow volume shadow_type = 3, shadow_scale = 0.08, occludee = 1, } simvis_attributes_strings = { shadow_texture = "Shadows/shadow_dir_blob-dot.tga" }
vis scale min max is a multiplier of the model size. If min and max are different each instance of the model will be a random size between the two values. Good for making troopers of different heights!
However this won’t change the size of the fx on the model, for that you must go into event properties in OE and add fx_length and fx_scale params to each event that needs a size adjustment. fx_scale really means width.
On the left side of the OE is a menu called 'Selected UI' that changes the size and shape of the green border around the unit. It also lets you change how close the cursor has to be to select the unit ingame, represented by the red box around the unit.
Finally you should adjust the collision radius in the units .ebp -> entity_blueprint_ext. Adjust the scale_x and y values so it doesn't clip or leave too much space around it.
Jump actions and teleporting
Each jump action must have vis_master and vis motions for weapon upgrades.
Jumping has four actions that occur in this order:
jump_setup the unit crouches and prepares to jump
Jump_goup the units leaves the ground and transitions into its flying pose
Jump_flying the units in its flying pose, optionally may have shooting and aim anims to allow the unit to fire from the air.
Jump_godown the unit descends until its feet touch the ground
Jump_breakdown the unit flexes its legs to absorb the impact and transitions back to the idle pose as the animation ends
The length of these animations must be entered into the .sbps for them to transition smoothly. Note that not all units need a unique animation for each of these actions. If you're feeling lazy a teleporting unit can reuse its vis_master animation in the jump_setup and jump_breakdown actions. Likewise an aircraft could use its vis_master animation with some fx for vertical thrust or skip the setup/breakdown with a one frame vis_master anim.
Teleporting units only need the setup and breakdown actions.
Its also possible to add a unique death animation for dieing while jumping. In the die action group add a new action called die_jumping with the compare type 'if' and condition 'is_jumping' and give the ground death action the compare type 'else'.
Aftermath_Ext extension and how to add it (victory poses), by HorusHeretic
Aftermath is an extension in the AE (you'll have to copy and past the code from somewhere for corsix mod studio) that tells the game engine to play a victory animation after utterly destroying a squad, vehicle or building in melee combat. that's not all what's required though. the model will need to have it coded in to its model code also. that will be simple enough if you've dabbled around with the OE before.
Here's the run down.
Create a new motion. This can be called anything you want.
Create a new action. This HAS to be called "Melee_Aftermath". Now just link up your created motion (or shared motion if you have multiple and want it to be randomised) and add any visuals and events to complete it.
Open up the AE and find the EBP code for your unit. Add the Aftermath_ext extension to the code, set the chance of it happening and how long the animation lasts for.
That simple.
Some units have it coded into the model already, like the normal chaos space marines for example.
you can do a quick experiment and see what happens when they win a melee combat.
How to set up a turret that can't fire forward: (from the relic chimera)
1. Set up horizontal aim animation normally.
2. Aim vert animation is relative to the guns facing, so if gun aims left then aim vert will start and end aiming to the right.
3. In corsix mod studio, open the units ebps combat_ext>hardpoints, find the hardpoint and change muzzle and origin to match the muzzle marker coordinates shown in the OE.
Wrapping up
When your done making changes remember to copy the .whe and .whm files from my_mod to your mod folder to see them ingame.
Troubleshooting crashes
The OE has a bad tendency to crash without giving any error messages, possible causes include:
3ds max didn't export the file correctly. Always open a model in OE before doing any work in 3ds max, there is nothing worse then spending hours on animation just to find out that OE can't open the exported file.
Bad events/fx, can cause a crash when playing the motion or action that contains the fx.
FAQ
Q: I’ve made a new unit but I don’t know where to start in OE!
A: In 3ds max xref a unit that has a similar action set. ie if you made a new tank xref another tank so you don’t have to start from scratch. Rename the .epb to match your new unit.
Q: "Unable to burn ebp" error message.
A: Your missing a file called _default.burn that should be in ModTools\DataGeneric/My_Mod You can get this file from the modtools archive linked below
https://www.mediafir...etup_v1.7z/file
Q: fx isn't symmetrical / fx textures spawn too rapidly.
A: In an action group the if and elseif statements on motions can cause fx texture to spawn too rapidly.
For example in a tanks movement action, you'll have tread left forward and tread left backward motions, and those motions will have a condition to determine when they play. If you give all the motions if compare type, then one of them will spawn fx texture to rapidly, causing asymmetry in the dust cloud behind the tank.
The way it should be set up is:
if tread left forward, then tread left forward motion.
else if tread left back motion
if tread right forward, then tread right forward motion.
else if tread right back motion
But if you did:
if tread left back motion
if tread left forward, then tread left forward motion.
if tread right forward, then tread right forward motion.
if tread right back motion
Then one or more fx won't display correctly. If your still having problems open one of relics units and mimic their action tree structure as close as possible.
Edit: updated installation instructions and added section about weapons speed modifiers.
Edit2: added info about setting up hardpoints and muzzle coordinates.
4/21/2020 added section about aftermath_ext
6/02/2020 added troubleshooting crashes section
12/15/2020 added bit about fx and if conditions
Edited by Moreartillery, 04 April 2022 - 08:17 PM.