Trial Deployment of Linux Builds

Apologies it has taken this long, but we are now trialing linux build deployments. These builds are deployed untested. I have changed ⁠version-history on discord to now split out preparing the builds and deploying them. The windows build will now refuse to deploy a build that fails digital signature. Both builds will now indicate if they have successfully be deployed or not. The master server MAY indicate an incorrect build for linux, if linux fails to deploy. This will be changed soon when I can update that side of the deployment process.

You can download the trial builds for linux directly at:https://ksa-linux.ahwoo.com/

Please consider contributing​

It will increase our costs significantly to host this separate linux deployment. We are already spending x10 as much as we get in contributions - so it would make a great deal of help if folks who find the linux deployment useful consider contributing. If you do contribute - please do note in the contribution message if you can that it is FOR the linux deployments. I will use this data to help push that we should continue to integrate this going forward.

Report Linux issues​

Please discuss linux issues here and we will do our best to resolve them. One member of the team is developing on linux, so we do have some capacity to try and resolve these issues where they occur.
 
Maybe by 'It will increase our costs significantly to host this separate linux deployment.' they meant the development cost, not the file host/upload cost, idk.

Terra Incognita on Discord said file delivery isn't that costly compared to the staffing necessary. It's a matter of labor involved with the extra development, testing, fixing, overhead, etc. more than actually providing the download.
 
A summary of current issues I observe as of v2026.2.38.3713:
  • Requires libvulkan-dev (libvulkan.so instead of libvulkan.so.1)
  • Poorly handles window resizes and fullscreen state change
  • Missing window metadata (app-id, tags, parent)
  • Unpredictably spawns windows.
    • a minor issue on Wayland in general
    • a major issue on tiling compositors specifically, exacerbated by lack of window metadata
    • need a killswitch/single-window mode
    • there is no positioning-that-should-not-be-named on Wayland (Absolute positioning. Shh... Wayland devs will curse you if they hear those words), so have to work around that, or check out zones protocol when/if it matures enough.
      • having properly tagged and parented windows will make it possible to do proper positioning from compositor's side with rules
 
Last edited:
v2026.3.3.3759. Titan has atmosphere glitches: misplaced godrays, weird transparency/surface thing and craft bloom(?) trails

screen_2026-03-05_18:04:06.pngscreen_2026-03-05_18:04:26.png
 
Can you make a $10/month contribution tier available? I would be happy to contribute toward it, but $5/mo seems low and $20/mo is too high (compared to Patreons, MMF Tribes, etc).
 
Can you make a $10/month contribution tier available? I would be happy to contribute toward it, but $5/mo seems low and $20/mo is too high (compared to Patreons, MMF Tribes, etc).

I'd suggest upvoting and commenting on this suggestion!
 
A little nagging behavior of the linux client: KSA does not progress loading when the mouse leaves the window. While everything is being loaded one has to make sure to stay above the main window.
 
I tested on Gentoo (KDE Plasma), and AMD 7800XT, basically it's working fine, but all previous issues that were already mentioned here (about Wayland, and etc).

BTW yeah, see depending on dotnet is very unusual on Linux but probably very common for games... next version on Beavy? :)
 
  • Like
Reactions: sleepy_eb
v2026.3.9.3904 (but maybe earlier ones too), some funky stuff with ground shadows. Dithering-like z-fighting (or z-fighting-liike dithering), and vessel being illuminated, despite being in shadow:

1774603821085.png
1774603833974.png1774603844572.png
 
Version 2026.4.3.3957 works flawlessly on:

Distro:Void Linux
Kernel:6.12.79_1
RAM:129 GB
GPU Driver:NVIDIA 580.126.18
GPU:NVIDIA GeForce RTX 3080
CPU:AMD Ryzen Threadripper 2950X 16-Core

Install is somewhat involved. I had to do chmod +x KSA Brutal.Monitor.Subprocess in the linux-x64 folder, and some other steps.

