Releases: DCS-gRPC/rust-server
Land/Takeoff events added after ED change in 2.9.6
DCS-gRPC 0.8.1 Released!
For context:
In release 2.9.6 a change to the behaviour of land and takeoff events was made by ED.
This might cause some unexpected delay/issues.
To summize the new behaviour since 2.9.6:
S_EVENT_LAND: Occurs when an aircraft lands at an airbase, farp or ship and sufficiently slows down.S_EVENT_TAKEOFF: Occurs when an aircraft takes off from an airbase, farp, or ship. Occurs several seconds after take-off.S_EVENT_RUNWAY_TOUCH: Occurs the moment when the player aircraft aircraft lands at an airbase, farp or ship.S_EVENT_RUNWAY_TAKEOFF: Occurs when an aircraft leaves the ground and takes off.
Previously the S_EVENT_LAND and S_EVENT_TAKEOFF would trigger instantly, but they only change now when DCS logically assumes a successful takeoff/landing.
S_EVENT_RUNWAY_TOUCH and S_EVENT_RUNWAY_TAKEOFF were (assumingly) added to still expose the earlier behaviour.
With Version 0.8.1 of DCS-gRPC these new events are now added for implementation by clients.
Changelog
Added
- Events
OnRunwayTouchandRunwayTakeofffor "changed" TakeOff and Landing logic in DCS.
SRS Client Info and gRPC client authentication
DCS-gRPC 0.8.0 Released!
We are pleased to announce version 0.8.0 of DCS-gRPC
Main features of this release are improved SRS interfacing, with connect and disconnect events and the ability to get all clients with their frequency, and a optional gRPC client authentication layer for more fine grained control of applications connecting to the rust-server.
Aside from these changes there have been more APIs for DCS functionality exposed.
We have added a summary of currently implemented APIs online which can be viewed here. For full documentation of current APIs see the 0.8.0 API Documentation page.
Changelog
Breaking Changes
- Renamed
TtsServicetoSrsService
Added
- 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
- 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
Hotfix and Tripwires
DCS-gRPC 0.7.1 Released!
For an exaplantion of DCS-gRPC is please see this page
Version 0.7.1 is a hotfix for 0.7.0 which fixes an issue that caused OverlordBot to not report tripwires. For the full 0.7.0 release notes see here
Changelog
Fixed
- Fixed velocity and orientation not getting updated in units stream
Support & Contact
You can reach us via the Github issues and Discord. We don't think DCS-gRPC requires yet another Discord so we have instead created a DCS-gRPC section on the OverlordBot Discord . You can also find Binary, RurouniJones, j5bit on other DCS related Discords (e.g. The Hoggit Discord).
Five by five
DCS-gRPC 0.7.0 Released!
For an exaplantion of DCS-gRPC is please see this page
We are pleased to announce version 0.7.0 of DCS-gRPC. The main feature of this release is the implementation of a Text-To-Speech (TTS) system that transmits on Simple Radio Standalone (SRS). This allows DCS-gRPC clients as well as lua scripts running inside DCS access to TTS functionality. The TTS system in DCS-gRPC supports the following back-ends for generating speech.
- Windows TTS (Server 2019 and later)
- Google Cloud TTS
- Microsoft Azure TTS
- Amazon Web Services TTS
This provides a wide variety of voices and providers that can be used together inside a single mission.
We have added a summary of currently implemented APIs online which can be viewed here. For full documentation of current APIs see the 0.7.0 API Documentation page.
Please note that this release is not 100% backwards compatible with 0.7.0 clients. Although we try to avoid breaking changes there is no guarantee while we in the 0 major version. For more information on our versioning policy please see here. Please test any client applications you have written that use DCS-gRPC before deployment.
There are a number of demo client applications for DCS-gRPC. Please see this page for more information on them.
Changelog
Fixed
- 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
- 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
Changed
- 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.
A New Client Application
We have also added a new client application called lso which saves carrier trap information and optionally allows them to be posted to Discord. This trap information includes LSO comments, a graphical representation of the approach and a Tacview file of the Trap that can be downloaded for closer review.
Support & Contact
You can reach us via the Github issues and Discord. We don't think DCS-gRPC requires yet another Discord so we have instead created a DCS-gRPC section on the OverlordBot Discord . You can also find Binary, RurouniJones, j5bit on other DCS related Discords (e.g. The Hoggit Discord).
We control the vertical
DCS-gRPC 0.6.0 Released!
For an exaplantion of DCS-gRPC is please see this page
We are pleased to announce version 0.6.0 of DCS-gRPC. This release includes more command and control related APIs for mission loading, static spawn APIs and EDs new OutTextForUnit API as well as some APIs that allow for drawing on the F10 map. We also have a new contributor in the form of MorpheusXAUT of Buddyspike fame who added the GetUnitType API.
We have added a summary of currently implemented APIs online which can be viewed here. For full documentation of current APIs see the 0.6.0 API Documentation page.
Please note that this release is not 100% backwards compatible with 0.5.0 clients. Although we try to avoid breaking changes there is no guarantee while we in the 0 major version. For more information on our versioning policy please see here.
There are a number of demo client applications for DCS-gRPC. Please see this page for more information on them.
Changelog
Added
OutTextForUnitAPIGetStaticObjectsAPIAddStaticObjectAPI (for standard static objects)AddLinkedStaticAPI (for statics linked to units such as ships)MarkupToAllAPIMarkupToCoalitionAPIGetTheatreAPIGetUnitTypeAPIReloadCurrentMissionAPILoadNextMissionAPILoadMissionAPI
Fixed
- Fixed event handler error log missing actual error message (contained
nilinstead of the message).
Please see the full changelog for the changelog that shows all historical changes.
A New Sample Application
We have also added a new sample application called Custodian which is a Discord Bot that integrates with the new Discord Slash commands to provide you with easy to use, autocompleting, administration APIs for your DCS servers.
Currently these support sending announcements into your servers as well as kicking and banning players using the built-in DCS ban system.
Custodian is ready to go and can be downloaded here
Installation
To install please download the DCS-gRPC-0.6.0.zip and extract into your DCS Saved Games folder. The README.md contains instructions on how to enable DCS-gRPC on a per-mission basis or on a per-server basis. For ease of use we recommend using the per-server basis.
Make sure your DCS server instance is completely stopped (Not just the mission) when installing DCS-gRPC.
An example mission with DCS-gRPC integration called DCS-gRPC-Example.miz is included in the Missions folder; this example will start DCS-gRPC with the default settings if you have set it up on a per-mission basis. Note that this is not needed if you are setting up DCS-gRPC using the per-server method.
Support & Contact
You can reach us via the Github issues and Discord. We don't think DCS-gRPC requires yet another Discord so we have instead created a DCS-gRPC section on the OverlordBot Discord . You can also find Binary, RurouniJones, j5bit on other DCS related Discords (e.g. The Hoggit Discord).
We control the horizontal
DCS-gRPC 0.5.0 Released!
We are pleased to announce version 0.5.0 of DCS-gRPC. The main feature of this release is the addition of DCS server command and control APIs that allow DCS-gRPC clients to administer the server.
Note that the new Ban APIs used the built-in DCS ban mechanism. If you want to use SLMod then you can use the SendChat command to send an SLMod formatted chat message to enable SLMod bans.
There will be another 0.6.0 release that will include the mission management APIs such as loading missions and managing the mission rotation list.
We have added a summary of currently implemented APIs online which can be viewed here. For full documentation of current APIs see the 0.5.0 API Documentation page.
Please note that this release is not 100% backwards compatible with 0.4.0. Although we try to avoid breaking changes there is no guarantee while we in the 0 major version. For more information on our versioning policy please see here.
There are a number of demo client applications for DCS-gRPC. Please see this page for more information on them.
Changelog
Added
GetMissionFilenameAPIGetPausedAPISetPausedAPIStopMissionAPIExitProcessAPIKickPlayerAPIIsMultiplayerAPIIsServerAPIGetMissionDescriptionAPIBanPlayerAPIGetBannedPlayersAPIUnbanPlayerAPI
Changed
- 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 theGroupCommand
event was first added.
Please see the full changelog for the changelog that shows all historical changes.
Installation
To install please download the DCS-gRPC-0.5.0.zip and extract into your DCS Saved Games folder. The README.md contains instructions on how to enable DCS-gRPC on a per-mission basis or on a per-server basis. For ease of use we recommend using the per-server basis.
Make sure your DCS server instance is completely stopped (Not just the mission) when installing DCS-gRPC.
An example mission with DCS-gRPC integration called DCS-gRPC-Example.miz is included in the Missions folder; this example will start DCS-gRPC with the default settings if you have set it up on a per-mission basis. Note that this is not needed if you are setting up DCS-gRPC using the per-server method.
Support & Contact
You can reach us via the Github issues and Discord. We don't think DCS-gRPC requires yet another Discord so we have instead created a DCS-gRPC section on the OverlordBot Discord . You can also find Binary and RurouniJones on other DCS related Discords (e.g. The Hoggit Discord).
At your command!
DCS-gRPC 0.4.0 Released!
We are pleased to announce version 0.3.0 of DCS-gRPC. The main feature of this release is the addition of the Command APIs that allow DCS-gRPC clients to create a command menu structure in the F10 command menu and recieve events when players trigger those commands. This API was created with contributions from Andrei Zbikowski. As well as this we have other new APIs, enhancements to existing APIs, and bug-fixes.
We have added a summary of currently implemented APIs online which can be viewed here. For full documentation of current APIs see the 0.4.0 API Documentation page.
Please note that this release is not 100% backwards compatible with 0.3.0. Although we try to avoid breaking changes there is no guarantee while we in the 0 major version. For more information on our versioning policy please see here.
There are a number of demo client applications for DCS-gRPC. Please see this page for more information on them.
Changelog
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.
Fixed
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
Breaking Changes
- Added
GROUP_CATEGORY_UNSPECIFIEDtodcs.v0.common.GroupCategory; breaking change as all indexes have changed. CoalitionService.GetPlayerswas renamed toCoalitionService.GetPlayerUnits; fixes conflict withNetService.GetPlayers
Please see the full changelog for the changelog that shows all historical changes.
Installation
To install please download the DCS-gRPC-0.4.0.zip and extract into your DCS Saved Games folder. The README.md contains instructions on how to enable DCS-gRPC on a per-mission basis or on a per-server basis. For ease of use we recommend using the per-server basis.
Make sure your DCS server instance is completely stopped (Not just the mission) when installing DCS-gRPC.
An example mission with DCS-gRPC integration called DCS-gRPC-Example.miz is included in the Missions folder; this example will start DCS-gRPC with the default settings if you have set it up on a per-mission basis. Note that this is not needed if you are setting up DCS-gRPC using the per-server method.
Support & Contact
You can reach us via the Github issues and Discord. We don't think DCS-gRPC requires yet another Discord so we have instead created a DCS-gRPC section on the OverlordBot Discord . You can also find Binary and RurouniJones on other DCS related Discords (e.g. The Hoggit Discord).
More Progress
DCS-gRPC 0.3.0 Released!
We are happy to announce version 0.3.0 of DCS-gRPC. Development for this release has focused on on simplifying the ways in which DCS-gRPC is configured and initialized. As well as this we have added some more APIs (Thanks to Justin Lovell who is a new contributor), bug fixing, and made some internal reoganisation to make our lives easier. For a list of current APIs see the 0.3.0 API Documentation
Please note that this release is not 100% backwards compatible with 0.2.0. Specifically we have updated the way in which DCS-gRPC is configured and initialised and chat message streaming has been updated. Please see the README.md for information on what has changed. The summary is that we have moved all configuration and initialization out of MissionScripting.lua and that you can choose to do so instead in a new file or in your missions. Please see the README.md for information on how to do it now.
Although we hope to be able to minimise breaking changes from this version going forwards. For more information on our versioning policy please see here.
There are a number of demo client applications for DCS-gRPC. Please see this page for more information on them.
Changelog
Added
- 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
Changed
- 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
Removed
HookService.StreamChatMessageshas been removed in favor forPlayerSendChatEvent- Option to specify settings inside of the
MissionScripting.lua
Fixed
- Speed and heading in units stream
Please see here for the changelog that shows all historical changes.
Installation
To install please download the DCS-gRPC-0.3.0.zip and extract into your DCS Saved Games folder. The README.md contains instructions on how to enable DCS-gRPC on a per-mission basis or on a per-server basis.
Make sure your DCS server instance is completely stopped (Not just the mission) when installing DCS-gRPC.
An example mission with DCS-gRPC integration called DCS-gRPC-Example.miz is included in the Missions folder; this example will start DCS-gRPC with the default settings if you have set it up on a per-mission basis.
Support & Contact
You can reach us via the Github issues and Discord. We don't think DCS-gRPC requires yet another Discord so we have instead created a DCS-gRPC section on the OverlordBot Discord . You can also find Binary and RurouniJones on other DCS related Discords (e.g. The Hoggit Discord).
API Refactoring Release
DCS-gRPC 0.2.0 Released!
We are happy to announce version 0.2.0 of DCS-gRPC. Development for this release has focused on reorganising the public API layout to conform to gRPC idoms and make them easier to manage going forwards. We have also added some new APIs and started working on the major task of implementing the AddGroup API. For a list of current APIs see the 0.2.0 API Documentation
Please note that this release is not backwards compatible with 0.1.0 although we hope to be able to minimise breaking changes from this version going forwards. For more information on our versioning policy please see here.
The other major change is in the initialization which removes the need for sanitisation in MissionScripting.lua and also enables the ability to run DCS-gRPC in all missions on the server without needing mission editing.
There are a number of demo client applications for DCS-gRPC. Please see this page for more information on them.
Changelog
Added
SetEmissionAPIGetMissionStartTimeAPIGetScenarioCurrentTimeAPIGetBullseyeAPIGetTransformAPIAddGroupAPI (Initial version suitable for spawning fixed SAM sites)EvalAPI executable in the DCS hook environment along with command-line tool- Ability to include DCS-gRPC on all server missions without needing to edit the mission
- Updated Rust version and many Rust dependencies
Changed
- Split and reorganised APIs into versioned namespaces
- Switched to a different way of initialising the DCS-gRPC server that does not require sanitisation
- Changed Enum numbering to allow more idiomatic gRPC usage
Installation
To install please download the DCS-gRPC-0.2.0.zip and extract into your DCS Saved Games folder. The README.md contains instructions on how to enable DCS-gRPC on a per-mission basis or on a per-server basis.
An example mission with DCS-gRPC integration called DCS-gRPC-Example.miz is included in the Missions folder
Support & Contact
You can reach us via the Github issues and Discord. We don't think DCS-gRPC requires yet another Discord so we have instead created a DCS-gRPC section on the OverlordBot Discord . You can also find Binary and RurouniJones on other DCS related Discords (e.g. The Hoggit Discord).
Initial Release
DCS-gRPC 0.1.0 Released!
Binary (the creator of DATIS, DCS-Scratchpad and many other DCS related projects) and RurouniJones (the creator of Overlordbot) are proud to announce our initial 0.1.0 release of DCS-gRPC; an Open Source Remote Procedure Call server for DCS powered by Google's RPC framework and written in Rust.
To install please download the DCS-gRPC-0.1.0.zip and extract into your DCS Saved Games folder. An example mission with DCS-gRPC integration called DCS-gRPC-Example.miz is included in the Missions folder
What is DCS-gRPC?
DCS-gRPC allows you to remotely interact with the scripting environment on a running DCS mission.
This allows scripters to move code, that previously had to run inside the DCS server process, outside of the process. This allows for complex code to be executed with less performance impact on the DCS server itself.
For example: Instead of having an IADS (Integrated Air Defence System) script running inside the DCS process it can do all the detection calculations externally and then only has to tell the DCS mission to turn SAM sites on and off.
Another advantage of using an RPC system is that the scripter has a much greater choice in what scripting language they use. Instead of having to use Lua they can choose to use Python, JavaScript, C#, Java, Ruby and any language supported by gRPC
Sounds nice. But is this relevant to me?
DCS-gRPC is aimed at scripters, mission makers, application developers and multiplayer server-admins who wish to add functionality to their servers and missions while limiting the performance impact. We have already implemented a number of APIs that cover a wide variety of use-cases and are adding more as time goes on. For a list of currently implemented APIs have a look at our API Documentation which is also available in the Docs folder of the download.
Adding new APIs can be done quite easily by anyone as it is 95% lua code and just a bit of Rust boilerplate code. See this commit for an example.
Since this is the initial 0.1.0 release we are still potentially modifying existing APIs as we improve the design so this release is mainly for people to play around, experiment and start prototyping their applications.
DCS-gRPC has already been deployed to the Hoggit servers without any issues.
Do you have some example applications that use DCS-gRPC?
Yes! The server comes with a repl and a copy of grpcurl.exe which can be used for experimentation. These are available in the Tools folder of the download.
As part of this initial release we are also releasing some example client applications that communicate with the DCS-gRPC server. The following examples are all written in C# but you can choose to write your clients in a variety of languages.
Jupiter
Jupiter is an application that will allow someone to act as a GameMaster for a mission. It will allow real-time control of units and other things (Such as placing smoke, flares and Illumination bombs). This application is very much in very incomplete ALPHA state and is included here to demonstrate what is possible.
Download here
DCScribe
DCScribe is a program that makes use of the unit streaming ability of DCS-gRPC to stream the position information of units and write them to a PotsgreSQL database. This data in the database can then be used for various purposes such as an online map.
Download here
SimpleAirDefence
A simple example Integrated Air Defence System. Note that this is a very simple example. It does not have most of the features that Skynet IADS has for example. However it demonstrates the possibilities.
Download here
OverlordBot
OverlordBot already uses DCS-gRPC on the Syria-At-War server to implement the mission request and mission join functionality. It also uses DCS-gRPC to send start-up and shutdown messages into the server. As time goes on more and more functions in OverlordBot will start using DCS-gRPC to make OverlordBot better.
Support & Contact
You can reach us via the Github issues and Discord. We don't think DCS-gRPC requires yet another Discord so we have instead created a DCS-gRPC section on the OverlordBot Discord . You can also find Binary and RurouniJones on other DCS related Discords (e.g. The Hoggit Discord).




