All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- World:
SearchObjectsRPC mirroringworld.searchObjectswith full volume support (sphere, box, segment, pyramid).- Request uses
dcs.common.v0.ObjectCategory[]andSearchVolume(withInputPositionfor geo points). - Response returns
dcs.common.v0.Target[]for consistent object union across services. - Lua implementation unwraps grpcui oneof wrapper (
volume.shape) and supports both wrapped and flattened shapes.
- Request uses
- Events
OnRunwayTouchandRunwayTakeofffor "changed" TakeOff and Landing logic in DCS.
- Renamed
TtsServicetoSrsService
- Added
ActivateGroupAPI which allows to activate groups with late activation. - Added
DestroyGroupAPI which removes the entire group from the game world. - Added
DestroyUnitAPI - Added
GetClientstoSrsService, which retrieves a list of units that are connected to SRS and the frequencies they are connected to. - Added
SrsConnectEventandSrsDisconnectEventevents - Added
GetDrawArgumentValueAPI for units, which returns the value for drawing. (useful for "hook down", "doors open" checks) - Added
MetadataServicewithGetHealthandGetVersionfor quick checks on health (even when DCS mission is unresponsive) and version. - Added Authentication Interceptor. This enables authentication on a per client basis.
- Fixed
MarkAddEvent,MarkChangeEventandMarkRemoveEventposition - Fixed crash of concurrent Windows TTS synthesis (#223)
- Fixed file handler left open: Closing config file again after reading it in LUA
- Fixed the config value for
tts.defaultProviderfor Google Cloud to be lowercasegcloud(instead ofgCloud) - Fixed error with getCategory due to API changes in DCS (#246)
- Fixed export of airbase objects by filtering out ships that are no longer part of a group due to damage
- Fixed `onPlayerTrySendChat``returning a value and therefore stopping other scripts from reacting to the event
- Fixed velocity and orientation not getting updated in units stream
- Fixed error when retrieving mark panels (
WorldService.GetMarkPanels) when the mark panel was created by a game master / JTAC, or when the player who created the mark panel left.MarkPanel.initiatoris now optional. (#156) - Fixed scale of blocking time percentage in stats logs.
- Added
SimulationFpsevent that is fired every second and contains simulation fps information since the last event (i.e. for the past ~1sec). - Added
GetSessionIdAPI which is refreshed every mission restart to allow clients to know if a new mission has started on client reconnect. - Added
GetDetectedTargetsAPI. Method follows the DCS implementation of controller's getDetectedTargets. Can optionally also return the unit or weapon objects tracked by the radar. - Added
orientationandvelocitytoUnitobject - Added
u/vcoordinates (offset from DCS map origin in meters) toPositions used in responses. To not require them in requests, all positions provided in requests got changed to a newInputPositiontype (you'll have to update your requests, simply replacePositionwithInputPositionin them). GetRealTimeAPI- Added
orientationandvelocitytoWeaponobject - Added DCS
timeof the update to units stream (StreamUnitsResponse) - Added
GetBallisticsCountAPI - Added
TtsService/Transmitto synthesize text to speech and transmit it over SRS - Added
GRPC.tts(ssml, frequency[, options])Lua API
- Unit objects now return the full group object in the
groupfield to make event processing easier. This replaces thegroup_nameandgroup_categoryfields and is a backwards incompatible change. - Updated all vectors to be in DCS' coordinate system (+x north, -x south, +z is east, -z west, +y up and -y down)
- Scenery objects now have an
idinstead of aname, since dcs associates them with a number.
OutTextForUnitAPIGetStaticObjectsAPIAddStaticObjectAPI (for standard static objects)AddLinkedStaticAPI (for statics linked to units such as ships)MarkupToAllAPIMarkupToCoalitionAPIGetTheatreAPIGetUnitTypeAPIReloadCurrentMissionAPILoadNextMissionAPILoadMissionAPI
- Fixed event handler error log missing actual error message (contained
nilinstead of the message).
GetMissionFilenameAPIGetPausedAPISetPausedAPIStopMissionAPIExitProcessAPIKickPlayerAPIIsMultiplayerAPIIsServerAPIGetMissionDescriptionAPIBanPlayerAPIGetBannedPlayersAPIUnbanPlayerAPI
- Replaced
groupNamefield in theGroupCommandevent with all the group details as exposed by the group exporter (currently id, name, coalition, category). This change was made based on experience writing a client that processes these events where only having the groupName was a limitation. This change breaks backwards compatibility with 0.4.0 where theGroupCommandevent was first added.
ForcePlayerSlotAPIPlayerChangeSlotEventemitted when player changes slotStreamUnitscan optionally specify thecategoryof the units which may be monitored.- APIs for creating the F10 radio menus and letting players run them. These will emit events to DCS-gRPC clients when run.
MarkToCoalitionwas sending the mark to the incorrect coalition.NetService.GetPlayersoverwroteCoalitionService.GetPlayers(see Breaking Changes for details)- Corrected
protofiles from camel-casing to snake-casing; not a runtime breaking change but some code generators may generate different casing by convention, creating a compiler only issue.net.proto-GetPlayerInfo.remote_addressmission.proto-PlayerSendChatEvent.player_id
- Corrected
protofiles with enumerations to be named correct; compiler-only breaking change, not runtime.coalition.proto-AddGroupRequest.Point- enumTypehas been renamed toPointTypecoalition.proto-AddGroupRequest- enum members ofSkillhas been prefixed withSKILL_
CoalitionService.GetPlayersdid not filter correctly on specified coalitionStreamUnitswould only monitor thePlanegroups; now monitors all groups with the default option ofGROUP_CATEGORY_UNSPECIFIED
- Added
GROUP_CATEGORY_UNSPECIFIEDtodcs.v0.common.GroupCategory; breaking change as all indexes have changed. CoalitionService.GetPlayerswas renamed toCoalitionService.GetPlayerUnits; fixes conflict withNetService.GetPlayers
- Generated scaffolding for the
net.*scope intoNetService SendChatAPISendChatToAPIGetPlayersAPI- Optional config file at
Saved Games\DCS\Config\dcs-grpc.lua ConnectandDisconnectevents- INFO log entry for the the host and port he server listens on
- DEBUG log entry for all current settings
placetoLandingQualityMarkevent
- Stream
PlayerSendChatEventto theMissionService.StreamEventsfor clients to observe the chat as part of the event stream - Fixed an issue where units updates were not being stream after initial load
HookService.StreamChatMessageshas been removed in favor forPlayerSendChatEvent- Option to specify settings inside of the
MissionScripting.lua
- Speed and heading in units stream
SetEmissionAPIGetScenarioStartTimeAPIGetScenarioCurrentTimeAPIGetBullseyeAPIGetTransformAPIAddGroupAPI (Initial version suitable for spawning fixed SAM sites)EvalAPI executable in the DCS hook environment along with command-line toolday,monthandyearfields toGetTimeZeroAPIcoalitionandcategorytoGroupscategorytoUnitsGetUnitAPIGetMagneticDeclinationAPIGetTransformAPI (get all information for a unit in 3D space)- Ability to include DCS-gRPC on all server missions without needing to edit the mission
- Updated Rust version and many Rust dependencies
autostartoption
- Split and reorganised APIs into versioned namespaces
- Switched to a different way of initialising the server that does not require sanitisation
- Changed Enum numbering to allow more idiomatic gRPC usage
- Initial release with APIs documented in https://github.com/DCS-gRPC/rust-server/wiki/API-documentation-0.1.0