XML Edit Funky Tree
XML Edit Funky Tree
By AV8R
So you want to make that scaled detailed replica of your favorite airplane, or maybe you just want to
double the thrust of an engine. Perhaps you want an airplane to have a huge wing in the back for looks
but don't want to change the plane's aerodynamics? Would you like to make a gun that fires huge
bullets really slowly, or maybe turn it into a Star Wars laser cannon? Would you like to change parts into
colors that aren't available on the paint pallete, rotate parts in increments other than 90 degrees, make
a fuselage longer than 5 or shorter than 0.25, change the mass of a part (or reduce it to 0)? You can do
all of this and more by editing your aircraft's .XML save file in a simple text editor, and if you're willing to
learn I'll happily teach you how to do it.
Introduction
Version 1.3.1
Throughout this guide, I make frequent references to a tutorial build which you can
Download Here[www.simpleplanes.com]
In-game mods
FINE TUNER
Download Link [www.simpleplanes.com]
Creator: @HellFireKoder
Description: This mod allows you to do some simple .XML edits without having to tab out of the
game. It is not capable of performing everything in this guide, but for simple positioning, rotation,
and scaling of parts this is a must-have in my opinion.
OVERLOAD
Download Link [www.simpleplanes.com]
Creator: @WNP78
Description: This mod serves as an in-game tool to edit various .XML properties of parts. I have not
started using it yet so I can't speak to its effectiveness, but it is positively reviewed so if you learn to
use it your time would probably be well spent.
Programs
NOTEPAD++
Download Link [notepad-plus-plus.org]
Description: This program is my personal favorite source code editor and Notepad replacement. It
helps you to identify code blocks found in an .XML file by coloring text portions to help you keep
your place, notice mistakes, and quickly replicate common entries. This is the program that I use to
edit my .XML and it is the program that I recommend you use as well, but if you have another
preferred program feel free to use it instead (let me know what your favorite is!).
MB-RULER
Download Link [www.markus-bader.de]
Description: This program is infinitely useful for creating scaled replicas by using an on-screen ruler
to perform measurements of images. In the Tips and Tricks section I describe a method to use this
program and a simple math equation to convert measurements taken from an image into
SimplePlanes dimensions (useful for creating scaled replicas).
TUTORIAL AIRCRAFT
Download Link[www.simpleplanes.com]
Description: This is the build I am making as I write this guide. You may download it from the link
above if you wish to follow along in the same file I am working with.
Locating and Opening Your Aircraft's .XML File
Press WINDOWS+R to open the Run command and type the following: "%appdata%" without
quotations. Click "OK" then navigate to C:\Users\YourUsername\AppData\LocalLow\Jundroo\
SimplePlanes\AircraftDesigns If you downloaded the Tutorial Plane, find the file titled, "XML Editing
Tutorial by AV8R.xml" then Right Click > "Open With" > Notepad++. This will open the XML file in
the Notepad++ editor.
Note: If you didn't download the Tutorial Plane, open whatever plane you want to edit in the same
way. If you didn't download Notepad++, open the file in your chosen text editor.
Note: You may also open Notepad++, click File > Open, then navigate to the same directory listed in
3.2.1.0 and select your aircraft that way. Both work equally well.
First Look at the XML File
If this is your first time opening a document containing code, believe me I understand how
overwhelming it looks, but trust me, if you follow along I will prove to you it is not as complicated as
you think! You do not need to be a programmer to be able to edit your aircraft's part properties in the
.XML file!
First, without going into computer coding language too much, we need to understand some
extremely basic principles that will prevent us from breaking the code's syntax and allow us to edit
the important stuff (like block position) without accidentally making the code stop working.
RULES:
Rule 2 - ONLY edit text inside of quotation marks (unless you are adding or removing an entire
property, explained later)
Rule 3 - BACKUP OFTEN! If you make a mistake and break the code's syntax, you have exactly two
options: Find and fix the mistake that broke the code, or revert to your last working save. For this
reason, especially while you're new to this, I recommend making a backup of the file you're working
with at regular intervals. This is simple, just save the .XML file as "YourAircraftName 2.xml" for
example. Now go back to editing the original file and your backup will sit there in safety for you to
come back to if you accidentally delete something that you can't find.
When you open the file you will see a bunch of text. Think of this like an outline from top to bottom.
First we have the entire "Aircraft" code (from top to bottom) which contains the "Assembly" code and
the "Theme" code. Inside of the "Assembly" code are the "Parts", "Connections", and "Bodies"
sections. Lastly, inside of the "Theme" code is the "Materials" section.
Code Organization:
Header information (ignore this) Aircraft Assembly Parts Part 1 Part 2 Part 3 etc. Connections
Connection 1 Connection 2 Connection 3 etc. Bodies Body 1 Body 2 Body 3 etc. Themes Material 1
Material 2 Material 3 etc.
Luckily for us, 99% of the time we are only going to be interested in editing individual parts of the
aircraft and changing colors. Because of this, we can skip straight to the "Parts" section of the code
(or down to the "Materials" to edit colors, more on that later) and just ignore the rest!.
If you've read this far, then congratulations, you're ready to start learning the fun stuff! For each of
these steps, if there is a corresponding example in the Tutorial Aircraft I will annotate it as such. Let's
get down to business.
Example 1: If I add a block to my build then tab out to the .XML file that I have open, nothing at all
will have changed. But as soon as I save my aircraft in the game, when I tab out to the .XML file, I
will see new lines of code in the parts section showing that a new block was added to the file.
Example 2: Additionally, If I change some text in the XML file then tab into SimplePlanes, nothing at
all will have changed. But as soon as I save the changes to the XML file, then reload the plane in
SimplePlanes, I will see that the changes have taken effect in-game.
Method 1: The parts are written in the code in sequential order as they are added in the
game editor. If I add a new wing to my plane, that wing will be at the very bottom of the
parts section (newest = lowest) which makes it very easy to find parts if I edit them right
after I add them in the game editor.
Method 2: Look at the partType, which looks like this: partType="XXXX" It's easy to find, for
example, the engine of my airplane if I only have one engine! Simply CTRL+F > Type
"engine" > then click next until you find the section of code talking about
partType="engine..."
Method 3: Paint the part using the very last color on my paint palette. The colors you have
selected as your paints are the "materials" which we will talk about later. What you need to
know now is that they are numbered 0-14 in order from top left to bottom right. Using this
piece of information, if I paint a part with the very bottom right color in the paint options, I
can then find the part in .XML by doing the following: CTRL+F > type materials="14 > then
click Find to scroll to the part that is painted color #14. This is useful when you're trying to
figure out which one of the 100 different fuselage blocks is the one you actually want to
edit.
POSITION
Refer to Tutorial Aircraft Column 1 (left-most) Row 1 (top-most). Let's move that red block to a new
position without disconnecting it from it's connection on the fuselage. For this one I will tell you the
part's id number so you can easily find it. CTRL+F > type id="36" and search. We will be editing
id="36" partType="Block-1"
In order to move a part, we will be changing the values of the position variable. In that line of code
find: position="-5,2.5,5.375" These are the X,Y,Z coordinates of that block. X is left and right, Y is up
and down, and Z is forward and backwards. The coordinates are given in units of a block length and
are measured from the center of the "aircraft" bounds (not necessarily the center of mass). In this
example, our red block is 5 blocks left of center, 2.5 above center, and 5.375 forward of center.
Change the text so it reads: position="-6, 3.5, 5.75" then save the file. Now reload it in SimplePlanes
and you will see that the block has moved to the left one block, up one block, and forward one half
block from its old location. Experiment with this until you're comfortable with the coordinate system!
ROTATION
Refer to Tutorial Aircraft Row 1 Column 2. Let's rotate that orange structural panel. Hint: it is orange,
which is material (color) number 4 in the Tutorial Plane's color selection. Let's type CTRL+F > type
materials="4 and search. You should be directed to a line of code with id="37" partType="Wing-2" in
it. Notice the partType is sort of deceptive - the part type doesn't necessarily match what the part is
called inside the game editor!
In order to rotate a part, we will be changing the values of the rotation variable. In that line of code
find: rotation="0,0,0" These are the number of degrees of rotation around the X, Y, and Z axes of
that block. Positive is clockwise, negative is counter-clockwise. This might be confusing at first if
you're not familiar with the coordinate system and rotation about an axis, but if you think of it as
follows you'll figure it out no problem: Remember the X axis is left and right. Imagine hanging a roll of
paper towels on that axis, now if you roll those paper towels clockwise, that's a positive rotation
around the X axis (like the aircraft "pitching"). The Y axis is up and down, so if you roll the paper
towels counter clockwise on that axis that's a negative rotation about the Y axis (it's like the aircraft
"yawing"), and the Z axis is front to back, so a rotation about the Z axis is like the aircraft "rolling." If
you're having a hard time catching on, just try a rotation and if it isn't right, change it back and try
again in a different axis!
Change the text so it reads: rotation="10,23.5,-5" then save. Now reload it in SimplePlanes and you
will see that the block has rotated clockwise 10 degrees in the x-axis, clockwise 23.5 degrees in the
y-axis, and counter-clockwise 5 degrees in the z-axis.
It is important to know that, for example, a -5 degree rotation is the same as a 355 degree rotation.
It's the same thing as turning left 5 degrees or turning right 355 degrees, the result is that you are
pointing the same direction either way. SimplePlanes will always change negative rotations to
positive ones (ex. changing -5 to 355) when saved from the in-game editor.
SCALE
Refer to Tutorial Aircraft Row 1 Column 3. Let's scale that yellow curved block. See if you can find
the part on your own, but if you can't I'll put its part ID at the bottom of this section.
In order to scale a part, we will be changing the values of the scale variable, scale="X,Y,Z" In this
case, this is multiplying the dimensions of the selected block (eg. X times bigger in the x direction, Y
times bigger in the y direction, and Z times bigger in the z direction). You will notice that this block
does not come with a scale variable by default! Not to worry, all parts in SimplePlanes can be
scaled, even though they don't all have it in their line of code by default.
Pick any of the spaces in the first line of code for the block and type: scale="1,2,0.75" For example,
you can make it look like this: ... rotation="0,0,0" scale="1,2,0.75" drag="0,0,0,0,0,0" ... Save the file
and load it in SimplePlanes. You will see that the block is the same width (One times the length in
the X axis), it's twice as tall (2 times the length in the Y axis), and it's 75% or 3/4 as long in the Z
axis.
Note: This is NOT the same as frontScale and rearScale in fuselage blocks, fuselage intakes, and
wings! Think of this as "the big scale" - it takes whatever other values for size your block has and
multiplies them by your scale values. I'll cover variables specific to fuselages, wings, and fuselage
intakes later on.
MASS
Refer to Tutorial Aircraft Row 1 Column 4 and Part id="39" in the .XML file. Let's make that little
green cockpit block VERY heavy! (Then we'll make it weightless).
To edit the mass of a block, we'll be changing the values of the massScale="X" variable. In this case,
X is a multiplier of the default mass of the block, including all of its contents (such as fuel in a
fuselage).
In one of the spaces in the first line of code, type: massScale="100" for example, it might look like
this: drag="0.262,0.262,0.0076,0.0076,0.0984948,0.1264387" massScale="100" materials="5,5,5"
Now save and load it in SimplePlanes. You will see that our little cockpit that used to weigh 110 lbs
now weighs 11,000 lbs.
Guess what happens if we change it to massScale="0"? That little cockpit is now weightless!
Congratulations! You now know how to edit the position, rotation, scale, and mass of any block in
SimplePlanes. This is just the beginning, but these are powerful tools that allow you to do things that
wouldn't be possible in the standard game editor. Many of these general edits can be very easily
accomplished using in-game mods like Fine Tuner, but I explained them in detail here because
understanding the concept of these edits will make learning the rest of them a breeze. All of the edits
you will make in the game involve one or more of the concepts you have learned above. You will
either change a number to a different number, change a true to false (or vice versa), or add a whole
new phrase to the line of code which gives the part a new property. In the following section I will
explain variables for various part types.
Fuselage Blocks
Refer to TutorialAircraft Row 1 Column 5. This is the Fuselage Block that I painted a very sexy hot
pink which just happens to be color #14 on the color palette. Find materials="14" to locate this
Fuselage amongst all of the others in the file. Again, if you can't find it I have listed the ID below this
section.
frontScale="X,Y"
this is the width and height of the front face of the fuselage body measured in units of
block length. The in-game editor limits you from 0.25 to 5, but with XML editing you can
make it whatever dimensions you want.
rearScale="X,Y"
the same as frontScale but for the back face of the fuselage
offset="X,Y,Z"
this is the RUN, RISE, and LENGTH of the fuselage measured in block lengths. These
values are locked at -2.5 to +2.5, -2.5 to +2.5, and 0.25 to 5 respectively in the game
editor, but with XML editing you can make them whatever dimensions you want.
deadWeight="X"
this is the amount of dead weight in pounds you want the fuselage block to hold. This
value is locked at 0-1000 in the game editor but you can make it any positive value with
XML (negative dead weight doesn't work).
buoyancy="0"
this is how "floatable" the block is. Admittedly I've never made a float plane or boat, so I do
not have experience editing this value. Surely someone better at this than me can
enlighten us all!
fuelPercentage="X"
where X is a value from 0-1 in decimal format, eg. fuelPercentage="0.7" means the
fuselage is 70% full of fuel. Overall worthless since this can be edited from 0-100 in game
and putting it above 1 in XML does nothing.
cornerTypes="0,0,0,0,0,0,0,0"
changes individual corners to different versions (like circle, round, hard, smooth). You can
do this in the editor so this is only useful if you want to have two fuselages connected
together but not have the same corners, such as a hard corner attached to a circular
fuselage.
Exercise: Edit this block so that the frontScale="0,0" rearScale="7,0.1" offset="1.2,3.4,5.6789" then
save the file and load in SP.
angleOfAttack="0"
According to the developers, this is a remnant of an old version of the game and no longer
does anything.
airfoil="ABC"
Reflects the choice of Symmetric, Semi-Symmetric, or Flat Bottom - just edit this in-game.
inverted="true/false"
determines if the wings aerodynamics are producing lift toward the top or bottom of the
wing.
wingPhysicsEnabled="true/false"
determines if the wing is used in the calculation of lift or not (set to false if you want to use
a wing for decoration but don't want it throwing your center of lift out of whack).
rootLeadingOffset="X" / rootTrailingOffset="X" /
tipLeadingOffset="X" / tipTrailingOffset="X"
this is the distance from the wing's tip or root's connection point (the little nub you see in
the editor) to the corner. Example: tipLeadingOffset is the distance from the tip's
attachment point to the tip's forward corner of the wing.
Important! Wings are weird. For some reason their values are doubled in the editor
compared to fuselages. So if you want the root's trailing corner to be 2 blocks behind the
attachment point, you would input a value of rootTrailingOffset="1"
tipPosition="X,Y,Z"
this is the location of the tip's connection point relative to the root's connection point in the
format "Dihedral, Wing Length, Forward/Back" Note, as above the input here should be
half of what you actually want in game. If you want the tip to be 2 blocks above the root,
the wing to be 2 blocks long, and the tip to be 2 blocks behind the root, it would look like
this: tipPosition="1,1,-1"
hingeDistance="x"
this is the percentage of the wing that should be used as a control surface written in
decimal format. Example: If you want the wing to be 60% fixed and 40% control surface,
you would use: hingeDistance="0.4"
allowControlSurfaces="true/false"
this one is HUGE! Use structural wings for their strength then set this value to true to be
able to add control surfaces to them, something you can't do in the in-game editor.
inputId="X"
determines what input makes the control surface move. Can be set to roll, pitch, yaw, vtol,
or landingGear
invert="true/false"
determines whether or not to make the control surface do what you tell it to or do the
opposite. This is NOT the same as the "inverted" variable above!
maxDeflectionDegree="X"
determines how much the control surface can move in degrees when given an input.
Default value is 35 degrees. Use this to make a control input make bigger or smaller
pitches/rolls/yaws. Setting it too high is usually bad (I actually usually turn this value down
some).
activationGroupLocksInput="true/false"
This determines if the control surface will remain locked in place if you turn off its
activation group while a control input is made. Example: activationGroupLocksInput="true"
and you set your elevators to AG1. You pull up hard to do a loop and disable AG1. Now
your plane is going to keep doing loops because you have locked the pitch input in place
until you turn AG1 back on to make a new control input.
trim="on/off"
does what you think, you can change this in the in-game editor so no reason to mess with
it here.
Exercise: On the blue structural wing, enable control surfaces and add a control surface from
start="1" to end="2" with hinge distance=".5" that has inverted roll control response but NOT inverted
aerodynamics. Also give the wing a 3 block positive dihedral and disable wing physics. Be careful
with the dihedral, remember to only put in half of what you want for wing measurements!
Engines
Refer to Tutorial Aircraft Row 2 Column 2, and XML part id="41" partType="Engine-Jet-1" to find the
dark blue jet engine.
invert="true/false"
min="X"
determines what the starting thrust of your engine is (effects "spool up" time)
max="X"
determines what the full throttle thrust of your engine is after it has fully spooled up to max
power. The bigger this value is the more power the engine will have but the longer it will
take to go from 0 thrust to max thrust and vice versa. Making this value very large will
cause your engine to be very powerful but take a very long time to reach full power.
input="ABC"
set to throttle, pitch, roll, yaw, brake, trim, landingGear, or VTOL to determine what input
will change your throttle
powerMultiplier="X"
takes the thrust that is calculated based on your engine type and "max" setting then
multiplies it by this value. Use this to make really weak or powerful engines and use it to
fine tune engine performance to give you the speeds you want.
exhaustScale="X,Y,Z"
exhaustStartColorOverridePrimary="FFFFFFFF"
determines color of exhaust. Refer to colors/materials section to learn about changing
colors.
Exercise: Edit the dark blue engine to respond to a pitch input, max="5" powerMultiplier="0.2" and
exhaustScale="2,2,2" Now go test this engine out and see how long it takes to reach full power.
Fuselage Inlet
Refer to Tutorial Aircraft Row 2 Column 3, and XML part id="42" partType="Fuselage-Inlet-1" to find
the purple fuselage inlet. For the most part the properties of this part are the same as for a fuselage
block. The difference being the addition of some options to edit the inlet properties.
inletSlant="X"
inletTrimSize="X"
determines how long the paintable second color portion of the inlet is
inletThicknessFront="X"
determines how thick the wall of the inlet is at the front of the inlet (the opening)
inletThicknessRear="X"
determines how thick the wall of the inlet is at the rear of the inlet (toward the closed back)
VTOL Nozzle
Refer to Tutorial Aircraft Row 2 Column 4 and XML part id="43" partType="ThrustPort-1" to find the
white VTOL nozzle.
min="X" / max="X"
determines amount of degrees the nozzle can rotate when given an input
enabled="true/false"
determines if the nozzle can rotate or not
Exercise: Edit the nozzle to respond to a pitch input instead of a VTOL input and only travel from
min="0" to max="30" Why might someone be interested in using rotator.state enabled="false"?
RCN
Refer to Tutorial Aircraft Row 2 Column 5, and XML part id="44" partType="ReactionControlNozzle-
1" to find the dark grey RCN nozzle.
autoAssignType="true/false"
determines if it lets the game decide to make it pitch, roll, or yaw based on it's location on
the plane
reverse="true/false"
Fuel Tanks
Refer to Tutorial Aircraft Row 3 Column 1, and XML part id="45" partType="FuelTank-1" to find the
light grey fuel tank.
fuel="X"
determines how much fuel is in the tank. Number must be less than or equal to capacity,
so you need to increase the value of both of them to add a bunch of gas.
capacity="X"
determines what the maximum amount of fuel that can be put into the tank is.
turningAngle="X"
engineId="X"
determines which car engine powers the wheel. Set this value equal to the part id of the
car engine (easiest to just do this in the in-game editor).
direction="Normal"
size="X"
determines how large the diameter of the wheel is, measured in block length.
width="X"
determines how wide the wheel is, measured in percentage of the default value. Example,
0.5 is 50% and 2.3 is 230%
tire="ABC"
determines what type of tire is on the wheel, easiest to select this in the in-game editor
damper="X"
determines the amount of damper is in the suspension. Damper is how well the
suspension stops the bouncing/wobbling moments of the suspension. Measured in
percentage written in decimal format, Example: 0.5 is 50% and 2.3 is 230%
spring="X"
enableSuspension="true/false"
determines if the wheel has built-in suspension or not. If set to true, it uses the damper
and spring values above. If set to false, damper and spring values do nothing.
enableAutoTraction="true/false"
determines if the wheel will use default traction values or manual values below, false
causes the traction and slip values below to take effect
turningRate="x"
brakeTorque="X"
determines how hard the brakes exert force on the tire. A low value will cause you to
brake slowly but not lose traction, a high value will cause you to brake hard but possibly
lose traction and skid.
flipped="true/false"
this is a landing gear only variable and determines if the graphic is mirrored or not, mainly
useful for "read landing gear" to make them extend down and left vs. down and right.
Cockpit
Refer to Tutorial Aircraft bottom center, XML part id="1" partType="Cockpit-1" to find the blue and
white cockpit.
primaryCockpit="true/false"
determines if this is the cockpit that will be used for "cockpit view." The primary cockpit
cannot be deleted, and if the primary cockpit is removed from an aircraft everything else in
the editor will turn gray and move like a subassembly.
Cameras
Refer to Tutorial Aircraft Row 3 Column 3, and XML part id="47" to find the grey camera.
viewMode="ABC"
determines what type of camera view it has. Default value is FirstPerson, can be set to
Orbit, Chase, and FlyBy. Requires proper capitalization (orbit doesn't work, but Orbit does)
autoOrient="true/false"
determines if, when you switch to the camera, you keep your old camera rotation or
automatically turn to face the camera direction
lookAtCockpit="true/false"
determines if the camera will automatically point your view toward your primaryCockpit or
not
autoZoomOnCockpit="true/false"
autoCenterCamera="true/false"
determines if the camera view returns to default value after you stop looking around
Lights
Refer to Tutorial Aircraft Row 3 Column 4, and XML part id="48" partType="BeaconLight" to find the
red beacon light.
designerBlinkProgram="ABC"
determines if the light is steady, slow blink, or fast blink. Easiest to change in-game.
showHalo="true/false"
determines if the light will have a halo effect around it or not. For example, you might want
this to be false if it is a light inside a cockpit that the viewer is looking at up close, but want
it on for an external light that will be seen from further away. Purely for looks.
Shocks
Refer to section on Wheels/Suspension for spring and damper variables. Nothing here that hasn't
been covered already.
Pistons
Refer to Tutorial Aircraft Row 3 Column 5, and XML part id="49" partType="Piston" to find the
orange piston.
min="X" / max="X"
multiplies the range value to determine travel distance of the piston when activated
preventBreaking="true/false"
cycle="true/false"
determines if the piston will repeatedly extend and retract over and over or not.
extend="true/false"
determines if the piston starts closed and extends when activated, or starts extended and
retracts when activated
range="X"
determines the range of the piston when fully extended. This value is multiplied by
max="X" to determine range.
speed="X"
Detachers
Refer to Tutorial Aircraft Row 4 Column 1, and XML part id="50" partType="Detacher-2" to find the
yellow detacher.
detachForce="X"
determines how much force is exerted on the item being detached. The higher the value,
the harder the item is "shot" away from the detacher.
detacherUiMaxForce="X"
need further information
Rotators
Refer to Tuttorial Aircraft Row 4 Column 2, and XML part id="51" partType="JointRotator-1" to find
the green rotator.
min="X" / max="X"
multiplies the value of range="X" to determine how many degrees the rotator can travel in
the negative (min) and positive (max) directions. Increase both of these values to a very
high number to make "infinitely spinning rotators"
range="X"
determines how many degrees the rotator can turn in each direction. Multiply this value by
min and max to get the final value.
speed="X"
Air Brakes
Refer to Tutorial Aircraft Row 4 Column 3, and XML part id="52" partType="AirBrake-1" to find the
light blue air brake
min="X" / max="X"
determines range of travel
Parachutes
Refer to Tutorial Aircraft Row 4 Column 4, and XML part id="53" partType="Parachute-1" to find the
dark blue parachute.
size="X"
style="ABC"
Weapons
Guns
Refer to Tutorial Aircraft Row 4 Column 5, and XML part id="54" partType="Gun-2" to find the purple
gun.
ammoCount="X"
appears to do nothing
burstCount="X"
timeBetweenBursts="X"
muzzleVelocity="X"
roundsPerSecond="X"
bulletWeightKg="X"
I think this value is multiplied by ammoCount to determine the weight of the ammunition in
the gun, but it might also effect bullet drop as well. Need further information.
bulletCaliber="X"
spread="X"
determines how accurate the bullets are, bigger numbers make bullets spray all over the
place, smaller numbers make the bullets more accurate
tracerColor="X"
Rockets
To my knowledge there are currently no unique XML edits that can be made to rockets
Bombs
To my knowledge there are currently no unique XML edits that can be made to bombs
Missiles
To my knowledge there are currently no unique XML edits that can be made to missiles
However, if you edit the mass with massScale="X" to a value lower than 1, the missiles will travel
faster because they weigh less
Miscellaneous Variables
These variables just didn't belong in any other category, but were important to mention.
disableAircraftCollisions=true/false"
must be added to an empty space in the top line of part code, when set to true this allows
parts to clip through eachother without causing an impact. Use this to rotate items inside
of eachother, create landing gear, shoot missiles from inside your planes, etc.
drag="U,V,W,X,Y,Z"
you can edit these values and it will load into SP, but the game will automatically
recalculate them as soon as you press play, so in effect they do nothing.
Colors / Materials
NUMBERING
In the aircraft save file, the colors are saved at the bottom in the materials section in order from top
to bottom, starting at 0. There are 4 extra colors after these in the list that are not accessible from
inside the editor. To my knowledge, it is possible to have as many colors as you want, but after the
first 15 (0-14) you can only use them if you edit them in the XML.
Colors are saved in "HEX" format, which is one method of describing color mathematically. The
easiest way to find the hex code for your desired color is to use an online tool to pick the color from a
display and it will tell you what the hex code is. Here is a Link to one powered by
Google[www.google.com].
Say we want to change the very first color in our paint pallete to a greyish pink. Using the color
picker by Google, I determine that the hex code is: "a897a2" So in the first "material" line I change
color="FFFFFF" to color="a897a2" and save. Now when I load the file in SimplePlanes, my first color
will be that greyish pink.
EDITING R, M, AND S
In addition to editing the color, it's also possible to edit other properties, such as the reflectivity,
metallic, and smoothness. These values range from 0-1 and the best thing to do is just mess with
them, changing one at a time and seeing what effect it has. For making super glossy cockpits, my
personal settings are r="0.35" m="1" s="1". According to the developer, @NathanMikeska,
reflectivity isn't really used anymore and more information on these values can be found here.
[docs.unity3d.com]
Once you've got your paint palette set up, you can easily change the paint of any part in your XML
file by finding the materials="X" variable. If there are multiple numbers, such as materials="1,13,0"
they are listed in order of "primary, trim1, trim2, etc" All you need to do is edit the values to the
number corresponding to your intended color in the materials list (numbered starting at 0 from top
down). Save and load into SP.
Engine exhaust still uses HEX to determine the color, but there are two extra digits at the end (8
total). Find the first six digits in the same way you found the HEX code for painting any other piece.
Technically, the last 2 digits should be for transparency, but as far as I can tell they have no effect.
(Some useful numbers, in case they are found to have effect: 00=0%, 80=50%, FF=100%).
For our example engine in the Tutorial Aircraft, part id="41", find
exhaustStartColorOverridePrimary="FFA400FF" Let's make the exhaust red instead of the default
color. Using the color picker I determined that pure red color in hex format is FF0000. So edit the
variable to say exhaustStartColorOverridePrimary="FF0000FF" (we're just ignoring the last 2 digits),
save and load into SP. The exhaust should now be bright red.
Find tracerColor="FFED00" To change the color of the tracers, simply replace FFED00 with your
chosen hex color (see section 4.6.2.0), save and load into SP.