Dec 19, 2023
Kerbal Space Program 2 - mikey
KERBONAUTS, WE HAVE LIFTOFF! 🚀

The time is now - For Science! is now available! We're so excited to release this major content update to everyone.

Full release notes for v0.2.0.0 can be found here. We'd love to hear from you about feedback and bug reports on the update - please submit them to the KSP Forums.

Dive into and explore For Science! – and don’t forget to share with us your creations, accomplishments, and discoveries.


To celebrate the release of For Science!, Kerbal Space Program 2 is 20% off until January 4th, 2024 at 1PM ET.



The For Science! update comes with a brand-new campaign type - Exploration Mode, which adds progression and Science collection through missions, experiments, and journeying through the Kerbolar System. Collect and transmit Science from unique locations and redeem it back at the Kerbal Space Center's (KSC) newly opened Research and Development Center to unlock new part technologies, learn novel concepts, and journey further away from the Kerbal's home planet. While working through the tech tree, unlock the means to extend your reach across the Kerbolar System - from right at home on Kerbin, to the furthest regions of Eeloo, and to the murky depths of Eve. Exponential progression ensures that the rewards for your efforts match your ambitions.




How will you collect Science? With all new Science collection parts! Integrate these parts to vehicles (be sure to take note of their shape and mass, it matters!) to carry out different experiments, depending on your mission. Keep an eye out for new Kerbal animations when Science gathering during Extra-Vehicular Activity (EVA)!


We've overhauled the Science collection and transmission interface for KSP2. During flight, it's now easy to know when there's an opportunity to take measurements or collect samples via a new Experiment Actions button, which provides detailed information about what opportunities are available in your current location. The brand-new Research Inventory gives clear information about how much Science you've already collected and the ability to transmit Science data. The Mission Tracker app helps you keep track of in-progress and completed objectives. New flight planning tools have also been added to the Vehicle Assembly Building (VAB), including altitude and environment-specific readouts that show thrust-to-weight ratio, burn time, and Delta-V for each stage. Data persists and continuously updates in-flight.


On your journeys, uncover a wealth of new research locations and mysterious geological formations spread across the Kerbolar System. Locate them and unlock special Science-gathering opportunities - we wonder what you're going to find...


The days of stress-free atmospheric re-entry have come to an end with the introduction of atmospheric re-entry heating effects and thermal part behavior.


We've also made significant quality of life improvements:
  • An enhanced joint system has been developed, dramatically reducing wobbliness of large vehicles
  • Updated ambient sound systems
  • An all-new Boat Dock - complete with cranes and gantries for use both in-and-out of missions. With this comes additional buoyancy improvements!

From us at Intercept Games and Private Division, thank you. We hope you enjoy For Science! and your time amongst the stars!

https://store.steampowered.com/app/954850/Kerbal_Space_Program_2/
Kerbal Space Program 2 - mikey
New Features & Content
  • Added a new game mode called "Exploration Mode"
  • Adding Mission Control and Research & Development (R&D) Center buildings
  • Added a Tech Tree with 4 tiers
  • Added the Mission Tracker app
  • Added 11 Primary missions and 30 Secondary missions
  • Added the Research inventory app
  • Added 9 new Science collection parts
  • Added several unique points of interest throughout the Kerbolar System
  • Implemented thermal system for part heating
  • Implemented re-entry VFX
  • Implemented Delta-V tools in both VAB and flight
  • Added fully-functional buoyancy system for floating vessels
  • Implemented a new audio ambience system
  • Added the first implementation of the Cheats Menu (ALT+F8)
  • Added a boat dock environment
  • Added two new tutorials
  • Added new messages to the Cadet Orientation System
  • Added dozens of new items to the Kerbal Variety System
  • Added the K0 starter rocket stock vessel
Bug Fixes and Improvements

