NIOD-core is a npm package that lets you connect to DCS World using a socket. Once connected, it offers a variety of functionalities :
- Events: You can listen to events from DCS World
- Functions: You can call functions from the DCS Mission Scripting API
This is a pretty low level package, mission makers should probably not use NIOD-core directly but a package that uses NIOD-core to get higher level functionalities. My plan is to make one in the near future.
How does this work ?
A socket is created in the mission scripting environment, NIOD-core connects to it and sends / receives commands discribing events and functions.
The nodejs server stores callbacks linked to a callback id, this id is passed to the lua server which pass it back with the returned data. The dispatcher will then execute the right stored callback.
Here's a basic example
const initNiod getGroups addEventHandler COALITIONS EVENTS = ;;
Unsanitize the require function
Niod requires DCS to import some functionalities from LUA so it can create a socket and access the OS time API, you'll need to "unsanitize" it. To do so go into your DCS installation folder
DCS World\Scripts\MissionScripting.lua and edit these line.
dosanitizeModule('os')sanitizeModule('io')sanitizeModule('lfs')require = nilloadlib = nilend
do--sanitizeModule('os')sanitizeModule('io')sanitizeModule('lfs')--require = nilloadlib = nilend
Then you need to create a mission that loads the NIOD lua file found in the "script" folder.
And there you go ! You're all set, you can import niod in your project and start the server using
const initNiod = ;;
and start coding !
Niod is written in typescript, so the npm package is shipped with all the type declarations. Which means auto-completion depending on your code editor
You can find the complete docs here
Since there is a lot of documented functions you probably won't need, here are links to:
I'll be writing guides with examples, links will be down below
Thanks to Drex from Dynamic DCS for all the help on sockets, go check his server out