Sneaker is a browser-based radar and GCI simulation designed for use with Tacview and DCS: World. Users are presented with a simulated radar scope that provides air, sea and optionally land targets with speed/altitude/type information. Additionally Sneaker provides some GCI-specific functionality:
- Configure per-aircraft or profile based threat and warning radius's that provide visual and auditory cues for trespasses.
- Searching, tagging, and watching flights allows you to reduce workload and allow a controller to work across many flights and packages.
- Mission clock and hack timers for command and coordination.
A live example of Sneaker can be viewed here.
- Download the latest released version from here.
- Create a configuration file based off the example, replacing the required information (and optionally adding multiple servers to the array)
- Run the executable with the configuration path:
sneaker.exe --config config.json
- Browse to http://localhost:7788 to access Sneaker GCI. To make the website available over the network, specify the bind parameter like so:
sneaker.exe --config config.json --bind 0.0.0.0:7788
A minimum viable product Docker image has been created which can be used as follows:
- Create a configuration file based off the example, replacing the required information (and optionally adding multiple servers to the array) and place in a folder of your choice, e.g.
/tmp/config/config.json
- Run the Docker command
docker run -it -p 7788:7788 -e CONFIG_FILE_NAME=config.json -e PORT=7788 -e BIND_IP=0.0.0.0 -e DEBUG=0 -e TIMEOUT=30 -v /tmp/config/:/config/ aterfax/sneaker-webgci
- Browse to http://yourDockerMachineHostname:7788 to access Sneaker GCI.
This image has been created with the requirement that the user bind mount the config file, or a directory with the config file to the Docker container at the path /config
with the -v
Docker argument. The user must also supply the correct config file name given with the CONFIG_FILE_NAME
environment variable all as shown above.
The user can choose to change the internal Sneaker daemon selected port with the PORT
environment variable, but must also match this with the correct -p
Docker arguments if changed.
The bind IP can be changed as required to only bind a particular IP address, or all IP addresses with 0.0.0.0
as shown with the BIND_IP
environment variable.
The DEBUG
environment variable can be set to 1
or 0
, to show or hide extended logging info and environment variable dumps to the console.
The TIMEOUT
environment variable can be set to any positive value of seconds in whole numbers and controls how often the running Docker container will check if the Sneaker daemon is still online, and restart it if it isn't.
Sneaker features a built-in Discord integration which provides basic server information and GCI duty tracking via Discord slash-commands.
- Create a new Discord Application and configure the
Interactions Endpoint URL
to point at your Sneaker installations/api/discord/interactions
endpoint. - Add a Bot to the application (this is used to DM users about GCI duty timeouts)
- Add the bot to your server by opening a link generated here. You only need the
applications.commands
scope. - Add the following to your
config.json
:
"discord": {
"application_id": "<discord application id, bunch of numbers>",
"application_key": "<discord public key, bunch of letters/numbers>",
"token": "<discord bot token>",
"state_path": "<optional path to a location to save GCI duty state between restarts>",
"timeout": "<number of minutes before gci is automatically logged off duty, default = 60>",
"reminder": "<number of minutes before timeout to warn gci via discord, default = 5>"
}
- API provides information on the internal Sneaker API.
The Sneaker web UI presents an emulated radar scope over top a Open Street Map rendered via maptalks. The web UI is updated at a configurable simulated refresh rate (by default 5 seconds).
Bullseye information for the current cursor position is displayed in the bottom right corner of the screen, additionally the bullseye icon is rendered in its position on the map.
A BRAA line can be drawn by right clicking anywhere on the map and dragging. Additionally if you press the "s" (snap) key while starting the BRAA line on-top of an existing track the starting point will be locked to the tracks position.
The mission timer is available in the bottom left corner. Clicking on the timer will create a new hack timer which will display above.