CFG File Documentation
All nod
Contents
- 1 Basic Part Making Guidelines
- 2 Config file order
- 3 MODEL
- 4 Asset Parameters
- 5 node definitions
- 6 FX definitions
- 6.1 fx_exhaustFlame_blue_small
- 6.2 fx_exhaustFlame_yellow
- 6.3 fx_exhaustFlame_yellow_tiny
- 6.4 fx_exhaustFlame_blue
- 6.5 fx_exhaustFlame_white_tiny
- 6.6 fx_exhaustLight_yellow
- 6.7 fx_exhaustLight_blue
- 6.8 fx_smokeTrail_medium
- 6.9 fx_smokeTrail_light
- 6.10 fx_gasBurst_white
- 6.11 fx_exhaustSparks_flameout
- 6.12 fx_exhaustSparks_yellow
- 7 Sound FX definition
- 8 editor paramaters
- 9 attachment rules
- 10 stackSymmetry
- 11 standard part parameters
- 11.1 mass
- 11.2 dragModelType
- 11.3 maximum_drag
- 11.4 minimum_drag
- 11.5 angularDrag
- 11.6 crashTolerance
- 11.7 breakingForce
- 11.8 breakingTorque
- 11.9 maxTemp
- 11.10 ActivatesEvenIfDisconnected
- 11.11 stagingIcon
- 11.12 stageOffset
- 11.13 childStageOffset
- 11.14 explosionPotential
- 11.15 fuelCrossFeed
- 11.16 NoCrossFeedNodeKey
- 11.17 linearStrength
- 11.18 angularStrength
- 11.19 maxLength
- 11.20 vesselType
- 11.21 PhysicsSignificance
- 12 MODULE
- 12.1 ModuleParachute
- 12.1.1 semiDeployedAnimation
- 12.1.2 fullyDeployedAnimation
- 12.1.3 invertCanopy
- 12.1.4 autoCutSpeed
- 12.1.5 capName
- 12.1.6 canopyName
- 12.1.7 stowedDrag
- 12.1.8 semiDeployedDrag
- 12.1.9 fullyDeployedDrag
- 12.1.10 minAirPressureToOpen
- 12.1.11 deployAltitude
- 12.1.12 deploymentSpeed
- 12.1.13 semiDeploymentSpeed
- 12.2 ModuleSAS
- 12.3 KerbalSeat
- 12.4 ModuleLandingGear
- 12.5 ModuleSteering
- 12.6 FXModuleConstrainPosition
- 12.7 ModuleLandingLeg
- 12.8 RetractableLadder
- 12.9 ModuleReactionWheel
- 12.10 ModuleScienceContainer
- 12.11 FlagDecal
- 12.12 ModuleScienceLab
- 12.13 FlagDecal
- 12.14 ModuleJettison
- 12.15 ModuleAlternator
- 12.16 ModuleCommand
- 12.17 ModuleEnviroSensor
- 12.18 ModuleControlSurface
- 12.19 ModuleAnimateHeat
- 12.20 ModuleEngines
- 12.20.1 thrustVectorTransformName
- 12.20.2 throttleLocked
- 12.20.3 exhaustDamage
- 12.20.4 ignitionThreshold
- 12.20.5 minThrust
- 12.20.6 maxThrust
- 12.20.7 heatProduction
- 12.20.8 fxOffset
- 12.20.9 useEngineResponseTime
- 12.20.10 engineAccelerationSpeed
- 12.20.11 engineDecelerationSpeed
- 12.20.12 allowShutdown
- 12.20.13 useVelocityCurve
- 12.20.14 PROPELLANT
- 12.20.15 atmosphereCurve
- 12.20.16 velocityCurve
- 12.21 FXModuleAnimateThrottle
- 12.22 ModuleEnginesFX
- 12.23 ModuleGimbal
- 12.24 ModuleTestSubject
- 12.25 LaunchClamp
- 12.26 ModuleGenerator
- 12.27 ModuleDockingNode
- 12.28 ModuleRCS
- 12.29 ModuleResourceIntake
- 12.30 ModuleScienceExperiment
- 12.30.1 experimentID
- 12.30.2 experimentActionName
- 12.30.3 resetActionName
- 12.30.4 reviewActionName
- 12.30.5 useStaging
- 12.30.6 useActionGroups
- 12.30.7 hideUIwhenUnavailable
- 12.30.8 rerunnable
- 12.30.9 xmitDataScalar
- 12.30.10 FxModules
- 12.30.11 dataIsCollectable
- 12.30.12 collectActionName
- 12.30.13 interactionRange
- 12.31 ModuleGrappleNode
- 12.32 ModuleLight
- 12.33 ModuleLiftingSurface
- 12.34 ModuleAnimateGeneric
- 12.35 ModuleDataTransmitter
- 12.36 FXModuleLockAtConstraint
- 12.37 FlagDecal
- 12.38 ModuleAsteroid
- 12.39 ModuleDeployableSolarPanel
- 12.40 ModuleWheel
- 12.41 FXModuleLookAtConstraint
- 12.42 FXModuleConstrainPosition
- 12.43 ModuleAnchoredDecoupler
- 12.44 ModuleDecouple
- 12.1 ModuleParachute
- 13 MODULES POSSIBLY FROM MODS
- 14 INTERNAL
- 15 RESOURCE
- 16 RESOURCE_DEFINITION
- 17 EFFECTS
Basic Part Making Guidelines
Every part consists of multiple files, including the configuration file, a model and a collision mesh. Under the 0.25 standards, the model and collision mesh must both have a material assigned when creating them in your modeling software and prior to export for use. I am not a modeler, so I will leave that guidance to someone more qualified.
When creating a new part, each of these files (including additional models and meshes, if needed) should all be contained in a single folder which describes or names the part. Even though Squad themselves are horribly inconsistent when building parts, it is best to have the name of the folder, and the names of each of the meshes match the name of the part inside the cfg file (not the name that you see in the parts building! More on that later).
If you making more than a few parts, you may want to create a folder for each type of part. This is certainly an acceptable practice, and one that Squad uses themselves. For example: /Engines/ to place all of your engine designs inside.
If you are making a mod that does things other than just provide a stock-capable parts pack, you may want a more subfolders, one for parts, one for agencies, another for contracts, etc, etc.
No matter how deep you nest your mods' folders, your mod itself should be contained within the /GameData folder with a name that uniquely identifies your mod. It would be wise to name this folder the same as you are marketing your mod (ie: GameData\Modular Kolonization System\ is advertised as Modular Kolonization System or GameData\MechJeb is advertised as MechJeb) (and yes, I know that I'm using examples which actively violate this principle!)
So, I wrote a mod (let's call it ShadowSplat) that modifies some resources, adds a few agencies, and massively updates the parts pack including new engines, fuel tanks, science containers, and electrics. My folder structure might look like this:
KSP_win\GameData\ShadowSplat\ KSP_win\GameData\ShadowSplat\Agencies KSP_win\GameData\ShadowSplat\Resources KSP_win\GameData\ShadowSplat\Parts KSP_win\GameData\ShadowSplat\Parts\Engine KSP_win\GameData\ShadowSplat\Parts\FuelTank KSP_win\GameData\ShadowSplat\Parts\Science KSP_win\GameData\ShadowSplat\Parts\Electrical
Config file order
As of at least 0.24.2, the order of the configuration file matters very little. As far as I can tell, you can throw just about anything you want in there in any order. However, for compatability and error-checking reasons, it's best to follow the general structure that exists within stock parts. Many of the stock parts contain commenting-out lines to help you decode where things should go, but, here's a general breakdown, using a mythological part (let's call it "DoesItAll"). DoesItAll will exist in this foldier:
KSP_win\GameData\ShadowSplat\Parts\Engine\DoesItAll
and will consist of the files:
KSP_win\GameData\ShadowSplat\Parts\Engine\DoesItAll.cfg KSP_win\GameData\ShadowSplat\Parts\Engine\DoesItAll.mu KSP_win\GameData\ShadowSplat\Parts\Engine\DoesItAll.mbm
Note: this is a general explanation. Additional information can be found be clicking the provided links:
General Parameters
Actual part | Explanation | ||
---|---|---|---|
PART | - specifies that this cfg relates to a part | ||
{ | |||
name = DoesItAll | set the hidden name of the part. Spaces are not allowed. Underscores and other special characters are either not allowed or not recommended. This name is used behind the scenes for reference to and from other parts and procedural calls, but is also revealed during crash/damage dialog boxes (F3). It is good programming practice to use a name that at least partially defines the part and/or creator. fuelTankSmallFlat (which is already in use) is not a good name to use here, even though it does describe the part effectively, it does not differentiate between an fuelTankSmallFlat - The T-100 fuel tank and the Rockomax X200-8 Fuel Tank, which could also be considered a fuelTankSmallFlat. | ||
module = Part | This convention is no longer used. Earlier versions of KSP only permitted individual parts to serve as single modules and this was therefore appropriately placed back then. Newer versions allow parts to have/serve as multiple modules and the conventions for defining those modules have been relocated and redefined as its own subgroup. Can still be found in legacy parts that have not been updated, including the "Tail Fin" by C7 Aerospace Division. 5 parts in total are known to still use this convention.
|
author | Simply a place to take credit for your creation / update. This line is not referenced in-game. It is recommended that you utilize the same author credit for all parts that you or your team create under one title. For example, assign all MKS mods to author MKS Team and all OKS mods to author OKS team, even though you are all the same team. |
Model Parameters
At this point, you can use the deprecated style of mesh on a line by itself, or open a new sub called MODEL. The preferred method is to use MODEL:
Actual part | Explanation |
---|---|
MODEL { | opens the MODEL sub |
model | The name of the mesh. Write its name therein and keep the mesh file in the same directory as the part file. |
scale | The scale of the model - depending on the units in your 3D modelling program. If you used one unit = one meter, then use a scale of 1. If it's 1 unit = 0.1 meters, then use a scale of 0.1. Using a 0.1 scale factor and then scaling to fit the other parts is easier than fiddling around with scale factors. This factor will only affect the units involved in node placement and will not affect the actual size of the part. |
texture |
If you do not use MODEL, you must use mesh to define the parts collision mesh, like so:
Actual part | Explanation |
---|---|
mesh | Mesh defines the mesh and texture package used to create the in-game appearance of your part. Acceptable meshes include .mu files. |
Asset Parameters
Actual part | Explanation |
---|---|
mesh = DoesItAll.mu | Mesh defines the mesh and texture package used to create the in-game appearance of your part. Acceptable meshes include .mu files |
scale | scale defines the size of your part. I am uncertain as to what will happen when you change this value |
specPower | Specific Power? fuelLine |
rimFalloff | 3 fuelLine |
alphaCutoff | Number: 0.0 fuelLine |
rescaleFactor |
An optional parameter that is not usually included in most parts, but the option is available for resizing a part for personal use. In order to retain correct node placements, the scale parameter must also be proportionally changed to match the new rescaleFactor. The default value for rescaleFactor is 1.25 but can be changed to any value. |
iconCenter | 0,3,0 Array of integers? (advSasModuleLarge, fuelLine) |
Node Definitions
So, node definitions are a little weird. You don't have to use any, and you *can use a whole bunch. Defines where parts attach to other parts. Tricouplers have four: three bottom and one at the top, while most parts simply have two, and a few parts have only one.
Node stack defines where the part vertically stacks with other parts, and node attach defines where on a part's surface other parts attach - in other words, horizontal attachment.
e attachment values relate to an object's origin, and their values correspond to a model's units and scaling factors. A node_stack_bottom with x, y, and z values of (2.5, 5.0, 3.0) will have an attachment node 2.5 units to the right, 5.0 units up, and 3.0 units forward. The next three values refer to the orientation that a particular node will accept other attachments, on a scale of -1.0 to 1.0. These represent the vector that a part will orient itself on when attaching to the node. For example, a fuel tank with a node_stack_bottom will have angx, angy, and angz values of (0.0, -1.0, 0.0). This represents a vector downward relative to the part model, in the negative y direction. A value of (0.0, -1.0, 1.0) would represent a diagonal vector downward and forward, while a value of (1.0, 1.0, 1.0) would represent a vector to the right, up, and forward.
Generally, most parts will have angx, angy, and angz values of either (0.0, -1.0, 0.0) for a node_stack_bottom and (0.0, 1.0, 0.0) for a node_stack_top.
The last value indicates the visual size of an attachment node. Values may be either 0 (small half-meter node), 1 (normal), or 2 (large). This parameter is optional and will default to 1 if nothing is specified.
Keep in mind, naming conventions (_stack_bottom, _stack_top) for nodes only apply to node_attach; they are only helpful in identifying a node's position.
Known node definitions are listed below:
- node_stack_top
- node_stack_bottom
- node_stack_connect01
- node_stack_connect02
- node_stack_connect03
- node_attach
- node_stack_bottom01
- node_stack_bottom02
- node_stack_bottom03
- node_stack_bottom04
Each one follows this example, and specifies where other parts can connect to this part:
Actual Part | Explanation |
---|---|
node_attach = 0.00, 0.147, 0.00, 0.0, 1.0, 0.0, 1 | specifies the location of the nodes of this part (the green circles). |
node_stack_bottom = x, y, z, angx, angy, angz, size node_stack_top = x, y, z, angx, angy, angz, size node_attach = x, y, z, angx, angy, angz, size
FX definitions
FX definitions specify visual effects associated with this part, including engine exhausts, explosions, and coloration. Each one is a unique effect, and the only parameters they take is the location/offset that the effect occurs at. The 'active' switch on the end is used to define when this effect will be visible. See the FX Groups listing to know which effect groups are available, and when they are used. It's also possible to assign an effect to more than just one FX Group. If for instance, you want a smoke effect to be visible both when the part activates and also when it deactivates itself, you can do this:
fx_gasBurst_white = x, y, z, angx, angy, angz, activate, deactivate
This is particularly useful if you're defining a lot of effects, like the gas discharges on an RCS module.
fx_exhaustFlame_yellow = x, y, z, angx, angy, angz, active fx_exhaustLight_yellow = x, y, z, angx, angy, angz, active fx_smokeTrail_medium = x, y, z, angx, angy, angz, active
Known FX calls are listed below:
- fx_exhaustFlame_blue_small
- fx_exhaustFlame_yellow
- fx_exhaustFlame_yellow_tiny
- fx_exhaustFlame_blue
- fx_exhaustFlame_white_tiny
- fx_exhaustLight_yellow
- fx_exhaustLight_blue
- fx_smokeTrail_medium
- fx_smokeTrail_light
- fx_gasBurst_white
- fx_exhaustSparks_flameout
- fx_exhaustSparks_yellow
Actual Part | definition |
---|---|
fx_exhaustFlame_blue_small = 0,0,0,0,0,0,0 |
Sound FX definitions
Just like Visual effects, sound effects specify an effect to be used by the part. Sound effects are coded using a two-sided equation, the left side specifies the sound or sound file to be used, whereas the right side specifies when to use that particular sound. Known Sound Effects definitions are:
This is pretty easy to use in a basic way, which will suit our needs just fine.
Under this section, comes:
sound_vent_medium = activate sound_rocket_hard = active sound_vent_soft = deactivate
Sounds are added to FX Groups, in much the same way smoke and flame effects are. Of course, sounds do not need to be positioned in space, nor do they have rotations, so all you need is to indicate in which FX Group the sound will be executed. As with effects, you can assign multiple groups to a sound.
Since 0.20 GameData structure there are 2 ways to add a sound to a part:
- KSP has an internal sound library, which contains a few sound effects. By defining a sound as in the example above, KSP will search for that sound in its internal library.
- The second way is to add new sound files which is ONLY possible if adding the sound file to the GameData/modName/parts/partName/part/sounds/ folder. Note that all the sounds are therefore "private", only accessed by that part. For now, the legacy folder or a shared mod folder method doesn't work, devs are probably going to fix this problem in the future.
REMEMBER: If you add a custom sound, the file name must start with sound_ (e.g., sound_myNewSoundEffect.wav).
To use a sound from the KSP internal library or the part/sounds folder, you must not include the extension in the sound name (e.g., sound_vent_medium = activate), otherwise the sound will not work.
Supported files are 48000 Hz .wav files and .ogg
Paired sound types and part status left side specifies sound, right side specifies engine status.
Left Side options | Right Side options |
---|---|
sound_jet_low | decouple |
sound_jet_deep | engage |
sound_vent_soft | running |
sound_vent_large | power |
sound_vent_medium | disengage |
sound_rocket_hard | flameout |
sound_rocket_mini | activate |
sound_decoupler_fire | deploy |
sound_explosion_low | |
sound_parachute_open | |
sound_parachute_single |
Editor Parameters
Actual Part | Definition |
---|---|
CrewCapacity | The number of Kerbals that can be seated in this part. Mk1 Command Pod seats 1. Jebediah is so awesome, he only takes up .7 seats. Chuck Norris takes as many seats as he wants. Use 0 to specify a probe. |
TechRequired |
This is the technology tree node that must be activated in order to have access to this part. Any single word can go here, but if you use a word that is not in the tech tree definition, you may never be able to access your part. Currently, stock KSP comes with the following Technology_tree nodes:
The following Tech Tree nodes are present in stock, but not used unless called for by a mod
|
entryCost | entryCost represents the amount Kerbits required to unlock this particular part. As such, it could be considered an 'investment' cost in the development. First you have to have the brains to make the thing, then someone has to develop it (that's this cost), then you can get it into production (that's cost, coming later). You can set this to any value you like. Bear in mind that this value has no meaning in Sandbox or Science Modes. It is only used in Career Mode. |
cost | cost represents the cost in Kerbits to attach a single instance of this part to your craft. It does not include resources available on your part (fuel tanks' costs are this cost plus the cost of the appropriate resource). cost has no use in Sandbox or Science modes, it is only used in Career mode |
category | Contrary to some opinions, parts are not organized in-game according to the folder that they are in in the Squad\parts\ directory. Rather, they are organized according to the category value assigned here. Mods are organized alphabetically according to their sub-directory in parts, and then according to this value. This is why, when you add a mod that is contained in folder "000_NewMod", it's parts appear first and when you add a mod that is contained in "ZZZ_NewMod", it's parts appear last. Currently there are six useable categories:
Although, from the folder names provided, it seems that Squad is planning on expanding these options in a future release. My best guess is that the groupings will eventually be:
As of [0.90], sub-divided into:
|
subcategory | subcategory is not currently in use as of [0.25.0]. It is expected that this control will later be linked to [category] to provide a further subdivision of searchable parts in-game, possibly to cut down on clutter when the parts list gets exceptionally high. With certain mods installed, the Propulsion category already spans several pages. [subcategory] can help control this by provided variants such as [liquidEngine], [LOXfueltank], [SRB], etc |
title | title is the in-game name for your part and features such iconic names as 'Command Pod Mk1'. The title of your part can be as long or short as you want, and there are no known limitations on what can be used in the title. This is how your part will be known in-game, on in-game contextual menus and referred to on message boards and forums (hopefully) so take that into consideration. |
manufacturer | manufacturer is flavor text (possibly useful in future iterations as a filter for parts) that defines who built or created the part for use (or pulled out of the junk-pile and sold at 10000% mark-up for you to use). Just as with the title of your part, there are no known restrictions on the flavor text, including length. This is KSP, though, so try to be humorous |
description | description is the flavor text that describes your parts purpose, motivation, direction, life aspirations, goals, favor colors, and (hopefully) what it can (is supposed to) do. As with other flavor text, there are no known limitations on what can go here, including length. In fact, this flavor text is treated special in-game by being given a text box that automatically scrolls based on the length of the description used. If your part does something unusual, it's probably a good idea to (at least partially) document it here, so people know how to use your part in-game. Many are the parts that have failed their popularity exams because of bad descriptions. |
Attachment rules
attachRules defines how this part attaches to or allows attachments from other parts. Though documented in some part files, the documentation is minimalist and difficult to understand, so here's a little clean-up and expansion.
- // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision
- attachRules = 1,1,1,1,1
The rules correspond to the numbers below - 1 is allow, 0 is prevent. The tags are:
stack - Can your part be stacked on others?
SrfAttach - Can your part be placed onto a surface?
allowStack - Will you allow other parts to be stacked on your part?
allowSrfAttach Can other parts be placed on the surface of yours?
allowCollision - A special one: Can your part be placed if part of it is intersecting another part?
Note that you can also force parts attached to this part to attach in a specific symmetry.
- // symmetry rules: 0=1x, 1=2x, 2=3x, 3=4x and so on...
- stackSymmetry = 3
Standard Part Parameters
This defines how your part performs in the air and its limits. Note that not all of these parameters need to be defined. If they're left out of the cfg file, KSP will use a default value for them. Standard part parameters indicate how the part interacts with the environment in flight mode. From mounting on the launch platform or the runway through take-off and atmospheric interactions to landing and blowing up, this is where physics enters the game
Actual Part | Definition |
---|---|
mass = 1 | mass measured in Kerbal tons, describes the 'weight' of your part and is used in calculations involving roll, pitch, yaw, and thrust. The higher the mass, the more energy will be needed to change any of those four parameters. It is also used in making center-of-mass, center-of-lift and center-of-drag calculations, some of which are critical for aerodynamic flight. This is a numerical value, and you can use any positive value. Bear in mind that extremely high positive values for [mass] may make the part unusable in-game or require additional special parts to make usable. This is generally considered poor design. |
dragModelType | [dragModelType] describes how your part interacts with drag forces. At present, the known [dragModelType]s include:
|
maximum_drag | |
minimum_drag | |
angularDrag | |
crashTolerance | crashTolerance describes the maximum velocity (in m/s) at which your part can interact with another part without suffering damage (read: blowing up). The higher you set this value, the faster an impact your part can survive. 12 is fairly high, and is the de facto standard for most pods. 14 is useful for landing legs, and 50 is used on some wheels, which are basically indestructible. |
BreakingForce |
optional [breakingForce] specifies an amount of Force exerted between this part and another part that it is attached to. When exceeded, the two parts will separate (usually catastrophically). Higher values indicate stronger connections. |
BreakingTorque | optional. Like [breakingForce], [breakingTorque] defines an amount of Force between two parts, but rather than direct force towards or against, [breakingTorque] refers to rotational forces between the two objects.. It assigns a value that, again, when exceeded, will cause the two parts to separate, with the expected results |
maxTemp | Stock KSP uses the [maxTemp] value to determine at what temperature parts will blow up due to overheating. Since Stock KSP doesn't use environmental heating, the only Stock heat sources are engine exhaust, and we will talk about how much heat engines produce later on. Once this value (expressed in degree Celsius {or degrees Kerbius, if you prefer}) is exceeded, your part will spontaneously explode. Managing heat with engines is a critical function of launching higher-powered engines, and design considerations mean that you shouldn't place parts with low [maxTemp] values directly in the path of engine exhaust. Unless you want them to blow up, that is. ~1800 is a good value for most engine assemblies. |
ActivatesEvenIfDisconnected | true or false, assumed to specify whether the part will operate when not connected to a vessel (remote control?) Must test. Currently, only know part is the Sepratron I |
stagingIcon | Sets the icon in the staging system
|
stageOffset | Can be 0, 1, etc. defines whether this part will create a new stage before itself. This only applies for the automatically generated staging sequence. -1 is used in parachutes...signals that activation of this object does not cause a staging effect? |
childStageOffset | Can be 0, 1, etc. defines whether this part will create a new stage after itself. This only applies for the automatically generated staging sequence. |
explosionPotential | unknown purpose. Possibly for future use for random failures. Known values are numerical.
|
fuelCrossFeed | Will the part crossfeed fuel between parts attached to it? allows or restricts fuel moving through this part. Boolean argument: True or False |
NoCrossFeedNodeKey = bottom | if set to bottom will keep fuel from flowing FROM bottom nodes (avoiding some stack imbalances). Used with parts with multiple bottom nodes, such as the TVR-1180C Mk1 Stack Tri-Coupler. keeps resources from flowing FROM the named nodes (prevents stack imbalances and such) Use with fuelCrossFeed true to to allow resources to flow into these parts, but not back out. Known parameters: bottom |
linearStrength | The amount of stress the given part can sustain without breaking, in a straight back-and-forth direction. Used for fuel lines and strut connectors. |
angularStrength | The amount of stress the given part can sustain without breaking, laterally. Used for fuel lines and strut connectors |
maxLength | The maximum possible length of this stretchy part, expressed in meters. Used for fuel lines and strut connectors, as they have repeating meshes |
vesselType | unknown. May automatically set the Ship Type variable when including parts with a defined [vesselType]. Known [vesselTypes] include:
|
PhysicsSignificance | optional. unknown purpose. assumed to default to zero. Appears to be a numerical value. Many parts are 'physicsless' Known parts:
Known Values: 1 |
MODULES
If you like and/or use this information, please stop by the Discussion section and leave a comment. It makes me feel better about doing all this work, and frankly, if someone doesn't do it soon, I'm just gonna stop and keep this all to myself. Yeah, you could figure it all out on your own, but let me tell you...from putting it together myself, it's a real pain in the tookus.
Each Configuration file is comprised of several sections. Some of these sections are standardized across all parts, others are specific to specific part types. To build or modify a successful part, it is necessary to have an understanding of what each section does, and within those sections what each line of configuration actually does, and what the options are for those lines. This Definitions file will attempt to address each of those questions in turn and is current as of [0.25.0]
Notes: It appears that, with a few exceptions, all definitions can occur in any order in the PART file. Free arrangement is valid for MODEL {}, INTERNAL {}, MODULE {},
MODEL
model
[model] specifies the model file name used when representing this part in-game
scale
texture
Asset Parameters
mesh
Mesh defines the mesh and texture package used to create the in-game appearance of your part. Acceptable meshes include .mu files.
scale
scale defines the size of your part. I am uncertain as to what will happen when you change this value
specPower
Specific Power? fuelLine
rimFalloff
3 fuelLine
alphaCutoff
Number: 0.0 fuelLine
rescaleFactor
unknown. Assumed to affect mods such as TweakScale.
iconCenter
0,3,0 Array of integers? (advSasModuleLarge, fuelLine)
node definitions
// definition format is Position X, Position Y, Position Z, Up X, Up Y, Up Z
node_stack_top
node_stack_bottom
node_stack_connect01
node_stack_connect02
node_stack_connect03
node_attach
node_stack_bottom01
node_stack_bottom02
node_stack_bottom03
node_stack_bottom04
FX definitions
specifies a type of Special effects and the location relative to the part at which that effect is displayed, also includes a type as a 7th variable, probably referring to the state of the part (e.g.: power, flameout, running)
fx_exhaustFlame_blue_small
fx_exhaustFlame_yellow
fx_exhaustFlame_yellow_tiny
fx_exhaustFlame_blue
fx_exhaustFlame_white_tiny
fx_exhaustLight_yellow
fx_exhaustLight_blue
fx_smokeTrail_medium
fx_smokeTrail_light
fx_gasBurst_white
fx_exhaustSparks_flameout
fx_exhaustSparks_yellow
Sound FX definition
Paired sound types and part status left side specifies sound, right side specifies engine status.
Left Side options:
- sound_jet_low
- sound_jet_deep
- sound_vent_soft
- sound_vent_large
- sound_vent_medium
- sound_rocket_hard
- sound_rocket_mini
- sound_decoupler_fire
- sound_explosion_low
- sound_parachute_open
- sound_parachute_single
Right Side Options
- decouple
- engage
- running
- power
- disengage
- flameout
- activate
- activate
- deploy
editor paramaters
This is where the functional "meat and potatoes" gets started. Information here generally relates to acquisition of the part itself.
CrewCapacity
The number of Kerbals that can be seated in this part. Mk1 Command Pod seats 1. Jebediah is so awesome, he only takes up .7 seats. Chuck Norris takes as many seats as he wants. Use 0 to specify a probe.
TechRequired
This is the technology tree node that must be activated in order to have access to this part. Any single word can go here, but if you use a word that is not in the tech tree definition, you may never be able to access your part. Currently, stock KSP comes with the following Technology_tree nodes:
- start
- basicRocketry
- generalRocketry
- stability
- survivability
- advRocketry
- generalConstruction
- flightControl
- scienceTech
- heavyRocketry
- fuelSystems
- advConstruction
- aerodynamicSystems
- advFlightControl
- electrics
- spaceExploration
- landing
- heavierRocketry
- specializedConstruction
- actuators
- supersonicFlight
- specializedControl
- precisionEngineering
- advElectrics
- advExploration
- advLanding
- nuclearPropulsion
- advMetalworks
- composites
- advAerodynamics
- highAltitudeFlight
- largeControl
- unmannedTech
- ionPropulsion
- largeElectrics
- electronics
- fieldScience
- veryHeavyRocketry
- metaMaterials
- heavyAerodynamics
- hypersonicFlight
- advUnmanned
- specializedElectrics
- advScienceTech
- advancedMotors
The following Tech Tree nodes are present in stock, but not used unless called for by a mod
- experimentalRocketry
- nanolathing
- experimentalAerodynamics
- aerospaceTech
- experimentalElectrics
- experimentalScience
- automation (used by MechJeb)
- experimentalsMotors
entryCost
entryCost represents the amount Kerbits required to unlock this particular part. As such, it could be considered an 'investment' cost in the development. First you have to have the brains to make the thing, then someone has to develop it (that's this cost), then you can get it into production (that's cost, coming later). You can set this to any value you like. Bear in mind that this value has no meaning in Sandbox or Science Modes. It is only used in Career Mode.
cost
cost represents the cost in Kerbits to attach a single instance of this part to your craft. It does not include resources available on your part (fuel tanks' costs are this cost plus the cost of the appropriate resource). cost has no use in Sandbox or Science modes, it is only used in Career mode.
category
Contrary to some opinions, parts are not organized in-game according to the folder that they are in in the Squad\parts\ directory. Rather, they are organized according to the category value assigned here. Mods are organized alphabetically according to their sub-directory in parts, and then according to this value. This is why, when you add a mod that is contained in folder "000_NewMod", it's parts appear first and when you add a mod that is contained in "ZZZ_NewMod", it's parts appear last. Currently there are six useable categories:
- Propulsion
- Aero
- Pods
- Structural
- Science
- Utility
Although, from the folder names provided, it seems that Squad is planning on expanding these options in a future release. My best guess is that the groupings will eventually be:
- Command
- Propulsion (possibly sub-divided)
- Aero
- Electrical
- Structural
- Utility
- Wheel
subcategory
subcategory is not currently in use as of [0.25.0]. It is expected that this control will later be linked to [category] to provide a further subdivision of searchable parts in-game, possibly to cut down on clutter when the parts list gets exceptionally high. With certain mods installed, the Propulsion category already spans several pages. [subcategory] can help control this by provided variants such as [liquidEngine], [LOXfueltank], [SRB], etc.
title
[title] is the in-game name for your part and features such iconic names as 'Command Pod Mk1'. The title of your part can be as long or short as you want, and there are no known limitations on what can be used in the title. This is how your part will be known in-game, on in-game contextual menus and referred to on message boards and forums (hopefully) so take that into consideration.
manufacturer
[manufacturer] is flavor text (possibly useful in future iterations as a filter for parts) that defines who built or created the part for use (or pulled out of the junk-pile and sold at 10000% mark-up for you to use). Just as with the title of your part, there are no known restrictions on the flavor text, including length. This is KSP, though, so try to be humorous.
description
[description] is the flavor text that describes your parts purpose, motivation, direction, life aspirations, goals, favor colors, and (hopefully) what it can (is supposed to) do. As with other flavor text, there are no known limitations on what can go here, including length. In fact, this flavor text is treated special in-game by being given a text box that automatically scrolls based on the length of the description used. If your part does something unusual, it's probably a good idea to (at least partially) document it here, so people know how to use your part in-game. Many are the parts that have failed their popularity exams because of bad descriptions.
attachment rules
attachRules defines how this part attaches to or allows attachments from other parts. Though documented in some part files, the documentation is minimalist and difficult to understand, so here's a little clean-up and expansion.
stack
Boolean, 0 or 1: specifies whether this part stacks. Creates or requires an attachment node
srfAttach
Boolean, 0 or 1: specifies whether this part can attach to the surface of another part
allowStack
Boolean, 0 or 1: specifies whether another part can stack on this one. Creates or requires an attachment node
allowSrfAttach
Boolean, 0 or 1: specifies whether parts are allowed to attach to the surface of this part (at locations other than the nodes)
allowCollision
Boolean, 0 or 1: specifies whether this part is subject to collision physics
stackSymmetry
2 from standardNoseCone. Uncertain.
standard part parameters
Standard part parameters indicate how the part interacts with the environment in flight mode. From mounting on the launch platform or the runway through take-off and atmospheric interactions to landing and blowing up, this is where physics enters the game.
mass
[mass] measured in Kerbal tons, describes the 'weight' of your part and is used in calculations involving roll, pitch, yaw, and thrust. The higher the mass, the more energy will be needed to change any of those four parameters. It is also used in making center-of-mass, center-of-lift and center-of-drag calculations, some of which are critical for aerodynamic flight. This is a numerical value, and you can use any positive value. Bear in mind that extremely high positive values for [mass] may make the part unusable in-game or require additional special parts to make usable. This is generally considered poor design.
dragModelType
[dragModelType] describes how your part interacts with drag forces. At present, the known [dragModelType]s include:
- default
maximum_drag
minimum_drag
angularDrag
crashTolerance
[crashTolerance] describes the maximum velocity (in m/s) at which your part can interact with another part without suffering damage (read: blowing up). The higher you set this value, the faster an impact your part can survive. 12 is fairly high, and is the de facto standard for most pods. 14 is useful for landing legs, and 50 is used on some wheels, which are basically indestructible.
breakingForce
optional [breakingForce] specifies an amount of Force exerted between this part and another part that it is attached to. When exceeded, the two parts will separate (usually catastrophically). Higher values indicate stronger connections.
breakingTorque
optional. Like [breakingForce], [breakingTorque] defines an amount of Force between two parts, but rather than direct force towards or against, [breakingTorque] refers to rotational forces between the two objects.. It assigns a value that, again, when exceeded, will cause the two parts to separate, with the expected results.
maxTemp
Stock KSP uses the [maxTemp] value to determine at what temperature parts will blow up due to overheating. Since Stock KSP doesn't use environmental heating, the only Stock heat sources are engine exhaust, and we will talk about how much heat engines produce later on. Once this value (expressed in degree Celsius {or degrees Kerbius, if you prefer}) is exceeded, your part will spontaneously explode. Managing heat with engines is a critical function of launching higher-powered engines, and design considerations mean that you shouldn't place parts with low [maxTemp] values directly in the path of engine exhaust. Unless you want them to blow up, that is. ~1800 is a good value for most engine assemblies.
ActivatesEvenIfDisconnected
true or false, assumed to specify whether the part will operate when not connected to a vessel (remote control?) Must test. Currently, only know part is the Sepratron I.
stagingIcon
Sets the icon in the staging system
- DECOUPLER_HOR (Horizontal Decoupler Icon)
- LIQUID_ENGINE (Liquid Engines, or engines that have controllable thrust)
- SOLID_BOOSTER (Solid Rocket Boosters, or engines without controllable thrust)
stageOffset
- 1 - could be that this creates a new stage in the staging line-up
- -1 - used in parachutes...signals that activation of this object does not cause a staging effect?
childStageOffset
- 1 - could be that this mandates a new stage after this part in the staging line-up
explosionPotential
unknown purpose. Possibly for future use for random failures. Known values are numerical.
- 0.1
- 0 (BSLsnakprobe)
fuelCrossFeed
allows or restricts fuel moving through this part. Boolean argument: True or False.
NoCrossFeedNodeKey
keeps resources from flowing FROM the named nodes (prevents stack imbalances and such) Use with fuelCrossFeed true to to allow resources to flow into these parts, but not back out. Known paraments:
- bottom
linearStrength
The amount of stress the given part can sustain without breaking, in a straight back-and-forth direction. Used for fuel lines and strut connectors.
angularStrength
The amount of stress the given part can sustain without breaking, laterally. Used for fuel lines and strut connectors.
maxLength
The maximum possible length of this stretchy part, expressed in meters. Used for fuel lines and strut connectors, as they have repeating meshes.
vesselType
unknown. May automatically set the Ship Type variable when including parts with a defined [vesselType]. Known [vesselTypes] include:
- Ship
- Probe
- Lander
- Rover
- SpaceObject (refers only to PotatoRoids)
PhysicsSignificance
optional. unknown purpose. assumed to default to zero. Appears to be a numerical value. Many parts are 'physicsless' Known parts:
- radialFlatSolarPanel
- ladderRadial
- z-400Battery
- z-100Battery
Known values: 1
MODULE
Modules define what specific parts can do. They are generally calls to C-coded or hard-coded functions that define what functionality these parts have in-game.
name
names define the module in use and are a general indication of what the module subtype does. Specific variables are associated with each [module].[name]. For example, the Clamp-O-Tron Docking Port Sr. has the MODULE.name ModuleDockingNode and its' associates variables are [referenceAttachNode] and [nodeType]. Some [MODULE]s share variables with other modules, which can make deciphering their purpose difficult.
known [MODULE]s, their associated variables, and the meanings of those variables will be explained below.
ModuleParachute
semiDeployedAnimation
specifies the animation to use in the semi-deployed state
- semiDeploySmall
fullyDeployedAnimation
specifies the animation to use in the fully deployed state
- fullyDeploySmall
invertCanopy
boolean, true or false, defaults to true. unknown purpose. true in parachuteMk1, true in parachuteMk2-R
autoCutSpeed
specifies the speed at which the parachute will be automatically cut, rendering it ineffective.
capName
- cap
canopyName
- canopy
stowedDrag
0.22 - specifies the drag effect while the parachute is still stowed
semiDeployedDrag
1 - specifies the drag effect while the parachute is in its semi-deployed state
fullyDeployedDrag
500 - specifies the drag effect while the parachute is in its fully deployed state
minAirPressureToOpen
0.01 - specifies the minimum Air pressure (or atmosphere) required for the parachute to enter its semi-deployed state
deployAltitude
configurable, sets the altitude above the planetary collision mesh at which the parachute will enter its fully deployed state
deploymentSpeed
1 - specifies the speed at which the parachute will enter its fully deployed state
semiDeploymentSpeed
1 - specifies the speed at which the parachute will enter its semi-deployed state
ModuleSAS
no known parameters. Possibly used a reference to determine whether this part is activated by the SAS function of the interface. ie. when you turn on SAS, turn on this part.
KerbalSeat
seatPivotName
seatPivot
ejectDirection
- 0, 1, 0.2
ModuleLandingGear
BrakeTorque
12
BrakeSpeed
3
ModuleSteering
controlAxisType
Forward
steeringAxis
0, 0, 1 - array of 3 numers
steeringTransformName
Steering
steeringLocked
true or false
steeringCurve
multi-array of keys, 0, 16 10, 9 30, 2 100, 1
FXModuleConstrainPosition
matchRotation
true or false
matchPosition
true or false
CONSTRAINFX
targetName
Steering
moversName
wheelCollider
ModuleLandingLeg
animationName
Deploy newlandingleg probeleg
wheelColliderName
wheelCollider
suspensionTransformName
Piston piston leg
orientFootToGround
boolean true or false
landingFootName
foot
alignFootUp
boolean true or false // Foot is aligned to up Axis instead of forward alignFootUp = true // Axis is aligned forward instead of up alignFootUp = false
suspensionUpperLimit
0.60, 0.47, 0.65
impactTolerance
300, 450, 150
suspensionSpring
1.25, 5, 1
suspensionDamper
1, 2, 1
suspensionOffset
0, 0.02, 0
RetractableLadder
ladderAnimationRootName
TelusBay Telescopic ladder
ladderColliderName
ladderCollider
ladderRetractAnimationName
Retract
ModuleReactionWheel
PitchTorque
numerical value, denotes amount of change can be applied to pitch using reaction wheel power
YawTorque
numerical value, denotes amount of change can be applied to yaw using reaction wheel power
RollTorque
numerical value, denotes amount of change can be applied to roll using reaction wheel power
RESOURCE
The resource used by reaction wheels in order to affect the changes they can produce
name
name of the relevant resource, typically ElectricCharge
rate
Rate of consumption, expressed in units/second at full usage.
ModuleScienceContainer
reviewActionName
Flavor text for reviewing the data contained in a science container.
storeActionName
Flavor text for placing data into a science container.
collectActionName
Flavor text for removing data from a science container.
evaOnlyStorage
Boolean, True or False Specifies whether or not data storage is restricted to EVA activities.
storageRange
Distance, expressed in meters, a Kerbal must be within in order to interact with data and this container.
allowRepeatedSubjects
Boolean, True or False
FlagDecal
textureQuadName
flagTransform: specifies whether there is a flag displayed on the exterior surface of the object.
ModuleScienceLab
containerModuleIndex
numerical, 0
dataTransmissionBoost
numerical, 1.5
crewsRequired
numerical, 2
canResetConnectedModules
Boolean, True or False
canResetNearbyModules
Boolean, True or False
interactRange
numerical, possible integers only, 5
REOURCE_PROCESS
name
names the resource required, e.g.: ElectricCharge
amount
specified, numerical, the number of units of the specified resource expended
FlagDecal
textureQuadName
flagTransform
ModuleJettison
specifies that pieces of this craft are able to be jettisoned, what they are and how to jettison them
jettisonName
node_fairing_collider fairingL fairingR fairing
bottomNodeName
bottom
isFairing
Boolean. True or False
jettisonedObjectMass
0.1, specifies the mass of the jettisoned object. It is uncertain, yet, if this mass is removed from the total mass of the vehicle. It is also uncertain if, when a fairing is added in vehicle assembly, this mass is added to the parent object.
jettisonForce
DeltaV with which the object is jettisoned from its parent object. Typically very low values, such as 1, 2 or 5
jettisonDirection
Three-dimensional array which specifies the direction of the jettisonForce relative to the original part, laterally is 0 0 1 and 0 0 -1, for example.
ModuleAlternator
Specifies that this part produced a resource, based on the percentage of thrust produced by the engine.
RESOURCE
name
name of the resource produced, usually ElectricCharge
rate
rate at which the resource is produced at 100% thrust, expressed in units/second
ModuleCommand
minimumCrew
Specifies the minimum number of crew needed to operate this module. Use 0 to specify a probe.
RESOURCE
If this Module requires a resource
name
This is the name of that resource
rate
and the rate in units/second of resource consumed
ModuleEnviroSensor
sensorType
- ACC
- PRES
- GRAV
- TEMP
ModuleControlSurface
dragCoeff
this value overrides the maximum_drag value 0.5 (advanced Canard)
deflectionLiftCoeff
0.7 (advanced Canard)
ctrlSurfaceRange
20 (advanced Canard)
ctrlSurfaceArea
0.95 (advanced Canard)
ModuleAnimateHeat
ThermalAnim
HeatAnimationEmissiveLiquidEngine3 HeatAnimationEmissiveTurbofan HeatAnimationEmissiveJet overheat
ModuleEngines
thrustVectorTransformName
unknown purpose. Known arguments:
- thrustTransform
throttleLocked
True or False, defaults to False. Used to create engines without controllable thrust.
exhaustDamage
True or False. assumed to indicate whether the exhaust from this engine will damage other parts.
ignitionThreshold
appears to not be used. Suggests a minimum thrust output value, below which the engine will no longer operate. Typical values are 0.1 (10%)
minThrust
Minimum thrust value. Engines will be considered 'off' at or below this value.
maxThrust
Just like the name implies, this is the maximum thrust a single unit of this module can produce. In order to create a more powerful engine, set this value higher.
heatProduction
a measure of the amount of heat energy produced per second. measured in degrees Kerbius (degrees Celsius)
fxOffset
3-dimensional vector coordinates specifying the location of thrust effects
useEngineResponseTime
True or False
engineAccelerationSpeed
0.2, 0.12
engineDecelerationSpeed
0.35, 0.21
allowShutdown
True or False, defaults to True. Specifies engines that cannot be turned off, regardless of whether their thrust can be controlled.
useVelocityCurve
True or False
PROPELLANT
resource utilized in the operation of this part, generally a fuel or other propellant. Engines may use multiple propellant types.
name
name of the resource consumed while this part is in operation
ratio
rate at which this resource is consumed, per second. Not to be confused with ratio relative to other propellants.
DrawGauge
Boolean value that indicates whether or not the 'fuel remaining' indicator in the staging selection is displayed or not.
atmosphereCurve
specifies variances in operational efficiency
key
uses two values to specify engine efficiency relative to the depth of the atmosphere (based on Kerbin sea-level!) First number indicates the relative pressure (0 = vacuum, 1 Kerbin sea-level), second numer indicates ISP value). Translates directly to ISP. In order to make a more efficient engine, set the second number of this array higher.
velocityCurve
uncertain as to how exactly this works, but appears to control the degree of acceleration at particular velocities. uses a 4 part key, the first part of the key is definitely specific accelerations, the second part is percentage of velocities. { key = 0 0.5 0 0 key = 1000 1 0 0 key = 2000 0.5 0 0 key = 2400 0 0 0 } { key = 1000 0 0 0 key = 850 0.2 0 0 key = 0 1 0 0 }
FXModuleAnimateThrottle
animationName
colorAnimation
depondOnEngineState
True or False
responseSpeed
0.5
ModuleEnginesFX
engineID
LES, KS25
runningEffectName
running_closed
thrustVectorTransformName
unknown purpose. Known arguments:
- thrustTransform
- obj_gimbal
exhaustDamage
True or False. assumed to indicate whether the exhaust from this engine will damage other parts.
throttleLocked
uncertain. Boolean values of True or False. Assumed to specify that solid Rocket Boosters cannot have their throttle adjusted while in flight.
ignitionThreshold
appears to not be used. Suggests a minimum thrust output value, below which the engine will no longer operate. Typical values are 0.1 (10%)
minThrust
Minimum thrust value. Engines will be considered 'off' at or below this value.
maxThrust
Just like the name implies, this is the maximum thrust a single unit of this module can produce.
heatProduction
a measure of the amount of heat energy produced per second. measured in degrees Kerbius (degrees Celsius)
fxOffset
3-dimensional vector coordinates specifying the location of thrust effects
PROPELLANT
resource utilized in the operation of this part, generally a fuel or other propellant.
name
name of the resource consumed while this part is in operation
ratio
rate at which this resource is consumed, per second. Not to be confused with ratio relative to other propellants.
DrawGauge
Boolean value that indicates whether or not the 'fuel remaining' indicator in the staging selection is displayed or not.
atmosphereCurve
specifies variances in operational efficiency
key
uses two values to specify engine efficiency relative to the depth of the atmosphere (based on Kerbin sea-level!) First number indicates the relative pressure (0 = vacuum, 1 Kerbin sea-level), second numer indicates ISP value).
ModuleGimbal
gimbalTransformName
thrustTransform
gimbalRange
represents the maximum angle, in degrees, that gimballing is supported. Recommend keeping this number relatively low (under 20 for sure), as setting the number too high can have catastrophic effects on ship design.
ModuleTestSubject
Used for the contract system, determines atmospheric conditions under which this part may be considered for testing. Also specifies whether the part is able to be tested using the Staging process or must be manually selected and "Perform Test" used to satisfy contract requirements.
environments
A single numerical value, between 0 (nowhere) and 15 (anywhere), that specifies the atmospheric conditions the part may be tested under. Add numbers together to specify multiple environments
- 0 = nowhere
- 1 = the surface of; srf
- 2 = the ocean of; ocean
- 3 = the surface or ocean of; srf, ocean
- 4 = the atmosphere of; atmo
- 5 = the surface or atmosphere of; srf, atmo
- 6 = the ocean or atmosphere of; ocean, atmo
- 7 = the surface, ocean or atmosphere of; srf, ocean, atmo
- 8 = the space above; space
- 9 = the surface or space above; srf, space
- 10 = the ocean or space of; srf, ocean, space
- 11 = the surface, ocean or space of; srf, ocean, space
- 12 = the space or atmosphere of; atmo, space
- 13 = the surface, space or atmosphere of; srf, atmo, space
- 14 = the ocean, space, or atmosphere of; ocean, atmo, space
- 15 = anywhere; srf, ocean, atmo, space
useStaging
Boolean True or False, specifies whether the part can be tested using the Staging Process
useEvent
Boolean True or False, specifies whether the part can be tested using the "Perform Test" action.
LaunchClamp
trf_towerPivot_name
obj_girdercap
trf_towerStretch_name
obj_girder
trf_anchor_name
obj_ground
trf_animationRoot_name
launchclamp
anim_decouple_name
launchclamp
ModuleGenerator
isAlwaysActive
specifies whether this module is always active or not. true/false
OUTPUT_RESOURCE
name
specifies the name of the produced resource.
rate
specifies the rate of resource produced, expressed in units per second.
ModuleDockingNode
A module for docking ports
referenceAttachNode
Specifies the node on the part that is used for the docking port, generally top or bottom
- top
- bottom
deployAnimationController
Boolean, 1 or 0
nodeType
Specifies the type of node for attachment. When perform docking operations, nodes must have the same value for nodeType in order to dock with one another.
- size1
- size2
- size0
controlTransformName
- controlNode = apparently only used for docking nodes that have related animations, see dockingPortInline
ModuleRCS
Note: ModuleRCS can use either a single resource, or a series of PROPELLANT calls.
thrusterTransformName
RCSthruster
thrusterPower
This is the power that the RCS thrusters provide. To make stronger RCS, use a higher numer
resourceName -------- interchangeable with PROPELLANT calls
The name of the resource used by the RCS thruster, typically MonoPropellant
resourceFlowMode -- for resourceName only --
Specifies the manner in which the resource is requested from the vessel
- STAGE_PRIORITY_FLOW
- STACK_PRIORITY_FLOW
- ALL_VESSEL
- NONE
PROPELLANT
Introduced with the inclusion of the Vernor RCS, it is recommended to use PROPELLANT calls only when using multiple resources. It is expected that older RCS will be updated to the new convention prior to final release.
name
name of the resource consumed
ratio
ratio of the resource consumed
resourceFlowMode
using the same pull method as a single resource, specifies how to pull the resource from the rest of the vessel
atmosphereCurve
Specifies the efficiency of the RCS thruster using 2-part keys 0 specifies the ISP in atmosphere 1 specifies the ISP at Kerbin Sea Level entries in between specify the ISP at specific percentages of Kerbin Sea Level (e.g: 0.5 = 1/2 Kerbin Atmosphere)
ModuleResourceIntake
used to create a part that produces a resource.
resourceName
defines the type of resource produced by this module. Any resource may be used for this purpose, including those not defined at all
checkForOxygen
An optional method that specifies this module must check to see if oxygen/atmosphere is present whenever attempting to generate the requested resource. true/false
area
area is the amount of space used for determining how much resource to produce. The larger the number, the more of the resource is produced per second.
intakeSpeed
unknown. Assumed to be a minimum m/s measure to determine if this module operates or not.
intakeTransformName
unknown. known arguments are:
- Intake
ModuleScienceExperiment
experimentID
- atmosphereAnalysis
- mysteryGoo
- crewReport
- seismicScan
- barometerScan
experimentActionName
Flavor text for contextual menu to describe to the player what the part does when collecting data
resetActionName
Flavor text for contextual menu to describe to the player what the part does when collecting data
reviewActionName
Flavor text for contextual menu to describe to the player what the part does when collecting data
useStaging
Boolean True/False - speficies whether this module can be activated through the normal staging system
useActionGroups
Boolean True/False - specifies whether this module can be activated by an Action Group
Boolean True/False - specifies whether this module will show its activation buttons through the contextual menu, even if it is not available
rerunnable
Boolean True/False. Defaults to false.
xmitDataScalar
0.35
FxModules
0 (gooExperiment)
dataIsCollectable
Boolean True/False
collectActionName
Flavor text
interactionRange
The range, expressed in meters, from which a Kerbal on EVA can interact with this module (for example to reset the experiment)
ModuleGrappleNode
nodeTransformName
- ArticulatedCap
deployAnimationController
- 1
nodeType
- size1
captureRange
- 0.05
captureMinFwdDot
- 0.866
captureMaxRvel
- 1
ModuleLight
lightName
spotlight landinglight
useAnimationDim
true or false
lightBrightenSpeed
2.5
lightDimSpeed
2.5
resourceAmount
0.4
animationName
LightAnimation
useResources
true or false
useAutoDim
true or false
ModuleLiftingSurface
deflectionLiftCoeff
0.3 (BSLmk2ScienceFuselage)
dragAtMaxAoA
0.15 (BSLmk2ScienceFuselage)
dragAtMinAoA
0.1 (BSLmk2ScienceFuselage)
ModuleAnimateGeneric
animationName
- Deploy
- CrewCabinLight
- dish
- dockingring for dockingPortShielded
- dockingporthull for dockingPortInline
isOneShot
- false
startEventGUIName
Flavor text to describe turning the animation to its 'On' State
endEventGUIName
Flavor text to describe turning the animation to its 'Off' State
actionGUIName
Flavor text to describe switching the animation between it's 'on' and 'off' states
allowManualControl
true/false. Defaults to true.
ModuleDataTransmitter
packetInterval
0.18, 0.4, 0.3
packetSize
2, 2, 2
packetResourceCost
20, 10, 12.5
requiredResource
ElectricCharge
DeployFxModules
0
ProgressFxModules
1
FXModuleLockAtConstraint
FlagDecal
textureQuadName
- flagTransform
ModuleAsteroid
no procedures or calls
ModuleDeployableSolarPanel
animationName
unknown for sure. Assumed to refer to an animation describing part transformation from its closed state to its open state. known parameters are:
- solarpanels
- solarpanels2
- solarpanels4
- altsolarpanelbase
- bigsolarpanel
sunTracking
Boolean argument. unknown purpose. Assumed to indicate whether the animation will turn the panel towards the sun.
raycastTransformName
optional. unknown. Known arguments:
- suncatcher
pivotName
optional. unknown. Known arguments:
- suncatcher
isBreakable
optional. unknown purpose, assumed to indicate whether the part will break on high-dynamic stress. true or false
resourceName
the resource provided by this module. Any resource may be used, including resources not defined.
chargeRate
Amount of resource provided per second at 100% output. Positive values only, please.
powerCurve
powerCurve is a special call consisting of subtypes called [key]. Each [key] uses four numbers to define what it will do at a specific distance from a source. In the case of solar panels, where powerCurve is typically used, there are typically 4 [key]s. [powerCurve] defines the rate at which resources are provided relative to the [chargeRate] and distance from the specified source (ie. Kerbol)
- 206000000000 0.00 0 0
- 013599840256 1.00 0 0
- 068773560320 0.50 0 0
- 000000000000 10.0 0 0
ModuleWheel
hasMotor
true or false
resourceName
ElectricCharge
resourceConsumptionRate
1.0
canSteer
true
controlAxisType
Forward
steeringModeType
AutomaticSteer TankSteer
brakeTorque
300
brakeSpeed
1.2
impactTolerance
2000
overSpeedDamage
60
WHEEL
wheelName
wheel
wheelColliderName
wheelCollider
suspensionTransformName
suspensionTraverse
suspensionNeutralPointName
suspensionNeutralPoint
damagedObjectName
bustedwheel
rotateX
0
rotateY
1
rotateZ
0
steeringCurve
keys, 0 16 10 9 30 2
torqueCurve
keys 0 250 0 0 20 100 0 0 30 14 0 0 34 0 0 0
FXModuleLookAtConstraint
CONSTRAINLOOKFX
targetName
rotatorsName
FXModuleConstrainPosition
matchRotation
true or false
matchPosition
true or false
CONSTRAINFX
targetName
steering
moversName
lateral
ModuleAnchoredDecoupler
anchorName
anchor
ejectionForce
450
explosiveNodeID
specifies the location of the explosion.
srf
surface of the attachment
ModuleDecouple
isOmniDecoupler
true or false. Specifies whether this decoupler separates on both ends or not. Defaults to false.
ejectionForce
specifies the DeltaV with which the part separates
explosiveNodeID
for non-OmniDecouplers, specifics the Node of separation
- top
- srf
MODULES POSSIBLY FROM MODS
defining a module has it's own problems, of course, and I'm no expert, but I did find this along the way:
MODULE:NEEDS[KAS]
for the module
KASModuleContainer
maxSize
specifies the size of the container relative to Kerbal Attachment System parts.
maxOpenDistance
sndStorePath
KAS/Sounds/hookBayStore
sndOpenPath
KAS/Sounds/containerOpen
sndClosePath
KAS/Sounds/containerClose
bipWrongSndPath
KAS/Sounds/bipwrong
INTERNAL
Internal specifies the internal files used to construct views from the IVA or internal vehicular activity, and are referenced out to the \Spaces\ directory of the relevant part mod. (Squad's internals are in \GameData\Squad\Spaces). INTERNALs have their own .cfg files with their own calls and methods that will not be discussed here. For details of these cfgs, please refer to #REDIRECT INTERNAL cfgs. Squad provides 9 INTERNALs as part of Stock KSP:
- crewCabinInternals
- cupolaInternal
- GenericSpace1
- GenericSpace3
- landerCabinInternals
- landerCabinSmallInternal
- mk1CockpitInternal
- mk1PodCockpit
- PodCockpit
RESOURCE
In parts files, [RESOURCE] refers to a resource that is stored by a part. Each stored resource must be separately defined by a [RESOURCE] call. Any resource may be stored, including those not defined.
name
name of the resource being stored
amount
amount of the resource initially provided. When dragged from the parts list to your vessel, this is the amount of the resource that it attaches with
maxAmount
This is the maximum amount of the resource that this part can store. I haven't tried it myself, but I wouldn't recommend setting amount higher than this.
isTweakable
In the parts file, I believe this is what prevents you from filling the part prior to launch
hideFlow
Prevents display of motion of resource transfer. Not sure why this would be important.
RESOURCE_DEFINITION
Resources are massively modifiable, but Stock KSP only comes with a few, and these are contained in squad/resources/ResourcesGeneric.cfg. Be extremely careful when modifying ResourcesGeneric.cfg, as it could have unintended side effects for your rockets. Resource definitions follow these conventions:
name
This is the name of the resource. Like the name of your part, it is restricted to one word with no spaces or underscores. This is how the resource is referred to in-game.
density
[density] is a numerical value between 0 and 1 used in calculations involving mass, storage capacity and units. Lower values mean lower densities, meaning you can get more units in a smaller space.
unitCost
[unitCost] defines the amount of Kerbits of value for each unit of the specified resource. Any number will do. Positive values indicate that you pay for the resource. Negative values have not been tested (yet), but it is assumed that negative values mean others will pay you to get rid of this resource. (Nuclear waste disposal, anyone?)
flowMode
[flowMode] defines how the resource moves throughout your vessel whenever the resource is requested by a particular part. There are 4 known methods of flow mode:
- STACK_PRIORITY_SEARCH
- NO_FLOW
- STAGE_PRIORITY_FLOW
- ALL_VESSEL
transfer
[transfer] is an optional method which specifies how and whether or not a resource may be manually transferred from one location on a vessel to another. There are two known methods of [transfer]:
- PUMP
- NONE
isTweakable
[isTweakable] is an optional, boolean method which specifies whether or not a resource may be assigned during construction. Defaults to true. The only accepted arguments are true and false.
EFFECTS
Thrust
AUDIO
clip
specifies the location of an audio clip to play during the specified thrust effect.
volume
?? 2-part array, used twice, once to specify a minimum volume, once to specify a maximum volume, relative to the game's volume settings
pitch
?? 2-part array, used twice, once to specify a minimum volume, once to specify a maximum volume, relative to the game's volume settings
loop
boolean, true or false, specifies whether to play the sound once, or to keep playing the sound as long as the specified effect is in operation