I've only put about an hour into it, but it's nice and smooth so far. Thanks!
 
  • Like
Reactions: sleepy_eb
There are dozens of us! DOZENS!! 😆
Retired Gentoo user here. And probably also the only Trisquel GNU/linux user 🧓
"
WARN settings file not found, creating default settings at /home/***/Documents/My Games/Kitten Space Agency/settings.toml
21:45:43 INFO loaded settings from /home/***/Documents/My Games/Kitten Space Agency/settings.toml
21:45:44 ERROR Unhandled exception Brutal.VulkanApi.VkResultError: Vulkan call to vkCreateInstance failed with error: VK_ERROR_INCOMPATIBLE_DRIVER
"

Distro: Trisquel 11.0.1 aramo
Kernel: x86_64 Linux 7.0.0-gnu
RAM: 3877MiB / 7741MiB
CPU: Intel Core i7 M 620 @ 4x 2.667GHz
Kernel driver in use: i915
Kernel modules: i915
GPU: Mesa Intel(R) HD Graphics (ILK)

I just learned of KSA and just tested out of nostalgia for when I played ksp over a decade ago when I still used microslop.
Shame the code of this game won't be released under GPL. Still I wish you all to have much fun.
Take care and fly safe.
 
  • Like
Reactions: sleepy_eb
Couple things I had to do but it still crashes


Code:
chmod +x KSA
chmod +x Brutal.Monitor.Subprocess
sudo apt install libvulkan1
sudo apt install libvulkan-dev

MESA_VK_WSI_PRESENT_MODE=mailbox vblank_mode=0 ./KSA