Flight & Map
  • Implemented reinforced joints system and accompanying player-adjustable joint mode settings
  • Overhauled buoyancy behavior
  • Fixed: Acceleration under timewarp stops working after reaching specific in-game time (UT) while in orbit around some CBs
  • Fixed: Buoyancy displacement incorrect for parts with variety drag cubes
  • Fixed: Landing legs deployed at high speeds are ripped off of the vessel
  • Fixed: Vessels sink or are destroyed due to mismatched terrain colliders
  • Fixed: Vessel falls through the ground when camera moves more than ~2500m away from it
  • Improved issue where rovers flip after driving a short distance from their load origin location
  • Fixed: Visual drift on several engines when using high timewarp
  • Fixed: Vessel parts move out of place when switching to a rocket in orbit while at the KSC or Tracking Station
  • Fixed: Vessels end up in a bad state wen switching away from the vessel in orbit
  • Fixed: Vessel parts are out of place after disengaging timewarp at very low orbit around Mun
  • Reduced floating point precision loss on rotating reference frames
  • Fixed: Ship is destroyed when switching away from the vessel while engines are running
  • Fixed: Two docked vessels become stuck and unable to undock after a third vessel is docked
  • Improved trajectory AP/PE values changing when saving and loading while in orbit around any CB
  • Added AP/PE display to maneuver trajectories appearing within SOIs
  • Projected trajectory and actual trajectory now both show periapses for the targets in relative SOIs after a maneuver has been performed
  • Fixed: Kerbals appear as vessels in Map
  • Fixed: Orbit tag displays incorrect celestial body name
  • Fixed: "Timewarp to Point" appears as an option for planned trajectories
  • Celestial body name is shown on both the default and expanded view of every AP/PE marker
  • Changed "Enter/Exit SOI" marker to "Encountering/Leaving CB Name"
  • Orbital markers inherit the color of the current trajectory or planned maneuver trajectory
  • Fixed: Vessel and other icons clip into celestial bodies in Map view
  • Fixed: Maneuver gizmo can still be manipulated if the player pauses while manipulation is occuring
  • Added "control" and "focus" to Kerbal action buttons in Tracking Station to align with vessel actions
  • Fixed: Returning to KSC while paused in another SOI breaks KSC
  • Reduced the frequency of "Solar Panels Ineffective" notification
  • Fixed: VesselOutOfElectricity message event does not trigger when EC is exhausted
  • Fixed: Notification does not display when trying to increase timewarp past the limit using hotkeys
  • Fixed: Player receives "Loss of Control" notifications when discarding boosters
  • Fixed: "Vessel out of EC" notification fires when the vessel or Kerbal doesn't have EC to start with
  • Fixed: Staging a vessel collapses the Delta-V information in the staging stack
  • Fixed: Vessel continues to accelerate after resuming control from Tracking Station, and turning off engines
  • Fixed: Vessels on launch clamps are not considered landed when at the launchpad
  • Fixed: Throttle sometimes jumps to 100% when passing 20km altitude above Kerbin
  • Fixed: Some engine gimbals don't work when offscreen (e.g. in Map mode)
  • Added vessel loss prompt when using the Escape Menu option to leave flight while vessel is on a collision course
  • Adjusted flight report to remove revert options from vessels that are currently in-flight or have been recovered
  • Fixed: Map UI info panel fails to display buttons and flight information for EVA Kerbals
  • Fixed: Portraits for both Kerbals are not present when docking vessels that have one Kerbal each
  • Fixed: Jetpacks sometimes show up in Kerbal portraits
  • Fixed: Tooltips on map items duplicated due to camera distance
  • Fixed: EC values from destroyed electrical parts remain in the Vessel Resources UI
  • Fixed: Flight HUD velocity displays decimals but only updates on integers at velocities above 999 m/s
  • SAS vector hold indicator now displays appropriate highlight when selected
  • Fixed: Temperature gauges stay on screen when switching scenes
  • Fixed: Disconnected parts sometimes remain linked when joints are broken between parts
  • Fixed: Kerbol not visible between altitudes of 1000 MM and 750 MM in flight
  • Fixed: Deployed parachutes that have moved from the parts bin to the first stage do not stage properly
  • Fixed: Vessels landed on CBs other than Kerbin can be recovered using Info Panel in Tracking Station
  • Fixed: Part destruction causes assertion error
  • Fixed: Recovering vessel causes Null Reference Exception
  • Fixed: Looking directly at Kerbol from a semi major axis of ~25,210,000,000 m or more causes error flood
  • Fixed: Tracking station shows shows incorrect values for atmospheric pressure, sphere of influence and rotational velocity for CBs
Optimizations
  • Improved performance of SimulationObjectView by returning pre-cached components
  • Improved performance of loading stock vessel metadata by only reading from meta .json files
  • Moved buoyant force algorithm to job system to address spinning of floating parts and to improve performance and stability
  • Improved water detection performance
  • Terrain rendering time reduced by ~30-50% based on location
  • Removed separate re-rendering of cloud edges to improve performance
  • Fixed: Cloud resources not released after changing cloud quality settings
  • Optimized shadow rendering for clouds
  • Fixed: Light bulb parts cause performance issues
  • Fixed: Frame rate drops when generating new Kerbals using the Kerbal Manager in the VAB
  • Fixed: Memory leak in PartBehaviorSystem
Menus & Settings
  • Changing from Full Screen to Windows maintains resolution settings
  • Graphics Settings for resolution now default to the current resolution, if present on the dropdown
  • Fixed: Some accessibility settings do not visually update UI to represent saved setting state
  • Fixed: Graphics quality settings do not apply correctly when selecting medium quality
  • Fixed: General settings don't have descriptions for all options
  • Fixed: Part animations in Main Menu display incorrectly
  • Updated KSP2 Credits
Saving & Loading
  • Fixed: Title freezes at loading screen after reverting to the VAB several times from flight
  • Fixed: Save files take a long time to load, and in some cases the vessel is absent after loading
  • Fixed: Struts don't appear on a vessel if the vessel was previously loaded onto a launch pad
  • Fixed: Close button doesn't work in the Workspace File Name input field inside the Save Workspace dialog
  • Changed "vehicles" to "workspaces" in VAB Save/Load menu titles to reduce confusion
  • Fixed: Save Workspace menu shows vehicle names instead of workspace names for player workspaces
Parts & Stock Vessels
  • Fixed: "RF-AD-XL 2500" fueled adapter model is invisible
  • Fixed: "Tuba" engine experiences attachment offset at high warp speeds
  • Fixed: Landing legs and wheel parts under compression fully extend during timewarp
  • Fixed: Landing legs have issues when switching to map while they are extending or retracting
  • Fixed: "Labradoodle" engine moves out of place when timewarping at 1,000,000x speed in flight
  • Fixed: Already-deployed shrouds sometimes reappear when game is reloaded
  • Added heatshield functionality to existing heatshield parts
  • Fixed: DTS-M1 antenna collider stuck in deployed state
  • Fixed: Surface attach node definition for MK3 engine mount is missing
  • Added bottom node to inflatable heat shield
  • Fixed: Stack-attached parts incorrectly detected as contents of a cargo bay
  • Fixed: Missing drag properties for some structural parts
  • Improved clipping of landing legs through terrain and other surfaces during time warp
  • Minor tuning pass on many parts, including Command and Structural drag cube and buoyancy scalars
  • Tuning pass on drag cubes for all parts
  • Fixed: "Goliath" engine fan doesn't animate when throttled up/down
