Modding Manual
Modding Manual
Go to the game installation directory (in steam: Library -> Steel Division
2 -> Properties -> Local Files -> Browse Local Files), and enter the Mods
subdirectory
Open a console in the Mods directory (either by using cd <path_to_
Mods_folder> or by shift + right click in windows explorer > «open console
here») and run CreateNewMod.bat with the mod name as argument.
Example:
CreateNewMod.bat MyAwesomeMod
The name must be unique ; it will not work if a folder already exists with
that name. If all goes well, you should see a message indicating that the
mod was created, and a new folder named MyAwesomeMod has ap-
peared. It should contain the following directories:
- AssetsModding
- CommonData
- GameData
- Gen
- base.zip
- GenerateMod.bat
- UpdateMod.bat
- UploadMod.bat
These 4 files ( base.zip and the 3 .bat) are part of the modding tools,
please do not modify them or you will likely compromise your mod.
If something is missing, try to delete the mod folder and recreate it.
You are now able to start working on your mod, please read on!
GENERATING A MOD
A generation step is needed before a mod can be activated in-game or
uploaded to the Steam Workshop. To proceed, launch GenerateMod.bat
in your mod directory. The screen will become black for a short period of
time.
Once you have generated your mod a default SteamID will be given to
it. You need to upload your mod to give him a real SteamID. Even if you
haven’t finish your work, you can upload it and hide it on your workshop
mod page.
If you want to change the mod name, you have to : change the «Name»
field in the configuration file, change the folder name in C:\Users\USER-
NAME\Saved Games\EugenSystems\SteelDivision2\mod, change the
folder name in the steam directory.
UPLOADING A MOD
To upload your mod on steam, launch UploadMod.bat in your mod direc-
tory. The screen will become black for a short period of time.
This process will update «TagList», «ID» and «ModGenVersion» fields.
Once you’ve uploaded your mod, it’s ready to use on steam workshop,
you can access its own page, set its visibility, description, image, etc...
Thing2 is TThing
(
SomeInt = 80
)
You will want to keep your change to Thing/SomeInt’s value, and have
the new Thing2 as well. Wanted result for your mod:
Thing is TThing
(
SomeInt = 43
)
Thing2 is TThing
(
SomeInt = 80
)
UPDATING MODS
The solution is quite easy, just run UpdateMod.bat in your mod folder.
This will merge your changes with the last version of the game data.
If you’re lucky, the process will work automatically and display a message
indicating success. However, it is possible that you encounter conflicts
during the operation. Conflicts arise when both the new version of the
game and your mod modify the same part of a NDF file. In this case, the
process can’t guess what result your want, and need manual interven-
tion.
SOLVING CONFLICTS
Imagine once again that you’re modifying A.ndf.
Original version (game data when the mod was created):
Thing is TThing
(
SomeInt = 42
)
Modded version:
Thing is TThing
(
SomeInt = 43
)
And with the following update, the game’s version of the file becomes
this:
Thing is TThing
(
SomeInt = 80
)
Both the game and the mod have modified the same line. You can easily
see that it is entirely up to you what final value should Thing/SomeInt
have in your mod, and that no tool can decide it on its own.
The updating tool will stop and warn you about the files that contain
conflicts. To handle this case, the tool will mark conflicts like this one
with special delimiters:
Thing is TThing
(
<<<<<<<
SomeInt = 80
|||||||
SomeInt = 42
=======
SomeInt = 43
>>>>>>>
)
• After <<<<<<< is the new version from the game’s data
• After ||||||| is the base common ancestor (in our case original game’s
data)
MODS BACKUP
Inside your mod directory you will find 2 essentials scripts :
INTERFACE
If you want to mod the interface, you gonna need to look at GameData/
UserInterface/.
All files under Style/ folder will be related to global objects and reused
style accross different screens.
All files under Use/ will describe each screen or part of screen, separated
in folder following their usage in game :
• InGame : everything after a match session is launch
• OutGame : everything related to main menu, loading, etc...
• Common : everything common to both In and OutGame.
• ShowRoom : well it speaks for itself, it’s everything related to the
showRoom.
• Strategic : everything related to Steelman mode
If you want to add a new texture to replace one already used in game,
you can change its declaration by adding ‘Modded’ at the end of its type
( TUIResourceTexture_InGame will become TUIResourceTexture_InGa-
meModded, TUIResourceTexture_Outgame will become TUIResource-
Texture_OutGameModded, etc.), then set its path relative from Assets-
Modding/.
All your interface assets must be located under AssetsModding/ and your
FileName should be relative to this directory.
For exemple, if you want to change the riflemen’s label texture you need
to find Texture_RTS_Rifle in GameData/Generated/Gameplay/UI/Re-
sources/Textures/RTSNatoTextures.ndf. It looks like this :
TEXTURE_RTS_RIFLE_BEFORE
Texture_RTS_Rifle is TUIResourceTextureWithUse-
fulnessMask
(
TypeMask = TypeMask/Common
CivMask = CivMask/Common
FileName = ‘Assets\2D\Interface\UseInGame\
LabelIcons\RTS\default.png’
)
To change this texture you will need to modify TUIResourceTextureWi-
thUsefulnessMask to TUIResourceTextureWithUsefulnessMaskModded
and the FileName to ‘MyAwesomeTexture.png’, it should looks like :
TEXTURE_RTS_RIFLE_AFTER
Texture_RTS_Rifle is TUIResourceTextureWithUse-
fulnessMaskModded
(
TypeMask = TypeMask/Common
CivMask = CivMask/Common
FileName = ‘MyAwesomeTexture.png’
)
So the full path to MyAwesomeTexture.png is [SteamLibraryPath]/Steel-
Division2/Mods/[YourModName]/AssetsModding/MyAwesomeTexture.
png but like FileName is relative to [SteamLibraryPath]/SteelDivision2/
Mods/[YourModName]/AssetsModding/ you just have to set the path
from this directory.
And that’s it, your texture will replace the label texture for riflemen.
LOCALISATION
TokenSize
Your token size cannot exceed 10 characters!
GAMEPLAY
UNITS
DIVISIONS
Divisions are located in GameData/Generated/Gameplay/Decks/Divi-
sions.ndf. Divisions are composed by packs, a pack is a bundle of the
same units, all packs are located in GameData/Generated/Gameplay/
Decks/Packs.ndf.
GAMEPLAY CONSTANTS
WEAPONS
• GameData/Gameplay/Unit/CriticalModules/CriticalEffectModule_
GroundUnit.ndf: describes the critical effects distribution on ground
units (typically tanks).
AI
SOUND
You can add your own sound to SteelDivision 2. To do so, you need to put
them under GameData/Assets/SoundModding/. (Create folders if they
are not already here)
To redirect an existing sound to your own sound, you need to replace
its TSoundStream, Template_GlobalAcknow, Template_UnitAcknow or
TemplateSoundDescriptor by the modded version :
TSoundStream should be replaced by SoundStreamModded
Template_GlobalAcknow should be replaced by Template_Globa-
lAcknowModded
Template_UnitAcknow should be replaced by Template_UnitAcknow-
Modded
TemplateSoundDescriptor should be replaced by TemplateSoundDes-
criptorModded
Then set the FileName to your sound (the path is relative to GameData/
Assets/SoundModding/).
template Template_SoundDescriptor_CC_Autoca-
non_20mm
[
UseSpecialLoop,
]
is TSoundDescriptor
(
TheSoundStream = TSoundStream ( File-
Name = ‘GameData:\Assets\Sons\SFX_Normandie\CC\
CC_Autocanon_20mm.wav’ )
SoundSettings = $/SoundSettings/SFX_
SoundSettings
UseSpecialLoop = <UseSpecialLoop>
)
Then replace TSoundStream by SoundStreamModded and set the File-
Name to ‘My20mmShot.wav’. It should look like this :
template Template_SoundDescriptor_CC_Autoca-
non_20mm
[
UseSpecialLoop,
]
is TSoundDescriptor
(
TheSoundStream = SoundStreamModded(
FileName = ‘My20mmShot.wav’ )
SoundSettings = $/SoundSettings/SFX_
SoundSettings
UseSpecialLoop = <UseSpecialLoop>
)
SPECS
SoundFormat
Only OGG and WAV files are supported!
For continuous firing weapons you will need to mark a loop into your file.
You need to getthe software Wavosaur, load you file then tools>Mar-
kers>Create a marker (shortcut ‘M’).
You need to mark the loop begin and end. That way, the sound will begin
at the start of your file, then loop between the 2 markers until it ends,
then it will play the end of the sound.
SKINNING
In order to reskin our units you will need to download a new Modding tool
located on steam under Library > Tools > Steel Division 2 Modding Assets
By
downloading this tool you will be able to access our models textures and
Ase2NdfBin (necessary to generate your mod). You will find them here :
steamapps/common/Steel Division 2 Modding Assets/Mods/Assets/3D/
Units.
Each type of units (char, avion, infantrie, vehicule) is archived, you will
need to unarchived it before selecting which unit you want to reskin.
Once you have selected your units to reskin, you will need to copy the
unit’s files (all png or jpg and Ase2NdfBin) and past them in your mod,
with the same path.
Example : you want to reskin the US M4A1 Sherman, you go to steamapps/
common/Steel Division 2 Modding Assets/Mods/Assets/3D/Units/USA/
Char.zip, you unzip it, you go to Char\M4A1_Sherman\ copy all files and
past them in steamapps/common/Steel Division 2/Mods/[YourMod]/Ga-
meData/Assets/3D/Units/USA/Char/M4A1_Sherman/.
Warning LODs !
Don’t forget to copy and modify unit’s LODs and MID versions, otherwise
you might have some surprise in game.
Once you have copied and modified the unit’s textures, you have to gene-
rate your mod. You can enjoy your mod now.
MESH
• Ase2NdfBinPlugin_Install.exe
• eugMaterial_Install.exe
Quit 3ds Max if it’s running, install those plugins, you can find them under
steamapps/common/SteelDivision2/Mods/Utils/Meshes/PluginsInsta-
lers/, then restart 3ds Max.
Once you have done that you will need to setup your viewport settings.
To do so, use Autodesk 3dsMax 2015/Change Graphics Mode and set it
to «Nitrous Direct3D 9»
ASE2NDFBIN
The file need to be exported from 3dsMax in this format to be used inga-
me.
EUGMATERIAL
EugMaterial =in 3dsMax, we don’t use Standard Material. We use this
specific material that simulates the ingame visual of 3d models.
Along with classic channel (Diffuse, Specular, Glossiness, Normal Map
and Opacity), you’ll notice a “Tags” section.
You can add tags on some elements to have specific behavior.
For example, by adding 2 different materials (with its own separated tex-
tures) with tags “chenillegauche” and “chenilledroite” on left track and
right track of a tank, you’ll see the tracks move ingame when units is mo-
ving.
3D MODEL DESCRIPTION - EXAMPLE
WITH M4A1_SHERMAN MESH
To work properly ingame, a unit’s 3D model need different elements with
a specific nomenclature (some words are in French).
Let’s take the example of the M4A1 Sherman tank.
If you check inside the 3d file, you can see 2 sort of elements that com-
pose the model :
• 3d meshes parts : the guns, the turret, wheels, tracks, etc. These
elements are visible ingame.
• “Point helper” boxes : These boxes are invisible ingame. We use
the position (but also scale and orientation) of these boxes for differents
things like FX spawning points or procedural animations on some visible
elements.
3D MODEL SPECS
3D MESH
LODs are not generated, so you need to make you own version of High,
mid and low poly:
High = 6/7000 triangles max.
Mid = around 2000 triangles.
Low = less than 500 triangles.
TEXTURES
High = 2048 x 2048 px Diffuse, Glossiness (_GLO), Specular (_SC), Nor-
mal Map (NM) and sometimes Alpha (_A) + 256 x 256 px separated tex-
tures for tank’s tracks. This texture must be separated because when
unit is moving, UVs coordinates of tracks meshes will move too, to give
the illusion of real tracks.
Mid = 1024 x 1024 px textures. This time, tracks textures must be inside
the main textures. They don’t move at this level of details.
Low = 256 x 256 px textures.
FX HELPERS
SKINNING HELPERS
KNOWN ISSUES
• In case you have scaled your mesh, you need to run a ResetXForm
after that.
• Some 3ds Max Modifiers can cause some errors during export, to be
sure collapse as many Modifiers as possible before the export.