MESA_VK_WSI_PRESENT_MODE=mailbox vblank_mode=0 ./KSA
13:55:11  INFO loaded settings from ~/Documents/My Games/Kitten Space Agency/settings.toml
13:55:11  WARN No dedicated compute queue family found on physical device, using graphics queue for compute operations.
13:55:11 DEBUG Multi view supported: True
13:55:11 DEBUG Ray query acceleration structure support:False
13:55:11  INFO Swapchain created with 4 images
13:55:11 ERROR GLFW Error: 65547 Wayland: Standard cursor shape unavailable
13:55:11 ERROR GLFW Error: 65547 Wayland: Standard cursor shape unavailable
13:55:11 ERROR GLFW Error: 65547 Wayland: Standard cursor shape unavailable
13:55:11 DEBUG Kitten Space Agency (KSA) v2026.4.14.4100 initialized
13:55:11  INFO found mod 'Core'
13:55:11 DEBUG found system 'Sol'
13:55:11 DEBUG found system 'SolDense'
13:55:11 DEBUG found system 'SolLite'
13:55:11 DEBUG found system 'Test'
13:55:12  INFO loaded Situation Template 'Gemini7StartingSituation'
13:55:12  INFO loaded Situation Template 'RocketStartingSituation'
13:55:12  INFO loaded Situation Template 'HunterStartingSituation'
13:55:12  INFO loaded Situation Template 'BanjoStartingSituation'
13:55:12  INFO loaded Situation Template 'PolarisStartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'Gemini7StartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'RocketStartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'HunterStartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'BanjoStartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'PolarisStartingSituation'
13:55:12 DEBUG loaded system 'Sol'
13:55:12  INFO loaded Instance of Situation Template 'Gemini7StartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'RocketStartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'HunterStartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'BanjoStartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'PolarisStartingSituation'
13:55:12 DEBUG loaded system 'SolDense'
13:55:12  INFO loaded Instance of Situation Template 'Gemini7StartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'RocketStartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'HunterStartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'BanjoStartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'PolarisStartingSituation'
13:55:12 DEBUG loaded system 'SolLite'
13:55:12  INFO loaded Instance of Situation Template 'Gemini7StartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'RocketStartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'HunterStartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'BanjoStartingSituation'
13:55:12  INFO loaded Instance of Situation Template 'PolarisStartingSituation'
13:55:12 DEBUG loaded system 'Test'
13:55:18  INFO loaded Situation Template 'Gemini7StartingSituation'
13:55:18  INFO loaded Situation Template 'RocketStartingSituation'
13:55:18  INFO loaded Situation Template 'HunterStartingSituation'
13:55:18  INFO loaded Situation Template 'BanjoStartingSituation'
13:55:18  INFO loaded Situation Template 'PolarisStartingSituation'
13:55:18  INFO loaded Instance of Situation Template 'Gemini7StartingSituation'
13:55:18  INFO loaded Instance of Situation Template 'RocketStartingSituation'
13:55:18  INFO loaded Instance of Situation Template 'HunterStartingSituation'
13:55:18  INFO loaded Instance of Situation Template 'BanjoStartingSituation'
13:55:18  INFO loaded Instance of Situation Template 'PolarisStartingSituation'
13:55:18 DEBUG loaded system 'Sol'
13:55:18 DEBUG loaded planet mesh collection 'Default'
13:55:18 DEBUG loaded planet mesh collection 'EarthScale'
13:55:18 DEBUG loaded planet mesh collection 'OceanEarth'
13:55:18 DEBUG loaded planet mesh collection 'Asteroid'
13:55:18 DEBUG loaded planet mesh collection 'MarsScale'
13:55:18 DEBUG loaded planet heightmap collection 'Default'
13:55:23  INFO loading star binary 'hip_main.bin'
13:55:23  INFO loading star binary 'hip_main.bin'
13:55:23 DEBUG loading 106424 star binaries from 'Content/Core/hip_main.bin'
13:55:23  INFO instantiated 'Sol' system
13:55:24  INFO following celestial 'Rocket'
13:55:24  INFO Controlling 'Rocket'
13:55:24  INFO set simulation speed to x1
13:55:24  INFO set map camera to azimuth 2.88, elevation 0.47, distancePower 3635076.00
13:55:24  INFO set camera mode to 'Map'
13:55:24  INFO set map camera to azimuth 2.88, elevation 0.47, distancePower 3635076.00
13:55:24  INFO set camera mode to 'Map'
13:55:24  INFO set orbit camera to azimuth -4.83, elevation -0.41, distancePower 2.85
13:55:24  INFO set camera mode to 'Orbit'
13:55:49  INFO Ecotype: Grass VRAM Usage: 13 MB.
13:55:49  INFO Ecotype: Rocks VRAM Usage: 9 MB.
13:55:49  INFO Ecotype: LargerRocks VRAM Usage: 9 MB.
13:55:49  INFO Ecotype: SmallerRocks VRAM Usage: 5 MB.
13:55:49  INFO Ecotype: Rocks VRAM Usage: 9 MB.
13:55:49  INFO Ecotype: LargerRocks VRAM Usage: 9 MB.
13:55:49  INFO Ecotype: SmallerRocks VRAM Usage: 5 MB.
13:55:51  INFO Current ring maximum meshes instances: 110413, impostor instances: 990645, VRAM usage: 23 MB.
13:55:51  INFO Preparing Part Thumbnails...
13:55:52  INFO Preparing Part Thumbnails... Complete!
13:55:52 DEBUG checking for updates from 'http://ksa-master1.rocketwerkz.com:8082/version'
13:55:52  INFO Application Initialization Complete
13:55:52 DEBUG master server version: 'v2026.4.14.4100'
13:55:52  INFO you are running the latest version
13:55:59 ERROR Unhandled exception Brutal.VulkanApi.VkResultError: Vulkan call to vkQueuePresentKHR failed with error: VK_ERROR_DEVICE_LOST
   at Brutal.VulkanApi.Queue.PresentKHR(VkPresentInfoKHR inPresentInfo)
   at Core.Renderer.PresentFrame()
   at Core.Renderer.TrySubmitFrame(Span`1 additionalWaitSemaphores, Span`1 additionalWaitStages, Span`1 additionalSignalSemaphores)
   at KSA.Program.PostRender(Double dtPlayer)
   at KSA.Program.OnFrame(Double currentPlayerTime, Double dtPlayer)
   at KSA.App.Run()
   at KSA.Program.Main(String[] inArgs).
Unhandled exception. Brutal.VulkanApi.VkResultError: Vulkan call to vkQueuePresentKHR failed with error: VK_ERROR_DEVICE_LOST
   at Brutal.VulkanApi.Queue.PresentKHR(VkPresentInfoKHR inPresentInfo)
   at Core.Renderer.PresentFrame()
   at Core.Renderer.TrySubmitFrame(Span`1 additionalWaitSemaphores, Span`1 additionalWaitStages, Span`1 additionalSignalSemaphores)
   at KSA.Program.PostRender(Double dtPlayer)
   at KSA.Program.OnFrame(Double currentPlayerTime, Double dtPlayer)
   at KSA.App.Run()
   at KSA.Program.Main(String[] inArgs)