UI / UX
  • Updated UI for the KSC launchpad menu
  • Updated UI for the Training Center
  • Updated Launchpad Menu UI
  • Updated UI on the KSC Menu
  • Updated visuals for alert notifications panel
  • Updated visuals for UI Notifications
  • Passive notifications moved to the top of the screen
  • Updated UI for all app windows for stylistic consistency
  • Fixed: Alert & Passive Notifications don't scale properly when switching between resolutions
  • Fixed: Passive notifications remain on screen indefinitely when the game is paused
  • Updated boat launch icon
  • Consistency pass on KSC facility icons
  • Updated color for scrollbars
  • Increased font size for Game mode descriptions
  • Updated UI on tutorial arrows and indicator areas
  • Resized tutorial arrows
  • Tutorial gifs display at consistent size
  • Fixed: Fuzzy edges on the VAB Tool Bar UI
  • Fixed: UI does not properly highlight when hovering on the save vehicle save/load menu
  • Fixed: Ellipses have incorrect vertical position due to font issue
  • Fixed: Action Bar Bento Menu button text runs into edge of box
  • Fixed: Text misaligned when viewing EVA controls in flight
  • Fixed: Text is cut off and illegible in the Time Warp and Breadcrumb UI while on the lowest fullscreen resolution
  • Fixed: Text cut off in Training Center due to scroll masking
Construction
  • Fixed: Attaching a subassembly to another part using the stack attach node of a symmetrical child part causes crash
  • Fixed: LES "Bottle Rocket" Solid Fuel Booster appears as a white box icon in the staging stack
  • Fixed: Assembly Anchors cannot be changed on non-launch subassemblies
  • Fixed: Copied decouplers are not copied to a new stage
  • Fixed: Symmetrically-placed parts remain held and cause a Null Reference Exception after removing and reattaching an edited subassembly
  • Fixed: Area around staging stack in the VAB is camera movement dead zone
Environments
  • Upgraded water refraction for Kerbin and Laythe
  • Adjusted Eve's ocean waves
  • Adjusted ocean waves on Kerbin and Laythe
  • Adjusted Eve's ocean underwater surface visibility
  • Fixed: Visual artifacts appear in Jool's atmosphere while within Jool's SOI in flight mode
  • Fixed: Visible steps in cloud rotation due to low float precision
  • Fixed: Cloud shadows cause light flickering on vessels in low Kerbin orbit while on high quality settings
  • Fixed: Clouds disappear at some locations when set to low quality
  • Fixed: Height mismatch between local and scaled clouds under medium quality settings
  • Fixed: Eve's upper atmosphere has a semi-sharp upper border
  • Increased resolution for close-range terrain textures on all celestial bodies
  • Fixed: Laythe low quality clouds have a pixelated glow effect on them
  • Fixed: Terrain appears pixelated when seen up-close
  • Fixed: Dres ridge and some other decal-based landforms don't have proper collision
  • Fixed lighting flashes when loading new scenes or changing vessels
  • Updated collision mesh for Air Traffic Control Tower
  • Fixed: Negative scale errors reported in log files
EVA
  • Fixed: Loading a game that was saved while an EVA Kerbal was holding onto a vehicle causes the Kerbal to fall off the vehicle
  • Fixed: If a Kerbal jumps during time warp while in flight mode, the Kerbal becomes unresponsive
  • Fixed: If ladder is shaking, Kerbal resting on ladder becomes offset over time
  • Adjusted jetpack material to better match kerbal spacesuit
FX & Audio
  • Fixed: Ambient sound stops working when leaving flight view and coming back
  • Fixed: Audio events do not persist when entering the main menu upon exiting or saving a game
  • Fixed: Audio mutes on text entry on Campaign screen if you use numpad 1 or 2
  • Fixed: Audio does not detect collisions with non-terrain objects correctly
  • Fixed: Water impact splash does not change with part velocity
  • Fixed: Water splashes spawn at incorrect orientations
  • Fixed: KSC ambient music plays while in Cadet Orientation mode
  • Fixed: Math issues in water level detection vs part bounding boxes caused apparent hovering of floating vessels
Tutorials
  • Fixed: Title crashes after deleting parts during Tutorial 1 and then quitting to Main Menu
  • Added a setting to disable Cadet Orientation after creating a campaign
  • Fixed getting stuck on the final step after using time warp to reach a stable orbit trajectory during tutorial "Establishing an Orbit"
  • Fixed voiceover getting stuck when player fails tutorial "Manipulating Orbits"
  • Fixed: Tutorial highlight overlaps Altimiter in the Flight Cluster
  • Fixed: Engineer's Report and Flight Planner crowd one another in the VAB tutorial
  • Updated arrows position for several tutorials
Modding
  • Changing unit culture to be invariant for some text parsing scenarios
Known Issues
  1. If paused in-flight, switching to Mission Control causes the loading screen to hang.
    • Workaround: Press '>' to resume time.
  2. Orbit Surveys are difficult to run on small celestial bodies.
    • Workaround: Geostationary or big elliptical orbits should allow the player to run those experiments. The intention of this part is for it to scan the regions underneath the vessel as it moves over them - however right now, it pauses when a new region is encountered, something that occurs a lot when moving fast over some CBs. We are internally testing improvements to this so the part can get its data with less babysitting.
  3. Miscellaneous text issues in missions, i.e. debrief text repeating.
    • Significant amounts of text went into this update, so a few things slipped through the cracks. Even if they're minor, please do report them!
  4. Separators below a root part will cause improper separation causing loss of control.
    • Workaround: Consider using decouplers instead of separators if you're running into this issue.
  5. Solar panels are sometimes blocked when in Jool's sphere of influence even when Kerbol is in clear view.
  6. After staring at the Sun from Jool's 'surface', black dots may appear and persist even when transitioning back to the KSC.
  7. Surface-attached lights don't turn on properly when launching for the first time.
Common Workarounds
If you run into an issue, the first thing you should try is saving and reloading. We have found many common issues to be quickly fixed using this method. You can additionally try reverting to launch.

A Note on Heat
It's important to keep in mind that the Part Heat System in KSP2 is different than KSP1, so do not expect parity in this area. Tuning the numbers for the heat system will be a long-term project, so feedback is appreciated!

Submitting Bug Reports and Feedback
If you'd like to provide feedback about this build, there are many different ways to do so:
Submit Feedback through the Game Launcher
Suggest a Change on the KSP Forums
Join us on Discord to discuss potential changes

