Rewind viewer
Fast Russain AI Cup championship match viewer with rewinding support written in OpenGL
Design
Viewer has several advantages in comparison of local-runner with drawing plugin:
- All figures is drawn using your video adapter, so no more problems with slow drawing
- Rewinding - ability to navigate between game tick
- In Pause navigation - zoom and navigate in any game state
- Handy mouse navigation
Obvious drawbacks:
- Viewer running as standalone application, it know nothing about local runner or your strategy, so you need manually send all data (like buildings, units etc.) and you can draw only data visible by your strategy
- In theory high memory usage, because it need to store all drawing primitives for rewinding support
ℹ️ Currently viewer reached 1.2 version and developments is on hold. There definetely will be building support after round 1 and fog of war support right after round 2. Minor bugfixes and optimization may come during championship, but not so much.
Build
Clone repository with submodules:
git clone --recursive https://github.com/kswaldemar/rewind-viewer.git
Unix, MacOS:
mkdir build && cd build
cmake --CMAKE_BUILD_TYPE=Release ..
cmake --build .
Windows:
mkdir build && cd build
cmake ..
cmake --build . --config Release
Note: Compiler with c++14 support needed. That means Visual Studio 2015 or higher on Windows.
resources
is located.
So you need to manualy copy resources
to build folder, or copy executable to project root directory.
Strategy integration
You need special client to be able send messages in viewer. See example C++ client for information about json based message protocol and implement one for your language of choice. Also see client examples for official local runner.
Then run viewer before strategy and it should start draw frames
License
Project sources distibuted under MIT license, thirdparties distributed under their own licences
Credits
Project created with help of many great libraries:
- glad for loading OpenGL functions
- glm math library for OpenGL
- glfw for creating window and crossplatform context handling
- ImGui for UI widgets inside application
- nlohmann json for json operating
- csimplesocket for network interaction
- stb_image for images processing
- loguru for logging support
Resources:
- fontawesome icon font, embedded inside text in many UI elements
- Application icon by Laura Reen