Aborted (core dumped)

Using a Dell laptop that runs KSP
  • Intel HD 630
  • Mesa 25.2.8
  • X11 and Wayland both fail
  • crash occurs at vkQueuePresentKHR with VK_ERROR_DEVICE_LOST
  • kernel logs show i915 GPU hang in KSA


OpenGL version string: 4.6 (Compatibility Profile) Mesa 25.2.8-0ubuntu0.24.04.1

==========
VULKANINFO
==========

Vulkan Instance Version: 1.3.275


Instance Extensions: count = 24
===============================
VK_EXT_acquire_drm_display : extension revision 1
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 10
VK_EXT_debug_utils : extension revision 2
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_EXT_headless_surface : extension revision 1
VK_EXT_surface_maintenance1 : extension revision 1
VK_EXT_swapchain_colorspace : extension revision 5
VK_KHR_device_group_creation : extension revision 1
VK_KHR_display : extension revision 23


Also tried with the latest via
Bash:
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update
sudo apt full-upgrade
OpenGL version string: 4.6 (Compatibility Profile) Mesa 26.0.5 - kisak-mesa PPA


Code:
14:33:24  INFO Application Initialization Complete
14:33:25 DEBUG master server version: 'v2026.4.14.4100'
14:33:25  INFO you are running the latest version
14:33:37 ERROR Unhandled exception Brutal.VulkanApi.VkResultError: Vulkan call to vkQueuePresentKHR failed with error: VK_ERROR_DEVICE_LOST
   at Brutal.VulkanApi.Queue.PresentKHR(VkPresentInfoKHR inPresentInfo)
   at Core.Renderer.PresentFrame()
   at Core.Renderer.TrySubmitFrame(Span`1 additionalWaitSemaphores, Span`1 additionalWaitStages, Span`1 additionalSignalSemaphores)
   at KSA.Program.PostRender(Double dtPlayer)
   at KSA.Program.OnFrame(Double currentPlayerTime, Double dtPlayer)
   at KSA.App.Run()
   at KSA.Program.Main(String[] inArgs).
Unhandled exception. Brutal.VulkanApi.VkResultError: Vulkan call to vkQueuePresentKHR failed with error: VK_ERROR_DEVICE_LOST
   at Brutal.VulkanApi.Queue.PresentKHR(VkPresentInfoKHR inPresentInfo)
   at Core.Renderer.PresentFrame()
   at Core.Renderer.TrySubmitFrame(Span`1 additionalWaitSemaphores, Span`1 additionalWaitStages, Span`1 additionalSignalSemaphores)
   at KSA.Program.PostRender(Double dtPlayer)
   at KSA.Program.OnFrame(Double currentPlayerTime, Double dtPlayer)
   at KSA.App.Run()
   at KSA.Program.Main(String[] inArgs)
Aborted (core dumped)
 
Last edited: