DCS gRPC server written in Rust. Get data out of DCS and send commands into DCS.
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
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).
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.
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.
WorldService.GetMarkPanels
) when the mark panel was created by a game master / JTAC, or when the player who created the mark panel left. MarkPanel.initiator
is now optional. (#156)SimulationFps
event that is fired every second and contains simulation fps information since the last event (i.e. for the past ~1sec).GetSessionId
API which is refreshed every mission restart to allow clients to know if a new mission has started on client reconnect.GetDetectedTargets
API. Method follows the DCS implementation of controller's getDetectedTargets. Can optionally also return the unit or weapon objects tracked by the radar.orientation
and velocity
to Unit
objectu
/v
coordinates (offset from DCS map origin in meters) to Position
s used in responses. To not require them in requests, all positions provided in requests got changed to a new InputPosition
type (you'll have to update your requests, simply replace Position
with InputPosition
in them).GetRealTime
APIorientation
and velocity
to Weapon
objecttime
of the update to units stream (StreamUnitsResponse
)GetBallisticsCount
APITtsService/Transmit
to synthesize text to speech and transmit it over SRSGRPC.tts(ssml, frequency[, options])
Lua APIgroup
field to make event processing easier. This replaces the group_name
and group_category
fields and is a backwards incompatible change.id
instead of a name
, since dcs associates them with a number.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.
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).
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.
OutTextForUnit
APIGetStaticObjects
APIAddStaticObject
API (for standard static objects)AddLinkedStatic
API (for statics linked to units such as ships)MarkupToAll
APIMarkupToCoalition
APIGetTheatre
APIGetUnitType
APIReloadCurrentMission
APILoadNextMission
APILoadMission
APInil
instead of the message).Please see the full changelog for the changelog that shows all historical changes.
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
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.
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 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.
GetMissionFilename
APIGetPaused
APISetPaused
APIStopMission
APIExitProcess
APIKickPlayer
APIIsMultiplayer
APIIsServer
APIGetMissionDescription
APIBanPlayer
APIGetBannedPlayers
APIUnbanPlayer
APIgroupName
field in the GroupCommand
event 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 the GroupCommand
event was first added.Please see the full changelog for the changelog that shows all historical changes.
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.
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).
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.
ForcePlayerSlot
APIPlayerChangeSlotEvent
emitted when player changes slotStreamUnits
can optionally specify the category
of the units which may be monitored.MarkToCoalition
was sending the mark to the incorrect coalition.NetService.GetPlayers
overwrote CoalitionService.GetPlayers
(see Breaking Changes for details)proto
files 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_address
mission.proto
- PlayerSendChatEvent.player_id
proto
files with enumerations to be named correct; compiler-only breaking change, not runtime.
coalition.proto
- AddGroupRequest.Point
- enum Type
has been renamed to PointType
coalition.proto
- AddGroupRequest
- enum members of Skill
has been prefixed with SKILL_
CoalitionService.GetPlayers
did not filter correctly on specified coalitionStreamUnits
would only monitor the Plane
groups; now monitors all groups with the default option of GROUP_CATEGORY_UNSPECIFIED
GROUP_CATEGORY_UNSPECIFIED
to dcs.v0.common.GroupCategory
; breaking change as all indexes have changed.CoalitionService.GetPlayers
was renamed to CoalitionService.GetPlayerUnits
; fixes conflict with NetService.GetPlayers
Please see the full changelog for the changelog that shows all historical changes.
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.
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).
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.
net.*
scope into NetService
SendChat
APISendChatTo
APIGetPlayers
APISaved Games\DCS\Config\dcs-grpc.lua
Connect
and Disconnect
eventsplace
to LandingQualityMark
eventPlayerSendChatEvent
to the MissionService.StreamEvents
for clients to observe the chat as part of the event streamHookService.StreamChatMessages
has been removed in favor for PlayerSendChatEvent
MissionScripting.lua
Please see here for the changelog that shows all historical changes.
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.
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).
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.
SetEmission
APIGetMissionStartTime
APIGetScenarioCurrentTime
APIGetBullseye
APIGetTransform
APIAddGroup
API (Initial version suitable for spawning fixed SAM sites)Eval
API executable in the DCS hook environment along with command-line toolTo 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
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).
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
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
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.
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 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 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
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 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.
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).