Changelog#
v0.6.0#
Core#
Add
Versionproperty toCore, set by the server plugin on startup (#848)Enable
TCP_NODELAYon 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.GameSceneand make it settable to switch the current game scene (#897)Deprecated
KRPC.CurrentGameScene, kept as a read-only alias ofKRPC.GameScene(#897)Add
AstronautComplex,MissionControl,ResearchAndDevelopment,AdministrationandMissionBuildergame scenes (#897)Fix the game scenes a procedure is available in never being sent by
GetServices; thegame_scenesfield 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.dllnotKRPC.Core.dll) (#848)Fix Logger to write to both
KSP.logandPlayer.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.Expansionsto report the installed KSP expansions (#985)Add
SpaceCenter.AltimeterModeand anAltimeterModeenumeration to get and set the mode of the in-game altimeter (#808)SpaceCenter.ActiveVesselnow returns null when there is no active vessel, instead of raising an error (#821)Breaking Make
LaunchVesselcrew parameter non-optional to work around protocol issue (#824)Deprecated
SpaceCenter.LoadSpaceCenter, superseded by settingKRPC.GameScene(#897)
Vessels and crew
Add
Vessel.LoadedandVessel.Packedto report a vessel’s loading and on-rails state (#967)Add
Vessel.PhysicsRangeto 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
FlightandVesselclasses (#581)Fix
Vessel.AvailableTorquedue to sign inconsistency in KSP’sITorqueProviderimplementations (#525)Add
CrewMember.Partand per-partCrewCapacityandCrewproperties (#1001)
Staging
Add staging API giving per-stage delta-v and resource information (#920)
Deprecated
Parts.InStage,Parts.InDecoupleStageandVessel.ResourcesInDecoupleStage, superseded by the staging API (#920)Fix
Part.DecoupledAtnot considering if a decoupler is enabled (#818)Fix
Part.DecoupledAtreturning the wrong stage when the part is decoupled by a decoupler on its parent part (#800)Fix
Decoupler.AttachedPartraising an error when no part is attached to the decoupler’s node; it now returns null (#822)
Autopilot
Rework the
AutoPilotfor 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
AutoPilotnow 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
AutoPilotnow detects and damps structural oscillations on long or flexible craft automatically; rigid craft are unaffected (#882)Replace
AutoPilot.EngageandDisengagewith theAutoPilot.Engagedproperty (#882)Add
AutoPilot.TargetRotationto command a full target orientation (direction and roll) (#882)Add
AutoPilot.SetDirectionAndUpto 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 thatAutoPilot.TargetRollis measured against, and makeTargetRollwell-defined through the vertical (#882)Add
AutoPilot.AttitudeErrorfor a singularity-free (pitch, yaw, roll) attitude error;PitchErrorandHeadingErrornow use the same well-defined decomposition (#882)Fix
AutoPilot.RollErrorreturning spurious large values near vertical (#564)Document
Flight.Pitch,HeadingandRolland the scalar target pitch/heading/roll as ill-defined near vertical, pointing to the rotation and error readouts instead (#882)Add
AutoPilot.TargetSmoothingTimeto slew the target smoothly when it changes, with matchingCurrent*readouts of the smoothed target actually being tracked (#882)Add
AutoPilot.SoftStartTimeto fade in control output on engagement (#882)Add
AutoPilot.Resetto disengage and restore all settings to their defaults (#882)Add
AutoPilot.ShowInfoUIto show an in-game autopilot info window (#882)Replace
AutoPilot.RollThresholdwithRollStartAngleandRollEngageAngle(#882)Replace
AutoPilot.StoppingTimeandDecelerationTimewithAutoPilot.MaxAngularVelocity(#882)Replace
AutoPilot.AttenuationAnglewithPitchYawAttenuationAngleandRollAttenuationAngle(#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.StoppingAngleThresholdandStoppingVelocityThresholdto control whenAutoPilot.Wait()returns (#882)Add an optional timeout to
AutoPilot.Wait(), throwingTimeoutExceptionif it expires (#882)Add
AutoPilot.DiagnosticLoggingandDiagnosticLogfor per-tick controller diagnostics (#882)On client disconnect the
AutoPilotis now disengaged but its settings and target are kept (#882)Fix
AutoPilot.Errorto 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.ReferenceFrameraising an error when set to a docking port reference frame (#882)
Reference frames
Fix
ManeuverandManeuverOrbitalreference 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,DockingPortandThrustreference frames (previously returned zero) (#880)Fix
VesselOrbitalreference frame angular velocity (missing Coriolis correction) (#823)Fix reference frame velocity being incorrect at non-equatorial latitudes (#454)
Fix
Vessel/Part/Hybridreference frame rotation precision (#880)Fix
ReferenceFrame.CreateHybridusing velocity frame’s angular velocity instead of theangularVelocityframe (#880)Fix
VesselSurfaceVelocityreference frame producing NaN when surface velocity is near zero; now throwsInvalidOperationException(#880)Fix
PartCenterOfMassreference frame throwingInvalidOperationExceptionon velocity transforms (#880)Fix
Maneuverreference frame forward-vector fallback using unnormalized burn vector in collinearity check (#880)Fix
LookRotation2producing 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.AngularVelocityand reference frame angular velocities (#975)
Orbits, nodes and bodies
Add
Orbit.OrbitalEnergy(#303)Add
Orbit.NextClosestApproachandOrbit.ClosestApproaches, and aClosestApproachclass 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.DistanceAtClosestApproachandOrbit.ListClosestApproaches, superseded byOrbit.NextClosestApproachandOrbit.ClosestApproaches(#334)Add
Node.Rotation(#880)Fix
Nodeobjects whose maneuver node was removed byControl.RemoveNodes, anotherNodeobject or the in-game UI: all members now raise an error, instead of silently reading and writing the detached node (#975)Fix
CelestialBody.Rotationreturning incorrect values before a flight scene loads (#890)
Flight and aerodynamics
Breaking Add a rotation parameter to
Flight.SimulateAerodynamicForceAtto set the vessel attitude (angle of attack and sideslip) independently of velocity. Pass the current rotation for the previous behavior (#915)Add
Flight.SurfaceProgradeandFlight.SurfaceRetrogradedirection vectors (surface-relative velocity direction, matching navball surface mode) (#582)Fix
Flight.AngleOfAttackandFlight.SideslipAngletreating dot product as radians instead of usingasin(#880)Add
Flight.AerodynamicTorque, the live counterpart toFlight.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.SimulateAerodynamicTorqueAtto 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.SimulateAerodynamicWrenchAtto evaluate stock aerodynamic force and torque together at a hypothetical center-of-mass state, attitude, body rate and atmospheric ephemeris time (#914)Add
Part.DragandPart.Liftreturning the aerodynamic drag and lift forces acting on an individual part (#459)Fix
Flight.SimulateAerodynamicForceAtignoring the current deflection of aerodynamic control surfaces, including deployed airbrakes (#622)Fix
Flight.SimulateAerodynamicForceAtoverestimating drag at low altitude and subsonic speed by applying KSP’s pseudo-Reynolds drag multiplier to cube drag (#912)Fix
Flight.SimulateAerodynamicForceAtreturning force in kilonewtons instead of newtons when FAR is installed (#915)Fix
Flight.SimulateAerodynamicForceAtcomputing 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.LiftandFlight.AerodynamicForceincluding stale body lift for parts whose body lift the game suppresses, e.g. a pod with a heatshield attached (#971)
Control
Breaking
Control.SASnow throws an exception when set to true while the autopilot is engaged, matchingAutoPilot.SAS. Previously the write was accepted and the autopilot silently switched SAS back off on the next physics tick (#492)Fix
Control.SASModebeing dropped when set in the same physics tick as enabling SAS (#236)Add
Control.PitchTrim,Control.YawTrimandControl.RollTrimto get/set the persistent pitch, yaw and roll trim of the active vessel (#863)Add
Control.AeroSurfacesto enable/disable pitch, yaw and roll on all control surfaces (#827)Add
Control.EngineGimbalsto enable/disable gimbal on all gimballed engines (#827)Add
Control.ThrustReversersto engage/disengage thrust reversers on all engines (#865)Add
Control.GetActionGroupActionsto list the part actions assigned to an action group (#864)Add direct control of engine gimbals, RCS and control surfaces (#917)
Fix
Control.CustomAxis01-04being 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.ThrustReversedandEngine.ToggleThrustReversalto control thrust reversal on stock and recognized mod engines (#865)Fix
Engine.Propellantsfailing for non-active mode on multi-mode engines with different propellants (#833)Fix
Engine.AvailableThrustandMaxThrustfor air-breathing engines at supersonic speeds (#924)
Reaction wheels, RCS and control surfaces
Add
ReactionWheel.AuthorityLimiter(#909)Fix
ReactionWheel.AvailableTorquenot considering authority limiter setting (#909)Fix RCS force and torque vector calculations using max thrust rather than available thrust (#909)
Fix
RCS.MaxTorquedocumentation error - it considers thrust limit set to 100% (#909)Fix
RCS.Activereporting a shielded thruster as inactive when it is able to thrust while shielded (#975)Fix
ControlSurface.AvailableTorquereturning inconsistent signs (ModuleControlSurfacenegates the roll axis); now normalized to positive/negative torque like other parts (#881)
Parachutes and wheels
Fix
Parachute.Deploybeing a silent no-op for RealChute parachutes (#382)Add
Parachute.SafeStatereporting whether it is currently safe to deploy the parachute (safe, risky, unsafe, or not applicable) (#977)Add
Wheel.SteeringAngleAutoto get/set automatic speed-based steering angle limiting (#975)
Deployable parts
Breaking Replace the
RadiatorState,SolarPanelState,AntennaState,LegState,WheelStateandCargoBayStateenumerations with a singleDeployableStateenumeration, whose members areDeployed,Retracted,Deploying,RetractingandBroken.Radiator.StateandSolarPanel.Statenow reportDeployedandDeployingin place ofExtendedandExtending, andCargoBay.StatereportsDeployed,Retracted,DeployingandRetractingin place ofOpen,Closed,OpeningandClosing. The underlying values are unchanged, so only the enumeration and member names need updating (#986)Breaking
ResourceHarvester.Stateis now aDeployableStateand no longer reportsActive; useResourceHarvester.Activeto check whether the harvester is drilling. TheResourceHarvesterStateenumeration is removed and its values renumbered, so clients using it must be regenerated (#986)Fix
CargoBay.StatereportingDeployedfor a closed cargo ramp, and reporting a resting state while the bay was still moving (#986)
Robotic parts
Breaking
RoboticController.AddAxis,AddKeyFrameandClearAxisnow identify an axis by the name of its field, for exampletargetAngle, instead of by the label shown in the part’s menu, for example “Target Angle”. The names now match those returned byRoboticController.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,PlayandStop(#985)Add to
RoboticHinge:MinAngle,MaxAngleandIsMoving(#985)Add to
RoboticPiston:MinExtension,MaxExtensionandIsMoving(#985)Add to
RoboticRotation:MinAngle,MaxAngle,AllowFullRotationandIsMoving(#985)Add to
RoboticRotor:MaxTorque,BrakePercentageandIsMoving(#985)Fix
RoboticRotation.CurrentAngleandRoboticRotor.CurrentRPMreturning 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.Activebeing silently ignored when set while the harvester is deploying; the requested state is now applied when the deploy completes (#983)Fix
ResourceHarvester.ExtractionRatereturning 0 when part action window is not open (#889)Fix
ResourceConverter.StateandResourceHarvester.ThermalEfficiencymisreading the KSP status string (#892)Fix
Sensor.Valuereturning zero when the part action window is not open (#883)
Part modules, fields and configuration
Add
PartField,PartEventandPartActionAPI (#859)Deprecated the string-dictionary
Modulefield, event and action members (#859)Allow
Module.HasFieldWithId,GetFieldById,SetFieldIntById,SetFieldFloatById,SetFieldStringById,SetFieldBoolByIdandResetFieldByIdto also access fields not visible in the UI (#858)Add
Part.Config,Module.ConfigandConfigNodefor accessing part and module static configuration (#831)
Science, contracts and waypoints
Fix
Experiment.Resetnot clearing the science data stored by DMagic experiments, which caused the next call toRunto fail with “Experiment already contains data” (#550)Add
Contract.DateAccepted,DateDeadline,DateExpireandDateFinished(#977)Guard
ContractManageragainst nullContractSystemin non-career game modes (#819)Fix
Waypoint.MeanAltitudereturning the altitude relative to the terrain below the waypoint instead of relative to sea level (#801)Fix
Waypoint.MeanAltitude,SurfaceAltitudeandBedrockAltitudenot 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.Typenow returns anAlarmTypeenumeration value instead of a string (#853)Add to
Alarm:Node,OriginBody,DestinationBody,WarpAction,MessageAction,PlaySound,DeleteOnDismiss,TriggeredandActioned(#853)Add
AlarmType,AlarmWarpActionandAlarmMessageActionenumerations (#853)Add
Alarm.Removeto delete an alarm (#853)Add
AlarmManager.AlarmWithName,AlarmManager.AlarmsWithTypeandAlarmManager.AddTransferWindowAlarm(#853)Fix
NullReferenceExceptionraised every frame after creating or removing an alarm (#853)
Camera
Add
Camera.FoVto get and set the camera field of view, and read-onlyCamera.MinFoV,Camera.MaxFoVandCamera.DefaultFoV(#804)Add
Camera.NextCamera,Camera.PreviousCameraandCamera.FocussedCrewMemberto cycle and select IVA cameras (#804)Fix
CameraDistance,Pitch,HeadingandFoVsetters being lost when set during a camera mode switch (#318)
Client disconnect cleanup
Remove forces added by
Part.AddForcewhen 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.Undockdoing nothing when the game is not running in English (#993)Fix
Fairing.Jettisondoing nothing, andFairing.Jettisonedalways reporting true, when the game is not running in English (#993)Fix
CargoBay.Openneither opening nor closing the bay when the game is not running in English (#993)Fix
ResourceConverter.Stateonly ever reportingRunningwhen the game is not running in English, leavingMissingResource,StorageFullandCapacityunreachable (#993)Fix
DockingPort.StatereportingShieldedinstead ofMovingwhile 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.GetFieldandPartField.Valuereturned 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 newServoModeenum),TargetPosition,TargetSpeed,CommandedPosition,DefaultPosition,ForceLimit,MaxForce,MaxAcceleration,MaxSpeed,ElectricChargeRequired,SpringPower,DampingPower,RotorAcceleration,IsLimited,IsRotational,IsServo,CanHaveLimits,HasSpring,IsRunning,PresetPositions,AddPreset,RemovePresetAtandSortPresets(#942)Add to
ServoGroup:Vessel,MovingDirection,AdvancedMode,ElectricChargeRequired,BuildAidandIKActive(#942)Fix
Servo.MinPositionandMaxPositionto 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,MoveCenterandMoveRightfailing with the latest version of IR (#941)Make
InfernalRobotics.Availablereport correctly in all game scenes (#941)Fix
InfernalRobotics.Readyreporting false when queried before IR has finished loading (#941)
KerbalAlarmClock service#
Make available in all game scenes (#944)
Add
AlarmType.ScienceLab(#982)Add
AlarmAction.CustomandAlarmAction.Converted(#982)Add
Alarm.Enabled,Alarm.PlaySound,Alarm.Triggered,Alarm.SupportsRepeatandAlarm.SupportsRepeatPeriod(#982)Fix
Alarm.Remainingalways 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.Availableincorrectly reporting false in game scenes other than flight (#937)
LiDAR service#
Fix
LiDAR.Availableincorrectly reporting false in game scenes other than flight (#937)
DockingCamera service#
Fix
DockingCamera.Availableincorrectly 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
FetchContentor 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.protoare bundled in the release archive; setKRPC_REGENERATE_PROTO=ONto regenerate the code fromkrpc.protousing 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 ONFetchContentis used. (#870)Add support for serial port communication on Windows (#872)
Mark deprecated functions with the
KRPC_DEPRECATEDattribute 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_EOFwhen the serial timeout elapses instead of retrying forever (#1002)Add
KRPC_ERROR_MESSAGESoption, which captures the message describing an error returned by the server so that it can be read usingkrpc_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
RPCExceptiondescribing 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 ONFetchContentis used. (#857)Mark deprecated members with the
[[deprecated]]attribute (#904)An error from a service whose generated header is not included now throws an
RPCErrordescribing 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_updatesleeping through the update it was waiting for (#974)Fix
Client::freeze_streamsblocking 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
@Deprecatedannotation and an@deprecatedjavadoc tag (#904)Reduce copying when encoding values (#979)
Fix
Stream.getRatealways 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
RPCExceptiondescribing it (#1004)
Lua client#
Fix
attributesmodule to always return boolean foris_a_class_memberandis_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
okbehind (#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
DeprecationWarningwhen 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
RPCErrordescribing it (#1008)Fix decoding of
sint64values at or above2**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
RuntimeErrorand left the client half closed (#1008)Fix a stream returning
Nonerather 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-servicedefsnow runs theServiceDefinitionstool on the .NET 8 runtime; Mono is no longer requiredSurface 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
docgendropping remarks in service-level documentationFix 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.IsOmniDecoupler(#789)Fix decoupler crashes with stack separators (#790)
Make
CelestialBodyparameters doulbe precision (#786)Fix scaled camera distance clamp (#785)
Python client#
Fix streams for services without pre-generated stubs (#774)
krpctools#
v0.5.3#
Python client#
Fix assertion error when connecting to a server with third party services installed (#754)
v0.5.2#
Server#
SpaceCenter service#
Fix null reference exception when
SpaceCenter.LaunchVesselFromVABis called with no crew (#599)Add
Engine.IndependentThrottleto check whether it is enabledAllow setting the independent throttle using
Engine.ThrottleFix
Engine.HasFuelsometimes returning true for flamed-out SRBs (#631)Add functions to manipulate a part modules fields based on identifier
Module.Fieldsnow throws an exception if there are multiple fields with the same nameAdd
Module.FieldsByIdto get a dictionary of field values keyed by their identifierAdd
Module.SetFieldBoolandModule.SetFieldBoolByIdto set a field with a boolean valueModule.SetField*methods now raise an exception if setting the field to the wrong value typeChange 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:LaunchSitesCanRevertToLaunchRevertToLaunchTransferCrewCreateKerbalGetKerbalLoadSpaceCenterMapFilterScreenshot
Add crew and
flagUrlparameters toSpaceCenter.LaunchVesselAdd support for more vessel types
Add
LaunchSiteAdd
CelestialBody.IsStarandCelestialBody.HasSolidSurfaceAdd custom axes to
ControlclassAdd
Part.FlagURLAdd
Part.AvailableSeatsAdd
Part.GlowAdd
Part.AutoStrutModeAdd support for resource drain parts
Add support for stock robotic parts
Add
Parachute.CutAdd support for docking port rotation
Add support for
LightblinkingAdd support for wheel steering angle limit and response time
Fix
ParachuteState.Activestate and clean up real chute vs. stock parachute logicAdd support for stock alarms (
AlarmManagerandAlarmclasses)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.ThrustLimitandRCS.AvailableThrust(#519)Add
Control.StageLock(#541)Fix launch checks and automatic vessel recovery in
SpaceCenter.LaunchVesselFix setting camera target to an unloaded vessel (#536)
Fix
Control.LegsandControl.Wheelsnot deploying/retracting legs/wheels correctly (#509, #261)Allow legs/wheels can be individually deployed/retracted using
Leg.DeployedandWheel.Deployed(#509, #261)Allow lights to be individually turned on and off (#261)
Fix
Engineand RCS fuel calculations only being done when they are enabled (#514, #254)Add support for parts that contain multiple experiments (#533)
Part.Experimentnow throws an exception if the part has more than one experimentAdd
Part.Experimentswhich returns a list of experiments in the partUpdate
Parts.Experimentsto return all experiments contained in the parts
Add
Experiment.NameandExperiment.TitleFix
Fairing.JettisonandFairing.Jettisonedfor parts from the ProceduralFairings mod (#549)Fix
Engine.SpecificImpulsereturning 0 for Realism Overhaul engines that are active but not throttled up (#548)Fix compatibility with DMagic science experiments mod (#550)
Fix
RCS.MaxThrustreturning incorrect valuesFix
SimulateAerodynamicForceAt(#587)Fix
RCS.GetTorqueVectorsnot considering if each direction is enabled (#591)Add
RCS.AvailableForceandVessel.AvailableRCSForce(#597)
Drawing service#
Add
Drawing.AddDirectionFromCoMChange
Drawing.AddDirectionto 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.MoveNextPresetandServo.MovePrevPresetas 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_CUSTOMtoKRPC_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#
v0.4.9#
krpctools#
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
SimulateAeroDynamicForceAtwith FAR (#500)Changed
OrbitAPI to accept target orbits asOrbitobjects instead ofVesselobjects, 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
AddDirectionso 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.Readywhich indicates if the IR is on the current vessel and ready to receive commandsChange
InfernalRobotics.Availableto 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_opento be a configuration parameter of typekrpc_connection_config_tto 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
Connectionclass implementAutoClosable(#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
docgenon WindowsAdd 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.LiftandFlight.Dragshould 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
CompatibilityCheckeras it’s deprecated - instead rely on CKAN and KSP-AVC version checksUpdate 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.errorinstead of individualProcedureResult.errorfields (#467)
SpaceCenter service#
Added
SpaceCenter.GameMode(#455)Added
SpaceCenter.Science,FundsandReputation(#455)Fix pre-flight checks not happending in
SpaceCenter.LaunchVessel(#469)Add ‘recover’ boolean argument to
SpaceCenter.LaunchVesselto recover existing vessels on the launch pad (#469)Change
CelestialBody.Biomesto 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.Orbitas 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#
SpaceCenter service#
Add
ResourceConverter.ThermalEfficiency,CoreTemperatureandOptimumCoreTemperature(#439)
v0.4.3#
Server#
C-nano client#
Remove
KRPC_NO_PRINT_ERRORSoption (now enabled by default) and replace withKRPC_PRINT_ERRORS_TO_STDERREnable
PB_NO_ERRMSGby default in Arduino version of libraryInvoke remote procedures using service and produce identifiers instead of names to reduce code size and communication overhead
C# client#
C++ client#
Java client#
Python client#
v0.4.2#
Server#
Include missing
KRPC.IO.PortsDLL
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#
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.AddStreamand addKRPC.StartStream. Allows streams to be added but not started until a later timeIf 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.GetClientIDandKRPC.GetClientNameAdd support for events
Server no longer freezes if the game is paused (#347)
Added
KRPC.Pausedproperty to get/set whether the game is paused (#422)
SpaceCenter service#
AutoPilot.WaitandErrormethods now throw an exception if the auto-pilot is not engaged (#409)
Drawing service#
Make
Test.AvailableFontsa 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:
ConnectionExceptionthrown when connection to a server fails This inheritsIOExceptionDecoding 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 librariesAdd 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
CelestialBodyclass:AltitudeAtPosition,LatitudeAtPosition,LongitudeAtPositionandAtmosphericDensityAtPosition(#413)Add following to
Orbitclass:RadiusAt,PositionAt,MeanAnomalyAtUT,TrueAnomalyAtAN,TrueAnomalyAtDNAdd rendezvous method to
Orbitclass:RelativeInclination,TimeOfClosestApproach,DistanceAtClosestApproach,ListClosestApproaches(#407)Add
Control.InputModeto configure the way that control inputs are handled (they are either additive or override the vessels control inputs) (#384)Add
CelestialBody.TemperatureAt,DensityAtandPressureAt(#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_STANDLONEin build script instead of source code so that configure script can find the header correctlyAdd 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.PlaneandVesselType.Relay(#385)Fix
Control.WheelThrottleandWheelSteering(#388)Fix off by one error in stage numbers for
Vessel.ResourcesInDecoupleStage(#380)Fix
CelestialBody.InitialRotationandRotationAnglereturning values out of range 0 - 2*PI (#391)Add
WaypointManager.AddWaypointAtAltitude(#399)Add
CelestialBody.PositionAtAltitude(#399)Fix
SpaceCenter.SetTargetnot 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#
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.ArmandParachute.Armed(#382)Add support for Procedural Fairings (#368)
Add
CelestialBody.InitialRotationandRotationAngle(#369)Add
SpaceCenter.Navballto show/hide the navball (#355)Add
SpaceCenter.UIVisibleto show/hide the UI (#355)Add
ControlSurface.AuthorityLimiter(#352)Extended wheels functionality
Rename
LandingLegtoLegRename
LandingGeartoWheelAdd
Antenna.Deployable,Leg.DeployableandSolarPanel.DeployableAdd properties to
Controlclass 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::connectinto client constructor to allow use of smart pointersFix bug in
StreamManagerwhen 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
KRPCDefaultValueattribute. 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.CreateRelativeandCreateHybrid) (#252)Add
Vessel.BoundingBoxandPart.BoundingBox(#352)Add
LandingGear.IsGroundedandLandingLeg.IsGrounded(#352)Add
Part.HighlightedandHighlightColor(#332)Change
CelestialBody.Biomesto return a set instead of a listChange 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.AvailableOtherTorquewhich 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.AvailableTorqueChange required RemoteTech version to 1.8.0
Change maneuver node methods and properties to use double precision values (#357)
InfernalRobotics service#
Add
InfernalRobotics.Available
KerbalAlarmClock service#
Add
KerbalAlarmClock.Available
RemoteTech service#
Add
RemoteTech.AvailableChange required RemoteTech version to 1.8.0
C# client#
Update to protobuf v3.1.0
Remove pre-release flag from nuget version
C++ client#
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.Clientsthat clients can use to get a list of connected clients (#304)Make
KRPC.Core.Instancepublic 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.Tagwhich can be used to get/set the name tag set via the NameTag mod, or kOS (#297)Add
Parts.WithTagto get a list of all parts with the given tag valueRemove
DockingPort.NameandParts.DockingPortsWithName- part tagging can now be used insteadAdd
Flight.TrueAirSpeedAdd FAR support for
Flight.Machand addFlight.ReynoldsNumber(#313)Fix value returned by
Orbit.Inclination(#301)An error is now thrown when
Autopilot.ReferenceFrameis set to a reference frame that rotates with the vesselFix issues with
Part.DecoupleStage(#307)Add
Part.AddForce,Part.InstantaneousFourceandForceclass for exerting arbitrary forces on parts (#287)Fix units for
Flight.DynamicPressurewhen FAR is installed - value returned is now in Pa, not kPa (#329)Add
Decoupler.StagedFix issue where disabled decouplers are included in stage index calculation (#323)
Add
CelestialBody.Biomesto get all the biomes for a planet/moon (#296)Add
CelestialBody.BiomeAtto get the biome at a location on a planet/moon (#296)Add altitude thresholds for science to
CelestialBodyAdd
Experiment.Biometo get the biome an experiment part is currently in (#296)Add
Experiment.IsAvailablewhich indicates if there is science that be gathered by the experiment partAdd
ScienceSubjectclass for getting information about a type of experiment. Accessed viaExperiment.ScienceSubject.Fix landing gear state on launch (#314)
Add
SpaceCenter.WaypointManagerandWaypointclass 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-clientgenwith 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
AutoPilotthat auto-tunes itself based on the vessels available torque and moment of inertia (#289)Add
Resources.Enabledto enable/disable all of the resources in a part or stage at once (#283)Add
Vessel.RecoverableandVessel.Recover()(#277)Add
SpaceCenter.LaunchableVesselsto get a list of names of launchable vessels (#278)Add
SpaceCenter.LaunchVesselso that, for example, rockets built in the VAB can be launched from the runway (#278)Rename
Engine.PropellantstoEngine.PropellantNamesAdd
Propellantclass, obtained usingEngine.PropellantspropertyAdd
ExperimentandScienceDataclasses for interacting with science experimentsFix angular velocity for vessel reference frames
Fix
Engine.AvailableThrustso that it returns 0 if the vessel is not activeMake
ReferenceFrametype, underlying object and its transform accessible via public properties (#290)
User Interface service#
Add
Canvasclass (#281)Add
UI.StockCanvasto get the stock KSP UI canvas andUI.AddCanvasto create additional canvasesMove
UI.AddPanelandUI.RectTransformtoCanvasclass
InfernalRobotics service#
Add vessel parameter to
ServoGroups,ServosandServoWithName(#282)Add
Servo.PartAdd
ServoGroup.Parts
C# client#
Fix race condition where the connection constructor returns before the stream server connection has been established
Make
ConnectionandStreamManagerdisposable so that they clean up resources correctlyFix issue where network streams are closed prematurely
Fix issue with receiving partial protobuf messages
Python client#
v0.3.4#
Server#
Update protobuf to v3.0.0-beta-3 (#270)
Move
settings.cfgto PluginData directory to avoid trashing module managers cacheFix stack trace output when verbose errors is enabled
Performance improvements and reduced memory allocation pressure in main server loop
Renamed
Parameter.default_argumenttodefault_valuein protobuf definitions
SpaceCenter service#
Move drawing functionality into new
Drawingservice (#253)Add
Light.ColorAdd RPCs for setting
PartModulefields:Module.ResetField,SetFieldInt,SetFieldFloatandSetFieldString
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
AvailableTorqueproperties to vessels, reaction wheels, RCS, engines and control surfacesRename
ReactionWheel.TorquetoReactionWheel.MaxTorqueFix
Vessel.MomentOfInertia- use custom inertia tensor calculations to avoid issues with KSPsVessel.MoIandVessel.findLocalMoIMove RemoteTech functionality to separate RemoteTech service
InfernalRobotics service#
Rename
ControlGrouptoServoGroup
RemoteTech service#
Moved from
SpaceCenterto separate serviceSupport RemoteTech 1.7
Add individual
AntennaobjectsAdd 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,QuicksaveandQuickload(#247)Add
ResourceTransferobjectAdd
Resourceobjects, representing an individual resource stored in a partAdd
Vessel.MomentOfInertia, AddVessel.InteriaTensorandPart.InertiaTensorAdd
Vessel.TorqueandVessel.ReactionWheelTorqueMerged
ReactionWheel.PitchTorque,YawTorqueandRollTorqueinto a singleReactionWheel.TorquemethodAdd
Part.CenterOfMassandPart.CenterOfMassReferenceFrameAdd
Part.ShieldedandPart.DynamicPressureAdd RCS objects.
Add
Thrusterobjects, which represent individual rocket nozzels or RCS thrusters.Added
ControlSurfaceobjects.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 dockedReturn newly created vessels from
Decoupler.Decouple()(#214)Removed
Vessel.Target, as this functionality is provided bySpaceCenter.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.RepairingAdded
LandingGearState.BrokenFix bug where
Engine.HasFuelrequires the engine to be throttled upFix 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.GimbalLimitandGimbalLockednow return an error if the engine is not gimballedAdd cargo bays, fairings and intakes
Add support for fixed and ‘advanced’ langing gear to
LandingGearclassAdd support for ‘active’ (non-deployable) radiators to
Radiatorclass (#156)Remove
Part.ExternalTemperature(#206,:issue:174)Fix units returned by thermal mass and flux methods in
Partclass (#174)Fix null pointer exception in autopilot when switching scenes (#220)
Fix bug with translation inputs in
Controlclass (#223)
C# client#
Make client thread safe
C++ client#
Make client thread safe
Add checks for
asio.hppand protobuf library to cmake scriptAdd 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.IsFuelLineFix bug with
Part.FuelLinesTo(#193)Part.FuelLinesToandFuelLinesFromnow return an error if called on a fuel line partFix 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.hppRemove 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.Speedalways returning 0Add
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.pyon WindowsAdd version number to python module
krpctools#
Initial version
v0.2.0#
Server#
Update to protobuf 3.0.0-beta-2
SpaceCenter service#
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.exeand 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.DeletetoAlarm.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
maxRateparameter inSpaceCenter.WarpTotomaxRailsRateAdd more thermal properties to
Partclass (for new thermal model in KSP 1.0.3) (#155)Add
Comms.HasLocalControlAdd
Control.SASMode(identical toAutoPilot.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
AutoPilotto use a tunable PID controller (#75)Add setting of
SpaceCenter.ActiveVesselto allow switching vessels (#95)Add
SpaceCenter.LaunchVesselFromVABandSpaceCenter.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#
SpaceCenter service#
KSP 1.0.4 support (#151)
Add more time warp functionality:
SpaceCenter.WarpMode,WarpRate,WarpFactor,RailsWarpFactor,PhysicsWarpFactor,CanRailsWarpAtandMaximumRailsWarpFactor(#134)Implement physical time warp for
SpaceCenter.WarpTo(#137)Add support for radiator parts (#154)
Fix
Vessel.Thrust,Engine.ThrustandEngine.AvailableThrustwhen engines have no fuel (#146)Add
Resoures.FlowModeAdd ability to control vessels other than the active one, when they are within physics range (#61)
Add
SpaceCenter.DrawLineto draw arbitrary lines (#150)Rename
SpaceCenter.ClearDirectionstoSpaceCenter.ClearDrawing
KerbalAlarmClock service#
Service now available in all game scenes (#135)
Python client#
Bump version number
v0.1.9#
Server#
None
SpaceCenter service#
InfernalRobotics service#
Initial version - API for InfernalRobotics (http://forum.kerbalspaceprogram.com/threads/116064)
KerbalAlarmClock service#
Initial version - API for Kerbal Alarm Clock (http://forum.kerbalspaceprogram.com/threads/24786)
Python client#
Bump version number
v0.1.8#
Server#
SpaceCenter service#
Add
Engine.MaxVacuumThrustAdd
Engine.ThrottleAdd
Engine.GimbalLimitAdd
Vessel.MaxVacuumThrustClean up float/double types (#113)
Remove
Vessel.CrossSectionalAreaRemove
CelestialBody.AtmospherePressure,AtmosphereDensity,AtmosphereScaleHeight,AtmosphereMaxAltitude,AtmospherePressureAt,AtmosphereDensityAtAdd
CelestialBody.AtmosphereDepthandHasAtmosphericOxygen
Python client#
v0.1.7#
Server#
Fix CKAN install bug on Windows (#105)
SpaceCenter service#
Add
AutoPilot.SAS,SASModeandSpeedMode(#94)Update
AutoPilot.Errorto also return SAS error (#94)Change return types of
Vessel.Mass,DryMass,CrossSectionalArea,SpecificImpulseto floatChanges to thrust functions
Vessel.Thrust,AvailableThrustandMaxThrust(#103)Changes to thrust functions
Engine.Thrust,Engine.AvailableThrustandMaxThrust(#103)Fix orientation of docking port reference frames
Rename
Engine.ActivatedtoEngine.Activeto 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#
SpaceCenter service#
PartsTargeting of vessels, bodies and docking ports
Remove
Orbit.ReferenceFrameFix
AutoPilot.Errorand addAutoPilot.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.DrawDirectionandClearDirectionsfor visual debuggingAdd
Vessel.Commsto interact with RemoteTechAdd
Control.WheelThrottleandWheelSteeringChange
Control.ActivateNextStageto return a list of jettisoned vesselsAdd
Flight.LongitudeandLatitudeRename
Flight.NormalNegtoAntiNormalandFlight.RadialNegtoAntiRadial(#90)Add FAR functionality to
Vessel.FlightFix
Body.AtmospherePressureAtandAtmosphereDensityAtwhen there is no atmosphereAdd
Vessel.SurfaceVelocityReferenceFrameAdd
Node.OrbitalReferenceFrameAdd
Node.RemainingBurnVectorFix lots of reference frame bugs
Remove
Vessel.NonRotatingReferenceFrameRemove
Body.SurfaceReferenceFrameChange default reference frame to
Vessel.SurfaceReferenceFrameforVessel.FlightandAutoPilotmethodsAdd wait parameter to
AutoPilotmethodsAutoPilotandControlinputs reset to 0 when the client that requested them disconnectsChange
AutoPilotto set SAS to false when it’s disengaged
Python client#
Add
Client.close()
v0.1.4#
Server#
SpaceCenter service#
Major refactoring of reference frames (#66)
Add
Control.Nodes(#53)Add
Body.AtmosphereDensity(#52)Add
CelestialBody.AtmospherePressureAtandAtmosphereDensityAtAdd
Vessel.MassandDryMass(#51)Add
Vessel.CrossSectionalArea,DragCoefficientandDragAdd
Vessel.ThrustandSpecificImpulseAdd
Orbit.Period,MeanAnomalyAtEpochandEpochChange altitude properties to have sensible names (#62)
Improvements to
Control.Nodeclass (#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.VesselsAdd
SpaceCenter.BodiesRemove
SpaceCenter.BodyAdd
SpaceCenter.GAdd
CelestialBody.SatellitesAdd
Orbit.RadiusAdd
Orbit.SpeedAdd
Orbit.TimeToSOIChangeAdd
Orbit.NextOrbitAdd
Node.OrbitAdd
Control.CurrentStageResources.Namesnow returns a list of resource namesAdd support for abort and 0 action groups
Rename
Flight.AltitudetoFlight.TrueAltitudeRename
Flight.TrueAltitudetoFlight.AbsoluteAltitudeAdd
Flight.SurfaceAltitudeAdd
Flight.ElevationFix bug with
Node.Vectorreturning a vector in the wrong vector spaceImprovements to
Resourcesclass
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.SurfaceVelocityandReferenceFrame.TargetVelocityChange default reference frames for
Vessel.Flight()andAutoPilotfunctions toReferenceFrame.OrbitalUse 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
SpaceCenterservice
Python client#
Update example script
v0.1.0#
Server#
Initial pre-release
SpaceCenter service#
Initial pre-release
Python client#
Initial pre-release