Search the Community

Showing results for tags 'tutorial'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Announcements
    • The Daily Kerbal
  • General KSP
    • KSP Discussion
    • Suggestions & Development Discussion
    • Challenges & Mission ideas
    • The Spacecraft Exchange
    • KSP Fan Works
  • Gameplay and Technical Support
    • Gameplay Questions and Tutorials
    • Technical Support (PC, unmodded installs)
    • Technical Support (PC, modded installs)
    • Technical Support (PlayStation 4, XBox One)
  • Add-ons
    • Add-on Discussions
    • Add-on Releases
    • Add-on Development
  • Community
    • Welcome Aboard
    • Science & Spaceflight
    • Kerbal Network
    • The Lounge
  • International
    • International
  • KerbalEDU Forums
    • KerbalEDU
    • KerbalEDU Website
  • KSP Pre-release
    • 1.2.9 Pre-release Branch
    • 1.2.9 Pre-release Modding Discussions
    • 1.2.9 Pre-release Bug Tracker

Categories

  • Developer Articles

Found 47 results

  1. A replacement for stock engine particle FX. If you are tired of seeing the same old effects, HotRockets is for you! Note: SmokeScreen + ModuleManager are required dependencies. Download the legacy version here (compatible with KSP 1.1): Download HotRockets Note that HotRockets is primarily my set of replacements for stock engines. I no longer support FX packs for mod engines, but you are able to use the HotRockets assets for your mods. Many mods now make use of HotRockets assets to improve engine FX; some will add support for mod engines, and some have additional features for stock and mod engines such as resized plumes or easily added preconfigured effects. Mods using HotRockets art assets Kerbin Shuttle Orbiter B9 Aerospace Space Shuttle System Realplume Realplume stock configs Mods with HotRockets support for new engine parts Vens Stock Revamp License: HotRockets Art Assets: http://creativecommons.org/licenses/by-nc/4.0/ Powered by SmokeScreen + ModuleManager(by Sarbian): http://opensource.org/licenses/BSD-2-Clause Screenshots of HotRockets effects in-game: -------------- Basic guide for getting custom particles functioning in the game The method for getting custom engine FX working is fairly simple with the new system, but unfortunately was not covered by an official tutorial on the forum. This will be a small guide for getting them working in game and it will leave the details of the effect up to you. Note: the effect being animated like a heat effect is not necessary with the ModuleEnginesFX system. 1) Game objects Create an empty game object at the origin that you will use for exporting. This will have a partTools component on it that you will use to write the .Mu file to your FX folder. Create an empty object as a child of the exporter object. This object will have the KSPParticle Emitter script on it. I call mine 'emit'. This allows you to easily tweak the position of the effect within the actual exported object. I also make an additional object and name it smokePoint so I am able to move the smoke transform away from the flame transform, but this is not required. 2)Texture Create a new material for each effect you make. This will ensure you don't overwrite the properties of another effect you have. I work with all of my effects in one unity scene by duplicating exporter objects and changing what I need to, so once I duplicate an effect, I create a new material in Unity and add a texture to it. Assign your material to the particle effect using the "Material" property on your KSPParticle Emitter. To create the appearance of a glowing flame, you will need to use the KSP/Particles/Additive shader. Create a 256x256 or smaller image file with alpha that you can use for the effect. Creating the actual image file is fairly straightforward if you look at the current files being used, but I will say that for a transparent additive effect even your strongest colors must have extremely low alpha, almost making the effect invisible. To create a smoke effect, you will want to use Alpha Blended instead of the additive shader. 3) Parameters on the KSPParticle Emitter This is how you will control the style of the effect you make. It will most likely require a lot of small changes and reloading the game to see your effect, because it will not look the same in Unity. So enjoy experimenting =). A couple important ones: Simulate World Space - this parameter, if unchecked, will keep your effect local to the transform it's on. This is how you create a flame that looks like one cohesive effect, and not something that sprays in every direction or curves. While you would use this for smoke, having an effect with the box checked in addition to one without it will cause HUGE errors in the current version of KSP, and is the reason my effects use stock smoke right now. Nothke and I spent tons of time trying every method to get around it, but a plugin or fix by Squad seems to be necessary, and I am not a plugin creator. Energy - the lifetime of your particles. With the current system, this seems to be one of the parameters along with growth that can only be changed in the Unity editor. Emission - amount of particles emitted. Use as low an amount as possible while achieving the effect you want. I have used ranges near 150 or as high as 350 for my FX. Shape - controls the shape of the emitter, mine use Ellipsoid. Local Velocity - you will want at least 10+ velocity on Z for a fast looking effect. Most of the other parameters are something that just needs be be experimented with to get the style you want. Try animating the color of your effect, and lowering the alpha as it progresses through each color. Shadows - all of my effects have Casting and Receiving unchecked. When you think you have the parameters set the way you want, select the PartTools object and click "write" to export the .Mu file and texture to your chosen folder. 4) Game configuration file For adding an effect into the part config for an engine, I will typically comment out each line of the old effects, preserving them if needed, then highlight the following lines in the config MODULE { name = ModuleEngines thrustVectorTransformName = thrustTransform and paste this to replace them: EFFECTS { powerflame { MODEL_MULTI_PARTICLE { name = flamethrust modelName = MP_Nazari/FX/flamestandard transformName = thrustTransform emission = 0.0 0.0 emission = 0.05 0.99 emission = 0.75 1.21 emission = 1.0 1.25 speed = 0.0 1.70 speed = 1.0 1.65 } AUDIO { channel = Ship clip = sound_rocket_hard volume = 0.0 0.0 volume = 1.0 1.0 pitch = 0.0 0.2 pitch = 1.0 1.0 loop = true } } powersmoke { PREFAB_PARTICLE { name = flamethrust2 prefabName = fx_smokeTrail_light transformName = smokePoint emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.25 speed = 1.0 1.0 localOffset = 0, 0, 1 } } engage { AUDIO { channel = Ship clip = sound_vent_medium volume = 1.0 pitch = 2.0 loop = false } } disengage { AUDIO { channel = Ship clip = sound_vent_soft volume = 1.0 pitch = 2.0 loop = false } } flameout { AUDIO { channel = Ship clip = sound_explosion_low volume = 1.0 pitch = 2.0 loop = false } } } MODULE { name = ModuleEnginesFX //engineID = rocketengine runningEffectName = powersmoke directThrottleEffectName = powerflame thrustVectorTransformName = thrustTransform Edit the path to any effect files, change effect properties or add modules as needed. -For the method to add this to an existing engine with ModuleManager, see the actual config file included with HotRockets. -Note that powersmoke and powerflame are simply what I wanted to name my effects for flames and smoke. You can create your own effect name. -If you use two flame particles in one effect, give them each a unique entry under "name" -Remember to make the thrustTransform in the effect match the transform you want in the engine. -EngineID is used for multiple-mode engines, check the rapier config to see the setup for that. -Emission curves within each effect: you may have seen curves used in a few other modules when modding KSP. This is also fairly simple. The first number is the level of engine power, the second is the percentage of emission/speed/etc divided by 100. I believe that covers everything needed to get a custom engine effect working.
  2. I had been trying to to do this. I wanted a network of relay communications satellites so i could use unmanned vessels. As you know, you need a satellite network like this so the unmanned vessels always have communications with Kerbin. Anyway I also wanted the network of satellites evenly spaced out in their orbit. I couldn't find any tutorials on this that explained the math so I went ahead and derived the math myself and made a tutorial video for the community at large. So Enjoy
  3. I had about 8 elementary school students, who were KSP first-timers, run the first three KSP tutorials today. Short story: With the instructions up in front of them, the students kept asking me what to do next, because they were lost. Long story: The tutorial dialogs are way too verbose - or in the case of my students: TLDR. WHAT TO DO should be highly visible, and easily distinguished from descriptive or ancillary text. I found having to set the parachute parameters on the first rocket you build to be unnecessary and confusing; my students couldn't figure it out at all. I experienced this with both middle school students in the Endeavour Space Academy last year, and elementary students today.
  4. I made a series of illustrated tutorials for orbital rendezvous & docking. There are 4 techniques. For a link to all the images in a single imgur album, click here. Hohmann Transfer Rendezvous: Orbit Phasing Rendezvous (easy radial-burn version): Orbit Phasing Rendezvous (more efficient prograde-burn version): Parallel Orbit Rendezvous: Changes: v7 - Adjusted phrasing in one chart and updated drawing of spacecraft in all 4 charts. v6 - Fixed a typo in the Hohmann transfer's step 6. v5 - Added 2 techniques (for a total of 4). v4 - Spelling error corrected. v3 - Refined instructions for final approach, docking indicators now also includes Navball Docking Alignment Indicator, more notes on how to be efficient. v2 - Split into 2 versions: efficient & easy. v1 - Original version.
  5. I try to find out documentation for modding landing leg but it appear obsolete and the links are brokens. Someone can made updated tutorial on how to mod KsP please ?
  6. When I click on the orbit to create a maneuver node nothing happens, so this important tutorial is of no value. It needs to be fixed.
  7. Hey careless forum! How is it going? Maybe you know me by my collection of abstract art. If you are not familiar with it here is the link- LOL So after you've seen what you are going to learn now, lets begin working. Class 1, Topic 1.- Babysteps. So, now, you will need to find MS Paint. (sorry i don't know whether there is paint in Mac, but if there is do your best) After you've found Paint, lets begin with very simple task: 1. Choose any color you want in Pallete, which you will find in the right corner. (except entrirely black or entirely white) 2. Find button (close to pallete, a bit more to the left), there will be 4 sizes of lines. Pick the 3 pixel size. (you can acknowledge the size by hovering over it) 4. Find ''Figures" button, it is somewhere in the middle, just a tiny bit to the right. Now lets find rhombus (flipped square), place it in the middle of the picture. Then, using simple strait lines,lets make the grid. I won't explain it, i will just say two things: it makes stuff 3d, just copy it. Now lets paint it. Now i will give you a clue how to use light and shadow. By your IMAGINATION place somewhere (in the corner, down,up) a light emmitter. Take you base color and make 4 versions of it: one brighter than the base color, base color itself, a little bit darker than base color and the darkest one. (not entirely black, just darker) Find the right coloring tool. (i don't remember how is it called, it is just a picture of tin can with paint spillt out, sorry) Now place the color in such order: Brighter- closer (to light emmitter) Darker-Further. Here is what you're supposed to get: That is your first drawing! Congratullations if you made it so far. If it will have enough response, i will make another lesson. POST YOUR THINGUS
  8. I'm trying to complete the first tutorial level, but I am being told to select the MK16 parachute, but it is not there. I cannot find it in the utility tab, where it is telling me to click on it from, and will not let me progress any further with the level. Anybody know what's going on?
  9. I've managed to work out a fairly decent technique for making precision landings on airless bodies in KSP so I thought I'd make a video explaining how I do it. Hopefully this will be of some help to people having trouble with this part of the game. This is my first time making a gameplay video of anything and I stumble over my words in a few places but I think that overall it turned out okay. Using vid.me since YouTube's been doing some pretty crappy things lately and I figured it would be best to just stay away from that platform. I'm not sure if this will embed, but if it doesn't just click the link. https://vid.me/6st7
  10. Newer versions of KSP support Unity’s updated UI system (technically available since KSP 1.0, but only really practical since 1.1), which is a major improvement over the old OnGUI system. Rather than rebuilding the UI every frame using the esoteric GUILayout and GUI system, the new Unity UI is built using standard Unity objects and hierarchies. This significantly improves performance, reduces the garbage created, and allows for some fancy effects that weren’t practical with OnGUI. The only problem is that building the new UI entirely through code is extremely tricky, to the point of being impractical in all but the simplest cases. So there are basically two options for using the new UI. One is built into KSP and is perfect for creating relatively simple windows that don’t require much customization. This is the PopupDialog system, it uses notations similar to the old GUILayout system, but generates a new Unity UI object. There is a thread with more details on PopupDialogs and some examples. The other option is to build your UI in the Unity editor, export it as an AssetBundle, and load it into KSP. There are also two options for how to handle this. You can create the UI in Unity without importing any assemblies into the Unity editor. When you load this UI into KSP you will need to manually hook up all of the elements through code. Things like the function called by a button, or the string of a text element will all have to be manually assigned. This is OK for simpler UIs, but can become prohibitively tedious for more complex UIs. Sarbian’s GC Monitor is an example of this type of UI. For a more complex UI it can be simpler to import an assembly directly into the Unity editor, allowing you to set button, or toggle listeners, and to store references to UI elements where needed. The only problem here is that you cannot import an assembly that refers to KSP’s Assembly-CSharp.dll, the primary KSP assembly. This means that any mod using a Unity UI will need two assemblies, one to handle the KSP side of things, and another that can be imported into Unity and will handle the UI side of things. The KSP assembly can keep a reference to the UI assembly, but the UI assembly can’t refer to the KSP assembly, since that will refer to Assembly-CSharp. This means that communication between the two assemblies will be difficult. But before we get to that we can go over some of the basics of Unity UI creation (generic UI creation is also broadly similar to KSPedia creation, which is covered in its own tutorial). I won’t go into too much detail, since there are a number of very thorough tutorials and examples available. Check out some of these; pay particular attention to the RectTransform as that is the core positioning component of all UI elements, and it can be quite tricky to get a handle on. Using Basic Orbit as an example project we’ll go over several different areas of UI creation, starting with making a simple, static window, one that can’t be re-sized and has a fixed amount of UI elements. I’ll be using the same formatting as in the KSPedia tutorial, with Unity Editor screen elements Bolded and UI objects and elements Bolded and Italicized. The code for Basic Orbit is available on GitHub. Much of the methods used here come from Kerbal Engineer Redux (which uses the Unity UI only for its toolbar button), its source and Unity project can be found on its GitHub page. This is the window we’ll be creating and hooking up to KSP today. It controls the visibility and some options for other screen objects. Section 1: Software and Tools: Required: Unity – Current KSP version is using Unity 5.2.4 KSP Part Tools – The current package includes what is needed for generating Asset Bundles and the legacy Part Tools files To start with we need a new Unity project (I’m using Unity 5.2.4f1, since this is the version supported by the KSP Part Tools). I would suggest making a separate project folder for each UI, you can create a new project in the Unity startup window, you can then copy the KSP Part Tools files into that project’s Asset folder, or just import them into Unity in the normal way. We only need the Part Tools for the Asset Compiler function, which we’ll get to later. Unity Project Setup: The first step is to install Unity and add the Part Tools package. Once Unity is installed open it and create a project for KSP (there are probably other tutorials that cover setting up Unity in more detail; that isn’t really covered here). Go to the Assets Tab along the top -> Import Package -> Custom Package -> Select the PartTools_AssetBundles.unitypackage file This will load all of the bits necessary for KSPedia creation Now you want a new scene; the Hierarchy Window should only have the Camera, which we want because it allows us to view the UI as it will be in-game In the Main Window you’ll want to be in the #Scene Tab, in 2D mode, using regular Shaded mode Section 2: Creating the UI: All Unity UI windows must be the child of a Canvas element, so we’ll need to add one here. In general, we don’t need to export this Canvas, since our UI can be added directly to one of KSP’s Canvas’, but we need it in the editor to actually see anything we create. Add a Canvas: GameObject Tab -> UI -> Canvas This adds the Canvas element and the EventSystem The default properties should be fine, you’ll want to set Pixel Perfect on, since most KSP canvas’ seem to use this, it simply makes sure that all UI elements are snapped to pixel edges Render Mode should be on Screen Space – Overlay, this is for basic UI styles, a simple window on the screen To this Canvas we then add a Panel: Right-click on the Canvas -> UI sub-folder -> Panel The Panel is the basic window object, this is where we add buttons, labels, images, and so on The Panel has a RectTransform, a Canvas Renderer, and an Image element The RectTransform controls the window size and position The Canvas Renderer is a required component for any UI element that will actually be drawn on-screen The Image is the window background image By default, the Panel is the same size as the Canvas and uses the Stretch Anchor, meaning it will always stretch to the size of the Canvas, we obviously don’t want this Click on the Anchor image (the blue arrows, or red lines) in the RectTransform element and select the Middle-Center Option, with red lines crossing in the center You may end up wanting the Anchor to be Top-Left and the Pivot to be 0, 1, but you can leave me them as they are for now This will set the Anchor to the center of the Panel, and will change the available RectTransform Fields, we can now directly set the size of the Panel, and they will be fixed Once we set the Panel size it will look like this: The Pivot (blue circle) and Anchor (white arrows) are in the center and the borders are marked in the corners with the blue dots Adding Elements to the Window: We’ll go over the background images used for the window, and more complex anchoring and pivot functions later, but for now, we can start adding the UI elements to this simple window. Basic UI elements can be added by right-clicking on any object in the Hierarchy Window and selecting a UI object The Add Component button can be used to add those same elements, or any other Unity object or script To start with we’ll add a few Text labels and some Toggles that look like buttons For Text elements just right-click the Panel and select a Text object under the UI tab To position the element we can drag it to the desired location, it should snap to the center line The width and height can be changed by dragging the edges, or by changing their values in the RectTransform properties Dragging the edges will make the element un-centered, whereas editing the height and width in the RectTransform will adjust the element’s size based on its pivot position (centered by default) Since this window is fixed we don’t need to worry about the anchor position, but if you want to make sure that an element stays at the top of the window you can change the anchor to Top-Center, or Top-Right if you want it stay in that corner, this can help when making a UI if you are frequently adjusting the window size For fixed Text elements we can just type in the Text Field whatever we want, for dynamic elements (which are set by something in-game) we’ll cover them later The Text properties: size, style, alignment, color, etc… can all be adjusted in the Text element’s properties A quick note about hierarchy and draw order here: Elements lower in the hierarchy are always drawn above higher elements This means that child elements are drawn over their parents, and siblings are drawn in order from last to first, with last on top Now to add some Toggle Buttons, since this a group of three related Toggles we can put them all under one parent object Right-Click on the Panel and select Create Empty, this will add a simple RectTransform with no UI elements We can adjust its position, size and anchor so that it can hold the Toggles and be fixed relative to the top of the window Now add a Toggle element directly to the new empty object (all Unity objects can be renamed by double-clicking on the in the Hierarchy window) Unity doesn’t have native Toggle Buttons, so the element created here is a standard toggle with a label and checkbox We can adjust these elements to work as a Toggle Button just by changing their size and positions (and some code that we’ll get to later) We need to go from this: To this (yes it looks odd, but we’ll get to specifics in a bit): Creating a Toggle Button and Adjusting the RectTransform: To make what we need we basically only have to adjust the RectTransform component for each UI element in the Toggle element. The Toggle itself is made up of a Toggle Script, which controls actually activating and deactivating it, the Background Image, which by default is the empty checkbox, the Checkmark Image, which is only shown when the Toggle is put into the “on” state, and a Text Label. We want this Toggle to look like a standard KSP button, so the images should fill the entire object and the text should be centered The Background Image will be set to standard KSP button styles (the regular button, a brighter button for when the mouse is over the element, and a darker button for when the mouse is actually clicking on it) and the Checkmark Image will be set to the darker, pressed KSP button; since the Checkmark Image is drawn over the Background Image, it will hide the standard button images when the Toggle is on To do this we need to adjust the Background and Checkmark Image RectTransforms to fill the entire object We set the Anchor to Stretch-Stretch (four blue arrows), this will make the element stretch to fit the size of its parent, it also replaces the size and position fields with offsets, so if we want an element to stretch with its parent, but always have 10 pixel borders around the edge, we can set each field to 10, here we want them all set to 0, the same size as its parent We do the same with the Checkmark Image For the Label, we generally want some padding around the edges, and the text should be changed to centered alignment We’ll get into actually assigning images to these elements later on, for now these are all using the default Unity UI element sprites (which can be seen in KSP in the debug window and a few other places) We can also replace the Text label with an Image element, this will simply draw an icon over the Toggle Button rather that a label Images can be imported into Unity by simply copying them into a folder in the Unity Project’s Asset folder, or by dragging them directly into the Unity Editor’s Project Window Images should be imported as Sprite (2D and UI) and the Generate Mip Maps toggle should be off Filling in the other UI elements: I’m not going to go over how to add all of the different UI elements. There are numerous UI tutorials that thoroughly cover different element types; sliders, standard buttons, and text labels are all fairly straightforward to add. For static windows it isn’t too complicated, the RectTransform can get quite complicated, but the best way to understand it is to simply play around with it and change values to see what happens. More complicated UI layouts, and variable size windows will be covered later on. Exporting the Asset Bundle: To load anything into KSP we’ll need to actually export all of our prefabs as an AssetBundle using the Asset Compiler from the KSP Part Tools. The method for this is similar to that described in the KSPedia tutorial, just without the KSPedia Database steps. Drag any prefabs into the Assets folder in your Project Window Set the AssetBundle name in the Properties Panel in the lower right Then open or go to the Asset Compiler window -> Create (for your bundle) -> Update -> Build This will export a file into the AssetBundles folder in your Unity Project, it should have the .ksp file extension Section 3: Hooking up the UI: Now to get to the fun part. By making use of the Unity Editor we can assign methods to all of the toggles and buttons, store references to text elements so they can be updated later, spawn new windows, and much more. To do this we need to make a new assembly that can be imported into the Unity Editor. Any MonoBehaviours defined in this assembly can then be added as scripts to our UI objects. These can be scripts that control specific behaviors, like switching text colors when mousing-over an element, or that control the various window functions. I’ll be referring to the assembly that is imported into the Unity editor as the Unity Assembly, and the assembly that uses KSP code as the KSP Assembly. Unity Assembly: We create our Unity Assembly the as any other, is should use .Net 3.5, but it should only add references to UnityEngine and UnityEngine.UI, it should not have any references to KSP assemblies. For our KSP Assembly we create that as always, and we add a reference to our new Unity Assembly. This means that the KSP Assembly can call any public methods from the Unity Assembly, modify any public fields, and implement interfaces. But the Unity Assembly can’t directly communicate with the upstream KSP Assembly, or directly use any KSP code. There are a few ways around this, we could use some sort of listener and events system to trigger methods in the KSP Assembly or use interfaces in the Unity Assembly. We’ll be using the interface method. To simplify importing your assembly into Unity you might want to add a post-build event to your VS project that copies the assembly into the Unity folder: copy /y "$(TargetPath)" "C:\YourUnityProjectFolder\Assets\Plugins\" Creating Scripts for Unity: Any class that inherits from a Unity MonoBehaviour can be imported into Unity and added as a component to any other Unity object. To import an assembly into the Unity Editor just drag the .dll into your Unity project’s Asset folder, there should be a separate Plugins folder Once it is imported you can add the script to any Unity object: Add Component -> Scripts -> Your.Assembly.NameSpace -> YourScript Now the script is added to that object and a new instance will be instantiated whenever that object, or its parent object is created These scripts can accomplish several things They can store references to elements of the UI that need to modified by the script They can add behaviors to elements, such as controlling text color, or for replacing standard Unity Text elements with KSP’s new vector font Text Mesh Pro elements They can be used to assign listeners to buttons, toggles, sliders, etc… For the simple window that we’ve already created we have a Text element that needs to be updated in-game (the little mod version label), and several toggles. Because we want to set the initial state of some of these toggles (one controls whether a separate window is open or closed, so if it’s already open that toggle should be set to the on state), and because we want some of the toggles to affect others, we need to store references to the Toggle elements. And we need to assign listeners to the Toggle scripts. Any field with Primitive Types, or Unity Object Types can be set in the script then assigned to in the Unity Editor Storing these fields allows for easy access in the script using UnityEngine; using UnityEngine.UI; namespace BasicOrbit.Unity.Unity { [RequireComponent(typeof(RectTransform))] public class BasicOrbit_Example : MonoBehaviour { [SerializeField] private Toggle m_OrbitToggle = null; [SerializeField] private Toggle m_OrbitDragToggle = null; [SerializeField] private Toggle m_OrbitSettingsToggle = null; [SerializeField] private Text m_VersionText = null; } } Note the RequireComponent attribute at the top, this simply means that the specified types must also be present on the same GameObject All UI elements that actually draw something on the screen (images, text, etc…) require a CanvasRenderer, for example If that component isn’t present on the object it will be added when you add the script Public fields will automatically be added to the script’s Inspector tab Private fields can be added by attaching the [SerializeField] attribute (unity chops off the m_ part) These fields can be filled in by simply dragging the desired elements into their respective fields, or by selecting the little circle to right of the field and selecting the element from a list of all valid elements in the project Now we can access these fields from any instance of the script, though it is still a good idea to check if they are null, in case of errors made when setting up the UI, or exporting your prefabs To access or update these properties we just use these references public void updateVersionText(string newText) { if (m_VersionText != null) m_VersionText.text = newText; } public void setInitialToggle(bool isOn) { if (m_OrbitToggle != null) m_OrbitToggle.isOn = isOn; } One thing to note about setting Toggle states like this, whenever you change a Toggle’s isOn field, it will trigger that Toggle’s Listener Events, so anything you or anyone else has attached to this Toggle will be triggered. One way of getting around this is to have a Bool set to False while you are doing the initial setup. Then set your Toggle Listener to not do anything when the Loaded Flag is False, after the setup is complete you can set the Flag to True. Now to add listeners to Toggles and Buttons. The Unity UI attaches listeners to Unity Events triggered by a Button, Toggle, Slider, etc… Any public method that meets the requirement of that particular event can be added as a listener. public void OrbitPanelToggle(bool isOn) { if (!loaded) return; if (m_OrbitToggle == null) return; //Turn on Orbit Panel } public void OrbitDragToggle(bool isOn) { if (m_OrbitDragToggle == null) return; //Turn on Orbit Panel drag state } public void OrbitSettingsToggle(bool isOn) { if (m_OrbitSettingsToggle == null) return; //Spawn Orbit Panel settings window } public void myButtonListener() { //Methods with no arguments can be added to any button or to any other element if the argument does not need to be specified } public void mySliderAlpha(float alpha) { if (!loaded) return; if (m_AlphaText != null) m_AlphaText.text = alpha.ToString("P0"); //Change panel background alpha } Inside the Inspector tab for any Unity element with a Unity Event there is a section for adding listeners, you can add more by selecting the plus button on the bottom. Add a listener by first selecting an object for the little box below the “Runtime Only” box This will be the object that contains the script which has your listener You can either drag the object into the box, or select it from the list using the little circle In this case we select the parent Panel object, which has our example script The specific method is then selected in the box on the right This box has a list of all components attached to the selected object Select the Example script which will then show a list of all public methods that can be chosen Now we can just basically repeat these steps wherever needed. If you need access to an object somewhere, just add a reference to it in your script and assign it in the editor. If you need more listeners, just add them. More complicated behaviors will be explained later. One thing to note about Buttons, Toggles, etc, is the Transition and Navigation elements in their Inspector tabs. Transition refers to how the element behaves in its different states Sprite Swap transitions mean that different sprites are used for the normal state, when the mouse is over the object, or for when the mouse is clicking on the object Color Tint just adjusts the color tint for the attached Image element in those same states Animation uses Unity Animations to design more complex behaviors This is something that will be covered more later, but KSP generally uses Sprite Swap transitions, and for this example these states will all be setup in-game Navigation refers to keyboard navigation and is generally something that should be deactivated When you click on an object it will become the “active” object until you click somewhere else unless Navigation is disabled This means that the element will remain in the Highlighted state Section 4: Assembly Communication: Now that we have our UI hooked up to the Unity Assembly we need to get it communicating with the KSP assembly. There are probably several ways of handling this, but I’ve been using Interfaces in the Unity Assembly to handle it. The basic idea is to create one or more interfaces with the methods and fields needed to send information between the two assemblies, then we add those interfaces to objects in our KSP Assembly. This basically serves two purposes, the interface us used to set the initial state of the UI when it is created, using information from KSP, this could be persistent data, or just anything that can be altered at run time, like the name of a vessel. And it allows for the UI elements to make changes on the KSP side, by setting persistent data, or triggering a KSP-related function. In our last example we had a window with several Toggle elements, a Text field, and a method for the alpha Slider, so the interface contains what is needed to setup those elements, and to transfer data to the KSP Assembly for persistent storage. namespace BasicOrbit.Unity.Interface { public interface IExample { string Version { get; } bool ShowOrbit { get; set; } float Alpha { get; set; } } } The Version string is read-only, since the UI does nothing to alter it The Show Orbit bool is read to set the initial state, but can also be set by the UI when clicking on the Toggle The Alpha float is also used to set the initial state, and needs to be updated when changing the Slider value So now we can set the UI’s initial state by implementing our interface on an object in the KSP Assembly and calling the Setup method. private IExample exampleInterface; public void setInitialState(IExample example) { if (example == null) return; exampleInterface = example; if (m_VersionText != null) m_VersionText.text = example.Version; if (m_OrbitToggle != null) m_OrbitToggle.isOn = example.ShowOrbit; if (m_AlphaSlider != null) m_AlphaSlider.value = example.Alpha; if (m_AlphaText != null) m_AlphaText.text = example.Alpha.ToString("P0"); loaded = true; } public void OrbitPanelToggle(bool isOn) { if (!loaded) return; if (m_OrbitToggle == null) return; if (exampleInterface != null) exampleInterface.ShowOrbit = isOn; //Turn on Orbit Panel } public void mySliderAlpha(float alpha) { if (!loaded) return; if (exampleInterface != null) exampleInterface.Alpha = alpha; if (m_AlphaText != null) m_AlphaText.text = alpha.ToString("P0"); //Set panel background transparency } Note that we store a reference to the interface for use by the listener methods Make sure to set the Loaded Flag to true if needed The code for actually turning on the separate panel, or changing the background image’s alpha channel can all be handled within the Unity Assembly Section 5: Turning it On: Now we have to be able to actually turn on the UI. To do this we need a reference to the UI Prefab and a button somewhere to trigger the UI. We can let KSP load the AssetBundle that was exported from Unity, anything with a .ksp file extension should be loaded, or we can load it ourselves (KSP won’t load it twice, so there is no duplication of resources doing it this way; you can also just remove the .ksp extension to hide it from KSP’s asset loader). I’ve been loading it myself, it works find, and it allows me to open it immediately upon starting KSP. If we need to process or update all of the prefabs it can be useful to load in all of the prefabs, but to generate a window all you really need is the primary prefab (anything that will be created directly by the KSP Assembly). We can store prefabs as references in our Unity scripts by adding a serializable GameObject. A simple KSPAddon can be used to manually load and store a reference to the prefab: [KSPAddon(KSPAddon.Startup.Instantly, true)] public class BasicOrbitLoader : MonoBehaviour { private static GameObject panelPrefab; public static GameObject PanelPrefab { get { return panelPrefab; } } private void Awake() { string path = KSPUtil.ApplicationRootPath + "GameData/YourMod/PrefabFolder"; AssetBundle prefabs = AssetBundle.LoadFromFile(path + "/your_bundle_name"); panelPrefab = prefabs.LoadAsset("Your_Prefab_Name") as GameObject; } } Then we need an object that implements our interface; this can get its data from a persistent settings file, or a scenario module, from in-game data, or any other suitable source: [KSPAddon(KSPAddon.Startup.Flight, false)] public class BasicExample : MonoBehaviour, IExample { private string _version; private static BasicExample instance = null; public static BasicExample Instance { get { return instance; } } private void Awake() { instance = this; _version = "Assembly Info Version"; } public string Version { get { return _version; } } public bool ShowOrbit { get { return BasicSettings.Instance.showOrbitPanel; } set { BasicSettings.Instance.showOrbitPanel = value; } } public float Alpha { get { return BasicSettings.Instance.panelAlpha; } set { BasicSettings.Instance.panelAlpha = value; } } } To open the window we just need to setup a toolbar button as normal and use the Open function to start the UI: BasicOrbit_Example window; private void Open() { if (BasicOrbitLoader.PanelPrefab == null) return; GameObject obj = Instantiate(BasicOrbitLoader.ToolbarPrefab, GetAnchor(), Quaternion.identity) as GameObject; if (obj == null) return; obj.transform.SetParent(MainCanvasUtil.MainCanvas.transform); window = obj.GetComponent<BasicOrbit_Example>(); if (window == null) return; window.setInitialState(BasicExample.Instance); } The arguments in the Instantiate method are used to set the window’s position and rotation The rotation is set to zero Here the position is set using the Toolbar Button’s GetAnchor method There are several canvases that could be used, but in general the MainCanvas will probably be best We can get a reference to the UI script since it is attached to the newly instantiated object The window can be closed by either hiding it or destroying it You can hide the window by setting its gameObject.SetActive(false) This can be used if the window has a complicated initial setup and you don’t want to keep repeating that This should be enough to get a basic window into KSP. Future sections will go over dynamic UI generation and UI layouts elements, specific UI features, KSP-style UI elements, and using TextMeshPro for all text elements. They should also, hopefully, be much shorter, since they won’t have to cover so much information. If you want to setup your UI with the legacy Unity GUI style elements, they are available for free on the Asset Store. You will need to import them into Unity and use the Sprite Editor to set the Splicing lines properly (so that the images stretch to fit whatever size is needed). After that you can simply drag the sprites into your Image elements wherever needed.
  11. Okay, so if you were struggling (like me) to get the "Look Ma, No Tractor Beams!" Trophy (achievement) on either PS4 or X1, then here's a YouTube video I've put together. I show everything, from the construction of the two rockets to the rendezvous and docking. Keep in mind the video is long; but all the information is vital to do a successful docking and earning the trophy. So first things first, here's a detailed parts list that makes up both Docking Ship 1 and Docking Ship 2. Both ships are identical with DS2 not having a heat shield and parachutes. The list for both ships have the parts going from bottom to top. Docking Ship 1 Parts from bottom to top: 1 - S3 KS-25x4 "Mammoth" Liquid Fuel Engine 4 - AV-R8 Winglets (placed in a + formation) 4 - TT18-A Launch Stability Enhancers (placed in an X formation between the winglets) 2 - Kerbodyne S3-14400 Tanks 1 - TR-38-D decoupler Stage 2 1 - Kerbodyne KR-2L+ "Rhino" Liquid Fuel Engine 1 - Kerbodyne S3-14400 Tank 1 - FL-R1 RCS Fuel Tank (Offset it into the S3-14400 Tank) 8 - RV-105 RCS Thruster Blocks (4 on top of the tank and 4 on the bottom, both placed in a + formation) 1 - AE-FF3 Airstream Protective Shell (3.75m) (set sides slider down to two 1 - Rockomax Brand Decoupler CSM 1 - RE-L10 "Poodle" Liquid Fuel Engine 1 - Rockomax X200-16 Fuel Tank 1 - FL-R1 RCS Fuel Tank (Offset it into the X200-16 Tank) 4 - RV-105 RCS Thruster Blocks (placed near the top of the X200-16 Tank in a + formation) 1 - Rockomax Brand Decoupler 2 - Gigantor XL Solar Array (placed on the decoupler 1 - Heat Shield (2.5m) 1 - Z-4k Rechargeable Battery Pack 1 - Mk1-2 Command Pod (put one Kerbal in it) 3 - Mk2-R Radial Mount Parachutes (lay them 90 degrees sideways, leave their sliders at default) 3 - illuminator Mk1 (placed near the top of the pod) 1 - Clamp-o-Tron Docking Port Docking Ship 2 part list from bottom to top (this ship won't have a heat shield and parachutes, think of this ship as a defect): 1 - S3 KS-25x4 "Mammoth" Liquid Fuel Engine 4 - AV-R8 Winglets (placed in a + formation) 4 - TT18-A Launch Stability Enhancers (placed in an X formation between the winglets) 2 - Kerbodyne S3-14400 Tanks 1 - TR-38-D decoupler Stage 2 1 - Kerbodyne KR-2L+ "Rhino" Liquid Fuel Engine 1 - Kerbodyne S3-14400 Tank 1 - FL-R1 RCS Fuel Tank (Offset it into the S3-14400 Tank) 8 - RV-105 RCS Thruster Blocks (4 on top of the tank and 4 on the bottom, both placed in a + formation) 1 - AE-FF3 Airstream Protective Shell (3.75m) (set sides slider down to two 1 - Rockomax Brand Decoupler CSM 1 - RE-L10 "Poodle" Liquid Fuel Engine 1 - Rockomax X200-16 Fuel Tank 1 - FL-R1 RCS Fuel Tank (Offset it into the X200-16 Tank) 4 - RV-105 RCS Thruster Blocks (placed near the top of the X200-16 Tank in a + formation) 1 - Rockomax Brand Decoupler 2 - Gigantor XL Solar Array (placed on the decoupler 1 - Z-4k Rechargeable Battery Pack 1 - Mk1-2 Command Pod (put one Kerbal in it) 3 - illuminator Mk1 (placed near the top of the pod) 1 - Clamp-o-Tron Docking Port Once you have the rockets built, follow the video and if you've done everything right, you'll have a shiny new trophy plus valuable knowledge of how to properly dock. YouTube video Link: Timestamp to the rendezvous and docking portion: 56:26
  12. Collection of exampels for module manager "Why do I have to perform some experiments multiple times at the same location to max out my sciencegain?" When I asked me this question the Xth time, I started looking arround for a solution, and I found it: module manager. This neat little "plugin" allows you to write custom patches to change the behaviour of parts and some mechanics of KSP. With the help of the official Handbook I figured out a way to achieve my goal: Now, even this is a verry simple patch, it took me quite a while and some help from the community to figure it all out. So I thought for people like me I just post a few things I've done so far and just hope some others do the same to help everyone who wants to learn how to make custom patches. Here is another thing I did: If you need some help finding ideas or a parts name here are 2 usefull links: A basic one Click Me! and a more detailed, advanced one Click Me! It would be nice to see some things other people have done since thats what I'm looking for. So if you have something please share it (doesn't have to be a rainbow like mine) So the "rainbowthing" might have been a bit too much. However: IF you like to post some patches (and I hope you do) please do it in the following format: Give the thing a title, make that title bold and and set the font size to 16, then make a spoiler and put the code inside the spoiler. Awsome Example:
  13. Here you will find all the necessary tools as well as tutorials, guides and snippets of info relevant to KSP modding. If you come across any information that you think should be added to this thread please post a reply here. Before you start: 1. Please visit the General Add-on Affairs forum and check out member requests. It's better if you make something that people actually want. 2. Read all links marked as "Important" ================ Table of Contents ================ 1. List of Free and Open Source Tools 1.1 Modding Tools 1.2 Other Tools 2. Not-So-Free Tools 3. Modding Reference Material 4. Modding Information Links 4.1 Common Problems and Solutions 4.2 General Information 4.3 Modelling 4.4 Texturing 4.5 Licensing 4.6 Video Tutorials 4.7 Text Tutorials 4.8 Miscellaneous 4.9 Unity/Configs 4.10 Addons For Modders 4.11 Plugin Development =============================== List of Free and Open Source Tools =============================== MODDING TOOLS Unity - Game engine This is where you rig, animate, and otherwise set up and compile the part files. Important - YOU MUST USE UNITY 4.2.2 or earlier. Newer Unity versions do not support legacy animation which are still used by KSP.Part tools: 0.23 Part Tools thread Other FloatCurve Editor - A unity package for visualising and designing FloatCurves for your configuration files. Also read the KSP floatCurves guide MBM to PNG texture converter - Unity script. Can convert whole folders including subfolders I recommend you read the 0.23 and 0.20 Part Tools posts by Mu, they are very informative. If you're having trouble unzipping on a Mac, look here. Blender - Full featured 3D editor. Used for creating the 3D assets and animating. Can also be used for texturing, rendering stills and video. Blender Plugins: Taniwha's mu Import/Export MultiEdit - Allows you to edit a group of separate objects as a single object. Very useful for unwrapping multiple models on a single texture. KSPBlender - Blender addon for importing .craft files. Blender Bundled Plugins: You might need to enable these in Preferences. Print3D - Calculates volume (useful for judging resource capacity) and surface area of mesh objects, as well as does other things useful if you're making models for 3D printing. GIMP - Raster graphics editor The best free program for creating textures and other graphics. GIMP Plugins: NormalMap plugin - Generate normal maps from greyscale bump maps. Krita - Raster graphics editor Includes some very useful tools not found in GIMP. Check out the features page .MaPZone - Procedural texture generator Very powerful texture generator with a compositing interface DDS4KSP - KSP to DDS texture converter Use this to allow KSP to load textures faster. Inkscape - Vector graphics editor UV layouts exported from Blender can be edited with this. It's also useful as a secondary program for textures if you need to create precision curves. xNormal - Texture generator You can generate normals maps, and various masks for your textures. NVidia Melody - Normal map baking program Bake normal maps from high-poly models. NormalMap-Online Online tool for generating Normal, Displacement, Ambient Occlusion and Specular maps Meshlab - Mesh editor You can use this to convert various mesh types. Notepad++ - Text editor Use this for editing configuration files. Change language to python to identify bracket pairs and collapse/extend modules. Hexplorer - Hex editor You can use this to spec the components of compiled mu files. DO NOT EDIT FILES unless you know what you're doing. OTHER TOOLS Open Broadcaster Software- Video capture / Streaming Self explanatory. You can use it to showcase your mod. Lightworks - Full featured video editing program Edit and add effects to your videos. Requires registration, however it really is the best free editor out there. ================ Not-So-Free Tools ================ Quixel dDo - Procedural texture generator that adapts to the shape of your model. The old legacy version is free but it requires Photoshop, which is not free. Link is at the bottom. Direct link ======================== Modding Reference Material ======================== Blender Model Donation - Donate or download unused models started by other forum members. NASA 3D Resources - Copyright-free models and textures. Important. The models are too high poly to use directly. Linear aerospike MiG-105 Spiral photos Dragon RCS in action Kennedy Space Center - Lots of great photos of NASA vehicles. Shuttle flight deck and Shuttle lower deck interactive high-res 360 panoramas. Launch Photography - Various space- and spacehip-related photos. Air and Space Museum's Udvar-Hazy Center Nasa audio - For sound editors. Scroll down for links to huge archives of mission transmissions, rocket and shuttle sounds, and "sounds" of space phenomena. ======================== Modding Information Links ======================== COMMON PROBLEMS AND SOLUTIONS Invisible mesh / Models not updating Invisible mesh / Models too small Stack nodes not attaching Part with animation not loading Empty Resource containers have negative cost Rescaled models revert to original size Cannot edit/create emissive animations - Unity downgrade tutorial Infinite resource usage Curved geometry boolean operations and shader issues / Vertex normals issues - Whole thread is very worth the read. GENERAL INFORMATION Stock Parts List Part Modelling Guidelines - Out of date / almost never updated. CFG File Documention on the wiki Modding information page from before the forum wipe - Download of the old page MODELLING Kerbal EVA model hierarchy - useful for people who want to modify the Kerbal EVA model / animation itself Part orientations in the VAB, SPH, and Unity - Image Part scaling with rescaleFactor A rough model of a Kerbal for modelling reference Basic Blender tutorial for making a propellent tank - by Technical ben Triangle count for parts snippet Cylinder face numbers Lots of snippets, read the entire thread Kerbal stair-climbing ability: staircase step height KSP vs. Blender coordinate systems - by orson / MKSheppard; in essence, Blender uses Z+/Z- for up/down, but Unity uses Y+ and Y- instead TEXTURING MBM to PNG texture converter - Unity script. Can convert whole folders including subfolders MBMUtilities - Standalone converter. For single or groups of files. MBM to PNG or TGA; TGA or PNG back to MBM Intermediate Texturing Guide Intermediate Texturing Guide - Panels and Edge Damage Texture Format Information - Worth giving the whole thread a read. Important DDS Quick Guide - Important Please use DDS! Fixing texture seams (gaps in the texture on the model) Memory usage of textures Creating a normal map Normal map file naming - Very important with relation to memory usage Importing models, Generating UV's, Editing and Exporting to .DDS in Photoshop CS6 ext LICENSING All addons posted on any official Squad website must have a license - Forum Rule 4.2 License Selection Guide VIDEO TUTORIALS Twitch Broadcasts by RoverDude - Lots of videos showing the workflow for part modding from start to finish: Model and Art concept, modelling, animating, UV unwrapping, map baking, texturing stockalike style. Good comments + voiced thoughts. Tutorial: Unity and Part Tools Setup + Model/Texture Import, Setup and Export to KSP - video by Tiberion Series by Nifty255 - This covers the very basics. Vol. 1 Ep. 2 - Game Models and Textures - This covers proper model and texture setup in Blender, setup and exporting through Unity, and even goes into setting up animations. and - These two cover things on the programming side: modules, plugins, .dlls, etc. - How KSP saves and loads its data, from part configs, to ship designs, to entire game saves. Tutorials by nli2work Discussion thread for the following tutorials. - Exterior/Interior Unity setup; export to KSP; slight config error near the end. ~1hr - Error corrected and explained; External/Internal basic function checks ~15min - Spawning IVA in Unity; populating IVA with Props and Light ~35m - Internal Props; ~16min - Basic Engine setup; with Emissive, Gimbal, and Fairing - Engine setup with EFFECT{} Plugin Tutorials by Cybutek TEXT TUTORIALS Making a simple engine in Wings 3D, from start to finish. MISCELLANEOUS Official Unity tutorials Unity Layers and Tags KSP floatCurves guide - Important for many Part Modules Important A snippet on ISP and fuel density Creating a new resource Stock Parts Costs and Balance Spreadsheet for 0.24 FlagDecal, Docking port IDs, PNG Unity import bug Unofficial 0.25 modding info UNITY/CONFIGS Getting started Unity to KSP: A Detail Tutorial - written by Kerbtrek Part Tools 0.20, Blender, Unity and KSP - written by Cheebsta Example Config file for loading a .Mu file into the game - written by Tiberion TUTORIAL: Getting Started With Unity - written by Nutt007, includes a video for 0.15 Tutorial:Making and asset from start to finish Air Intakes Intakes for jet engines Intake area explanation Airlock (Actually a hatch, but it's called an airlock in KSP) Adding airlocks and ladders to parts - Airlock collider must extend beyond the ladder collider to allow the click menu. Airlock positioning 1 Airlock positioning 2 Airlock positioning 3 Animation Blender to Unity animation tutorial - written by Xellith Exporting an Animation from Blender Looped animation Anim Switch details for repeating animation in reverse Repeating animation in reverse - Old Start point in animation for VAB snippet Attach nodes (Radial attachment) Transform-based NODE{} - New better way. Requires srFix .Radial attach coordinates - Old way Tweaking attach nodes snippets - Old way Collision meshes Collision Mesh snippets Normal mesh use Exploding Kerbals Cargo Bays NoAttach tag - Prevents surface attachment for specific colliders. Contract Testing ModuleTestSubject Control Surfaces Creating a control surface Decouplers Decoupler modules Docking Ports Adding a docking node in Unity Stock Docking Port in Unity - Image Docking port IDs "Control from here" for docking ports - Useful if your part alignment is different from your docking port direction. Emissive textures Emissive tutorial - new thread - written by CardBoardBoxProcessor Emissive tutorial - old thread - written by CardBoardBoxProcessor Setting up an emissive on a light - Big pictures Stopping toggleable emissives showing up lit in VAB/SPH thumbnails Looping an emissive Throttle-response emissive snippet If you have problems with the latest Unity version Engines See Video Tutorials above first. [HOWTO] Airbreathing Engines in KSP 1.0 Quick how-to on setting up a thrustTransform for an Engine Snippet on thrustTransforms Unity hierarchy for Gimballing nozzles ModuleGimbal and ModuleJettison - config settings. Trouble shooting why an engine might not work Multiple nozzles Example - Unity package and compiled part with config. Engine Fairings See Video Tutorials above first. To make fairings in VAB/SPH thumbnail invisible, set the fairing objects tag to Icon_Hidden. You will need to create a new tag to do this. Example image of the tag Removing the fairings from stock engines See above for an example engine. Flag Decal Flag decal module Positioning the decal GameDatabase 0.20+ specific config extras IVA See Video Tutorials above first. IVA Tutorial - written by TouhouTorpedo - old? 0.17 IVA tutorial - I have no idea if this is still relevant, I've not tried to do any IVA's Alternate camera for IVA portraits Stock IVA orientation reference Ladders Adding airlocks and ladders to parts Landing gear Discussion of a WIP landing gear. Lots of useful information Stock Landing Gear in Unity - Image Landing gear snippets - Spread out through the thread Landing legs Animated Landing leg w/ suspension tutorial 0.22 Landing Leg module in Unity - Image Launch stability enhancer / Launch tower Launch Clamp How-To (Tutorial) FASA Launch Tower tutorial Lights Some tips for setting up lights Model definition Replacing "mesh" with "MODEL{}" Scaling attach nodes with MODEL{} Parachutes Stock Parachute in Unity - Image Components of a parachute RCS RCS Tutorial Rover wheels Wheel rigging, setup and fault finding - Video tutorial. Guide with Unity scene example Stock Rover Wheel in Unity - Image Changing wheel torque Science Science and mods! Solar Panels Stock Folding Solar Panels in Unity- Image Setting up suntracking solar panels Powercurve explanation Sounds Using EFFECTS nodes to play custom sounds How to get custom sounds to play without a plugin - Pre-0.23 info Stack nodes Transform-based NODE{} - Allows you to easily add nodes with transforms. Makes angled nodes easier to implement. Temperature Quick guide to temperature rules Textures and Shaders Adding a normal map Faking detail with a normal map Fixing unwanted texture transparency Unwanted transparent faces Potential fixes for incorrect shading PNG versus TGA loading time Welding Example of using 0.20+ MODEL{} modules to combine parts MODEL{} tutorial - Learn How to Weld! - written by johnsonwax - GONE! MODEL{} tutorial - Intermediate Welding and Part Scaling - written by johnsonwax Wings Wing creation mini tutorial ADDONS FOR MODDERS These addons extend the functionality available for mod creators and help with mod development Tools DevHelper - Bypass main menu to automatically load any saved game LoadOnDemand - Important. Loads textures as needed, reducing the memory footprint and speeding up load times without loss of quality. Not actively developed but community fix is available. ModuleMirror - Mirror symmetry for asymmetrical parts Part Icon Fixer & Tweaks - Rescales part icons in the VAB and SPH to more appropriate sizes. RCS Build Aid - Provides visual clues about ship movement under thrust from RCS or engines. Great for if you're making replica ships srFix - Important. A fix for the currently non-functioning NODE{} HINGE_JOINTs. Mods Adaptive Docking Node - Create non-androgynous docking ports or ones that attach to more than one port size/type. BDArmoury - Includes a .50 cal turret unity package as an example if you want to make your own weapons Community Resource Pack - Community-defined resources. Check in here before defining a new resource. Connected Living Space / Config How-To - API for inhabitable areas and passable/impassable parts. DMagic Module Science Animate - versatile plugin for science experiments Ferram Aerospace Research / Deriving FAR values for a wing using Blender Firespitter / Firespitter Module Documentation - various aircraft-related modules as lots of others. HotRockets! - Particle FX Replacement Infernal Robotics / How to make robotic parts - Create controllable robotic parts that rotate or translate. JSIPartUtilities - Let's you toggle meshes and colliders on and off, and other things Kerbaloons / How to make your own balloon part using KerBalloons - Create baloons Kethane - Majir restricts the use of some modules Modular Fuel Tanks - Create user-configurable resource tanks. Module Manager - allows patching of configs at runtime without overwriting OpenParticleEmitter - Kethane-derived alternate particles module. Source code only Open Resource System - Karbonite (An open Kethane alternative) uses this. Also see Community Resource Pack Raster Prop Monitor - Configure aircraft and spaceship monitors in IVA Real Fuels - Makes resources and their measurements based on real science. SmokeScreen - Extended FX plugin Texture Animation Util - Scrolls textures on a mesh randomly or smoothly. Toolbar - Add a visible toollbar button to your plugin PLUGIN DEVELOPMENT I would love someone with Plugin experience to point out helpful threads for this Add-on Posting Rules CompatibilityChecker - Source code for plugin authors to implement a checker that shows a message if their mod is incompatible with the user's version of KSP and/or Unity KSP API Documentation Official PartModule Documentation Starting out on Plugins KSP Plugin Framework - Plugin Examples and Structure - by TriggerAu, very recent and up to date Example plugin projects to help you get started - by TaranisElsu The official unoffical help a fellow plugin developer thread Wiki page on Plugins Creating your first module - on the Wiki Info on spawning objects and applying gravity - Includes example code, links to more examples, and some useful hints. How to animate a part with multiple animations? Great info on Kerbal transforms, bones, rig, FSM, states (ragdoll, idle, sumble, run etc) Some really good info on writing Unity CG shaders. Even if you're not going to write a custom shader yourself, it still gives you a great insight into what the various bits of the KSP shaders actually control and output. Info on loading and using custom shaders into KSP Misc Plugin Information Kethane Code Snippet for an incorrect installation warning. Public domain license.
  14. KSP Career mode, from start to first orbit. Full album at https://imgur.com/gallery/0zCVG
  15. I'm in the 3rd tutorial. Brick wall. I'm supposed to put 4 fins on by toggling symmetry to 4x. When i click the symmetry button, or x, i get the options of single, or double. What could i possibly be doing wrong...
  16. Air to Air Refueling Like a Boss This tutorial is meant to provide you with all the tips and tricks I've learned from other forum members, as well as new ideas I've been working on myself. Some terms you'll need to know before you begin are: The flying gas station is called the Tanker. The hard line from the tail of the Tanker is called a Flying Boom. A flexible hose with a cone at the end is called a Drogue Line. The plane being filled is called the Receiver. And lastly the ridgid snorkel on a Receiver, used to capture the Drogue. Is called the Probe. Probe and Drogue - In the real world this came first (kinda) and is in some ways more forgiving for beginners to engage the Drogue with a Receiver plane mounted Probe. The downside is if you bump the Drogue it'll flop all over the place until aero forces stabilize it again. This method provides a flexible line connecting both planes to allow a larger bubble of movement while refueling. In KSP this is the easier way to dock two or more planes together but if performed in an "Undocked" state. Which allows independent control of each plane. (You will most definitely crash if both planes are "Docked") There is no ability to transfer fuel between the two planes when using a KAS winch in "Undocked Mode". This is great for cinematics and screenshots, just not for actual fuel transfer. Additional Info / Pictures Of The Assemblies: Flying Boom - This is a rigid connection between both planes. In the real world this was developed second. In order to transfer more fuel in a shorter period of time. In KSP this is the most functional as this is the best way to remain in control while actually transferring fuel. Once you "Dock" both planes together they will fly as a single plane. In which case, most of your pitch control will come from the Receiver plane. So often the connection of the fragile boom needs to be reinforced by Quantum Struts, immediately after docking has occurred. If you don't reinforce the connection immediately after docking, the planes can twist apart within seconds depending on the design of the planes and the boom. Additional Info / Pictures Of The Assemblies: V-22 Osprey, Refueling from a KC-10 Extender And Now, Onto The Tutorial The mods I suggest using to perform this task are RKE Kanadarm for the Flying Boom, and also for the Probe tubes. The reason these are the best parts to use for the tubes is they are physics-less and don't flex / separate under loads. KAS if you are using the Probe and Drogue method. IR / IR Rework if you want to be able to move anything. Also MechJeb is recommended as it makes aligning the two planes much easier - Using "Spaceplane Guidance" If you're looking for a scale appearance, my custom cfg's to rescale as well as increase the force and range of the magnets in a Squad Docking Port Jr. And as a bonus, the B9 Aerospace Shielded Docking Port if you have B9 installed. If you use RKE Kanadarm tubes or any other physics-less parts. Be sure you never attach a Quantum Strut directly to or from a physics-less part. It will lock the craft in place during flight, and cause all kinds of Kraken like behavior. Instead attach a physics enabled part to the RKE Tubes then the Quantum strut to that part. I also suggest building planes that require very little effort to stabilize. Meaning when in flight the input visualizer in the lower left hand corner of the screen should be as close to center for, pitch, roll and yaw as possible during flight. Also another good check, is a plane that will deviate very little on it's own with the SAS / RCS turned off in flight. I suggest enabling as few control surfaces and gimbaled engines on the Receiver craft as possible. This will aid in fine control while approaching the Tanker. The steps to reproduce this on your own are: (1) Load the Receiver and move it off the runway - I suggest Vessel Mover for this task. (2) Return to the Space Center / SPH and load the Tanker. (2-A) (Drogue Method) - Before take off, with both planes landed. Use a Kerbal to "Unplug" and then reattach a KAS Winch Line to the Drogue. In "Undocked" mode - If you're using lights on the Drogue, press (Alt+F12) to bring up the cheats menu and enable infinite electricity. (3) With both planes now loaded, take off with the Tanker - Use the " [ " and " ] " keys to switch between planes. I suggest using MechJeb "Spaceplane Guidance" to hold a set altitude and heading - Don't fly too fast or you can outrun the Receiver. (4) Switch back to the Receiver and launch it as well - Also use MechJeb spaceplane guidance but set the receiver altitude 10m lower than the Tanker. Be Careful to stay within loading distance I think that's something like 2.5 Kilometers. (5) Match speed, and fine tune course alignment of the Receiver with the Tanker using the keyboard / joystick inputs in tandem with MJ Spaceplane Guidance - This is where the work begins. (6) Deploy either the Probe and Drogue or the Boom at this time from the Tanker. (6-A) (Drogue) If you use my cfg's be careful how close together multiple drogues get. The magnets are ridiculous. (6-B) (Boom) I like to use one or two Quantum Struts to reinforce the boom back to the Tanker at this time. (7-A) (Drogue Method) Once docking has occured, the engines on the Receiver will automatically throttle down but MechJeb will continue flying the Receiver. - Return throttle on the Receiver to just under the level used to initially catch the drogue, You want a slight amount of tension on the KAS winch line. And allow MechJeb to stabilize the Receiver. Engines and Mechjeb's Control of the Tanker will be unchanged. As long as the drogue is attached in "undocked" mode to the winch line (7-B) (Boom Method) Once docking has occurred, you'll need to quickly enable the Quantum Struts. Before an "Unplanned Disassembly" occurs. I like to assign the Boom to Receiver Quantum Struts "Activate" command to the "Abort" Action group. Next, control will default to the Tanker and the engines of both planes will throttle down together automatically, MechJeb will begin flying both planes together as one craft automatically. You need to decrease the engine output of the Reciever and then throttle everything back up. You want the Receiver to have a little less power than the Tanker. You can do this by disabling individual engines through action groups, or through engine right click menus as demonstrated in my video bellow (just don't shut them down completely like I did - Puts a lot of stress on the boom). Then allow MechJeb to stabilize both planes. Fuel transfer is accomplished by holding (Alt) and (Right Clicking) the tanks you wish to move fuel between. Remember this only works with a "Docked" Receiver. When you undock the two planes MechJeb will resume control automatically, of the Receiver and Tanker Independently. With whatever settings you input prior to docking. When you're on final approach with either a Flying Boom or a Drogue Line. The best way to maintain good speed control is by flying too slow, and using afterburners for short boosts to accelerate toward the docking port. Then coasting on the normal engines to slow back down again. Or, set your speed too fast and then use airbrakes to slow down. Pulling the Receiver back away from the Docking Port. Either of these methods works, and it just comes down to preference. Another good method is a plane with a fair amount of drag with quick throttle response. So as you throttle down the Receiver will slow down quickly. Larger planes are actually a little easier to dock as they are slow to make changes with control input. Slow and sloppy is good, quick and jerky is bad. Just be sure your boom is built strong enough to hold everything. Videos Of Both Methods: My Custom .cfg's And Suggested Mod Links AC-130 Spectre, Refueling from a KC-135 Stratotanker
  17. I stopped the development of this tutorial because I didn't have time anymore and because all calculations change after minor updates, and it takes a lot of time to interpolate all values and generate all graphs and formulas. So I lost interest because it changed too muchm but I know this is with the best intentions of Roverdude to make this mod as balanced as possible. There are some awesome people updating the Wiki right now. If you want to help, this is the thread: ___________________________ I'm doing a MKS tutorial because there is no one updated to the lastest version and I think it's a hard mod but also very enjoyable. Note that all information listed here was tested at the day they were added. It's not a copy of changelogs or from any other place, everything was tested by myself. There is a changelog at the bottom of this post, so if there was some update/bug fixing on MKS mod and I didn't updated, please tell me. TL;DR: Cut machinery chain off if you are starting/learning how to play with this mod by sending Kontainers with it. You'll not need to worry about it if you just do this. Machinery production is complex (but consumption is slow, for example: with a big industrial workshop, working at 22500% load, you'll need about 8200 machinery per YEAR), so don't bother with it before learning how to do supplies production to your kerbals. If you agreed to do this and don't want to read the full tutorial, just use the Base planner 1 - Supplies. It will show you what is needed to feed how many kerbals do you need to. View/download link is below. I didn't added example crafts yet, but will later. 1. Concepts about Modular Kolonization Systems (MKS) a. Part's functionality b. Resources 2. Logistics a. Scavenging b. Planetary Logistics 3. Getting resources a. Orbital scanning b. Surface scanning c. Drill planner 4. USI - Life Support a. Supplies i. General concepts ii. Fertilizer (TBD) iii. Agroponics iv. Cultivate (S) v. Cultivate (D) vi. Recyclers (TBD) b. Base planner 1 - Supplies c. Habitation/Home (TBD) I. General concepts II. ColonySupplies d. Base planner 2 - ColonySupplies 5. Efficiency Parts a. General concepts b. Greenhouse (Updated to version 0.50.7, from November 23th) c. Crusher (Outdated) d. Smelter (Outdated) e. Workshop (Outdated) 6. Power (TBD) a. Power generation b. Power distribution 7. Production (TBD) a. MaterialKits b. SpecializedParts c. Machinery d. EnrichedUranium e. Base planner 3 - Machinery Link of the tutorial to view online: https://onedrive.live.com/view.aspx?resid=7987968D9100EE9D!2683&app=OneNote&authkey=!AOH7C-rNdg8Jx7s If you just want the Base planners, here are the links: Supplies: Link down for maintenance. Update (Nov. 24th): Math behind efficiency just got way more complicated after the last 3 updates of MKS. I got the calc to see how much machinery you should have to feed the number of kerbals you want with Duna and Tundra parts with efficiency, but I'm fixing the Fertilizer production now. The modifier of profession bonus is taking way longer than I wanted to figure out. Once I finish Agroponics, Cultivate (S), Cultivate (D) and Fertilizer production I'll release again. I just don't want to release a sheet that doesn't work at 100% of time. In other words, everything changed. None of calcs from before works now. Maybe in a week or so it should be re-fixed. ColonySupplies: (TBD) Machinery: (TBD) Base planner 1 - Supplies images: If you find any error of any kind, please tell me so I can fix. Worksheet with MKS data: Update 21/10/16: Added Spreadsheet. Update 23/10/16: I'll add the next module tomorrow with a little rework of previous chapters Update 26/10/16: Tutorial reworked to be on OneNote. Waiting to finish some parts before publishing. Update 26/10/16: Part of the tutorial published. Update 27/10/16: Added "Getting resources" chapter Update 2, 27/10/16: Added "Supplies" chapter Update 29/10/16: Added Base planner 1 - Supplies Update 2, 29/10/16: Added Efficiency calculation to Base planner 1 - Supplies Update 3, 29/10/16: Added Recycler calculation to Base planner 1 - Supplies Update 30/10/16: Added a TL;DR Update 24/11/16: Doing everything again after efficiency updates. Greenhouse efficiency updated at OneNote tutorial, but will take some time to retest it all.
  18. So you have your own planet or moon and you want to make it look as good from close by as it does from up in orbit? Good terrain textures are the best way to make this happen. In this tutorial I will explain how to properly apply both stock and custom terrain textures to your planets using Kopernicus. This lesson is based on what I learned myself while learning to do this for my own mod OPM. The tutorial consists of 2 parts: Applying textures to the terrain Making the textures appear where you want Texture application Note: for this step you can use built-in textures from the game or use your own custom textures. I will explain how you can do both. Open up your body’s cfg in something like Notepad++ (Windows’ Notepad won’t do). To edit the terrain textures we have to use the Material node. If you've never touched terrain textures, you probably won't have this in your config yet. Here is where it goes (excuse bad formatting, blame the forum software): @Kopernicus:AFTER[Kopernicus] { Body { PQS { Material { } } } } So material is where we're going to do our magic. There's one thing that we have to do outside of the material node though and that's to set the material type. Not all stock planets use the same one and, since some types work less well than others, we're going to define the type so that we're always working with the best one. @Kopernicus:AFTER[Kopernicus] { Body { PQS { materialType = AtmosphericExtra Material { } } } } From now on everything we'll be doing in side of the Material node. For those who've dabbled with texturing before KSP 1.1, note that AtmosphericExtra is the successor to AtmosphericOptimized. If you used that before, use AtmosphericExtra now. Before we start writing the material, you need to know that there are four texture slots we can use: Low: covers the lowest part of the terrain Mid: covers the area between low and high High: covers the highest part of the terrain Steep: covers all the steep areas like cliff faces, crater walls, the sides of mountains, etc. It will overlap with the three previous areas as steep parts can be anywhere So now we know that, we can start adding the textures to these areas: Material { steepTex = CTTP/Textures/snow steepTexScale = 1,1 steepTexOffset = 0,0 steepBumpMap = CTTP/Textures/snow_normal steepBumpMapScale = 1,1 steepBumpMapOffset = 0,0 lowTex = CTTP/Textures/snow lowTexScale = 1,1 lowTexOffset = 0,0 lowBumpMap = CTTP/Textures/snow_normal lowBumpMapScale = 1,1 lowBumpMapOffset = 0,0 midTex = CTTP/Textures/snow midTexScale = 1,1 midTexOffset = 0,0 midBumpMap = CTTP/Textures/snow_normal midBumpMapScale = 1,1 midBumpMapOffset = 0,0 highTex = CTTP/Textures/sand highTexScale = 1,1 highTexOffset = 0,0 highBumpMap = CTTP/Textures/sand_normal highBumpMapScale = 1,1 highBumpMapOffset = 0,0 } You see a lot of repeating stuff, so I'll only need to explain four of the values to help you understand what everything does:. ...Tex: sets the main texture for this area ...BumpMap: sets the bump map (or normal map) texture for this area. This doesn't have to look anything like your main texture, but if you want a unified look it's best you do. ...Scale: sets the scale of the texture on the X and Y axis. The default 1,1 is what looks the best, so use that. ...Offset: offsets the bumpmap from the main texture on the X and Y axis. The default 0,0 is what looks the best, so use that. You'll see I've pointed the textures to a folder called CTTP. This is the Community Terrain Texture Pack (still need to make a thread for this how others can use this). This is how you point to a custom terrain texture. Just replace the folder path to the one that matches your texture (YourModFolder/Textures/YourTexture for example). You can also use the builtin terrain textures found in KSP. These are lower quality and not all textures have a matching bump map, but you won't have to put custom textures in your mod. Here's a list of builtin terrain textures. To apply them you have to use a different folder path: midBumpMap = BUILTIN/RockyGround Next we're going to define how often these textures are applied to your planet. To prevent this code from becoming to long, imagine that the previous entries are also in Material. Material { steepNearTiling = 5000 steepTiling = 50 lowNearTiling = 5000 lowMultiFactor = 50 lowBumpNearTiling = 5000 lowBumpFarTiling = 50 midNearTiling = 5000 midMultiFactor = 50 midBumpNearTiling = 5000 midBumpFarTiling = 50 highNearTiling = 5000 highMultiFactor = 50 highBumpNearTiling = 5000 highBumpFarTiling = 50 } The higher the values you give to this tiling, the more detailed the terrain will become. Too much however will create noticeable tiling, making it look fake. So there's a fine balance. 5000/50 as shown above works well for textures with 1024x1024 resolution and what's on the texture looks close by, rather than far away. Is it 1024x1024 and the texture is far away (the case for CTTPs cliff and beach textures for example) than I've found 2500/25 to be a good fit. An explanation of the rest in the code above: NearTiling determines how often the texture tiles close to the player Tiling, MultiFactor and FarTiling (Squad didn't make it consistent) determine how often the texture tiles far away from the player. This works best if lower than NearTiling Steep only has NearTiling and Tiling for some reason, and these settings are used for the main texture and the bump map STILL WRITING, WANTED TO MAKE SURE IT SAVED
  19. With 1.2 version (still prerelease) SAS holding is fixed and we can finally use it. I'm going to show now how we can easily reach LKO in semiautomatic mode using only ingame SAS. For that we will need two things: stable rocket and level 1 pilot (or probe core capable of SAS prograde hold) Let's start with rocket, it's a simple rocket consisting of only stock parts. It has LV-909 "Terrier" engin in the upper stage: And LV-T45 "Swivel" in the first stage: Overall it looks like this, and as you can see it's really chip rocket: Let's go! On the launch pad: Throttle up to max Switch navbal speed indicator to orbit mode Turn on SAS Main engin start! Keep going straight up until you reach 300 m/s of orbital speed (Yes ORBITAL speed!) and then throttle your engine down to keep your speed ~300 m/s: And keep that speed until you're at 10 km height, as soon as you reach this height hit prograde in your SAS control panel and throttle to max again: Keep burning, a quick thing to note: if your first stage is still pushing you at 20 km above Kerbin, then your rocket design is good: As soon as your first stage is depleted, separate it and start the "Terrier": Pretty goooooood, now go to map mode and keep an eye on your apoapsis: As soon your apoapsis is above atmosphere, cut the engine down. Note that orbital speed at LKO is approximately 2300 m/s and we already have 2100: Our speed will go down as we reach AP, but hey, we'll have to burn only ~300 m/s: As soon as we're close enough to AP we can throttle up again, if your TS is upgraded you can place maneuver node to be more accurate: As soon as AP and PE are approximately 90 degrees behind you and before you shut down your engine: Congratulations, we're in orbit! Not perfect, but stable And with plenty of fuel! Have fun!!!
  20. version = 1.1.3 Title = default (SANDBOX) Description = No description available. linkURL = linkCaption = Mode = SANDBOX Status = 1 scene = 5 editor = None flag = Squad/Flags/hexagon launchID = 14 modded = True envInfo = - Environment Info - Win32NT 7FFFFFFFFFFFFFFF Args: KSP_x64.exe - PARAMETERS This is the part we modify. BEWARE! IT IS VRY EASY TO ACCIDENTALLY BORK YOUR SAVE GAMES! BACK UP THE FILES FIRST! Alright! version = 1.1.3 Title = default (!SANDBOX!) Description = No description available. linkURL = linkCaption = Mode = !SANDBOX! Status = 1 scene = 5 editor = None flag = Squad/Flags/hexagon launchID = 14 modded = True envInfo = - Environment Info - Win32NT 7FFFFFFFFFFFFFFF Args: KSP_x64.exe - PARAMETERS The parts that are surrounded by exclamation marks, these should get changed from sandbox to "SCIENCE" Load the save, then go into your text editor and change it from "SCIENCE" to "CAREER" version = 1.1.3 Title = default (CAREER) Description = No description available. linkURL = linkCaption = Mode = CAREER Status = 1 scene = 5 editor = None flag = Squad/Flags/hexagon launchID = 14 modded = True envInfo = - Environment Info - Win32NT 7FFFFFFFFFFFFFFF Args: KSP_x64.exe - PARAMETERS And boom! Save converted! NOTE! A save cannot be converted from Science or Career back to sandbox using this method! Hope I helped someone!
  21. Beginner's Guide to Space Exploration When showcasing vehicles for my Eloquent Spacecraft Systems series, I have encountered a few players who are confused by how I achieve what I do. Questions about how I can create spacecraft to accomplish various goals are common enough that I feel the need to address them. So of course, in my usual style, I'm going completely overboard with it and thus this thread now exists. Over time, I will be putting together what is essentially a series of guides on how to achieve various accolades (from the simplicity of reaching Kerbin orbit to the immense task of exploring the Jool system), and particularly how to do it in style. Things to note about these guides I'll be using stock parts, but I have a couple of mods installed. MechJeb will provide detailed information beyond what the stock game can offer (and also includes various features that help with efficiently flying a spacecraft). Kerbal Alarm Clock and Trajectories are included for convenience with regards to planning missions. I also have Color Coded Canisters and Colorful Fuel Lines installed, which help to improve appearances of stock fuel systems. Finally, I have Kerbal Joint Reinforcement installed, and if you try to do some of the things that I do in this series without that mod then you will need a large quantity of struts. I am very much in the habit of designing things for aesthetics, and whilst I will not be prioritizing appearances quite as much as I usually do, there will still be things that can be changed about my designs to improve efficiency. Whilst you could play through much of the game simply by mimicking my designs, I very much do not recommend it. This thread is intended to help new players learn the basics (and the not-so-basics) of mission planning and spacecraft construction, but it's best to make your own vessels once you have a better understanding of where to start. Additionally, it may be most helpful to take inspiration from my designs but look into ways of improving them, since nothing I will create is perfectly optimized for anything other than appearances. A list of existing guides in this thread
  22. First of many more tutorials that I will do as I progress farther down the rabbit hole. Next video will be tutorial on how to intersect with a station and docking! Dont forget to subscribe to my channel and leave comments at the bottom. Link to my channel ------------- https://www.youtube.com/channel/UCFJjKobyN0kA3lzpzcT0PiQ
  23. Does anyone know how to make a part using blender? I want to make a mod with warbird cockpits but I need modeling help and texturing help too. I also might need help for the cfg
  24. I am starting a new and complete tutorial to get you started with pod/cockpit makeing this is to give you what I have learned from the forums to help you make your very own mod. This is my first tutorial so please comment if I make a mistake.
  25. Changelog : Intorduction: Ok, so we went on alot of rocket adventures (hence the name Kerbal Space Program ) but what if we want to build this magical thing below? Yeah thats right. This is a tutorial on how to build a PLANE! CoM/CoL/CoT: So, what is the most important thing you need to do for a plane to fly? Well do you know the Center of Mass (or CoM)? Mass is Weight. But we also need to focus on two other forces: The Center of Lift (CoL) And the Center of Thrust (CoT) On the bottom left corner in the editor there are buttons to check all these forces, as the following screenshot shows: The CoM should be infront of the CoL to prevent flipping, the CoT should be alinged with the CoM to prevent unstable flight. If the CoM was behind the CoL, then the plane would want to pitch upwards, as if you put a string behind a model plane's CoM. Here is a screenshot on what your CoM, CoL and CoT should look like: Stalling: So you probaly were flying and then you thought "What happens if I kill speed to about 20 m/s?" Here is your unfouranate answer: you will stall. Stalling is when your wings are at a critical AoA. Your wings no longer produce lift and the air flow turns into eddies. So what do you do if you ever get at your stall speed? There is one answer that is easy to remember: Push the nose of your plane down. Then, when you get to normal speed pull up. Yes. It's that easy but even in the real world this is how you do it. Landing Gear: If you want your plane to take off, you need landing gear. Tricycle landing gears are the basic landing gears for all KSP begginers. Tricycle landing gears are basicly like this: One landing gear under the nose and one landing gear on each wing (Note: To put landing gear on wings, turn off angle snap. It's below the buttons for the CoM/CoL/CoT). But what if our landing gear was like this? Well, it will veer off the runway and go BLAM BOOM BANG! So if you want to take off your landing gear has to be like this