Bug reports should be shared to either:
Private Division Customer Support
Dedicated Bug Reports on the KSP Subforum
Kerbal Space Program 2 - mikey
For us early fans of the original Kerbal Space Program, there were so many things to enjoy during those first sandbox days. Whether it was the slapstick fun of stringing together small fuel tanks (there was only one size) into impossibly huge rockets, or the eternal search for unlikely uses for the game's only “robotic” part (the landing leg), KSP was a good time from the very beginning.

Ah, the good old days. (Courtesy of TD Channel)

If HarvesteR and Squad had stopped there, Kerbal would likely still be remembered as a beloved curiosity. But then they added Science Mode. Suddenly, the game had goals: anywhere you went in the Kerbolar System, you could gather a Science currency that could be spent at the R&D Center to research new technologies. Over time, an expanding roster of new parts were added to the game, and lo and behold, KSP became undeniable.

With the siren song of new celestial bodies calling out to me, my own campaign saves turned into epic sagas. I became attached to the individual Kerbals who crewed my first, stumbling Mun missions. Stranded survivors of landings gone awry could not be left behind. That first Mun landing was a moment to remember, but the first Mun rescue was even better!

As that narrative emerged — and as I invested my crews with personalities and dreams — the game began to invade other parts of my life. I have a strong recollection of designing a Laythe rescue rocket in the margins of my meeting notes at work. It not only had to land upright in Laythe’s ocean, but had to deploy a boat to collect the survivors of a previous mission who had contrived to get stranded several kilometers apart from one another. And then the whole thing had to take off from the water again to rendezvous in orbit with a Kerbin return vehicle.

The missions became puzzles that I couldn't put down. To feed my growing hunger for design ideas, I first turned to the KSP Subreddit, where others (some of whom clearly knew a thing or two about space travel) were achieving impossible things with their own space programs. Some of these creators drew inspiration from planned space missions, some of which were more speculative than others.

Thus was I introduced to the strange and beautiful universe of “what happens when the Kerbal spirit is applied to the material world.” Could you propel a ship with nuclear bombs? Yes, and we almost did! Could you build a plane that takes off from a runway, then switches from air-breathing mode to oxidizer mode to fly to orbit? You sure can try!

My Kerbal experience became a way to investigate many of these real-world mission architectures, and as a greater number of mods became available, virtually all things became possible. The real-world mission proposals all had awesome names that hinted at their audacity: Orion, Nautilus-X, Constellation. Sometimes it felt like I could wish them into being by building them in KSP. Not all of these dreams were as far off as they seemed — as SpaceX achieved the impossible goal of landing first stages propulsively, we all played along at home.

This video game had introduced me to a new and beautiful reality. When I knocked together my first goofy rocket, I didn't even really know what an orbit was. HarvesteR didn't just give me a game, he gave me an endless undertaking, the pursuit of which would lead me to Atomic Rockets, the NASA Spaceflight forum, and the videos of Scott Manley.

Tomorrow, Kerbal Space Program 2 is crossing that same threshold from “fun toy” to “trying to figure out in the shower how to make a rover when you haven't unlocked wheels yet at the R&D Center.” With the release of the For Science! update, the game receives several new features and numerous high-consequence bug fixes. I've been playing a single Exploration Mode campaign for a couple of months now, and I'm suddenly realizing that thousands of deeply-invested sagas are about to get underway.

Just unlocked some probe cores, it's time to fly to Duna!

My son was born a year after the original KSP’s debut. Now we're playing KSP2 together, and our own Exploration Mode campaign has just entered Tier 3 on the tech tree. We've Gotten Weird With It, somehow managing to unlock the nuclear NERV engines before having rover wheels, extendible ladders, or any but the smallest batteries. We've returned samples to Kerbin from Duna's North pole and the deep craters of Gilly. We've disintegrated more than one probe in the thick atmosphere of Eve, and we're assembling a very big nuclear rocket in low Kerbin orbit, with the goal of exploring all the moons of Jool in one go.

We've got a lot of empty docking ports on that main truss. Probes? Landers? Packing for Jool is always hectic.

It's so fun. It's really, really fun.

How is it different from KSP? Lots of ways, big and small. Science collection is a much smoother process that involves a lot less guesswork, and the new Science parts are pleasingly diverse, asking you to think hard about how to take advantage of their unique properties. To give one example, the long collection time of the ASCM-A "Air Sniffer" atmospheric science module requires you to develop a loiter capability. You’re either going to have to make a plane, or you’re going to need to get creative with your lander design!

We haven't unlocked the big engines yet, but that won't stop us from testing some spaceplane ideas!

