SimplePlanes Guide

The Ultimate Guide to Editing XML for SimplePlanes

The Ultimate Guide to Editing XML

Overview

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]

Feel free to look me up on the
SimplePlanes Website and Forum[www.simpleplanes.com]

Here’s a Link to My Profile[www.simpleplanes.com]

And here’s a link to this guide on the SimplePlanes forum[www.simpleplanes.com]

If following along with the Tutorial Aircraft, reference this key:

Tools

Before we get started there are some tools you should be aware of that are either required or extremely useful. Keep in mind that the only thing you really need is a text editor, the rest of these just make your life easier.

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).

Miscellaneous Tools and References

XML COLOR PICKER
Link to Website[www.google.com]
Description: This service powered by Google is an extremely easy way to determine the HEX code of every possible color in SimplePlanes. You know, that slightly grayer shade of medium-light greenish pink you’ve been dreaming of.

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:UsersYourUsernameAppDataLocalLowJundrooSimplePlanesAircraftDesigns 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

Introduction to 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 1 – NEVER delete the following symbols:

< > / = ,

(unless you’re deleting an entire property, explained later)

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.

Understanding and Navigating the .XML File

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.

Making Your Changes Take Effect

When you are in the SimplePlanes game editor and you make a change to your aircraft, the game program is writing lines of code into a temporary copy of the aircraft file that you have open. In order to make the change take place in the .XML file, you must save your build in the game then the game writes all of the changes you made into the .XML file we discussed above. The reverse is also true. If you want to change your aircraft by writing or editing the code yourself, you must type in the edits in the .XML file then save the document. Once it’s saved, you must re-load it into the game. You will be doing this a lot so I suggest using the keyboard shortcut CTRL+S for save in Notepad++.

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.

Finding the Right Part in the Code

To edit a part, we must first find it in the code. There are multiple ways to do this.

  • 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.

General Edits (Position, Rotation, Scale, and Mass)

So you know how to find parts and you know that you have to save before the changes take effect! In this section we’ll be making our first edits, starting out with a few that can be made to any part in the game, from blocks and engines, to wings and guns. Let’s get started!

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.

As promised above, if you couldn’t find the part, search for: id=”38″ partType=”Block-7″

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.

Introduction to Part-Specific Variables

Unlike position, rotation, scale, and massScale, not all variables can be applied to all parts. For example, rootLeadingOffset (which is a variable that only applies to wings and structural panels) will either do nothing or completely break your code and make it fail to load into the game if applied to an engine. Because of this, it is important to know what variables work with what parts. In the following section, I will describe some commonly used properties on the different partTypes in the game.

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.

  • fuel=”X” and capacity=”X”

    changing these values does nothing. If you want “infinite fuel” you need to see the section on fuel tanks.

  • 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.

Wings / Structural Panels

Refer to Tutorial Aircraft Row 2 Column 1 and part id=”40″ partType=”Wing-2″ in the .XML file. We will do something cool to this blue structural wing.

  • 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.

    In the control surfaces section:

  • start=”X” and end=”X”

    This can only be set to whole numbers from 0 to a variable max value. The max value is determined by the length of the wing. This determines at what position on the wing the control surface will start and stop (this is the width of the control surface, different from hingeDistance).

  • 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”

    determines if pressing throttle increase actually increases or instead decreases your throttle setting

  • 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”

    determines the size of engine exhaust graphics

  • 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”

    determines how angled the inlet opening is

  • 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

In the Rotator.State section:

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”? If they want to use the VTOL engine instead of some other engine for thrust but don’t want the nozzles to move

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”

    determines if the control input is inverted or not

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.

Wheels and Suspension

Refer to Tutorial Aircraft Row 3 Column 2, and XML part id=”46″ partType=”Wheel-Resizable-1″ to find the black wheel.

  • turningAngle=”X”

    determines how many degrees the wheel can turn

  • 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”

    determines if the input is inverted or 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”

    determines the strength and stiffness of the suspension. Measured in percentage in decimal format.

  • 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”

    determines how fast the wheel can turn

  • 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.

  • slipForwardExtremum=”X” and slipSidewaysExtremum=”X”

    need further information

  • slipForwardAsymptote=”X” and slipSidewaysAsymptote=”X”

    need further information

  • tractionForward=”X” and tractionSideways=”X”

    need further information

  • 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”

    need further information

  • 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”

    determines if the piston can break if too much force applied

  • 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”

    determines how fast the piston extends and retracts

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”

    determines how fast the rotator rotates

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”

    determines size of parachute

  • style=”ABC”

    this should just be edited in-game

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”

    how many bullets are fired before there is a delay

  • timeBetweenBursts=”X”

    how many seconds to pause during delay

  • muzzleVelocity=”X”

    how fast the bullets travel

  • roundsPerSecond=”X”

    how fast the fun shoots

  • 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”

    determines the size of the bullets

  • 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”

    refer to colors/materials section to learn about changing colors

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

The in-game paint selections (palette) are numbered as follows:

0, 1, 2, 3, 4 5, 6, 7, 8, 9 10, 11, 12, 13, 14

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.

FINDING THE HEX CODE

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].

CHANGING THE COLOR

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]

ADDING THE COLOR TO A PART

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.

COLORING ENGINE EXHAUST

Find the following: exhaustStartColorOverridePrimary in your XML file.

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.

COLORING WEAPON TRACERS

Refer to Tutorial Aircraft part id=”54″ again, the purple gun.

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.

Connections

Coming soon.

Tips and Tricks

Converting Image Measurements (MB-Ruler) to SimplePlanes Dimensions

Coming Soon

Scaling Engine Performance to Realistic Values

Coming Soon

Reference Material

List of partType Identifiers

Coming Soon

Conclusion

I hope you have gotten some value out of this guide. If you followed along and practiced as we went you should now have the tools and skills to do anything that can be done in SimplePlanes. This should also serve as a guide to refer back to if you forget what a variable does or how it is used. Thanks to everyone who has helped me out along the way and be sure to let me know if you have questions – I’ll do my best to help out.

Regards, Av8r

My SimplePlanes Profile[www.simpleplanes.com]
Link to This Guide on the SimplePlanes Forums[www.simpleplanes.com]

Credits

  • Get your name in the credits if you help find mistakes, suggest clarifications, or provide new information for me to add!
  • Thanks to everyone who has helped me along the way since I started playing SimplePlanes
  • @HellFireKoder for making Fine Tuner
  • @WNpP78 for making Overload
  • @NathanMikeska for clarifying R, M, S values
  • @Joco80 for tip about massScale’s effect on missile speed

Changelog

Version 1.3.0 / 1.3.1 (Steam) Added note about massScale effect on missile speed Version 1.2.0 / 1.2.1 (Steam) Reflectivity, Metallic, Smoothness (R, M, S) clarification Version 1.1.0 / 1.1.1(Steam) Formatting, added guide to Steam Version 1.0 Original Release on SimplePlanes Forum
SteamSolo.com