Changelog#

v0.6.0#

Core#

  • Add Version property to Core, set by the server plugin on startup (#848)

  • Enable TCP_NODELAY on client TCP connections, reducing RPC round-trip latency (#879)

  • Surface deprecated members (annotated with [Obsolete]) in the service definition and over the wire (#904)

  • Add KRPC.GameScene and make it settable to switch the current game scene (#897)

  • Deprecated KRPC.CurrentGameScene, kept as a read-only alias of KRPC.GameScene (#897)

  • Add AstronautComplex, MissionControl, ResearchAndDevelopment, Administration and MissionBuilder game scenes (#897)

  • Fix the game scenes a procedure is available in never being sent by GetServices; the game_scenes field of every procedure was always empty (#991)

  • Reduce copying and allocation overhead receiving protobuf messages (#972)

  • Fix the websocket servers rejecting connection requests that are split across multiple reads (#973)

  • Fix websocket connection URL query parameter parsing (#973)

  • Fix locale issues with type codes in the service description, and HTTP and websocket protocol tokens (#993)

Server#

  • Fix server version reported to clients (read from KRPC.dll not KRPC.Core.dll) (#848)

  • Fix Logger to write to both KSP.log and Player.log (#780)

  • Improve RPC and stream update performance (#879)

  • Fix Stream RPCs Executed and Stream RPC Rate always showing 0 in the info window (#879)

  • Improve the server window UI (#919)

  • Fix incorrect unit shown for “max. time per update” and “receive timeout” (#919)

  • Support switching the game scene by setting KRPC.GameScene (#897)

  • Fix repeated toolbar icons appearing in some situations (#939)

SpaceCenter service#

  • Space center

    • Add SpaceCenter.Expansions to report the installed KSP expansions (#985)

    • Add SpaceCenter.AltimeterMode and an AltimeterMode enumeration to get and set the mode of the in-game altimeter (#808)

    • SpaceCenter.ActiveVessel now returns null when there is no active vessel, instead of raising an error (#821)

    • Breaking Make LaunchVessel crew parameter non-optional to work around protocol issue (#824)

    • Deprecated SpaceCenter.LoadSpaceCenter, superseded by setting KRPC.GameScene (#897)

  • Vessels and crew

    • Add Vessel.Loaded and Vessel.Packed to report a vessel’s loading and on-rails state (#967)

    • Add Vessel.PhysicsRange to set how far from the active vessel a vessel keeps running its physics simulation, so that it stays controllable beyond the game’s default range. The range applies to that vessel only, and persists until it is set back to zero or the game is exited (#987)

    • Add RPCs for getting acceleration to Flight and Vessel classes (#581)

    • Fix Vessel.AvailableTorque due to sign inconsistency in KSP’s ITorqueProvider implementations (#525)

    • Add CrewMember.Part and per-part CrewCapacity and Crew properties (#1001)

  • Staging

    • Add staging API giving per-stage delta-v and resource information (#920)

    • Deprecated Parts.InStage, Parts.InDecoupleStage and Vessel.ResourcesInDecoupleStage, superseded by the staging API (#920)

    • Fix Part.DecoupledAt not considering if a decoupler is enabled (#818)

    • Fix Part.DecoupledAt returning the wrong stage when the part is decoupled by a decoupler on its parent part (#800)

    • Fix Decoupler.AttachedPart raising an error when no part is attached to the decoupler’s node; it now returns null (#822)

  • Autopilot

    • Rework the AutoPilot for smoother, more accurate pointing across a wide range of craft, from small probes to large flexible launchers, with no per-craft tuning (#882, #571, #394, #220, #248, #542)

    • The AutoPilot now controls pitch and yaw together, so the nose tracks a straight path to the target and holding a roll no longer curves that path (#882)

    • The AutoPilot now detects and damps structural oscillations on long or flexible craft automatically; rigid craft are unaffected (#882)

    • Replace AutoPilot.Engage and Disengage with the AutoPilot.Engaged property (#882)

    • Add AutoPilot.TargetRotation to command a full target orientation (direction and roll) (#882)

    • Add AutoPilot.SetDirectionAndUp to aim the nose along a direction while keeping the roof aligned to an up vector, so an orientation can be held through a maneuver without the singularity the old roll control hit at the vertical (#882)

    • Add AutoPilot.UpReference, a persistent reference that AutoPilot.TargetRoll is measured against, and make TargetRoll well-defined through the vertical (#882)

    • Add AutoPilot.AttitudeError for a singularity-free (pitch, yaw, roll) attitude error; PitchError and HeadingError now use the same well-defined decomposition (#882)

    • Fix AutoPilot.RollError returning spurious large values near vertical (#564)

    • Document Flight.Pitch, Heading and Roll and the scalar target pitch/heading/roll as ill-defined near vertical, pointing to the rotation and error readouts instead (#882)

    • Add AutoPilot.TargetSmoothingTime to slew the target smoothly when it changes, with matching Current* readouts of the smoothed target actually being tracked (#882)

    • Add AutoPilot.SoftStartTime to fade in control output on engagement (#882)

    • Add AutoPilot.Reset to disengage and restore all settings to their defaults (#882)

    • Add AutoPilot.ShowInfoUI to show an in-game autopilot info window (#882)

    • Replace AutoPilot.RollThreshold with RollStartAngle and RollEngageAngle (#882)

    • Replace AutoPilot.StoppingTime and DecelerationTime with AutoPilot.MaxAngularVelocity (#882)

    • Replace AutoPilot.AttenuationAngle with PitchYawAttenuationAngle and RollAttenuationAngle (#882)

    • Add controls to tune and observe the AutoPilot’s oscillation mitigation (rate filter, bandwidth floor, feedforward-cut and output-filter modes, and manual structural-frequency settings) (#882)

    • Add AutoPilot.StoppingAngleThreshold and StoppingVelocityThreshold to control when AutoPilot.Wait() returns (#882)

    • Add an optional timeout to AutoPilot.Wait(), throwing TimeoutException if it expires (#882)

    • Add AutoPilot.DiagnosticLogging and DiagnosticLog for per-tick controller diagnostics (#882)

    • On client disconnect the AutoPilot is now disengaged but its settings and target are kept (#882)

    • Fix AutoPilot.Error to return the absolute value of the normalized angle (#893)

    • Fix the auto-pilot no longer controlling the vessel after a Revert to Launch when a client keeps its auto-pilot object across the reload (it appeared engaged but stopped driving the vessel until the game was restarted) (#958)

    • Fix AutoPilot.ReferenceFrame raising an error when set to a docking port reference frame (#882)

  • Reference frames

    • Fix Maneuver and ManeuverOrbital reference frame velocity (previously returned zero; now returns the orbital velocity at the node UT) (#880)

    • Fix angular velocity for VesselSurface, VesselSurfaceVelocity, CelestialBodyOrbital, Maneuver, ManeuverOrbital, Part, PartCenterOfMass, DockingPort and Thrust reference frames (previously returned zero) (#880)

    • Fix VesselOrbital reference frame angular velocity (missing Coriolis correction) (#823)

    • Fix reference frame velocity being incorrect at non-equatorial latitudes (#454)

    • Fix Vessel/Part/Hybrid reference frame rotation precision (#880)

    • Fix ReferenceFrame.CreateHybrid using velocity frame’s angular velocity instead of the angularVelocity frame (#880)

    • Fix VesselSurfaceVelocity reference frame producing NaN when surface velocity is near zero; now throws InvalidOperationException (#880)

    • Fix PartCenterOfMass reference frame throwing InvalidOperationException on velocity transforms (#880)

    • Fix Maneuver reference frame forward-vector fallback using unnormalized burn vector in collinearity check (#880)

    • Fix LookRotation2 producing NaN for rotations near 180° by using Shepperd’s method (#880)

    • Fix maneuver node reference frame positions being computed relative to the active vessel, giving wrong positions for maneuver nodes on other vessels (#880)

    • Improve performance of CommNode.IsVessel, CommNode.Vessel, Vessel.AngularVelocity and reference frame angular velocities (#975)

  • Orbits, nodes and bodies

    • Add Orbit.OrbitalEnergy (#303)

    • Add Orbit.NextClosestApproach and Orbit.ClosestApproaches, and a ClosestApproach class exposing the time, distance, positions, velocities, relative position/velocity and relative speed at a close approach with a target orbit, plus the vessels or bodies involved (#334)

    • Deprecated Orbit.TimeOfClosestApproach, Orbit.DistanceAtClosestApproach and Orbit.ListClosestApproaches, superseded by Orbit.NextClosestApproach and Orbit.ClosestApproaches (#334)

    • Add Node.Rotation (#880)

    • Fix Node objects whose maneuver node was removed by Control.RemoveNodes, another Node object or the in-game UI: all members now raise an error, instead of silently reading and writing the detached node (#975)

    • Fix CelestialBody.Rotation returning incorrect values before a flight scene loads (#890)

  • Flight and aerodynamics

    • Breaking Add a rotation parameter to Flight.SimulateAerodynamicForceAt to set the vessel attitude (angle of attack and sideslip) independently of velocity. Pass the current rotation for the previous behavior (#915)

    • Add Flight.SurfacePrograde and Flight.SurfaceRetrograde direction vectors (surface-relative velocity direction, matching navball surface mode) (#582)

    • Fix Flight.AngleOfAttack and Flight.SideslipAngle treating dot product as radians instead of using asin (#880)

    • Add Flight.AerodynamicTorque, the live counterpart to Flight.AerodynamicForce, giving the net aerodynamic torque acting on the vessel about its center of mass on the current physics frame; not available with FAR (#914)

    • Add Flight.SimulateAerodynamicTorqueAt to simulate the aerodynamic torque about the vessel’s center of mass, for a hypothetical attitude and angular velocity, with both stock aerodynamics and FAR, in newton-meters. The torque includes both damping mechanisms the game applies: the change in each part’s local airflow due to rotation, and the per-part rigidbody angular drag (#825, #914, #429)

    • Add Flight.SimulateAerodynamicWrenchAt to evaluate stock aerodynamic force and torque together at a hypothetical center-of-mass state, attitude, body rate and atmospheric ephemeris time (#914)

    • Add Part.Drag and Part.Lift returning the aerodynamic drag and lift forces acting on an individual part (#459)

    • Fix Flight.SimulateAerodynamicForceAt ignoring the current deflection of aerodynamic control surfaces, including deployed airbrakes (#622)

    • Fix Flight.SimulateAerodynamicForceAt overestimating drag at low altitude and subsonic speed by applying KSP’s pseudo-Reynolds drag multiplier to cube drag (#912)

    • Fix Flight.SimulateAerodynamicForceAt returning force in kilonewtons instead of newtons when FAR is installed (#915)

    • Fix Flight.SimulateAerodynamicForceAt computing incorrect lift for command pods and other parts with a perpendicular-only lifting-surface module: cube body lift was applied even where the game disables it (a pod with a heatshield occupying its bottom node has none), and lifting-surface modules were evaluated against stale internal airflow state, so results depended on the game context the call was made from (landed, in vacuum, or in atmospheric flight) (#914)

    • Fix Part.Lift, Flight.Lift and Flight.AerodynamicForce including stale body lift for parts whose body lift the game suppresses, e.g. a pod with a heatshield attached (#971)

  • Control

    • Breaking Control.SAS now throws an exception when set to true while the autopilot is engaged, matching AutoPilot.SAS. Previously the write was accepted and the autopilot silently switched SAS back off on the next physics tick (#492)

    • Fix Control.SASMode being dropped when set in the same physics tick as enabling SAS (#236)

    • Add Control.PitchTrim, Control.YawTrim and Control.RollTrim to get/set the persistent pitch, yaw and roll trim of the active vessel (#863)

    • Add Control.AeroSurfaces to enable/disable pitch, yaw and roll on all control surfaces (#827)

    • Add Control.EngineGimbals to enable/disable gimbal on all gimballed engines (#827)

    • Add Control.ThrustReversers to engage/disengage thrust reversers on all engines (#865)

    • Add Control.GetActionGroupActions to list the part actions assigned to an action group (#864)

    • Add direct control of engine gimbals, RCS and control surfaces (#917)

    • Fix Control.CustomAxis01-04 being applied to the active vessel instead of the target vessel, and the getters not reading back the value that was set (#938)

    • Fix throttle being applied to a vessel with no RemoteTech control connection (#938)

  • Engines

    • Add Engine.Flameout (#311)

    • Add Engine.CanReverseThrust, Engine.ThrustReversed and Engine.ToggleThrustReversal to control thrust reversal on stock and recognized mod engines (#865)

    • Fix Engine.Propellants failing for non-active mode on multi-mode engines with different propellants (#833)

    • Fix Engine.AvailableThrust and MaxThrust for air-breathing engines at supersonic speeds (#924)

  • Reaction wheels, RCS and control surfaces

    • Add ReactionWheel.AuthorityLimiter (#909)

    • Fix ReactionWheel.AvailableTorque not considering authority limiter setting (#909)

    • Fix RCS force and torque vector calculations using max thrust rather than available thrust (#909)

    • Fix RCS.MaxTorque documentation error - it considers thrust limit set to 100% (#909)

    • Fix RCS.Active reporting a shielded thruster as inactive when it is able to thrust while shielded (#975)

    • Fix ControlSurface.AvailableTorque returning inconsistent signs (ModuleControlSurface negates the roll axis); now normalized to positive/negative torque like other parts (#881)

  • Parachutes and wheels

    • Fix Parachute.Deploy being a silent no-op for RealChute parachutes (#382)

    • Add Parachute.SafeState reporting whether it is currently safe to deploy the parachute (safe, risky, unsafe, or not applicable) (#977)

    • Add Wheel.SteeringAngleAuto to get/set automatic speed-based steering angle limiting (#975)

  • Deployable parts

    • Breaking Replace the RadiatorState, SolarPanelState, AntennaState, LegState, WheelState and CargoBayState enumerations with a single DeployableState enumeration, whose members are Deployed, Retracted, Deploying, Retracting and Broken. Radiator.State and SolarPanel.State now report Deployed and Deploying in place of Extended and Extending, and CargoBay.State reports Deployed, Retracted, Deploying and Retracting in place of Open, Closed, Opening and Closing. The underlying values are unchanged, so only the enumeration and member names need updating (#986)

    • Breaking ResourceHarvester.State is now a DeployableState and no longer reports Active; use ResourceHarvester.Active to check whether the harvester is drilling. The ResourceHarvesterState enumeration is removed and its values renumbered, so clients using it must be regenerated (#986)

    • Fix CargoBay.State reporting Deployed for a closed cargo ramp, and reporting a resting state while the bay was still moving (#986)

  • Robotic parts

    • Breaking RoboticController.AddAxis, AddKeyFrame and ClearAxis now identify an axis by the name of its field, for example targetAngle, instead of by the label shown in the part’s menu, for example “Target Angle”. The names now match those returned by RoboticController.Axes, which previously could not be passed back in, and no longer change with the language the game is running in (#993)

    • Add Parts.RoboticControllers (#985)

    • Add to RoboticController: Enabled, Playing, Position, Length, PlaySpeed, Play and Stop (#985)

    • Add to RoboticHinge: MinAngle, MaxAngle and IsMoving (#985)

    • Add to RoboticPiston: MinExtension, MaxExtension and IsMoving (#985)

    • Add to RoboticRotation: MinAngle, MaxAngle, AllowFullRotation and IsMoving (#985)

    • Add to RoboticRotor: MaxTorque, BrakePercentage and IsMoving (#985)

    • Fix RoboticRotation.CurrentAngle and RoboticRotor.CurrentRPM returning stale values in flight (the KSP fields they read are only refreshed while the part action window is open) (#985)

  • Resource harvesters and converters

    • Fix ResourceHarvester.Active being silently ignored when set while the harvester is deploying; the requested state is now applied when the deploy completes (#983)

    • Fix ResourceHarvester.ExtractionRate returning 0 when part action window is not open (#889)

    • Fix ResourceConverter.State and ResourceHarvester.ThermalEfficiency misreading the KSP status string (#892)

    • Fix Sensor.Value returning zero when the part action window is not open (#883)

  • Part modules, fields and configuration

    • Add PartField, PartEvent and PartAction API (#859)

    • Deprecated the string-dictionary Module field, event and action members (#859)

    • Allow Module.HasFieldWithId, GetFieldById, SetFieldIntById, SetFieldFloatById, SetFieldStringById, SetFieldBoolById and ResetFieldById to also access fields not visible in the UI (#858)

    • Add Part.Config, Module.Config and ConfigNode for accessing part and module static configuration (#831)

  • Science, contracts and waypoints

    • Fix Experiment.Reset not clearing the science data stored by DMagic experiments, which caused the next call to Run to fail with “Experiment already contains data” (#550)

    • Add Contract.DateAccepted, DateDeadline, DateExpire and DateFinished (#977)

    • Guard ContractManager against null ContractSystem in non-career game modes (#819)

    • Fix Waypoint.MeanAltitude returning the altitude relative to the terrain below the waypoint instead of relative to sea level (#801)

    • Fix Waypoint.MeanAltitude, SurfaceAltitude and BedrockAltitude not round-tripping: the setters did not account for KSP storing waypoint altitudes relative to the bedrock height, so the altitude read back differed from the value set (#891)

  • Alarms

    • Breaking Alarm.Type now returns an AlarmType enumeration value instead of a string (#853)

    • Add to Alarm: Node, OriginBody, DestinationBody, WarpAction, MessageAction, PlaySound, DeleteOnDismiss, Triggered and Actioned (#853)

    • Add AlarmType, AlarmWarpAction and AlarmMessageAction enumerations (#853)

    • Add Alarm.Remove to delete an alarm (#853)

    • Add AlarmManager.AlarmWithName, AlarmManager.AlarmsWithType and AlarmManager.AddTransferWindowAlarm (#853)

    • Fix NullReferenceException raised every frame after creating or removing an alarm (#853)

  • Camera

    • Add Camera.FoV to get and set the camera field of view, and read-only Camera.MinFoV, Camera.MaxFoV and Camera.DefaultFoV (#804)

    • Add Camera.NextCamera, Camera.PreviousCamera and Camera.FocussedCrewMember to cycle and select IVA cameras (#804)

    • Fix Camera Distance, Pitch, Heading and FoV setters being lost when set during a camera mode switch (#318)

  • Client disconnect cleanup

    • Remove forces added by Part.AddForce when the client that added them disconnects (#934)

    • Cancel in-progress resource transfers when the client that started them disconnects; a canceled transfer is marked as complete (#934)

    • Fix part highlighting leaking a client-disconnect event handler each time the flight scene is loaded (#934)

  • Localization

    • Fix DockingPort.Undock doing nothing when the game is not running in English (#993)

    • Fix Fairing.Jettison doing nothing, and Fairing.Jettisoned always reporting true, when the game is not running in English (#993)

    • Fix CargoBay.Open neither opening nor closing the bay when the game is not running in English (#993)

    • Fix ResourceConverter.State only ever reporting Running when the game is not running in English, leaving MissingResource, StorageFull and Capacity unreachable (#993)

    • Fix DockingPort.State reporting Shielded instead of Moving while a shield is opening or closing, when the game is not running in English (#993)

    • Fix part module field values being formatted using the machine’s locale, so that Module.Fields, Module.GetField and PartField.Value returned numbers that clients running under a locale that writes decimals with a comma could not parse (#993)

User Interface service#

  • Fix locale issues with UI.Message (#993)

InfernalRobotics service#

  • Add to Servo: UID, Mode (with a new ServoMode enum), TargetPosition, TargetSpeed, CommandedPosition, DefaultPosition, ForceLimit, MaxForce, MaxAcceleration, MaxSpeed, ElectricChargeRequired, SpringPower, DampingPower, RotorAcceleration, IsLimited, IsRotational, IsServo, CanHaveLimits, HasSpring, IsRunning, PresetPositions, AddPreset, RemovePresetAt and SortPresets (#942)

  • Add to ServoGroup: Vessel, MovingDirection, AdvancedMode, ElectricChargeRequired, BuildAid and IKActive (#942)

  • Fix Servo.MinPosition and MaxPosition to return the position limits set in the tweak menu, rather than the fixed range from the part configuration (#942)

  • Support controlling servos on any loaded vessel, not just the active vessel (#943)

  • Fix Servo.MoveLeft, MoveCenter and MoveRight failing with the latest version of IR (#941)

  • Make InfernalRobotics.Available report correctly in all game scenes (#941)

  • Fix InfernalRobotics.Ready reporting false when queried before IR has finished loading (#941)

KerbalAlarmClock service#

  • Make available in all game scenes (#944)

  • Add AlarmType.ScienceLab (#982)

  • Add AlarmAction.Custom and AlarmAction.Converted (#982)

  • Add Alarm.Enabled, Alarm.PlaySound, Alarm.Triggered, Alarm.SupportsRepeat and Alarm.SupportsRepeatPeriod (#982)

  • Fix Alarm.Remaining always failing with an invalid cast error (#982)

  • Fix alarm equality, so the same alarm obtained twice compares equal (#982)

  • Fix accessing an alarm after it has been removed; it now fails with an “Alarm does not exist” error (#982)

RemoteTech service#

  • Fix RemoteTech.Available incorrectly reporting false in game scenes other than flight (#937)

LiDAR service#

  • Fix LiDAR.Available incorrectly reporting false in game scenes other than flight (#937)

DockingCamera service#

  • Fix DockingCamera.Available incorrectly reporting false in game scenes other than flight (#937)

C-nano client#

  • Distribute via vcpkg (#874)

  • Breaking Drop autotools build; CMake is now the only supported build system (#870)

  • Breaking Modernize CMake build: require CMake 3.15+, target-based usage requirements (#834)

  • Breaking nanopb is now an external dependency (fetched via FetchContent or found on the system) rather than being bundled in the release archive; the Arduino package still bundles nanopb (#870)

  • Breaking Pre-generated protocol buffer code and krpc.proto are bundled in the release archive; set KRPC_REGENERATE_PROTO=ON to regenerate the code from krpc.proto using the nanopb generator (#872)

  • Add CMake package config so consumers can use find_package(krpc_cnano CONFIG REQUIRED) (#870)

  • CMake dependency options (KRPC_FETCH_DEPS, KRPC_FETCH_PROTOBUF, KRPC_FETCH_NANOPB): when OFF (default) the system install is required; when ON FetchContent is used. (#870)

  • Add support for serial port communication on Windows (#872)

  • Mark deprecated functions with the KRPC_DEPRECATED attribute macro (#904)

  • Generated functions are now defined as static inline, so the generated service headers can be safely included from multiple translation units (#948)

  • Breaking On Arduino, a read now fails with KRPC_ERROR_EOF when the serial timeout elapses instead of retrying forever (#1002)

  • Add KRPC_ERROR_MESSAGES option, which captures the message describing an error returned by the server so that it can be read using krpc_get_error_message. (#1002)

  • Fix corruption of received data on POSIX systems when a serial read returns fewer bytes than were asked for (#1002)

C# client#

  • Breaking Requires .NET Framework 4.7.2 or later (#948)

  • Update to protobuf v3.35.1 (#850)

  • Mark deprecated members with the [Obsolete] attribute (#904)

  • Disposing a connection now stops and joins the stream update thread (#1005)

  • An error from a service whose exception types were never registered now raises an RPCException describing it (#1005)

  • An exception thrown by a stream or event callback no longer escapes the stream update thread (#1005)

  • Fix a deadlock between the stream update thread and a thread waiting for an update (#1005)

C++ client#

  • Update to protobuf v35.1 (#850)

  • Update to ASIO 1.38.0 (#850)

  • Distribute via vcpkg (#874)

  • Breaking Drop autotools build; CMake is now the only supported build system (#851)

  • Breaking Modernise CMake build: require CMake 3.15+, C++17, target-based usage requirements (#834)

  • Add CMake package config so consumers can use find_package(krpc CONFIG REQUIRED) (#851)

  • CMake dependency options (KRPC_FETCH_DEPS, KRPC_FETCH_PROTOBUF, KRPC_FETCH_ASIO, KRPC_FETCH_ABSL): when OFF (default) the system install is required; when ON FetchContent is used. (#857)

  • Mark deprecated members with the [[deprecated]] attribute (#904)

  • An error from a service whose generated header is not included now throws an RPCError describing it (#1007)

  • An exception thrown by a stream or event callback no longer escapes the stream update thread (#1007)

  • Fix a data race on the exception thrower map between constructing a service and handling an error (#1007)

  • Fix stream update notifications being lost, which could leave Client::wait_for_stream_update sleeping through the update it was waiting for (#974)

  • Fix Client::freeze_streams blocking forever when no stream is producing updates (#974)

Java client#

  • Update to protobuf v4.35.1, guava 33.4.8-jre, antlr4-runtime 4.13.2 (#850)

  • Mark deprecated members with the @Deprecated annotation and an @deprecated javadoc tag (#904)

  • Reduce copying when encoding values (#979)

  • Fix Stream.getRate always returning zero, whatever the rate had been set to (#1004)

  • Fix looking up the method to stream or call (#1004)

  • An exception thrown by a stream or event callback no longer ends the stream update thread (#1004)

  • Fix a deadlock between the stream update thread and a thread waiting for an update (#1004)

  • An error from a service with no generated stubs loaded now raises an RPCException describing it (#1004)

Lua client#

  • Fix attributes module to always return boolean for is_a_class_member and is_a_class_property_accessor (#850)

  • Fix service, method and property names being converted to snake case using the machine’s locale (#993)

  • Calling a procedure with an argument that needs coercing no longer leaves a global named ok behind (#1003)

  • Remove encoder.client_name; a leftover from before the protocol used protocol buffers (#1003)

Python client#

  • Breaking Requires Python 3.10+ (#837)

  • Update to protobuf v7.35.1 (#850)

  • Allow calling static class methods from a class instance (#832)

  • Emit a DeprecationWarning when calling a deprecated member, and note deprecation in docstrings (#904)

  • Fix static class method calls being sent to the wrong connection when multiple clients are connected (#979)

  • An exception raised by a stream or event callback no longer ends the stream update thread (#1008)

  • Fix a deadlock between the stream update thread and a thread waiting for an update (#1008)

  • An error from a service this client does not know about now raises an RPCError describing it (#1008)

  • Fix decoding of sint64 values at or above 2**62 (#1008)

  • A closed connection is now reported instead of being mistaken for no data having arrived (#1008)

  • Removing a stream, or closing the client, now wakes threads waiting for an update on it, which previously waited for an update that could never arrive (#1008)

  • The client can now be closed from a stream or event callback, which raised RuntimeError and left the client half closed (#1008)

  • Fix a stream returning None rather than its value, or the error saying it has none, when read as its first update was being stored (#1008)

krpctools#

  • Breaking Requires Python 3.10+

  • Breaking krpc-servicedefs now runs the ServiceDefinitions tool on the .NET 8 runtime; Mono is no longer required

  • Surface deprecated members in generated documentation and client stubs (#904)

  • Fix generated Java clients failing to compile when a service has enough procedures to push the generated type tables past the JVM’s method size limit

  • Generated C-nano functions are now defined as static inline, so the generated service headers can be safely included from multiple translation units

  • Fix C-nano client generation emitting zero-sized argument arrays for procedures with no parameters

  • Fix C-nano documentation rendering an entire service’s API as an indented block quote

  • Fix docgen dropping remarks in service-level documentation

  • Fix cross-service member references not resolving in generated C# and Lua documentation (#897)

  • Fix member references in generated Python documentation using lowerCamelCase instead of snake_case

  • Fix generating client stubs and documentation from a KSP install failing when the machine’s locale is not UTF-8 and a service’s documentation contains non-ASCII characters

v0.5.4#

Core#

  • Initial version, split off from KRPC.dll

Server#

  • Fix memory leaks when switching game scene (#779)

SpaceCenter service#

  • Fix vessel recovery (#782)

  • Allow vessel switch from any scene (#781)

  • Fix memory leaks on each scene switch (#779)

  • Force throttle to zero when timewarping (#792)

  • Add SpaceCenter.Decoupler.AttachedPart (#789, #791)

  • Add SpaceCenter.Decoupler.IsOmniDecoupler (#789)

  • Fix decoupler crashes with stack separators (#790)

  • Make CelestialBody parameters doulbe precision (#786)

  • Fix scaled camera distance clamp (#785)

Python client#

  • Fix streams for services without pre-generated stubs (#774)

krpctools#

  • Fix incorrect protobuf DLL (#755)

  • Fix required KSP assemblies not being copied (#755)

  • Fix tmp directory not being deleted (#755)

  • Fix clientgen generating invalid python code for undocumented enumeration values (#757)

v0.5.3#

Python client#

  • Fix assertion error when connecting to a server with third party services installed (#754)

v0.5.2#

Server#

  • Update to protobuf v3.10.1

  • Fix game lagging when first client connects (#712)

  • Change KRPCDefaultValueAttribute so that it applies to parameters directly (#677)

SpaceCenter service#

  • Fix null reference exception when SpaceCenter.LaunchVesselFromVAB is called with no crew (#599)

  • Add Engine.IndependentThrottle to check whether it is enabled

  • Allow setting the independent throttle using Engine.Throttle

  • Fix Engine.HasFuel sometimes returning true for flamed-out SRBs (#631)

  • Add functions to manipulate a part modules fields based on identifier

  • Module.Fields now throws an exception if there are multiple fields with the same name

  • Add Module.FieldsById to get a dictionary of field values keyed by their identifier

  • Add Module.SetFieldBool and Module.SetFieldBoolById to set a field with a boolean value

  • Module.SetField* methods now raise an exception if setting the field to the wrong value type

  • Change default names for alarms created by AlarmManager

C-nano client#

  • The arduino compatible version of the library now uses the same “krpc_cnano/…” include directory as the version released on GitHub.

C++ client#

  • Use protobuf-lite

  • Roll back to protobuf v3.21.12 to avoid absl dependency

Python client#

  • Requires Python 3.7+

  • Add type hints (#703)

  • Pre-generated stubs now include implementation of services as well as type hints

  • Fix various type hint bugs in generated stubs

  • Allow importing types from a service using, for example “from krpc.services.spacecenter import Vessel

v0.5.1#

SpaceCenter service#

  • Fix null reference exception in autopilot for vessels without custom axis controls (#649)

v0.5.0#

Server#

  • Support for KSP 1.8+

  • Update to protobuf v3.9.1

  • Update to ModuleManager 4.2.2

  • Fix bug with streams where a stream update is not sent initially after a stream is created, if the stream value is null (#515)

SpaceCenter service#

  • Update to work with KSP 1.8+

  • Add to SpaceCenter:

    • LaunchSites

    • CanRevertToLaunch

    • RevertToLaunch

    • TransferCrew

    • CreateKerbal

    • GetKerbal

    • LoadSpaceCenter

    • MapFilter

    • Screenshot

  • Add crew and flagUrl parameters to SpaceCenter.LaunchVessel

  • Add support for more vessel types

  • Add LaunchSite

  • Add CelestialBody.IsStar and CelestialBody.HasSolidSurface

  • Add custom axes to Control class

  • Add Part.FlagURL

  • Add Part.AvailableSeats

  • Add Part.Glow

  • Add Part.AutoStrutMode

  • Add support for resource drain parts

  • Add support for stock robotic parts

  • Add Parachute.Cut

  • Add support for docking port rotation

  • Add support for Light blinking

  • Add support for wheel steering angle limit and response time

  • Fix ParachuteState.Active state and clean up real chute vs. stock parachute logic

  • Add support for stock alarms (AlarmManager and Alarm classes)

  • Use raycast to measure surface height more precisely in CelestialBody.SurfaceHeight (#524)

  • Fix null reference exception when checking active vessel (#528, #530)

  • Fix null reference exception when waiting for active vessel change (#516, #529)

  • Add RCS.ThrustLimit and RCS.AvailableThrust (#519)

  • Add Control.StageLock (#541)

  • Fix launch checks and automatic vessel recovery in SpaceCenter.LaunchVessel

  • Fix setting camera target to an unloaded vessel (#536)

  • Fix Control.Legs and Control.Wheels not deploying/retracting legs/wheels correctly (#509, #261)

  • Allow legs/wheels can be individually deployed/retracted using Leg.Deployed and Wheel.Deployed (#509, #261)

  • Allow lights to be individually turned on and off (#261)

  • Fix Engine and RCS fuel calculations only being done when they are enabled (#514, #254)

  • Add support for parts that contain multiple experiments (#533)

    • Part.Experiment now throws an exception if the part has more than one experiment

    • Add Part.Experiments which returns a list of experiments in the part

    • Update Parts.Experiments to return all experiments contained in the parts

  • Add Experiment.Name and Experiment.Title

  • Fix Fairing.Jettison and Fairing.Jettisoned for parts from the ProceduralFairings mod (#549)

  • Fix Engine.SpecificImpulse returning 0 for Realism Overhaul engines that are active but not throttled up (#548)

  • Fix compatibility with DMagic science experiments mod (#550)

  • Fix available torque calculations for RCS (#552, #354)

  • Fix RCS.MaxThrust returning incorrect values

  • Fix SimulateAerodynamicForceAt (#587)

  • Fix RCS.GetTorqueVectors not considering if each direction is enabled (#591)

  • Add RCS.AvailableForce and Vessel.AvailableRCSForce (#597)

Drawing service#

  • Add Drawing.AddDirectionFromCoM

  • Change Drawing.AddDirection to start the line at the origin of the reference frame (#518)

InfernalRobotics service#

  • Update to work with Infernal Robotics Next v3.1.9

  • Drop support for original Infernal Robotics mod

  • Remove Servo.MoveNextPreset and Servo.MovePrevPreset as they no longer exist in the mod

KerbalAlarmClock service#

  • Update API wrapper to work with KerbalAlarmClock v3.13.0.0

LiDAR service#

  • Initial version

DockingCamera service#

  • Initial version

C-nano client#

  • Update to protobuf 22.0

  • Update to nanopb 0.4.7

  • Rename KRPC_COMMS_CUSTOM to KRPC_COMMUNICATION_CUSTOM

C# client#

  • Update to protobuf v3.22.0

  • Drop support for net35

C++ client#

  • Update to protobuf v3.22.0

  • Update to ASIO 1.24.0

  • Fix include path to ASIO header in CMake build scripts

  • Fix CMake build scripts not building a static library with MSVC on Windows

Java client#

  • Update to protobuf v3.22.0

Lua client#

  • Update to protobuf v3.22.0

Python client#

  • Fix protobuf requirement to be >=3.6 (#506, #510)

  • Update to protobuf v4.22.0

v0.4.9#

krpctools#

  • Fix issue finding KSP_x64_Data directory (#523)

  • Add TestServer archive to bin directory (#532)

v0.4.8#

Server#

  • Support for KSP 1.5.1

  • Update to protobuf v3.6.1

  • Add support for specifying more granular game scenes for RPCs (#471)

SpaceCenter service#

  • Allows RPCs to be accessed from game scenes other than just flight (#471)

  • Merge NameTag (krpc/NameTag) into the main kRPC release

  • Fix air-relative velocity calculation for SimulateAeroDynamicForceAt with FAR (#500)

  • Changed Orbit API to accept target orbits as Orbit objects instead of Vessel objects, to allow computing closest approach etc. to planets (#479)

  • Trying to enable SAS while the autopilot is engaged now throws an exception as this is not permitted (#492)

  • Add color and size paramters to UI.Message (#499)

  • Fix Flight.TerminalVelocity (#485)

  • Fix null reference exception when deploying fairings after reverting to launch (#501)

Drawing service#

  • Fix reference frames for AddDirection so that the line always starts at the active vessel’s CoM (#486)

InfernalRobotics service#

  • Add suport for both original Infernal Robotics and Infernal Robotics Next (#476)

  • Add InfernalRobotics.Ready which indicates if the IR is on the current vessel and ready to receive commands

  • Change InfernalRobotics.Available to return whether the IR mod is installed (not if the IR API is “ready”)

C-nano client#

  • Update to protobuf v3.6.1

  • Change second parameter of krpc_open to be a configuration parameter of type krpc_connection_config_t to allow additional configuration options to be passed, such as baud rate for Arduino serial port (#487)

  • Fix encoding issue in procedure call messages that was causing compilation on Arduino Due to fail

C# client#

  • Update to protobuf v3.6.1

C++ client#

  • Update to protobuf v3.6.1

  • Update to ASIO 1.12.1

  • Add condition variable and callbacks that are called when a stream update message is processed (#473)

  • Fix compilation issue on MacOS

  • Fix cmake configuration detection of protoc binary

Java client#

  • Make Connection class implement AutoClosable (#491)

  • Update to protobuf v3.6.1

Lua client#

  • Update to protobuf v3.6.1

Python client#

  • Update to protobuf v3.6.1

  • Add condition variable and callbacks that are called when a stream update message is processed (#473)

krpctools#

  • Fix Python 3 compatibility

  • Fix template loading in docgen on Windows

  • Add documentation of game scenes for each RPC

v0.4.7#

Server#

  • Support for KSP 1.4.4

  • Fix launch site clear checks (#483)

SpaceCenter service#

  • Fix Flight.Lift and Flight.Drag should return values in Newtons (#475)

C-nano client#

  • Fix include paths on Arduino (#482)

C++ client#

  • Ensure .lib files are generated when building using CMake with MSVC (#474)

v0.4.6#

Server#

  • Support for KSP 1.4.3

  • Remove CompatibilityChecker as it’s deprecated - instead rely on CKAN and KSP-AVC version checks

  • Update icons to be 64x64 to fix blurring when loading as textures (#453)

  • Fix equality checking for streams of collections (#452)

  • Fix RPC errors being reported in Response.error instead of individual ProcedureResult.error fields (#467)

SpaceCenter service#

  • Added SpaceCenter.GameMode (#455)

  • Added SpaceCenter.Science, Funds and Reputation (#455)

  • Fix pre-flight checks not happending in SpaceCenter.LaunchVessel (#469)

  • Add ‘recover’ boolean argument to SpaceCenter.LaunchVessel to recover existing vessels on the launch pad (#469)

  • Change CelestialBody.Biomes to return an empty list instead of throwing an exception if the body has no biomes (#457)

  • Fixed science transmission not working correctly (#456)

C-nano client#

  • Include directory and main header now suffixed with “_cnano” to avoid name clashes with C++ client

C# client#

  • Add methods to remove callbacks from streams and events (#451)

C++ client#

  • Add methods to remove callbacks from streams and events (#451)

  • Improve Autotools and CMake build scripts to regenerate the protobuf source if protoc is installed

Java client#

  • Add methods to remove callbacks from streams and events (#451)

Python client#

  • Add methods to remove callbacks from streams and events (#451)

v0.4.5#

Server#

  • Support KSP 1.4.1

  • Update to protobuf v3.5.1

  • Fix server error and client hang when quickly removing and re-adding a stream

SpaceCenter service#

  • Fixed roll input when input mode is override (#445)

  • Marked CelestialBody.Orbit as nullable, as it returns null for the sun

C-nano client#

  • Fix connection timing out on Arduino when connecting to a server with new client confirmation enabled (#446)

C# client#

  • Update to protobuf v3.5.1

C++ client#

  • Update to protobuf v3.5.1

Java client#

  • Update to protobuf v3.5.1

Lua client#

  • Update to protobuf v3.5.1

Python client#

  • Update to protobuf v3.5.1

v0.4.4.post1#

C++ client#

  • Add missing files to build scripts

v0.4.4#

Server#

  • Add support for more complex server side expressions including function definitions and calls, and operations on collections (#435)

  • Fix service ids to not clash (affected cnano client) (#433)

SpaceCenter service#

  • Add ResourceConverter.ThermalEfficiency, CoreTemperature and OptimumCoreTemperature (#439)

v0.4.3#

Server#

  • Add compatibility for KSP 1.2.2 and 1.3.0

  • Add rate control for streams (#116, #141)

  • Add ability to call an RPC using an integer identifier for the service and procedure, rather than its full service and procedure name (reduces code size and communication overhead for cnano client)

C-nano client#

  • Remove KRPC_NO_PRINT_ERRORS option (now enabled by default) and replace with KRPC_PRINT_ERRORS_TO_STDERR

  • Enable PB_NO_ERRMSG by default in Arduino version of library

  • Invoke remote procedures using service and produce identifiers instead of names to reduce code size and communication overhead

C# client#

  • Add rate control for streams (#116, #141)

C++ client#

  • Add rate control for streams (#116, #141)

Java client#

  • Add rate control for streams (#116, #141)

Python client#

  • Add rate control for streams (#116, #141)

v0.4.2#

Server#

  • Include missing KRPC.IO.Ports DLL

v0.4.1#

Server#

  • Add SerialIO server

  • Fix connection timeout when client connects with auto-accept connections disabled (#425)

  • Add option to pause the server when the game is paused

  • New connections time out after 3 seconds if a connection request message is not received (#428)

  • Fix issue with partial receipt of connection request messsages

SpaceCenter service#

  • Add SpaceCenter.RaycastDistance and RaycastPart (#423)

  • Add Vessel.CrewCount, CrewCapacity and Crew (#426)

  • Add CrewMember class (#426)

C-nano client#

  • Initial version

v0.4.0#

Server#

  • New server architecture that allows multiple concurrent servers, using different settings and protocols

  • Add websockets server protocol for communication with browsers

  • Improved communication protocol (#325)

    • Multiple RPCs can now be grouped into a single network message

    • Remove unnecessary message fields

    • Improved message encoding when establishing a connection

    • Significantly reduced the size of the message returned by GetServices

    • More compact encoding of signed integers

  • Added ability for RPCs to throw custom exception types in the calling client

  • Add start flag to KRPC.AddStream and add KRPC.StartStream. Allows streams to be added but not started until a later time

  • If a stream returns an error, it is removed from the server automatically (#269)

  • Add support for streaming RPCs that yield execution to a future game update

  • Add KRPC.GetClientID and KRPC.GetClientName

  • Add support for events

  • Server no longer freezes if the game is paused (#347)

  • Added KRPC.Paused property to get/set whether the game is paused (#422)

SpaceCenter service#

  • AutoPilot.Wait and Error methods now throw an exception if the auto-pilot is not engaged (#409)

Drawing service#

  • Make Test.AvailableFonts a static method

C# client#

  • Updated protocol in line with server changes

  • Add support for RPCs and streams to throw exceptions

C++ client#

  • Updated protocol in line with server changes

  • Remove connection retries. Client will now fail fast if it fails to connect to the server.

  • Add support for RPCs and streams to throw exceptions

Java client#

  • Updated protocol in line with server changes

  • Add support for RPCs and streams to throw exceptions

  • Clean up error reporting:

    • ConnectionException thrown when connection to a server fails This inherits IOException

    • Decoding messages now throws an unchecked EncodingException, as these errors should not occur as a result of user input.

  • Minor code clean up, and source now checked with CheckStyle

Lua client#

  • Updated protocol in line with server changes

Python client#

  • Updated protocol in line with server changes

  • Remove connection retries. Client will now fail fast if it fails to connect to the server

  • Reorder parameters to krpc.connect() so that name is first - to be consistent with other client libraries

  • Add support for RPCs and streams to throw exceptions

  • Add stream waiting and update callbacks

  • Add support for events

  • Don’t execute an initial RPC when a stream is created, wait for the first update instead

v0.3.11#

Server#

  • Support for KSP 1.3.1

C# client#

  • Update to protobuf v3.4.1

C++ client#

  • Update to protobuf v3.4.1

v0.3.10#

Server#

  • Update to protobuf v3.4.0

SpaceCenter service#

  • Fix maneuver node reference frame to point in the direction of the remaining burn, rather than just the initially planned burn (#404)

  • Add following to CelestialBody class: AltitudeAtPosition, LatitudeAtPosition, LongitudeAtPosition and AtmosphericDensityAtPosition (#413)

  • Add following to Orbit class: RadiusAt, PositionAt, MeanAnomalyAtUT, TrueAnomalyAtAN, TrueAnomalyAtDN

  • Add rendezvous method to Orbit class: RelativeInclination, TimeOfClosestApproach, DistanceAtClosestApproach, ListClosestApproaches (#407)

  • Add Control.InputMode to configure the way that control inputs are handled (they are either additive or override the vessels control inputs) (#384)

  • Add CelestialBody.TemperatureAt, DensityAt and PressureAt (#350, #352)

  • Add Flight.SimulateAerodynamicForceAt (#352)

C# client#

  • Add support for .NET 3.5 (allows use of the client from within KSP itself)

  • Update to protobuf v3.4.0

C++ client#

  • Set ASIO_STANDLONE in build script instead of source code so that configure script can find the header correctly

  • Add support for building using Cygwin

  • Update to protobuf v3.4.0

Java client#

  • Update to protobuf v3.4.0

Lua client#

  • Update to protobuf v3.4.0

Python client#

  • Update to protobuf v3.4.0

v0.3.9.post1#

Python client#

  • Fix compatibility with protobuf v3.4.0

v0.3.9#

Server#

  • Update to protobuf v3.3.0

  • KSP 1.3 support

  • Fix client activity indicators in UI

SpaceCenter service#

  • Add VesselType.Plane and VesselType.Relay (#385)

  • Fix Control.WheelThrottle and WheelSteering (#388)

  • Fix off by one error in stage numbers for Vessel.ResourcesInDecoupleStage (#380)

  • Fix CelestialBody.InitialRotation and RotationAngle returning values out of range 0 - 2*PI (#391)

  • Add WaypointManager.AddWaypointAtAltitude (#399)

  • Add CelestialBody.PositionAtAltitude (#399)

  • Fix SpaceCenter.SetTarget not correctly setting target if input locks are enabled (#397)

  • Fix possible null reference exception in ResourceConverter.State

C# client#

  • Update to protobuf v3.3.0

C++ client#

  • Update to protobuf v3.3.0

Java client#

  • Update to protobuf v3.3.0

Lua client#

  • Update to protobuf v3.3.0

Python client#

  • Update to protobuf v3.3.0

v0.3.8.post1#

Python client#

  • Rename protobuf generated files to *_pb2.py to fix issue with protobuf 3.2.0 (#378, #376)

  • Relax package requirements to protobuf >= 3

v0.3.8#

Server#

  • Update to protobuf v3.2.0

SpaceCenter service#

  • Add support for CommNet

  • Add support for contracts (#361)

  • Add support for RealChutes, add Parachute.Arm and Parachute.Armed (#382)

  • Add support for Procedural Fairings (#368)

  • Add CelestialBody.InitialRotation and RotationAngle (#369)

  • Add SpaceCenter.Navball to show/hide the navball (#355)

  • Add SpaceCenter.UIVisible to show/hide the UI (#355)

  • Add ControlSurface.AuthorityLimiter (#352)

  • Extended wheels functionality

  • Rename LandingLeg to Leg

  • Rename LandingGear to Wheel

  • Add Antenna.Deployable, Leg.Deployable and SolarPanel.Deployable

  • Add properties to Control class to set the state of all solar panels, radiators, legs, etc. on a vessel (#383)

  • Fix bug with DockingPort.Rotation (#371)

  • Fix bug with Part.Rotation (#371)

  • Fix bug with Part.BoundingBox (#370)

C# client#

  • Update to protobuf v3.2.0

C++ client#

  • Update to protobuf v3.2.0

  • Update build scripts to check for protobuf >= 3.2 (#374)

  • Move krpc::connect into client constructor to allow use of smart pointers

  • Fix bug in StreamManager when client is not set

Java client#

  • Update to protobuf v3.2.0

Lua client#

  • Update to protobuf v3.2.0

Python client#

  • Clean up code to meet PEP 8 guidelines

  • Update to protobuf v3.2.0

  • Change package requirements to protobuf >= 3.2

krpctools#

  • Clean up code to meet PEP 8 guidelines

v0.3.7#

Server#

  • Support for KSP 1.2.2

  • Add KRPCDefaultValue attribute. Can be used to set default arguments to non-compile time constants.

  • Update to Protocol Buffers v3.1.0

SpaceCenter service#

  • Add custom reference frames (ReferenceFrame.CreateRelative and CreateHybrid) (#252)

  • Add Vessel.BoundingBox and Part.BoundingBox (#352)

  • Add LandingGear.IsGrounded and LandingLeg.IsGrounded (#352)

  • Add Part.Highlighted and HighlightColor (#332)

  • Change CelestialBody.Biomes to return a set instead of a list

  • Change available torque methods to return a pair of torque vectors, one in the positive control directions and one in the negative control direction.

  • Add Vessel.AvailableOtherTorque which returns the available torque from other parts (i.e. torque providers other than the stock reaction wheels, RCS thrusters, gimballed engines and control surfaces)

  • Include this ‘other’ torque in Vessel.AvailableTorque

  • Change required RemoteTech version to 1.8.0

  • Change maneuver node methods and properties to use double precision values (#357)

  • Add support for Action Groups Extended mod (#364, #365)

InfernalRobotics service#

  • Add InfernalRobotics.Available

KerbalAlarmClock service#

  • Add KerbalAlarmClock.Available

RemoteTech service#

  • Add RemoteTech.Available

  • Change required RemoteTech version to 1.8.0

C# client#

  • Update to protobuf v3.1.0

  • Remove pre-release flag from nuget version

C++ client#

  • Add missing header to automake script

  • Add stream freezing (#357)

  • Make stream objects default and copy constructible (#358)

Python client#

  • Fix bug parsing nested collection types

krpctools#

  • Fix bug parsing nested collection types

  • Fix bug generating key type for dictionaries

v0.3.6#

Server#

  • Add KRPC.Clients that clients can use to get a list of connected clients (#304)

  • Make KRPC.Core.Instance public so that other mods can subscribe to server events and access other server APIs (#304)

  • Add “Yes (don’t show again)” options to dialogs, add option to skip confirmation when force disconnecting a client

SpaceCenter service#

  • Add Part.Tag which can be used to get/set the name tag set via the NameTag mod, or kOS (#297)

  • Add Parts.WithTag to get a list of all parts with the given tag value

  • Remove DockingPort.Name and Parts.DockingPortsWithName - part tagging can now be used instead

  • Add Flight.TrueAirSpeed

  • Add FAR support for Flight.Mach and add Flight.ReynoldsNumber (#313)

  • Fix value returned by Orbit.Inclination (#301)

  • An error is now thrown when Autopilot.ReferenceFrame is set to a reference frame that rotates with the vessel

  • Fix issues with Part.DecoupleStage (#307)

  • Add Part.AddForce, Part.InstantaneousFource and Force class for exerting arbitrary forces on parts (#287)

  • Fix units for Flight.DynamicPressure when FAR is installed - value returned is now in Pa, not kPa (#329)

  • Add Decoupler.Staged

  • Fix issue where disabled decouplers are included in stage index calculation (#323)

  • Add CelestialBody.Biomes to get all the biomes for a planet/moon (#296)

  • Add CelestialBody.BiomeAt to get the biome at a location on a planet/moon (#296)

  • Add altitude thresholds for science to CelestialBody

  • Add Experiment.Biome to get the biome an experiment part is currently in (#296)

  • Add Experiment.IsAvailable which indicates if there is science that be gathered by the experiment part

  • Add ScienceSubject class for getting information about a type of experiment. Accessed via Experiment.ScienceSubject.

  • Fix landing gear state on launch (#314)

  • Add SpaceCenter.WaypointManager and Waypoint class for interacting with waypoints (#335)

  • Change camera distances to use meters (#339)

  • Fix engine thrust calculation for air breathing engines (#327)

C++ client#

  • Fix configure script

Python client#

  • Fix values not being documented in generated enumeration classes

krpctools#

  • Fix generating Java client stubs using krpc-clientgen with Python 3 (#308)

v0.3.5#

Server#

  • Support for KSP 1.1.3

  • Fix issue with uncaught exceptions when receiving malformed tuples from clients (#276)

  • Fix issue causing empty stream update messages to be sent to clients

SpaceCenter service#

  • Improved AutoPilot that auto-tunes itself based on the vessels available torque and moment of inertia (#289)

  • Add Resources.Enabled to enable/disable all of the resources in a part or stage at once (#283)

  • Add Vessel.Recoverable and Vessel.Recover() (#277)

  • Add SpaceCenter.LaunchableVessels to get a list of names of launchable vessels (#278)

  • Add SpaceCenter.LaunchVessel so that, for example, rockets built in the VAB can be launched from the runway (#278)

  • Rename Engine.Propellants to Engine.PropellantNames

  • Add Propellant class, obtained using Engine.Propellants property

  • Add Experiment and ScienceData classes for interacting with science experiments

  • Fix angular velocity for vessel reference frames

  • Fix Engine.AvailableThrust so that it returns 0 if the vessel is not active

  • Make ReferenceFrame type, underlying object and its transform accessible via public properties (#290)

User Interface service#

  • Add Canvas class (#281)

  • Add UI.StockCanvas to get the stock KSP UI canvas and UI.AddCanvas to create additional canvases

  • Move UI.AddPanel and UI.RectTransform to Canvas class

InfernalRobotics service#

  • Add vessel parameter to ServoGroups, Servos and ServoWithName (#282)

  • Add Servo.Part

  • Add ServoGroup.Parts

C# client#

  • Fix race condition where the connection constructor returns before the stream server connection has been established

  • Make Connection and StreamManager disposable so that they clean up resources correctly

  • Fix issue where network streams are closed prematurely

  • Fix issue with receiving partial protobuf messages

Python client#

  • Add check for number of elements in a tuple before invoking an RPC (#276)

  • Fix unicode issue (#284)

v0.3.4#

Server#

  • Update protobuf to v3.0.0-beta-3 (#270)

  • Move settings.cfg to PluginData directory to avoid trashing module managers cache

  • Fix stack trace output when verbose errors is enabled

  • Performance improvements and reduced memory allocation pressure in main server loop

  • Renamed Parameter.default_argument to default_value in protobuf definitions

SpaceCenter service#

  • Move drawing functionality into new Drawing service (#253)

  • Add Light.Color

  • Add RPCs for setting PartModule fields: Module.ResetField, SetFieldInt, SetFieldFloat and SetFieldString

Drawing service#

  • Initial version (#253)

User Interface service#

  • Initial version

C# client#

  • Update to protobuf v3.0.0-beta-3

C++ client#

  • Update to protobuf v3.0.0-beta-3

Java client#

  • Update to protobuf v3.0.0-beta-3

Python client#

  • Update protobuf to v3.0.0-beta-3

krpctools#

  • Update protobuf to v3.0.0-beta-3

v0.3.3#

Server#

  • Fix popup dialogs not displaying (#266)

SpaceCenter service#

  • Add AvailableTorque properties to vessels, reaction wheels, RCS, engines and control surfaces

  • Rename ReactionWheel.Torque to ReactionWheel.MaxTorque

  • Fix Vessel.MomentOfInertia - use custom inertia tensor calculations to avoid issues with KSPs Vessel.MoI and Vessel.findLocalMoI

  • Move RemoteTech functionality to separate RemoteTech service

InfernalRobotics service#

  • Rename ControlGroup to ServoGroup

RemoteTech service#

  • Moved from SpaceCenter to separate service

  • Support RemoteTech 1.7

  • Add individual Antenna objects

  • Add support for getting and setting an antennas target

v0.3.2#

Server#

  • Fix KRPC.CurrentGameScene (#262)

SpaceCenter service#

  • Fix Control.SpeedMode (#258)

v0.3.0#

SpaceCenter service#

  • Support for KSP 1.1

  • Add camera controls (note: rotation and zooming of the IVA camera is not yet supported)

  • Add saving and loading games using SpaceCenter.Save, Load, Quicksave and Quickload (#247)

  • Add ResourceTransfer object

  • Add Resource objects, representing an individual resource stored in a part

  • Add Vessel.MomentOfInertia, Add Vessel.InteriaTensor and Part.InertiaTensor

  • Add Vessel.Torque and Vessel.ReactionWheelTorque

  • Merged ReactionWheel.PitchTorque, YawTorque and RollTorque into a single ReactionWheel.Torque method

  • Add Part.CenterOfMass and Part.CenterOfMassReferenceFrame

  • Add Part.Shielded and Part.DynamicPressure

  • Add RCS objects.

  • Add Thruster objects, which represent individual rocket nozzels or RCS thrusters.

  • Added ControlSurface objects.

  • DockingPort.Undock() now returns the newly created vessel, instead of the ‘undocked vessel’

  • DockingPort.Undock() now throws an exception (instead of returning null) if the port is not docked

  • Return newly created vessels from Decoupler.Decouple() (#214)

  • Removed Vessel.Target, as this functionality is provided by SpaceCenter.TargetVessel (#206)

  • Change autopilot so that the target reference frame, direction and roll are cleared when the client disconnects and the autopilot is engaged (#248)

  • Removed LandingLegState.Repairing

  • Added LandingGearState.Broken

  • Fix bug where Engine.HasFuel requires the engine to be throttled up

  • Fix bug with vessel center of mass calculations (#218)

v0.2.4#

Server#

  • Shut down server when switching to main menu (or any other non-game scene)

v0.2.3#

Server#

  • Added KRPC.CurrentGameScene (#237)

SpaceCenter service#

  • Add support for engine mode switching (#219)

  • Engine.GimbalLimit and GimbalLocked now return an error if the engine is not gimballed

  • Add cargo bays, fairings and intakes

  • Add support for fixed and ‘advanced’ langing gear to LandingGear class

  • Add support for ‘active’ (non-deployable) radiators to Radiator class (#156)

  • Remove Part.ExternalTemperature (#206,:issue:174)

  • Fix units returned by thermal mass and flux methods in Part class (#174)

  • Fix null pointer exception in autopilot when switching scenes (#220)

  • Fix bug with translation inputs in Control class (#223)

C# client#

  • Make client thread safe

C++ client#

  • Make client thread safe

  • Add checks for asio.hpp and protobuf library to cmake script

  • Add Windows with MSVC support to cmake script

  • Fix compiler warnings reported by MSVC

Java client#

  • Make client thread safe

  • Support JDK 1.7+

v0.2.2#

Server#

  • Stream updates are only sent to clients when the result changes (#170)

  • Removed support for protobuf enumerations and custom protobuf messages as RPC parameter/return values. Note: these features were not used anywhere, and only cause complications for client libraries

  • Fix bug where KSP hangs if the game is quit whilst the server is running

  • Remove support for blizzy’s toolbar, in favour of using the stock applauncher

SpaceCenter service#

  • Add Part.IsFuelLine

  • Fix bug with Part.FuelLinesTo (#193)

  • Part.FuelLinesTo and FuelLinesFrom now return an error if called on a fuel line part

  • Fix bugs with equality testing of objects. For example, vessel and part objects now persist correctly when reverting to launch (#201,:issue:210)

  • Fix array index out of range error in SpaceCenter.WarpTo (#169)

  • Fix bug with vessel’s surface velocity reference frame (#194)

C# client#

  • Remove support for protobuf enumeration and custom protobuf messages

C++ client#

  • Add support for streams (#175)

  • Add documentation to service header files

  • Add autotools and cmake build scripts

  • Move header file krpc/krpc.hpp -> krpc.hpp

  • Remove support for protobuf enumeration and custom protobuf messages

  • Add comparison operations for remote objects

Java client#

  • Initial version

Lua client#

  • Remove support for protobuf enumeration and custom protobuf messages

Python client#

  • Fix exception when stream thread shuts down (#197)

  • Remove support for protobuf enumeration and custom protobuf messages

  • Add comparison methods to remote objects so that they are sortable

krpctools#

  • Refactor into ‘krpctools’ package containing ‘krpc-clientgen’, ‘krpc-docgen’ and ‘krpc-servicedefs’.

  • Fixes caused by removal of support for protobuf enumeration and custom protobuf messages from server and clients

v0.2.1#

Server#

  • Add “Any” option to server address drop down

SpaceCenter service#

  • Fix Orbit.Speed always returning 0

  • Add CelestialBody.SurfaceHeight, BedrockHeight, MSLPosition, SurfacePosition, BedrockPosition (#186)

C# client#

  • Add documentation to generated service code

  • Add support for streams

C++ client#

  • Remove dependency on boost

  • Use standalone ASIO library for network communication

Lua client#

  • None

Python client#

  • Fix bug with setup.py on Windows

  • Add version number to python module

krpctools#

  • Initial version

v0.2.0#

Server#

  • Update to protobuf 3.0.0-beta-2

SpaceCenter service#

  • Fix SpaceCenter.HorizontalSpeed calculation

  • Added support for resource harvesters and converters (#166,:issue:182)

  • Fix bug with Flight.SideslipAngle (#189)

C# client#

  • Initial version

C++ client#

  • Update to protobuf 3.0.0-beta-2

Lua client#

  • Update to protobuf 3.0.0-beta-2

Python client#

  • Update protobuf 3.0.0-beta-2

  • Fix bug in keyword arg handling (#168)

  • Removed TestServer.exe and associated binaries from release archive

v0.1.12#

Server#

  • Built for KSP 1.0.5

SpaceCenter service#

  • Built for KSP 1.0.5

KerbalAlarmClock service#

  • Renamed Alarm.Delete to Alarm.Remove (to not clash with C++ keyword)

C++ client#

  • Initial version

Lua client#

  • None, bumped version number

Python client#

  • Server connection method now retries 10 times every 0.1 seconds

v0.1.11#

Server#

  • Documentation returned by calling KRPC.GetServices (#31)

  • Fix bug preventing disconnection of clients from the server window (#161)

  • Fix clearing bytes read/written statistics when the server is restarted

  • Add “Clear Statistics” button to server info window

  • Documentation at http://djungelorm.github.io/krpc/docs/ generated by calling KRPC.GetServices (#31)

SpaceCenter service#

  • Rename maxRate parameter in SpaceCenter.WarpTo to maxRailsRate

  • Add more thermal properties to Part class (for new thermal model in KSP 1.0.3) (#155)

  • Add Comms.HasLocalControl

  • Add Control.SASMode (identical to AutoPilot.SASMode)

  • Change control behaviour: now shared amongst clients, and cleared when all clients that set a control have disconnected

  • Fix setting the throttle with RemoteTech enabled and no connection

  • Rewrite AutoPilot to use a tunable PID controller (#75)

  • Add setting of SpaceCenter.ActiveVessel to allow switching vessels (#95)

  • Add SpaceCenter.LaunchVesselFromVAB and SpaceCenter.LaunchVesselFromSPH (#95)

  • Update aero methods to use FAR 0.15 if available

Lua client#

  • Initial version

Python client#

  • Docstrings generated from documentation returned by KRPC.GetServices (#31)

v0.1.10#

Server#

  • KSP 1.0.4 support (#151)

  • Performance improvements (#129,:issue:131,:issue:139)

  • Fix UI disappearing bug (#133)

SpaceCenter service#

  • KSP 1.0.4 support (#151)

  • Add more time warp functionality: SpaceCenter.WarpMode, WarpRate, WarpFactor, RailsWarpFactor, PhysicsWarpFactor, CanRailsWarpAt and MaximumRailsWarpFactor (#134)

  • Implement physical time warp for SpaceCenter.WarpTo (#137)

  • Add support for radiator parts (#154)

  • Fix Vessel.Thrust, Engine.Thrust and Engine.AvailableThrust when engines have no fuel (#146)

  • Add Resoures.FlowMode

  • Add ability to control vessels other than the active one, when they are within physics range (#61)

  • Add SpaceCenter.DrawLine to draw arbitrary lines (#150)

  • Rename SpaceCenter.ClearDirections to SpaceCenter.ClearDrawing

KerbalAlarmClock service#

  • Service now available in all game scenes (#135)

Python client#

  • Bump version number

v0.1.9#

Server#

  • None

SpaceCenter service#

  • Fix bug with combined specific impulse calculations (#117)

  • Add Engine.PropellantRatios (#118)

  • Combined VesselResources and PartResources classes into a single Resources class

  • Add Resources.Density

InfernalRobotics service#

KerbalAlarmClock service#

Python client#

  • Bump version number

v0.1.8#

Server#

  • KSP 1.0.2 support (#114)

  • Add support for static class methods (#106)

SpaceCenter service#

  • Add Engine.MaxVacuumThrust

  • Add Engine.Throttle

  • Add Engine.GimbalLimit

  • Add Vessel.MaxVacuumThrust

  • Clean up float/double types (#113)

  • Remove Vessel.CrossSectionalArea

  • Remove CelestialBody.AtmospherePressure, AtmosphereDensity, AtmosphereScaleHeight, AtmosphereMaxAltitude, AtmospherePressureAt, AtmosphereDensityAt

  • Add CelestialBody.AtmosphereDepth and HasAtmosphericOxygen

Python client#

  • Improved dynamic creation of service methods

  • Support for static class methods (#106)

  • Improve enums: return an Enum object instead of an int

  • Fix bug with types across multiple connections (#110)

v0.1.7#

Server#

  • Fix CKAN install bug on Windows (#105)

SpaceCenter service#

  • Add AutoPilot.SAS, SASMode and SpeedMode (#94)

  • Update AutoPilot.Error to also return SAS error (#94)

  • Change return types of Vessel.Mass, DryMass, CrossSectionalArea, SpecificImpulse to float

  • Changes to thrust functions Vessel.Thrust, AvailableThrust and MaxThrust (#103)

  • Changes to thrust functions Engine.Thrust, Engine.AvailableThrust and MaxThrust (#103)

  • Fix orientation of docking port reference frames

  • Rename Engine.Activated to Engine.Active to match other parts

Python client#

  • Support for Python 3

  • Upgrade to Protocol Buffers 3.0.0-alpha-1

  • Checking of address and port parameters before connecting

  • Connecting to the stream server is now optional

  • Improve detection of protobuf message and enum types and improve support for 3rd party types (#38)

  • Fix unicode decoding/encoding bugs (#104)

v0.1.6#

Server#

  • Nicer errors returned to client (#97)

  • Include protobuf source and compiled Python, Java and C++ versions in release (#100)

SpaceCenter service#

  • Parts

  • Targeting of vessels, bodies and docking ports

  • Remove Orbit.ReferenceFrame

  • Fix AutoPilot.Error and add AutoPilot.RollError (#98)

Python client#

  • None, bumped version to match server version

v0.1.5#

Server#

  • Server now persists across game scene changes

  • Services specify during which game scenes they are available

  • Use a combo box for the server address

  • Display service errors when KSP loads (#89)

  • Add KSP compatibility checker

  • Add logging severity levels

  • Fix bug where yielded continuations are run more than once per update

SpaceCenter service#

  • Add SpaceCenter.DrawDirection and ClearDirections for visual debugging

  • Add Vessel.Comms to interact with RemoteTech

  • Add Control.WheelThrottle and WheelSteering

  • Change Control.ActivateNextStage to return a list of jettisoned vessels

  • Add Flight.Longitude and Latitude

  • Rename Flight.NormalNeg to AntiNormal and Flight.RadialNeg to AntiRadial (#90)

  • Add FAR functionality to Vessel.Flight

  • Fix Body.AtmospherePressureAt and AtmosphereDensityAt when there is no atmosphere

  • Add Vessel.SurfaceVelocityReferenceFrame

  • Add Node.OrbitalReferenceFrame

  • Add Node.RemainingBurnVector

  • Fix lots of reference frame bugs

  • Remove Vessel.NonRotatingReferenceFrame

  • Remove Body.SurfaceReferenceFrame

  • Change default reference frame to Vessel.SurfaceReferenceFrame for Vessel.Flight and AutoPilot methods

  • Add wait parameter to AutoPilot methods

  • AutoPilot and Control inputs reset to 0 when the client that requested them disconnects

  • Change AutoPilot to set SAS to false when it’s disengaged

Python client#

  • Add Client.close()

v0.1.4#

Server#

  • Support for KSP 0.90.0

  • Add support for tuples (#49,:issue:50)

  • Add support for streams (#24,:issue:56)

  • Fix issue with null values passed as a parameter (#65)

  • Add KSP AppLauncher button

  • No longer bundle Toolbar plugin (kRPC will still use Toolbar plugin if available)

  • Performance improvements (#68)

SpaceCenter service#

  • Major refactoring of reference frames (#66)

  • Add Control.Nodes (#53)

  • Add Body.AtmosphereDensity (#52)

  • Add CelestialBody.AtmospherePressureAt and AtmosphereDensityAt

  • Add Vessel.Mass and DryMass (#51)

  • Add Vessel.CrossSectionalArea, DragCoefficient and Drag

  • Add Vessel.Thrust and SpecificImpulse

  • Add Orbit.Period, MeanAnomalyAtEpoch and Epoch

  • Change altitude properties to have sensible names (#62)

  • Improvements to Control.Node class (#48)

  • Fix argument type in Conrol.AddNode (#59)

  • Fix bug with Vessel.HorizontalSpeed (#67)

Python client#

  • Improved network code to fix bugs and make it more robust

  • Add python version checks

  • Make connections thread safe

v0.1.3#

Server#

  • Add support for collections (lists, dictionaries and sets)

SpaceCenter service#

  • Add SpaceCenter.Vessels

  • Add SpaceCenter.Bodies

  • Remove SpaceCenter.Body

  • Add SpaceCenter.G

  • Add CelestialBody.Satellites

  • Add Orbit.Radius

  • Add Orbit.Speed

  • Add Orbit.TimeToSOIChange

  • Add Orbit.NextOrbit

  • Add Node.Orbit

  • Add Control.CurrentStage

  • Resources.Names now returns a list of resource names

  • Add support for abort and 0 action groups

  • Rename Flight.Altitude to Flight.TrueAltitude

  • Rename Flight.TrueAltitude to Flight.AbsoluteAltitude

  • Add Flight.SurfaceAltitude

  • Add Flight.Elevation

  • Fix bug with Node.Vector returning a vector in the wrong vector space

  • Improvements to Resources class

Python client#

  • Fix bug with encoding/decoding of infinities and NaNs

v0.1.2#

Server#

  • None

SpaceCenter service#

  • Include reference frame velocity in orbital direction vectors

  • Remove ReferenceFrame.SurfaceVelocity and ReferenceFrame.TargetVelocity

  • Change default reference frames for Vessel.Flight() and AutoPilot functions to ReferenceFrame.Orbital

  • Use Pa instead of kPa for atmospheric pressure

Python client#

  • Convert parameter names to snake_case

v0.1.1#

Server#

  • Minor server code improvements

SpaceCenter service#

  • Add new functionality to SpaceCenter service

Python client#

  • Update example script

v0.1.0#

Server#

  • Initial pre-release

SpaceCenter service#

  • Initial pre-release

Python client#

  • Initial pre-release