The new terrain system really comes into its own here, as well. There’s no way to predict what you'll encounter when landing at a new location, and I often find myself sightseeing when I'm supposed to be doing serious science stuff. Adding to that feeling of mystery are the new Discoverables — one-of-a-kind points of interest, a couple dozen of which have been scattered throughout the Kerbolar System. My son and I have run across one of them so far (won't tell you where), and it was every bit as exciting a discovery as I'd hoped!

Tim C. Kerman clearly thinks he's discovered a delicious baked potato.

This update’s inclusion of re-entry heating and more rigid joints are of course hugely important to the overall experience, as are the recent corrections of a number of stability and performance issues. Buoyancy has also seen a major upgrade, and it’s now possible to build working seaplanes (and launch them from our brand-new boat docks)! The game is still in Early Access, which means there are still plenty of improvements to come (as well as plenty of opportunities to help us out by submitting your feedback and bug reports), but the simple fact is that the game is now very hard to put down.

My first glorious seaplane flight in KSP2 (inspired by this amazing real plane).

Go check out our deep dive video for a breakdown of everything that arrives tomorrow at 10am Pacific time in the For Science! update. We've got an all-new Mission system that offers you interesting new goals to pursue in your quest for Science, and there's a completely revamped R&D Center with four tiers of unlockable technologies. Personally, I'm looking forward to seeing how deep into the Kerbolar System people can get with only the first research node unlocked. I suspect it's shockingly far. Could Eeloo be in play? Could somebody possibly manage an Eve landing and return? Only time will tell!

Eve, beguiling yet deadly!

The For Science! update is the first of a series of major Roadmap Updates. The next one brings colonies to the game, and future installments will add new star systems and new technologies to enable you to fly between them. We’ll also continue to listen to player feedback to get a sense of which changes are working well and which ones need further development.

The fun is just beginning!

2023 has been a year of challenges for KSP2, and we appreciate the huge role our community has played in helping us to identify and pursue areas of improvement. I also want to give a big shoutout to our Pioneers, whose dedication and eagerness to dig deep into early builds uncovered a lot of previously-invisible issues. I hope that as we pass this new milestone, you can feel how much passion and hard work the team at Intercept has poured into this game. We are proud of how far KSP2 has come, and we are equally grateful for the dedication and patience our players have shown over the past year. We certainly have come a long way in the last ten months.

From all of us at Intercept to all of you in the KSP community: thank you for your support. We’re excited to finally get the Exploration Era underway with all of you.

Don’t forget to check your staging, and I’ll see you on Laythe!

Nate
Kerbal Space Program 2 - mikey
Hi Kerbonauts!

For Science! launches in a few days on December 19th - here's a deep dive video with key members of the KSP team that covers what'll be available in the update (with some sweet new gameplay!).


ICYMI - for more information about For Science!, check out our:
We're in the final countdown!


Keep up with all things Kerbal Space Program 🚀
KSP Forums
KSP Website
Facebook
Twitter
Instagram
Intercept Games Discord
KSP YouTube
Kerbal Space Program 2 - mikey
The team has been hard at work improving the performance of Kerbal Space Program 2 since launch, so we'd like to take a moment to really showcase the difference between the Early Access launch (v0.1.0.0) and the For Science (v0.2.0.0) release coming next week on December 19. Full global release timing graphic can be found here.

Here's a look at some graphs we use to understand the game's performance and the improvements that have been made to our minimum specification and recommended specification machines:

FPS between EA launch and For Science! on minimum specs.

FPS between EA launch and For Science! on recommended specs.

This represents a huge amount of work by the development team across a number of features and releases. With performance optimization being one of the most frequent requests since launch, we're looking forward to hearing from players how this work improves the overall gameplay experience.

If you're curious about performance tuning and how we make decisions in that area, the rest of this check-in provides a high-level overview from our Engineering Team and should provide a bit of extra context for the above graphs.

Performance 101
As you can see in the charts, performance varies quite a bit between various scenes players might find themselves in. When we’re investigating performance-related issues, we need to investigate many variables both in the game and on the physical machine. Let’s examine the basics of performance tuning and what we look at when trying to make decisions about performance optimization.

In keeping with the theme of For Science!, we should start with defining our experiments and the measurements we will use to determine if we are moving in the right direction. So, let’s start with Frames per Second (FPS), which many of you will already be familiar with. A frame is the period required to fully recalculate what has changed in the game state and redraw the scene to the player. The more FPS, the smoother the game looks and feels, as this allows us to capture inputs quicker and update the game state showing those updates to the user in a more responsive way.

When we are digging into performance, we want to look at that value in a different way: milliseconds per frame (ms). Why would we do that? Basically, we want to understand what, in a given frame, is taking up time so we can make it faster. For a 30 FPS goal, we get 33.3 milliseconds per frame, so it becomes a lot easier to set a budget for how much time a given section of the game should take. But what are we taking time from exactly? There are two pieces of hardware we generally are looking at for performance: the GPU and the CPU.

At a high level, a Graphics Processing Unit (GPU) is a piece of hardware that specializes in the types of calculations that are needed to render a given scene. It is much faster at smaller tasks in parallel than a Central Processing Unit (CPU) but much slower at running tasks in a series. In order to get the maximum performance out of a computer, we want to use both to their full potential and optimize the game accordingly.

Now some of you are thinking “What about memory, storage devices or things like that?” And you’re right that we do consider those things, but for the purposes of this overview we are going to concentrate on the biggest items that affect performance. But bonus points all around.


An example internal debug output.

One of the important parts of performance tuning is to understand what the bottleneck is in each scene, either the CPU or the GPU. In the image above the CPU is taking 44ms per frame on a scene and the GPU is only taking 19ms. The CPU is the bottleneck in this case, so it doesn’t matter how much more optimization we do on the GPU. To improve this specific case on this specific hardware, we need to determine and target the most expensive operations on the CPU.

One of the challenges of making a PC game compared to consoles is the variety of hardware choices, specifically when it comes to CPUs and GPUs. There are thousands of combinations that someone could have, and each of them is going to perform slightly differently. That doesn’t even get into memory differences or software differences like operating system patches, hardware drivers, etc. This is why we publish minimum and recommended machine specifications - to help players understand what we have tested and if their machine should be able to play the game with adequate performance.

Now that we have some background on what developers look at for performance tuning, let’s go back up to those graphs at the top. For one, these are per-configuration graphs, which are used to tell us how the game is performing on that specific hardware. We do lots of these which help us to remove the hardware variables from the tests and just look at how the given build is performing overall. It also lets us look at this data over time and see if things are improving or not. As we add features, these will always affect performance, so we need to be checking the deltas consistently to determine where we need to spend time on improvements. The other thing these graphs help determine is if a given hardware setup has abnormal issues compared to other similar setups. A given manufacturer may have optimized their hardware in such a way that we get different performance out of certain improvements and knowing that helps us optimize the game for the entirety of our player-base across a wide range of hardware options.


We hope that this has been informative! As we work towards larger performance optimization goals in the future, we’ll be sure to share updates in posts just like this – and perhaps take a more technical deep-dive in a performance-focused dev blog, so let us know if you’d like to see that!

Thanks for reading and hope you enjoy For Science!

-The KSP Team
Kerbal Space Program 2 - mikey
We are days away from the launch of For Science! on December 19!

Here's a world map of when the update comes out in your time zone:


For more information of what's in the update, check out this announce news post and our Science and Tech Tree video with Tom Vinita, Feature Lead.
https://www.youtube.com/watch?v=74qcdSk9V2M

We've got some fun things staging for release!


Keep up with all things Kerbal Space Program 🚀
KSP Forums
KSP Website
Facebook
Twitter
Instagram
Intercept Games Discord
KSP YouTube
Kerbal Space Program 2 - mikey
Hello Kerbonauts. I'm Ghassen, also known as 'Blackrack,' the newest graphics programmer on the team. You have no doubt noticed that we have improved the atmosphere rendering in v0.1.5.0. Today I’m going to share with you some insights into those improvements, as well as some of the improvements that are going to be in v0.2.0.0.

Inspecting the Atmosphere
This is how our atmosphere appeared in v0.1.4.0 on Kerbin:


We can see a very nice-looking sky. However, the effect is very subdued on the terrain, we have trouble reading the terrain topography: It is difficult to tell what we are looking at in the distance and the sense of scale escapes us. Are those mountains? Are those hills?

Cut to v0.1.5.0, we can immediately see a big improvement in the scene's readability.


We can now immediately get a sense of how far away things are and we get a better sense of scale. This is what’s known as aerial perspective.

How the Atmosphere is Rendered
We are using a precomputed atmospheric scattering method which is standard nowadays in computer graphics, and popularized by Eric Bruneton.

It is precomputed, meaning all the heavy calculations involved in simulating how light scatters through the atmosphere are done once for all possible altitudes and sun angles, and then stored in compact and easy to access tables. The latitude and longitude of the observer on the planet does not matter because we can use symmetries and effectively just change the altitude and sun angles to get the scattering at any viewpoint.

These tables can then be used to display the effect in a very performance-friendly manner when the game is running. These are known as look-up tables. This what some of the slices in our look up tables look like:



How Aerial Perspective is Rendered
The look-up tables I’ve described earlier can be used to find the colour of the sky for any given viewpoint inside or outside the atmosphere, as well as how much the atmosphere occludes celestial objects behind it (this is known as transmittance or also extinction, it describes how much of the original object’s light is transmitted and makes it to the observer).



The look-up tables only allow us to get the light scattered towards us from the edge of the atmosphere, and assume we are always looking towards the edge of the atmosphere, so we cannot use it to directly to get the colour of the atmosphere up to an object. This is because the look-up tables would otherwise become impractically big and would eat up our memory budget.



However, since the look-up tables allow us to get the colour of the sky from any viewpoint, we can re-express the scattered light up to a point/object as the difference between two samples to the edge of the atmosphere, starting from different positions.



We also must apply transmittance to the observer to second sample (in red on the diagram) for everything to be correct.

Putting It In-Game
So now that we know the method to render aerial perspective, we can plug it in-game, and see what we get. Behold:


Hmm that looks really strange around the horizon, so what's happening here?

Recall that we are using look-up tables, these are loaded on the graphics card as textures, and they have limited resolution and precision (bit depth). The aerial perspective method described earlier only makes precision issues worse by taking the difference between 2 samples, especially on high variance areas (typically around the horizon) where any imprecisions are amplified.

The way to deal with this is to first inspect the look-up tables, see if anything is stored in low precision textures or with any lossy compression, and use high precision instead where needed typically (16-bit and 32-bit per channel floating point textures).

After that, we can then change the parametrization for how samples are distributed across the look-up table to maximize resolution where it is needed. The original paper offers a nice way to distribute samples, but we found that it works best for physical settings matching those of Earth, but not for some of the settings used at Kerbal scale.

Finally, we review all the lossy transformations in the math and try to minimize any loss of precision and guard against various edge cases.

This is where most of the engineering effort in implementing precomputed atmospheric scattering is spent. Right now, we have gotten our implementation to a good place, however the inherent limitations of the method means that in the future we will move to a different, non-precomputed method which doesn’t suffer from these issues and would allow us greater flexibility.

The Importance of Mie Scattering
We simulate Rayleigh scattering (air particles), mie scattering (water droplets and aerosols) and ozone absorption, each of these is important to represent a different effect and render all the kinds of atmospheres we want.

Mie scattering has a particularly noticeable effect and can be used to make atmospheres look foggy and cinematic, all the while keeping a realistic look. I took these screenshots early in testing the atmosphere changes to illustrate the difference increasing mie scattering makes to a scene:





In the end we went with a relatively subdued setting on Kerbin and a nice heavy setting on Laythe to set them apart, also as a reward for flying to Laythe.

Atmosphere as Lighting
Recall that we have the transmittance that we discussed earlier as the part of light that reaches the observer and objects in the atmosphere. We can now use that to light objects, by applying it to sunlight, this gives us the very nice and soft lighting you can see around sunsets and sunrises:


We can also use the transmittance on the clouds, notice how areas in direct light can get a nice reddish color, while areas not in direct light get ambient light, and we get a very nice contrast between the reddish transmittance and the faint bluish ambient:


Using the atmosphere to do lighting also simplifies artists workflow, as the alternative was to try and approximate the different lighting parameters at different times of the day via various settings and it was very difficult to make the clouds look “right” at every time of day. Now we have less work to do and it looks better and more coherent.

Speaking of clouds, next we will discuss of some of the performance improvements coming in v0.2.0.0, but first let’s see how clouds are rendered in more detail.

How Clouds are Rendered
Modern clouds are rendered via raymarching, a technique that involves “walking” through a 3D volume, incrementally sampling properties like density and colour as we move along, and performing lighting calculations. This method provides a more accurate and visually appealing result compared to traditional rendering techniques and is very well adapted to rendering transparencies and volumetric effects. This figure shows in red all the samples we have to do for a single ray/pixel on-screen:



Because of the number of samples we must take during the raymarching process, it is very demanding performance-wise. A solution to this it to render at low resolutions and upscale.

Temporal Upscaling
Temporal upscaling was introduced in v0.1.5.0, the idea is to render a different subset of the pixels every frame. This is similar to checkerboard rendering if you’re familiar with the concept but generalized and not locked to half resolution rendering. This diagram shows how 4x temporal upscaling works, a full resolution image is reconstructed over 4 frames:


In movement, the old pixels are moved to where they should be on the current frame, based on their position in space and how much the camera moved from the last frame, this is called reprojection.

After moving the old pixels, their colour is validated against neighbouring new pixels, to minimize temporal artifacts, this is called neighbourhood clipping and is the foundation of modern temporal techniques like TAA.

Despite the neighbourhood clipping, we were still getting artifacts and issues after this stage in motion, due to the high number of “old” pixels compared to “new” pixels, typically this manifests itself as smearing or flickering. Our solution was to re-render the problematic areas separately at normal resolution, since these areas are only a small part of the final image.

This sounds great in theory, but while flying around clouds in a fairly heavy scenario we can see the following timings on a 2080 super at 1440p:
  • Low-resolution rendering of new pixels: 5.45 ms
  • Reproject old pixels and assemble full resolution image: 0.12 ms
  • Re-rendering of problem areas: 4.11 ms
  • Process and add clouds to the rest of the image: 0.09 ms
For perspective, if we want to reach 60 fps we need to render in ~16.6 ms, so this step seems to take a sizable chunk of rendering time in v0.1.5.0, even though we are rendering faster than we did in v0.1.4.0 using this approach.

This is because those re-rendered areas are at the edges of clouds where rays must travel furthest and evaluate the most samples before becoming opaque or reaching the boundary of the layer.

For v0.2.0.0 we took a bit more inspiration from temporal techniques to find an alternative solution to re-rendering problem areas: If colour-based neighbourhood clipping isn’t sufficient, we can use depth and motion information like speed and direction of movement (on-screen) to try and identify when reprojected pixels don’t belong to the same cloud surface/area and invalidate them as needed. The idea is to store all this information from the previous frame, and every frame we do a comparison with the previous one to get a probability that a reprojected pixel/colour does not belong to the same surface we are currently rendering.

After some implementation and tweaking this ended up working well and we can see the following improvement in rendering performance (screenshots taken on a 2080 super at 1440p, framerate counter in top left):

On the launchpad we went from 77 to 91 fps

In-flight around the cloud layer, we went from 54 to 71 fps

That’s about a 17-31% performance improvement on the whole frame and we save 2 ms to 4 ms on the rendering of the clouds.

You can look forward to these performance improvements and more in v0.2.0.0, out on December 19th!


Keep up with all things Kerbal Space Program 🚀
KSP Forums
KSP Website
Facebook
Twitter
Instagram
Intercept Games Discord
KSP YouTube
Kerbal Space Program 2 - mikey
Hi Kerbonauts!

As we get closer to the For Science! update, another Dev Chat has dropped - sit down with Creative Director Nate Simpson and Feature Lead Tom "FRIIIDAAAAAAAAY" Vinita as they deep dive into Exploration Mode and the tech tree, upcoming features of the update. Watch Nate and Tom play through
the mode's first mission called Launch a Rocket, collect Science on Kerbin, and progress through the tech tree!

(It's not Friday, please don't tell Tom. He was very excited to shout the day.)

Be sure to also check out the sneak peeks we've been putting out, highlighting some goodies coming to For Science!.

There aren't any sneak peeks at the end of the Dev Chat...except in case you missed the announcement...

[h5]THE FOR SCIENCE! UPDATE WILL BE OUT DECEMBER 19, 2023!![/h5]
More details on global release timing to come. We can't wait to share!

For all you pixel investigators, shots of the tech tree below!







Keep up with all things Kerbal Space Program 🚀
KSP Forums
KSP Website
Facebook
Twitter
Instagram
Intercept Games Discord
KSP YouTube
Kerbal Space Program 2 - mikey
Attention Kerbonauts!

We're ecstatic to share that...

THE FOR SCIENCE! UPDATE WILL BE OUT DECEMBER 19, 2023!!
[h5](Yes, in three weeks!)[/h5]

Check out our last news post for information on some features to expect! And stay tuned for an all-new Dev Chat later this week that deep dives into everything this milestone update has to offer.

We'll share more details about global release timing when we get closer to launch. We can't wait for you all to get your hands on For Science!!



Keep up with all things Kerbal Space Program 🚀
KSP Forums
KSP Website
Facebook
Twitter
Instagram
Intercept Games Discord
KSP YouTube
Oct 25, 2023
Kerbal Space Program 2 - mikey
🚀 <-- This rocket denotes a fix that community members directly helped our dev team fix. Thanks to all of you who send in bug reports!

Bug Fixes

Flight & Map
Optimizations
  • Optimized CPU use for cloud rendering
  • Optimized MessageCenter to improve performance in flight scene
  • Improved GPU performance at KSC by rendering KSC ground during terrain prepass
  • Improved CommandBuffer performance by delaying execution until end of frame, avoiding unnecessary UpdateRenderBounds work
  • Fixed: Drastic loss of performance during a specific time of day in Kerbin's atmosphere
  • Fixed: Vessel splashed-down behavior causes performance to drop
  • Fixed: Water and cloud render textures cause memory leak
  • Fixed: Stranded references in the Simulation Update code
  • Fixed: ParametricLineGenerator leaks memory
  • Fixed: Memory leaks from VegatationSystem
  • Removed unnecessary code when returning to main menu
  • Removed unnecessary calls in SetOceanMaterial code
  • Removed unnecessary planet textures to reduce GPU memory
  • Removed unnecessary calls in GetLiftVector code
  • Reduced memory usage on water rendering
  • Reduced unnecessary calls in the IVAPortraits code
Saving & Loading
  • Fixed: Unable to launch a vessel under the Workspaces folder from the Launchpad menu at KSC
Parts & Stock Vessels
  • Added gridfin parts GRFN-125 and GRFN-250
  • 🚀 Fixed: Extended engine bells load from save in wrong state for Cornet, Trumpet and Tuba engines https://forum.kerbalspaceprogram.com/topic/217955-reloading-a-save-and-switching-vessels-retracts-the-lv-2000-trumpets-nozzle/
  • Updated mesh generation code for fairings
  • Fixed: LY-60 and LY-90 landing legs wheels are misaligned or flipped when extended
  • Fixed: Separating any part from ST-Micro-1 truss causes all remaining child joints connected to any other ST-Micro-1 truss on the active vessel to break
  • Fixed: Docking ports cannot always be targeted
  • Fixed: LT-1 landing leg does not align to the ground when extended
  • Fixed: Ground parts under compression fully extend during timewarp in game
  • Fixed: Antenna ranges for fixed antennas not calculated correctly
  • Fixed: Rover wheels lose steering at low velocity
  • Fixed: Drag system errors when loading a vessel in atmospheric flight
UI / UX
Construction
  • 🚀 Fixed: Max Impact statistic shows twice in part info tooltip https://forum.kerbalspaceprogram.com/topic/219154-max-impact-value-shown-for-all-parts-as-the-same-max-impact-531kn-stated-for-all-parts-twice/
  • Reenabled ALT to disable stack attach
  • Increased timeout for Fairing and Wing edit icons
  • Fixed: A.I.R.B.R.A.K.E.S do not open when selecting Deploy in the parts manager in the VAB
  • Fixed: Vessels with changed assembly roots cause failure of surface attached parts, as well as broken save behavior
  • Fixed: Triangle panels placed with mirror symmetry are not oriented correctly
  • Fixed: The RA-15 antenna appears inverted when placed in mirror symmetry mode on a vessel in the VAB
  • Fixed: The DTS-M1 antenna is not oriented correctly when placed in mirror symmetry mode on a vessel in the VAB
  • Fixed: The Pegasus 1 ladder appears inverted when placed in mirror symmetry mode on a vessel in the VAB
  • Fixed: The Communotron 16-S antenna appears inverted when placed in mirror symmetry mode on a vessel in the VAB
Environments
  • Cloud lighting and shading improvements
    • Application of atmosphere transmittance to cloud lighting
    • Unification of ambient light calculation for ray-marched, baked, and scaled clouds
    • Recalculation of average position for clouds to accommodate density
    • Updating scattering to use average/weighted position estimated from density samples
    • Moving some code into functions, and separating cloud shadows out of scaled cloud shader and into a new shader that renders below the atmosphere
  • 🚀 Fixed: Lighting is not consistent from all camera angles when viewing the surface near the poles of several celestial bodies https://forum.kerbalspaceprogram.com/topic/217989-lighting-on-poles-of-celestial-bodies-flickering/
  • 🚀 Fixed: Lighting is inconsistent at Laythe’s north pole https://forum.kerbalspaceprogram.com/topic/217989-lighting-on-poles-of-celestial-bodies-flickering/
  • 🚀 Fixed: Lighting is inconsistent at Vall’s north pole https://forum.kerbalspaceprogram.com/topic/217989-lighting-on-poles-of-celestial-bodies-flickering/
  • Changed lighting at sunsets by using atmospheric scattering to soften lighting - sunsets are now realistically red on Kerbin, blue on Duna, etc.
  • Improved atmospheric scattering integration on terrain and clouds to make atmospheres softer and horizons smoother
  • Improved cloud blending with the atmosphere
  • Implementation of biome and triplanar mesh bucketing for terrain rendering
  • Optimized cloud shadows
  • Adjusted dynamic resolution calculation for clouds
  • Increased Eve's atmosphere scatter height
  • Fixed: Wrong scale on KSC light colliders creating log spam
  • Fixed: Decals not visible at higher altitudes above Eeloo
  • Fixed: Water is invisible when landing at a specific location on the surface of Eve
  • Fixed: Bop's polar crater appears distorted in map and tracking station
  • Fixed: Terrain spikes at Bop's south pole
  • Fixed: seen from orbit, Jool's surface disappears while medium quality clouds are enabled
EVA
  • Fixed: Attaching a decoupler that creates a fairing too close to the MK1 Command Pod which prevents Kerbals from exiting vessel
  • Improved self shadowing on Kerbal skin materials
  • Improved smoothness of the blink animation
FX & Audio
  • Adjusted Logitech Lighting FX when vehicle crashes
  • Adjusted Logitech Lighting colors when reaching some celestial bodies
  • Fixed: Wingtip vortices jump when entering celestial frame of reference
  • Fixed: Incorrect key colors during docking control for Logitech Lighting FX
  • Fixed: Booster engine VFX spawn to the side when flying past ~21.5k altitude on Kerbin
Tutorials
  • Fixed: Reverting after using the Tutorial Menu to return to flight causes soft lock
Localization
  • Text updated for antialiasing options in Settings
Modding
  • Upgraded Unity to version 2022.3.5f1
Known Issues
Gridfins GRFN-125 and GRFN-250 Are Not Affected by SAS: This is due to a recently identified problem with control surfaces and how they interact with SAS. SAS is intended to work with Gridfins in the future, but for now they are manual control only.

PF-AD-XL 2500 Fueled Adapter Is Invisible When Viewed in VAB and Flight: We are aware of issue and are investigating.

First Time User Experience Prompt Does Not Appear When Vessel Loses Power for the First Time in Flight: This is new to v0.1.5.0, and we are investigating.

Submitting Bug Reports and Feedback
If you'd like to provide feedback about this build, there are many different ways to do so:
Submit Feedback through the Game Launcher
Suggest a Change on the KSP Forums
Join us on Discord to Discuss Potential Changes

Bug reports should be shared to either:
Private Division Customer Support
Dedicated Bug Reports on the KSP Subforum
...