CNTR is a recording and playback system for ArmA 3. The system captures infantry and vehicle movement, weapons fire, casualties and many other aspects of an armed operation and stores it for later playback in a 2D environment with functionality similar to that of the ArmA 3 map. CNTR thus allows for both planning an operation as well as reviewing team-performance and coordination post-operation.
CNTR started as a modification OCAP, modified to suit CNTO's specific needs, but eventually ended up being a complete rewrite of it with a different capture and playback algorithms, and a completely new storage format.
- Server-side real-time capturing - no client modding required
- Extensively stress-tested - support for over 300 simultaneously active units on the battlefield!
- Capturing and reproduction of in-game placed map markers
- Streamable, crash-resistant capture format - capture file is usable as-is even after fatal crashes
- On-the-fly capturing and storage - capture file is ready to use on mission end
- Interactive web playback system
- Event ticker with go-to-event and go-to-unit features
- Interactive unit overview featuring individual unit status
- Map preview - no capture file required
- Automatic remote upload to another server
- Map drawing capabilities in web player similar to those in ArmA 3
- Collaborative web player sessions that allow users to plan and analyze operations outside of ArmA 3
- Please note that if the game server is not on the same server as the web player server, capture files will have to be transferred manually together with the updated index file! Remote upload feature is in the works.*
- Download & extract the latest CNTR release
- Copy contents of
addons
folder into ArmA 3 root folder (i.e.C:\Games\ArmA 3
) - Copy contents of
userconfig
folder into ArmA 3 root folder - Open
<ArmA 3 root folder>\userconfig\cntr\config.hpp
and modify the following line:
cntr_exportPath = "<EXPORT_PATH>";
to include the path where you placed the player. Make sure the path above is writable, otherwise the addon won't be able to copy the capture file and update the index!
- Copy
player
folder into web server's app folder (i.e.C:\wamp64\www
) and name it as you wish (in this example,cntr-player
)
Ended
mission handler is still bugged when using dedicated servers (see the related bug report). One workaround is to manually stop the capture once the mission has been completed.
The capture can be ended by the GM by executing the following command in the console:
{ [] call cntr_fnc_stopCapture; } remoteExecCall ["call", 2]
- Install Git
- Clone CNTR repository to desired folder (in this example,
cntr
):
git clone https://github.com/CntoDev/CNTR.git cntr
- Install ArmA 3 Tools from Steam
- Open ArmA 3 Tools and open the Addon Builder
- Under Addon source directory put the path to the addon source files, i.e.
cntr\addon\cntr
- Under Destination directory put the path where the bundle should appear, such as directly to the ArmA 3 folder:
<ArmA 3 root folder>\@cntr\addons\
- Make sure the
Binarize
option is deselected! - Click on PACK to create the addon bundle
- Install mingw-w64 compiler suite (be sure to select
Architecture: x86_64
&Threads: posix
) - Open MinGW prompt
- Go to directory containing CNTR Exporter source files (
cntr/extension
) - Compile DLL with following command
x86_64-w64-mingw32-g++ library.cpp -std=c++11 -shared -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lwinpthread -o cntr_exporter_x64.dll
- Open terminal
- Install g++ compiler
sudo apt-get install g++
or
yum install gcc-c++
- Go to directory containing CNTR Exporter source files (
cntr/extension
) - Compile shared object file with following command
g++ -std=c++11 -fPIC -shared -m32 -o cntr_exporter.so library.cpp
Inkscape is used to produce the .svg
files.
- Use one of the previous source files (found in
web/images/mapMarkers
orweb/images/markers
) as a template - Remove the current marker from the symbol-list (default key
ctrl + shift + Y
) - Add the newly created marker to the symbol-list
- Add
symbol
as the object ID to the symbol (default keyctrl + shift + O
) - Make sure only one symbol is found in the symbol list
- Using a text editor
- add the
viewport
attribute (found in the top of the document) to the<symbol>
tag - Cleanup the
.svg
file by deleting unnecessary metadata, Inkscape settings and tags - For styling to be controled by CNTR, remove any styling added by Inkscape
- add the
- Install latest version of Node.js
- Go to
web
directory of the repository - Run
npm install
- To bundle the app, run
npm run build
- To start the watcher, run
npm run watch
- To build for production (minified), run
npm run build:prod
CNTR uses its own human-readable capture format inspired by CSV and YAML formats. Please see the following document for detailed documentation.