Mods
Getting Started
Cold Waters supports significant modding. Before beginning, we recommend backing up your “default” folder to a safe location. If you corrupt your default folder, simply delete it and re-download from Steam.
Default folder location is inside the Cold Waters installation directory;
- PC: ColdWaters_Data/StreamingAssets/default
- Mac: ColdWaters.app/Contents/DataResources/Data/StreamingAssets/default
When loading game content, Cold Waters looks in 3 places in the following order for game content:
1) override (external)
2) default (external)
3) internal – cannot be edited
If the override folder is not present, create a new folder yourself called “override” in the same folder as default.
- So files in the override folder are always checked for and used first.
- Then the default folder is checked.
- Finally internal files are used. Internal files cannot be modified, but references to the various internal files can be changed.
PARENT DIRECTORY:
When discussing modding of Cold Waters, both the default and override directories are considered the “parent” folder. Do not attempt to modify anything outside these folders as the game cannot access it. Whether you edit default or override is up to you, but we recommend editing the override folder in order to keep your default content safe and for use as templates.
IMAGES:
- Supported image formats are PNG and JPG only.
- When specifying a reference to an internal image, FILE EXTENSIONS ARE NOT SPECIFIED.
- When specifying a reference to an image in either the default or override folder, FILE EXTENSIONS MUST BE SPECIFIED.
-For example the file “campaign/campaign001/camapign_data” contains these two lines near the top:
-MapImage=campaign/maps/norwegian_sea_chart.png
-MapNavigationData=campaign/images/maps/norwegian_sea_navmap
The first line references either the default or override folder for an external PNG file (note the file extension) to draw the sea chart. You can find this file by navigating to “campaign/maps/norwegian_sea_chart” yourself.
The second line references the navigation map data which is an internal TGA file (note no file extension). You will not find this file in your default or override directory as it is built directly into the game.
WORLD UNITS
When editing missions, coordinates in world units can be specified.
1 Unit = ~75 yards.
Single Missions
Single missions are made up of 3 files:
1) language/mission/missions_single
This is a list of all single mission titles. To add a new mission, add a new title for it to this list.
All mission names in this list correspond to two missionXXX files (one in the parent directory and one in the languages/mission folder) where XXX is a 3 digit number and represents the position of the mission in this list. For example the third mission in the list would have the number “003”. The menu of Single Missions is built from this list.
2) language/mission/missionXXX
Contains the language portion of the mission including the briefing as well as the location.
Also contains a reference to the background image.
When creating a new mission, create a new file called “missionXXX” where XXX corresponds to the position of this mission in the “language/mission/missions_single” list.
3) missionXXX
In the parent folder, this file contains all the mission parameters as outlined below.
When creating a new mission, create a new file called “missionXXX” where XXX corresponds to the position of this mission in the “language/mission/missions_single” list.
For example if there are 4 missions already listed in “language/mission/missions_single”:
Add a new line to the bottom called “Mission Example”.
This new line is #5 so the new mission number will be 005.
Create a file in “language/mission/” folder called “mission005” containing the language portion and background image reference.
Create a file in the parent folder called “mission005” containing the mission file data.
When creating these new files, you may want to copy/paste existing mission files to use as a template.
MISSION FILE COMPOSITION:
UseTerrain=TRUE
Specifies use of terrain and ice for this mission (TRUE/FALSE).
MapCoordinates=2530,2030
-The pixel coordinates of the world map where the mission occurs. World map is 4096×2048
MapNavigationData=campaign/images/maps/norwegian_sea_navmap
-Reference to the navigation map which contains land, seasonal ice coverage, biome and water transmission data.
MapElevationData=campaign/images/maps/norwegian_sea_bathymetry
-Reference to the data used to generate terrain. Terrain data is 4096×2048
WorldObjectsData=campaign/maps/norwegian_sea_world_objects
-Database of world objects, such as ports, to be generated if combat occurs near them.
//Environment
-Date=15 MAR 1984
-Use this format to specify date of mission. Date is used in conjunction with hemisphere to determine season, weather, ice conditions and phase of moon.
Hemisphere=North
-Used to determine season and weather in conjunction with Date.
Time=1200 (0000-2400,RANDOM)
-Military time ranging from 0000 to 2400 or choose a rnadom time.
UsePresetEnvironment=TRUE
-Override to use pre-defined weather and ocean characteristics rather than have them dynamically generated based on Date and Hemisphere.
- Weather=Clear (Clear,Scattered,Broken,Overcast,Rain,Storm,Snow,SnowStorm,RANDOM)
SeaState=StrongBreeze (Calm,LightAir,LightBreeze,GentleBreeze,ModerateBreeze,FreshBreeze,StrongBreeze,HighWind,RANDOM) - DuctStrength=ZeroStrength (ZeroStrength,VeryWeak,Weak,Moderate,Strong,VeryStrong,RANDOM)
LayerStrength=ZeroStrength (ZeroStrength,VeryWeak,Weak,Moderate,Strong,VeryStrong,RANDOM) - These values are only used if UsePresetEnvironment=TRUE.
RANDOM chooses a random value from the available options with the exception of Duct and Layer strengths as these parameters are calculated based on local weather, sea state, water depth and season.
//Enemy Ships
NumberOfEnemyUnits=2-3,1-1,0-2
Enemy ships are specified as ranges in groups with “,” between groups.
Above example will generate 2-3 ships from group ONE, 1 from group TWO and 0-2 from group THREE.
Total number of enemy ships that will spawn is capped at 15 and at least 1 vessel must always be able to be spwaned.
CombatBehaviour=OFFENSIVE,DEFENSIVE,OFFENSIVE
How each group of vessels will react to the player submarine. Capital ships and merchants tend to be DEFENSIVE while escorts are OFFENSIVE.
EnemyShipClasses=wp_bpk_udaloy|wp_bpk_kresta2|wp_bpk_kara|wp_skr_krivak1,wp_takr_kiev,wp_ssn_victor3|wp_ssn_victor2
Enemy ship classes are specified in groups with “,” between groups and “|” between members of a group.
Ship identifiers are as per those specified in “vessels/_vessel_list”.
In conjunction with NumberOfEnemyUnits and CombatBehaviour above this line would generate:
2-3: Udaloy, Kresta2, Kara or Krivak acting OFFENSIVELY
1: Kiev acting DEFENSIVELY
0-2: Victor3 or Victor2 acting OFFENSIVELY
FormationCruiseSpeed=12
-If travelling in a formation (UsePresetPositions=FALSE, see below) a formation will automatically be generated and will cruise at this speed in knots.
-Capital ships and merchants make up the core with escorts at the periphery.
-Submarines of SSGN and SSBN class by default will act DEFENSIVE even if assigned to an OFFENSIVE group.
-Aircraft/Helicopters will act relative to the formation, screening it as it moves.
//Ship positions and headings, otherwise build into a formation
UsePresetPositions=FALSE
If FALSE, ships will be arranged into a formation and will cruise at the speed specified in FormationCruiseSpeed.
If TRUE, individual placement of ship postions, orientation and waypoints is needed and Aircraft/Helicopters require designated search zones.
WARNING: if TRUE, numbers of enemy units must be constant e.g. NumberOfEnemyUnits=3-3,1-1,2-2 so that all waypoints (EnemyWaypoints, see below) correspond to the exact number of ships.
PlayerPosition=0,0
PlayerHeading=0
-Places the player sub at the world coordinates with the heading specified.
PlayerDepthInFeet=45
PlayerTelegraph=1
-Optional start setting used for training missions.
//Only used in training mode to exactly place enemy ships
-EnemyPositionsX=0|20|-20,-100,0|0
-EnemyPositionsZ=-100|-100|-100,100,0|0
-EnemyHeadings=90|90|90,-90,-90|90
//AI Nav Waypoints
-EnemyWaypoints=0,-100|0,100
-EnemyWaypoints=10,-100|10,100
-EnemyWaypoints=20,-100|20,100
-EnemyWaypoints=30,-100|30,100
-EnemyWaypoints=40,-100|40,100
-EnemyWaypoints=50,-100|50,100
Specifies a series of waypoints for use by each ship. Each waypoint coordinate is X,Y in world space, separated by “|”. Supports many waypoints but keep the spacing significant such that it is not within the turn radius of vessels or too close to terrain (at least 10 world units minimum).
In our example NumberOfEnemyUnits=3-3,1-1,2-2, the 6 ships present will use the waypoints respectively.
Each will spawn between any two of their waypoints and have a 50% chance to run their waypoints in the opposite direction.
Countinued in Single Missions – Aircraft, Sonobuoys and Mines.
Single Missions – Aircraft, Sonobuoys and Mines
Aircraft, Sonobarriers and Minefields
//Enemy Aircraft
-NumberOfHelicopters=1
-HelicopterType=wp_helix
-NumberOfAircraft=1
-AircraftType=wp_il-38_may
-Specifies the exact number and types of aircraft and helicopters. Ranges for NumberOfX are not supported.
-Helicopter and aircraft identifiers are as per those specified in the file “aircraft”, in the parent directory.
-If UsePresetPositions=FALSE, helicopters and aircraft will screen the formation. Otherwise they require specifed search areas as outlined below.
//Aircraft Search Areas
-AircraftSearchArea=-100,-100,100
-AircraftSearchArea=100,100,100
-Search areas are an X,Y coordinate followed by the search radius in world units.
-Like vessels, aircraft and helicopters must have an exact number of search areas specified equal to the total number of aircraft + helicopters.
-Helicopters are always assigned first, followed by aircraft so in the above example, the helicopter searches at -100,-100 in a 100 unit radius while the aircraft searches at 100,100 in a 100 unit radius.
SonoBarrierLocations=-49,85,40|-219,165,40|-305,200,40|-395,205,40
Sets up sonobarriers for coastal areas as an X, Y coordinate followed by the detection range. Player entering this area has a chance to be detected.
ProximityMineLocations=-4,81|-92,104|-134,124|-176,144|-261,186|-349,203
World coordinates to place mine fields.
ProximityMineField=10,4,35,5|10,4,35,5|10,4,35,5|10,4,35,5|10,4,35,5|10,4,35,5|10,4,35,5
Number of mines in a row, number of mines in a column, length of field in world units, depth of field in world units.
ProximityMineFieldAngles=0,30,30,30,30,0
Set the world angle of each field.
ProximityMineScatter=0.3,0.3,0.3,0.3,0.3,0.3
Amount of variation in individual mine placement. 0 = exact grid, 1 = exact overlap with neighbouring mine.
Config File
Located in the root parent directory.
[Menu Camera]
- MenuCameraRect=0,0,1,1
- MenuCameraOrthographicSize=DEFAULT
- MenuPixelDensity=2
- Parameters for adjusting the camera and menu sharpness.
[Music]
- MusicMainMenu=audio/music/Cold Waters Main Menu
- MusicStrategicMap=audio/music/Cold Waters Strategy
….
Defines the tracks used for the various music scores in game.
[Flags] – deprecated for now
- FlagSoviet=vessels/flags/flag_soviet.png
- FlagSovtorgFlot=vessels/flags/flag_sovtorgflot.png
- FlagSignal=vessels/flags/flag_signal.png
- Not implemented at this time.
[Acoustics & Weather]
- MaxSurfaceDuctBonus=12
- MaxLayerBonus=12
- MaxConvergenceBonus=20
- ConvergenceRange=35000,44000
- MaxBottomBounceBonus=10
- BottomBounceRange=15000,20000
- BottomBounceDepthRange=2000,2800
- AttenuationFactor=0.0008
- SpreadingFactor=20
- OceanBaseAmbientNoise=75
- NoisePerSeaState=5
- MaxNoiseFromRain=20
- NoiseFromCavitation=20
- NoiseFromTransient=5
- TargetNoisePerKnot=1
- PassiveCompressionFactor=3.2
- LandAbsorptionFold=3,4
- MaxShallowsAbsorption=20
- StrengthTypes=ZeroStrength,VeryWeak,Weak,Moderate,Strong,VeryStrong
- TimesOfDay=Dawn,Morning,Noon,Afternoon,Evening,Night
- Weather=Clear,Scattered,Broken,Overcast,Rain,Storm,Snow,SnowStorm
- WeatherProbability=0.2,0.2,0.2,0.2,0.1,0.1
- WeatherSeasonModifier=0.4
- SeaStates=Calm,LightAir,LightBreeze,GentleBreeze,ModerateBreeze,FreshBreeze,StrongBreeze,HighWind
- SeaStateProbability=0.05,0.1,0.2,0.2,0.2,0.1,0.1,0.05
- SeaStateSeasonModifier=0.25
- UnderwaterParticles=environment/underwater_particles
- RunningSilentBonus=5,8
- NavigationSonarRange=4000
Where applicable, values are in decibels or yards.
These parameters allow customisation of the sonar acoustics model and environments.
[Environments]
//First environment is used in Unit Reference for lighting
Environment=Day_Clear
….
UnitReferenceLightingAngle=35,140,0
Reference to all the environment files which define the skies, fog, lighting, etc.
[Debug Options]
-CampaignDebugOnLoad=FALSE
When loading a campaign checks all missions and events for any obvious errors or missing files.
-EventsDebugOnContinue=FALSE
Cycles through all events allowing checking of content (not all dynamic content displays correctly) as well as correct images and music.
-UnitReferenceDebugOnSpace=FALSE
Applies damage decals to ships, then swaps to destroyed model upon pressing space in the Unit Reference.
-AutoCameraPanAndZoom=FALSE
Displays additional parameters in Options to set camera auto-movement and zoom for shooting in game videos.
-ForceCampaignMissionType=FALSE
When testing a campaign, specify a player mission type. That mission type will always be generated (if it legally can) to assist with debugging/playtesting that specific mission type.
[Difficulty Settings]
- //Easy, Normal, Hard, Elite
- PlayerHullPoints=3,1.5,1,0.75
- EnemyHullPoints=0.75,1,1.125,1.25
- PlayerNoiseModifier=0.75,0.9,1,1.1
- EnemyNoiseModifier=1.3,1.1,1,0.9
- PlayerTMARate=1.4,1.2,1,0.85
- EnemyTMARate=0.85,1,1,1.2
- CombatRepairTimeModifier=0.8,1,1.5,2
- PlayerWeaponReloadTime=0.8,1,1.5,2
[Difficulty Settings Campaign]
- StartPointsModifier=1.2,1,0.8,0.6
- WinMissionModifier=1.2,1,0.75,0.5
- FailMissionModifier=1.2,1,0.75,0.5
- TonnageSunkModifier=1.2,1,0.75,0.5
- TimeInPortModifier=0.8,1,1.2,1.5
- RestockTimeModifier=0.8,1,2,3
- RepairTimeModifier=0.8,1,2,3
- RescueTimeModifier=0.8,1,2,3
- NumberOfASW=2,3,4,5
These difficulty modifiers apply bonuses or penalties to various game parameters in order to make the game easier or harder. Note that Elite difficulty disables any auto-classification of contacts.
Weapons
SENSORS: Sonar
SonarModel=usn_an_bqr_2
Reference name used to equip sonar model onto vessels.
Each sonar model in game display name is listed in languages/sensor/sensor_display_names. The order of this list MUST be the same as the order sensors are specified in sensors.txt.
-SonarType=PASSIVE (PASSIVE, ACTIVE, ACTIVE/PASSIVE)
Whether the sonar is active, passive or both
-SonarFrequencies=M (VL, L, M, H)
Frequencies it operates at.
-SonarActiveSensitivity=0
SonarPassiveSensitivity=32
How sensitive the sonar is.
-SonarBaffle=150
Degrees +/- over which the sonar is blind.
-SonarNoisePerKnot=1
Flow noise the sonar suffers per knot of vessel’s speed.
-SonarOutput=0
For active sonar, decibels of noise it pings with. Higher values increase sensitivity.
SonarDescription=Derived from the German wartime GHG sonar suite as fitted on the Type XXI electroboot, the BQR-2 is a medium frequency sonar fitted to most USN subs until the Thresher/Permit class. Though adequate for its day, by the 1980’s this system is woefully obsolete and nearly blind against all but the oldest Soviet boats.
Deprecated as there is no way to display this info in game.
Radar
RADARModel=usn_bps_12
Reference name used to equip radar model onto vessels.
Each radar model in game display name is listed in languages/sensor/sensor_display_names. The order of this list MUST be the same as the order sensors are specified in sensors.txt.
RADARRange=60000
In yards to detect a LARGE radar signature.
RADARDescription=Some text here.
Deprecated.
WEAPONS
The weapons file is found in the parent folder and contains definitions for torpedoes/missiles, depth weapons and countermeasures.
Torpedo/Missile
WeaponObjectReference=usn_mk48
WeaponSprite=weapons/sprites/usn_mk48_sprite
Gives the weapon a reference name (used in vessel and aircraft files to equip this weapon) as well as a sprite to display in the HUD. Each weapon has a corresponding txt file in language/weapon which contains the in game display names and Unit Reference description.
WeaponType=TORPEDO (TORPEDO, MISSILE, DECOY, SONOBOUY)
-Warhead=550
-Equivalent kg of TNT
-SurfaceLaunched=FALSE
-WireGuided=TRUE
-Whether the weapon is surface launched (eg ship) or not (submarine).
-RangeInYards=35000
-Max distance in yards, also used to calculate run time.
-RunSpeed=50
-ActiveRunSpeed=60
-Initial run speed and run speed once enabled.
-TurnRate=20
How quickly the weapon can turn. Arbitrary units.
-SensorAngles=80,15
Angles in degrees the sensor cone can see. X, Y
-SensorRange=4000
Range of the sensor cone.
-WeaponNoiseValues=160,230
Noise generated by the weapon (torpedo) when running normally and once active.
-MaxPitchAngle=25
Max degrees the weapon can pitch.
-HomeSettings=PASSIVE,ACTIVE
-AttackSettings=STRAIGHT,LEFT,RIGHT
-DepthSettings=LEVEL,SHALLOW,DEEP
-Weapon settings that can be applied.
MinCameraDistance=0.5
How close the camera can get in world units
ResupplyTime=15
Minutes to load the weapon onto the player sub in a campaign. Modified by difficulty settings.
[Model]
- ModelFile=weapons/assets/usn_mk48
- Material=weapons/assets/usn_mk48_mat
- MaterialTextures=weapons/assets/usn_mk48_tx
- MeshPosition=0,0,0
- MeshWeapon=Mk48
- MeshPosition=0,0,0
- MeshWeaponPropRotation=700
- MeshWeaponProp=Mk48_propl
- MeshPosition=0,0,-0.0528
- CavitationParticle=weapons/assets/torpedo_cavitation_particle
- Mesh, texture and particle definitions, rotations and positions.
Mortars
- DepthWeaponName=RBU 6000
- DepthWeaponDescriptiveName=RBU 6000 Anti-Submarine Rocket Mortar
- DepthWeaponObjectReference=wp_rbu6000_mortar
- Specifies the name and reference for the weapon. Used to equip this weapon on vessels.
-DepthWeaponWarhead=25
Wearhead size in kg TNT.
-DepthWeaponRange=1000,6500
Min and max range in yards.
-DepthWeaponContactExploded=TRUE
DepthWeaponDepthExploded=TRUE
Is the weapon contact exploded and/or depth exploded.
-DepthWeaponKillRadius=10
Radius in yards weapon will kill/damage.
-DepthWeaponNumberFired=12
Number fired in a slavo.
-DepthWeaponRateOfFire=0.75
Rate of fire, number of seconds between each weapon fired.
-DepthWeaponMortarPositions=-50,-25,0,25,50,75,230,205,180,155,130,105
Angles of each mortar fired from mount.
-DepthWeaponFiringPosition=0.0088,0.013
Offset for launch position relative to mount.
-DepthWeaponSpreadRadius=125
Weapon spread radius around target position in yards.
-DepthWeaponVelocity=10
Arbitrary velocity.
-DepthWeaponSinkRate=0.2
Arbitrary sink rate.
[Model]
- ModelFile=weapons/assets/rgb-60
- Material=weapons/assets/usn_moss_mat
- MaterialTextures=weapons/assets/usn_moss_tx
- MeshPosition=0,0,0
- MeshDepthWeapon=RGB-60
- MeshPosition=0,0,-0.014
- DepthWeaponBubblesParticle=weapons/assets/rbu_bubbles
- DepthWeaponLaunchParticle=weapons/assets/rbu_launchFlare
[/model] - Model meshes, textures and particles definition.
Naval Shell
- DepthWeaponName=Gun 6×3
- DepthWeaponDescriptiveName=Gun 6×3
- DepthWeaponObjectReference=wp_6x3_b-38_shell
- DepthWeaponWarhead=20
- DepthWeaponRange=100,25000
- DepthWeaponNumberFired=3
- DepthWeaponRateOfFire=0.1
- DepthWeaponReloadTime=10
- DepthWeaponVelocity=5.2
- Same as above, but less parameters needed for a naval shell.
Countermeasures
CountermeasureName=USN Noisemaker
CountermeasureObjectReference=usn_noisemaker
Name and reference definition, used to equip this countermeasure on vessels.
CountermeasureType=NOISEMAKER (NOISEMAKER, CHAFF, KNUCKLE)
The type of countermeasure.
-Lifetime=120
In seconds.
-SinkRate=0.01
Arbitrary sink speed.
-NoiseStrength=150
In decibels.
CountermeasureDescription=Standard USN noisemaker countermeasure.
Deprecated.
[Model]
- ModelFile=countermeasures/assets/noisemaker
- Material=weapons/assets/usn_mk48_mat
- MaterialTextures=weapons/assets/usn_mk48_tx
- MeshPosition=0,0,0
- MeshCountermeasure=Noisemaker
- MeshPosition=0,0,0
- CountermeasureParticle=countermeasures/assets/noisemaker_fx
[/model] - Model meshes, textures and particles definition.
Vessels
All vessel definitions are in the vessels folder. In addition a file called “_vessel_list” is used to load each vessel file into the game’s database in the order they are specified. A vessel must be on this list to appear in game. Note that biological entities are considered as vessels.
SIgnatures
Within the vessel folder is a signature folder containing PNG’s of all vessel sound profiles used in Signature Analysis.
Vessel Definition File
Vessel definition files must be named after each reference name provided in the _vessel_list file.
Designation=SSN (as listed in manual, but can be anything)
ShipType=SUBMARINE (SUBMARINE, ESCORT, CAPITAL, MERCHANT, BIOLOGIC)
The vessel designation display and type of vessel.
PlayerHUD=hud/default
If this is a player vessel, which HUD should be loaded. Path is relative to the parent folder.
- Length=110
- Beam=10
- HullHeight=0.08
- Displacement=6927
- Crew=129
- Range=10000
- HullNumbers=FALSE
- Vessel dimensions, statistics and which (if any) hull numbers should be displayed. Hull numbers are individual PNGs named for the full hull number.
[Movement]
- SurfaceSpeed=20
- SubmergedSpeed=33
- AccelerationRate=0.27
- DecelerationRate=0.08
- RudderTurnRate=0.75
- TurnRate=2
- PivotPointTurning=0.256
- DiveRate=5
- SurfaceRate=5
- BallastRate=0.25
- Waterline=0.05
- SubmergedAt=0.172
- CavitationParameters=20,-100
- PropRotationSpeed=-190
- TestDepth=950
- EscapeDepth=600
- Speeds are in knots, rates are arbitrary.
- Waterline offsets the model to sit higher or lower in the water (world units).
- TestDepth used to calculate crush depth and EscapeDepth is depth above which you can abandon ship.
[Acoustics & Sensors]
- SelfNoise=115
- ActiveSonarReflection=25
- ActiveSonarModel=usn_an_bqq_5
- PassiveSonarModel=usn_an_bqq_5
- TowedArrayModel=usn_tb_16
- AnechoicCoating=FALSE
- RADAR=usn_bps_15
- RADARSignature=SMALL
- TowedArrayPosition=-0.109,0.003,-0.779
- Noise and active sonar reflection are in decibels. Sonar models specified as per their reference names.
[Weapon Systems]
- TorpedoTypes=usn_mk48,usn_moss,usn_ugm84,usn_tasm,usn_tlam
- TorpedoNumbers=16,2,8,0,0
- TorpedoTubes=4
- NumberOfWires=4
- TubeConfig=1,1,1,1
- TorpedoTubeSize=21
- TubeReloadTime=30
- Types of torpedoes specified as per their reference names.
- Number of each type of torpedo.
- Reload time in seconds and modified by difficulty settings.
- Torpedo mounts are specified in the [Model] section and must have the same number of mounts as TorpedoTubes.
MissileType=wp_ss-n-14
MissilesPerLauncher=4,4
Specifies the missile type and number or launchers (2) and number of weapons per launcher (4).
Missile mounts are specified in the [Model] section and must have the same number of mounts as MissilesPerLauncher number of elements.
RBULaunchers=wp_rbu6000_mortar,wp_rbu1000_mortar,wp_rbu6000_mortar,wp_rbu1000_mortar
RBUSalvos=8,6,8,6
RBUFiringArcBearingMin=-130,-180,0,130
RBUFiringArcBearingMax=0,-130,130,180
Specifies rbu launcher types from forward port side to rear starboard side, number of salvos per rub launcher and their firing arcs.
NavalGuns=wp_ak-725_shell,wp_ak-725_shell
NavalGunFiringArcBearingMin=-20,160
NavalGunFiringArcBearingMax=-160,20
NavalGunRestAngle=180,180
NavalGunParticle=weapons/assets/SmallMuzzleFlash
NavalGunSmokeParticle=weapons/assets/SmallMuzzleSmoke
Specifies naval guns using the shell type identify the gun type with same format as RBUs: from forward port side to rear starboard side. Firing arc min should ALWAYS be less than firing arc max UNLESS the rest angle for that turret is 180, in which case reverse them.
Anti-MissileGunHitProbability=0.015
Anti-MissileGunRange=4000
Anti-MissileGunFiringArcStart=-150,-150,30,30
Anti-MissileGunFiringArcFinish=-30,-30,150,150
Anti-MissileGunRestAngle=0,0,0,0
Anti-MissileGunUsesRADAR=0,0,1,1
Anti-MissileRADARRestAngle=0,0
ChaffType=wp_chaff
ChaffProbability=0.12
NumberChaffLaunched=2
Defines CIWS guns for anti-missile defenses. Range is in yards. CIWS guns can also have a radar mount associated with them. Chaff probability is the % chance of spoofing a missile per chaff launched.
NoisemakerName=usn_noisemaker
NumberOfNoisemakers=20
NoisemakerReloadTime=20
Noisemaker on board, how many and how long to reload each.
[Subsystems]
LabelPosition=364.3,28
BOWSONAR=FRONT
LabelPosition=59.9,193.2
TOWED=REAR
LabelPosition=409.7,193.3
PERISCOPE=SAIL
LabelPosition=409.7,151.4
ESM_MAST=SAIL
LabelPosition=409.7,171.9
RADAR_MAST=SAIL
LabelPosition=364.3,49.4
TUBES=FORE,FRONT
LabelPosition=229.6,193.2
FIRECONTROL=FORE
LabelPosition=229.6,172.2
PUMPS=MID,AFT
LabelPosition=59.9,27.7
PROPULSION=AFT,REAR
LabelPosition=59.9,172.2
RUDDER=REAR
LabelPosition=59.9,48.7
PLANES=SAIL,REAR
LabelPosition=190.8,49
BALLAST=MID
LabelPosition=190.8,28
REACTOR=MID
For player vessels, specifies the label positions in damage control panel as well as defines which subsystem is in which compartment. Compartments from front to back are FRONT, FORE, MID, AFT, REAR, plus SAIL.
[Flooding Display: x,width,ymin,ymax]
FLOODING1=160,45,-77,-39
FLOODING2=107,58,-77,-39
FLOODING3=47,61,-77,-39
FLOODING4=-23,74,-77,-39
FLOODING5=-90,59,-76,-39
DamageControlPartyY=-31
Specifies the blue water sprite positions and ranges for the damage control display.
[Model]
- Specifies graphics for the vessel.
- Aircraft
- Aircraft are found in the parent folder in aircraft.txt. Each aircraft also has a corresponding description file in languages/aircraft folder which contains in-game descriptive name and Unit Reference description.
[Aircraft]
- AircraftObjectReference=wp_helix
- AircraftType=HELICOPTER (HELICOPTER, FIXED WING)
- Reference name and type.
CruiseSpeed=106
Length=11.3
Height=5.5
Weight=11000
Crew=4
Statistics, weight is in kg, sped in knots.
RADAR=wp_mushroom
RADARSignature=SMALL
ActiveSonarModel=wp_foal_stork_tail
PassiveSonarModel=wp_foal_stork_tail
SonobuoyTypes=wp_rgb_64
SonobuoyNumbers=3
Specifies sensors using sensor reference names as well as sonobuoys and how many on board.
[Weapon Systems]
- TorpedoTypes=wp_umgt-1
- TorpedoNumbers=2
- DepthBomb=wp_depth_bomb
- DepthBombNumbers=2
- MinCameraDistance=0.5
- Specifies torpedoes and depth bombs, how many on board an minimum cameras distance in world units.
[Model]
[/model]
Specifies meshes, positions, rotations etc.
Campaign Setup 1
Campaigns are made up of 1 file and 1 folder:
1) FILE: language/campaign/campaigns
This is a list of all campaign titles. The menu of campaigns to select is built from this list.
All campaign names in this list correspond to a folder in the “campaign” directory. The name of this corresponding folder is campaignXXX where XXX is a 3 digit number and represents the position of the campaign in this list. The menu of campaigns is built from this list.
2) FOLDER: campaign/campaignXXX
Within a campaign folder are two subfolders (language and missions) as well as other files.
LANGUAGE FOLDER
All language content in txt files including:
– events
– awards
– natural language fields
– mission briefings and outcomes
– map data and labels
– description of the campaign (seen in campaign selection screen)
– region names of land and ocean
MISSIONS FOLDER
Mission parameters in txt files.
OTHER FILES
In the campaign parent folder are 4 other files:
campaign_data: defines the bulk of campaign data.
summary: defines the background image for the campaign selection screen, player classes and enemy classes.
waypoints_region: waypoint data for the land war
waypoints_sea: waypoint data for ocean regions
MAP COORDINATES
All coordinates for waypoints and locations on the campaign map use the following values:
+/- 780 for x
+/- 390 for y
0,0 is the centre of campaign map
/////////////////////////////////////////////////
campaign/campaignXXX/campaign_sumary
/////////////////////////////////////////////////
Image=campaign/images/pact naval 2
Reference to the image to be displayed in the select campaign screen.
PlayerVessels=usn_ssn_narwhal,usn_ssn_los_angeles,usn_ssn_sturgeon,usn_ssn_skipjack
Classes of player controlled submarines allowed for this campaign.
OtherVessels=biologic_humpback_whale,biologic_blue_whale,wp_ssbn_delta4…..
Classes of enemy vessels expected to be encountered in the campaign. Used to specify the acoustic signatures available. May need to be edited based on enemy navy present or era campaign occurs in. At a minimum, all vessels specified in “EnemyShipClasses” of the various campaign player and non-player missions should be on this list.
/////////////////////////////////////////////////
campaign/campaignXXX/language/description
/////////////////////////////////////////////////
Single line description of the campaign shown on the campaign selection page.
“\n” can be used as a line break.
/////////////////////////////////////////////////
campaign/campaignXXX/waypoints_region
/////////////////////////////////////////////////
//Rekjavik and Keflavik
WaypointName=I1
WaypointPosition=-226.9,118.1
Alignment=FRIENDLY
ConnectedZones=I2
InvadedBy=SEA,FRIENDLY
WaypointName: a unique name for a waypoint.
WaypointPosition: the position of the region in map space.
Alignment: (FRIENDLY, ENEMY) the starting alignment of the region.
ConnectedZones: used to specify other zones that direclty neighbour this zone.
InvadedBy: (AIR, LAND, SEA, FRIENDLY, ENEMY) the route/s by which this zone can be invaded DIRECTLY and the side allowed to do so. Usually a zone is invaded via any neighbouring zone already occupied by the invading army. InvadedBy allows a side to open a new front (or re-capture a zone) without needing to occupy a neighbouring zone.
For example:
Rekjavik and Keflavik are in Iceland. If the Soviets occupy zones I1 and I2 (namely the whole of Iceland), NATO cannot re-capture via a neighbouring zone since Iceland is an island. InvadedBy=SEA,FRIENDLY allows the friendly side (NATO) to directly re-take Iceland via the zone I1.
Another example:
//Copenhagen
InvadedBy=SEA,ENEMY
Denmark can be invaded from the south if the Soviets occupy that neighbouring zone in West Germany. But InvadedBy=SEA,ENEMY would allow the Soviets to directly land an amphiboius landing force and occupy Denmark without the need to occupy that neighbouring zone in West Germany.
ZONE AND REGION NAMES
Names of the zones and regions they are in are listed in “campaign/campaignXXX/language/waypoints_region_names”.
The first line specifies the names of all regions that zones can belong to.
After that is a list of ZONE_NAME=REGION where the name of each zone and the region it belongs to are specified. Note that each region in this list must correspond to a region specified in the first line. This list of zone names MUST be in the same order that the zones were defined in the waypoints_region file.
These names are used in events to describe various locations.
/////////////////////////////////////////////////
campaign/campaignXXX/waypoints_sea
/////////////////////////////////////////////////
//the Norwegian Sea
WaypointName=N2
WaypointPosition=5.20,84.00,200
NorthWaypoints=IG1,N3,N1
SouthWaypoints=IG5,IG6,NC4,NC3,NC2
EastWaypoints=N3,N1,NC2,NC3
WestWaypoints=IG1,IG5,IG6,NC4
WaypointName: a unique name for a waypoint.
WaypointPosition: the position of the region in map space.
NorthWaypoints: list of neighbouring waypoints to the north of this waypoint
SouthWaypoints: list of neighbouring waypoints to the south of this waypoint
EastWaypoints: list of neighbouring waypoints to the east of this waypoint
WestWaypoints: list of neighbouring waypoints to the west of this waypoint
Note that North, South, East and West are relative to the map image, not the real world direction (which might be different based on the projection of the map).
Directions example:
NorthWaypoints=IG1,N3,N1
For this waypoint (N2) which is the central Norwegian Sea there are 3 neightbouring zones to the north. IG1 (the Iceland gap towards the Denmark Strait, N3 (the Greenland Sea) and N1 (the region south of Spitsbergen).
WAYPOINT NAMES
Names of the waypoints are listed in “campaign/campaignXXX/language/waypoints_sea_names”.
This list of waypoint names MUST be in the same order that the waypoints were defined in the waypoints_sea file.
These names are used in mission briefings and events to describe various locations.
Campaign Setup 2
/////////////////////////////////////////////////
campaign/campaignXXX/campaign_data
/////////////////////////////////////////////////
[General]
MapImage=campaign/maps/norwegian_sea_chart.png
Image used for strategic map.
MapNavigationData=campaign/images/maps/norwegian_sea_navmap
Reference to navigation map which contains land, seasonal ice coverage, biome and water transmission data.
MapElevationData=campaign/images/maps/norwegian_sea_bathymetry
Reference to the data used to generate terrain. Terrain data is 4096×2048
WorldObjectsData=campaign/maps/norwegian_sea_world_objects
Database of world objects, such as ports, to be generated if combat occurs near them.
MapHeightInNM=1800
Map height in nautical miles which is used to determine scale of the map and various ranges.
MapTimeCompression=3600
Rate time moves when using the strategic map. 3600 is 1 second = 1 hour.
Hemisphere=NORTH
EquatorYValue=0
Which hemisphere the map is in and at what Y value on the map is considered below the equator and hence opposite hemisphere.
JulianStartDate=2446040.5
StartDateRange=30
Julian day the campaign starts on + or – the range of days give.
MapSpeedModifier=2.5
Global speed modifier for vessels moving on the map.
PlayerStartTelegraphs=2,3,5
PlayerStartDepths=150,250,900
When entering combat determines player start speed and depth based on player speed on the map (STATIONARY, PATROL SPEED or FLANK SPEED).
TimePenaltyOnPortEnter=8
Base time required to enter port.
PortImage=campaign/images/port holy loch
TransitImage=campaign/images/nato submarine
Images for the port background and briefings when in transit.
TimePenaltyOnSunk=16
Base time required to recover from being rescued at sea.
DisruptTime=48,72
Range of hours a base is disrupted (cannot launch recon aircraft) after successful special forces operation or being invaded.
CampaignPoints=300
CampaignStartPoints=150
Total points in the campaign game and how many the player starts with.
More points makes for a longer campaign. Less player points makes for a harder campaign.
[Sprites and Toolbar]
This section contains references to graphics and colours used to draw the campaign map icons and user interface on strategic map.
[Land War]
UseLandWar=TRUE
Use accompanying land war (TRUE/FALSE).
IconsInOccupiedZonesOnly=FALSE
Only zones that have been invaded will display an icon of which side controls it (TRUE/FALSE).
HoursToNextGeneralEvent=48
HoursToNextGeneralEventRange=-24,24
Base value and range of hours between general events. General events calculate the progress of the land war.
FirstOccupiedTerritory=WG1
Name of the region waypoint to be invaded first at start of war. Multiple regions supported separated by “,”.
TerritoryTakebackThreshold=4
Invading side occupies this many zones before opposition can start re-capturing them.
NewFrontProbability=0.3
Percentage chance to start a new front rather than invade a territory next to an already occupied one.
[Aircraft]
AircraftName=us_p3c_orion
AircraftFaction=FRIENDLY (FRIENDLY, ENEMY)
AircraftPatrolSpeed=328
AircraftPatrolRange=700
AircraftDetectionRange=300
AircraftSprite=campaign/images/sprites/icon_orion.png
Defines an aircraft for the strategic map.
Speed is in knots, ranges are in nautical miles.
[Satellites]
SatelliteName=US Satellite
SatelliteFaction=FRIENDLY (FRIENDLY, ENEMY)
SatelliteSpeed=14000
DetectionRange=2000
Defines a satellite for the strategic map.
Speed is in knots, ranges are in nautical miles.
[Locations]
//Iceland
//Rekjavik/Keflavik
Alignment=FRIENDLY
Function=AIRBASE
BaseMapPosition=-259.3,135.1
RelatedSOSUS=DENMARKSTRAIT
AircraftType=us_p3c_orion
AircraftTypeInvaded=wp_il-38_may
AircraftPrepTime=10
AircraftHeadings=45,110
AircraftSearchRange=700
LinksToWaypoint=IG3
LinksToRegionWaypoint=I1
Defines a location on the strategic map
Function values are (PLAYER_BASE, NAVAL_BASE, AIRBASE, SOSUS_NODE, STRATEGIC_NODE).
BaseMapPosition is in map space coordinates -780,-390 to 780,390
RelatedSOSUS specifies a SOSUS barrier that is linked to this location. If invaded or special ops forces succeed, the related SOSUS barrier is destroyed.
AircraftType and AircraftTypeInvaded are the default recon aircraft used and the one to use once an airbase is invaded/occupied.
Aircraft PrepTime, Headings and SearchRange are the hours between recon flights, directions recon flights go and how far. If SearchRange is greater than the aircraft’s range, the aircraft’s range will be used.
LinksToWaypoint: the sea region waypoint connecting this region to the ocean system
LinksToRegionWaypoint: the land region waypoint connecting this region to the land system
[SOSUS]
This section defines SOSUS barriers
SOSUSName=DENMARKSTRAIT
Any name is valid as long as it is crossreferenced with the locations.
SOSUSStartPosition=-230.50,176.80
SOSUSEndPosition=-193.40,245.10
SOSUSAngle=28
Barrier start and end positions in map space. Calculates the length between then takes the midpoint and places the sosus barrier here at the angle specified.
SOSUSDetectionRange=120
Detection range in nautical miles
SOSUSAlignment=FRIENDLY (FRIENDLY, ENEMY)
Side the barrier belongs to.
[PLAYER MISSIONS]
PlayerMissionTypes=SSN_WOLFPACK,SS_WOLFPACK…..
Defines each of the mission types.
The last mission is the FINAL MISSION for the campaign.
The second to last mission is RETURN TO BASE called when low on ammo or if player sub is significantly damaged.
MissionFrequency=0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1
This list is 2 less elements than the number of mission types specified and has a sum of 1.
The last two mission types are not included on frequency list as they are used under specific conditions (low ammo/damaged or campaign is ending).
It is possible to not include “RETURN_TO_BASE” in PlayerMissionTypes, in which case MissionFrequency would have one less element in it than the number in PlayerMissionTypes.
CommandoLoadTime=120
Base number of minutes to load commandos onto player submarine.
Weapon load times are defined for each weapon in the weapons file.
Mission=SS_SPECOPS_0
Mission=SS_SPECOPS_1
….
Lists all mission types with a suffix of mission number making it possible to have multiple variants of a mission type.
A mission consists of 2 files:
campaign/campaign001/missions/SS_SPECOPS_0
campaign/campaign001/language/SS_SPECOPS_0
The first is in the campaign’s mission folder and defines the mission.
The second is in the campaigns language folder and defines the briefing as well as pass/fail messages.
[NON-PLAYER MISSIONS]
Non-PlayerMissionTypes=SS_PATROL,SSN_PATROL,ASW_PATROL
Non-PlayerMissionFrequency=0.33,0.33,0.34;
Non-PlayerMission=SS_PATROL_0
Non-PlayerMission=SSN_PATROL_0
….
This section has the same format as [PLAYER MISSIONS] and defines missions such as patrols, escorts and ASW groups hunting the player.
There are no special case missions such that Non-PlayerMissionFrequency must have the same number of elements as Non-PlayerMissionTypes.
Non-PlayerMissionFrequency must have a sum of 1.
Non-player mission do not have a corresponding language file as there is no briefing or pass/fail associated with them.
[EVENTS]
See Campaign Events for more details.
Campaign Events
Events are specified in the campaign/campaignXXX/campaign_data file.
[EVENTS]
Event=FILENAME=SPECIAL_TAG
The corresponding file for the event must be in the folder “campaign/campaignXXX/events”.
Not all events require a special tag.
The following special tags MUST be specified for a campaign:
START – the first event to start the campaign.
RESCUE, CAPTURE, LOST_AT_SEA – special events dealing with the loss of the player submarine.
STATISTICS – patrol summary displayed on return to port
WIN, DRAW, FAIL, CRITICAL_FAIL – events associated with the outcome of the final mission.
Event=MISSIONTYPE_win
Event=MISSIONTYPE_fail
Each player mission type in PlayerMissionTypes must have a pair of events, one win and one fail (with the excpetion of RETURN_TO_BASE and the final mission).
Event=AWARD
For each award specified in the file “awards” in the parent directory where AWARD is the name of the award.
Award files must be in the “campaign/campaign001/events” folder named event_award_AWARD where AWARD is the name of the award.
Optional Special Tags. These are required if a land war is part of the campaign.
IMPASSE – always needed as this event occurs when both sides “draw” and no ground is captured or lost. – Deprecated
PLAYER_INVASION_XXX – needed if player is allowed to invade enemy zones by that route.
PLAYER_LIBERATED_XXX – needed if enemy is allowed to invade player zones, this event is shown when they are re-captured by the player by that route.
ENEMY_INVASION_XXX – needed if enemy is allowed to invade player zones by that route.
ENMEY_LIBERATED_XXX – needed if player is allowed to invade enemy zones, this event is shown when they are re-captured by the enemy by that route.
Authoring Events
Once defined in campaign/campaignXXX/campaign_data, campaign files placed in “campaign/camapignXXX/language/events”.
/////////////////////////////////////////////////
campaign/campaignXXX/language/events/event_XXXXXX
/////////////////////////////////////////////////
NextAction=MAP (MAP, eventFILENAME, ASSIGN_NEW, CHECK_MISSION, END)
Specifies the action to take after this event (when clicking Continue).
MAP: returns to the strategic map
eventFILENAME: brings in another event as specified by the event’s filename.
ASSIGN_NEW: brings in the submarine selection screen to choose a new sub after being rescued at sea.
CHECK_MISSION: check if the player has a mission, if not, assign a new mission. Used after the summary page for RETURN_TO_BASE missions.
END: calculate the outcome of the campaign and bring in one of the appropriate event (win, draw, fail, critical fail).
Image=campaign/images/nato convoy
Reference to the background image.
Photo=campaign/images/photos/cargo 1,campaign/images/photos/cargo 2
Reference to the black and white photo.
Music=audio/music/Cold Waters Campaign Victory 01 v2
Audio track to play.
Header=<DATE>
Event header text.
Font=0
Outline=FALSE
Color=180,71,64,255
Font, whether to apply an outline to the text and color of text.
Title=<b>CONVOYS ARRIVE</b>|<b>SAFE TRANSIT BY CONVOYS</b>|<b>CONSTANT CONVOYS</b>
Randomly chooses one of the titles as separated by “|”.
Color=57,61,73,255
Text color. Overridden for newspapers to automatically be light text on dark background and dark text on light background.
Sentence1=Convoys from North America continue to ferry goods into Western Europe with minimal losses. This has been attributed to cooperation among NATO naval forces. “The convoy system worked in World War I and World War II and it still works today,” said a spokesman for NATO naval operations.
Color=218,218,208,255
Text color. Overridden for newspapers to automatically be light text on dark background and dark text on light background.
Sentence2=Meanwhile in Western Europe, food and material shortages have failed to materialize in the unoccupied territories. Authorities urge citizens not to make runs on the banks and continue to assure that the financial system is and will continue to be stable despite the ongoing conflict.
NOTES:
Color=255,255,255,255 Defines a COLOR32 (global text color setting)
Font=0 FONT (0 Default, 1 HUD font, 2 map sans, 3 map serif, 4 newspaper serif)
Also supports Rich Text tags: (tags must be nested in order applied)
<b></b> BOLD
<i></i> ITALICS
<n> or \n = NEW LINE
<size=20></size> FONT SIZE (Awards/medals pages only as newspapers use best fit to format text size)
Tags Supported:
<PLAYERVESSELNAVY>
<PLAYERVESSELNAME>
<PLAYERVESSELHULL>
<PLAYERVESSELCLASS>
<PLAYERVESSELTYPE>
<PLAYERNAME>
<DATE>
<PLAYERMAPREGION>
<POSTHUMOUSLY>
<PLAYERVESSELSTATUS>
<WEAPONNUMBER>
<WEAPONNUMBERDIGITS>
<WEAPONREQUIRED>
<STARTLOCATION>
<ENDLOCATION>
<MUSTUSELOCATION0>
<COUNTRY>
<LANDLOCAL>
<ENEMY>
<FRIENDLY>
<WARSTATUS1>
<WARSTATUS2>
<IMPASSE>
<ENEMY_TITLE_INVASION>
<ENEMY_INVASION_LAND>
<ENEMY_INVASION_SEA>
<ENEMY_INVASION_AIR>
<FRIENDLY_TITLE_LIBERATION>
<FRIENDLY_LIBERATION_LAND>
<FRIENDLY_LIBERATION_SEA>
<FRIENDLY_LIBERATION_AIR>
<FRIENDLY_TITLE_INVASION>
<FRIENDLY_INVASION_LAND>
<FRIENDLY_INVASION_SEA>
<FRIENDLY_INVASION_AIR>
<ENEMY_TITLE_LIBERATION>
<ENEMY_LIBERATION_LAND>
<ENEMY_LIBERATION_SEA>
<ENEMY_LIBERATION_AIR>
<INVASION_SECOND>
<LIBERATION_SECOND>
Event Images
The following reference images show internal images and their names.
Remember you can place your own images into the override directory and reference the path to that custom image.
Event Backgrounds
Event Photos