🚧 Disclaimer: AIMEX is in VERY early beta — expect bugs, missing functionality, and broken features.
AIMEX is a high-performance colorbot designed for competitive gaming, operating solely on a second computer to ensure complete isolation from the game's anti-cheat system. It uses NDI video streaming and a hardware input device (MAKCU or alternative) to interface with the main computer without ever needing to run any code on it. The system requires minimal performance overhead, allowing it to run on low-end hardware such as a Raspberry Pi 4B or an old laptop with good performance. Configuration is done through a modern web interface, which can be accessed from any device on the user’s local network.
- Game Capture (Main PC): OBS captures the
game.exewindow on your primary gaming computer. - NDI Video Stream (Main PC to Second PC): The captured game video is then streamed over your local area network (LAN) to the second computer using the OBS-NDI plugin.
- Video Frame Reception (Second PC): The second computer, running the application, receives these NDI video frames via the
ndi_receiver.cppmodule. - Color Filtering & Target Identification (Second PC):
- The received video frame is processed through
color_filter.cpp. It converts the frame to HSV color space. - A similarity map is generated by filtering for a user-defined color range, effectively highlighting enemies.
- To pinpoint the estimated head position, the system searches this similarity map for the topmost pixel of the target color.
- The received video frame is processed through
- Mouse Movement Calculation (Second PC):
- The
vector_calculator.cppmodule determines the pixel distance and direction required to move the player's crosshair (center of the frame) to the identified enemy head position. - This pixel vector is normalized (magnitude is limited), this is effectivley just a bad version of smoothing.
- The
- Input Injection (MAKCU Device):
- The calculated mouse movement values are sent from the second PC to the MAKCU device connected to the main gaming PC.
- The
usb_sender.cppmodule handles communication with the MAKCU device via themakcu.h/.cppinterface. - The MAKCU device then physically adds these movement commands to the user's existing mouse inputs. Because it operates at a hardware level and maintains the original mouse's Human Interface Device (HID), this method makes the system difficult for anti-cheat software to detect.
- Main Gaming Computer: Capable of running both the game (e.g., Valorant) and OBS simultaneously with sufficient performance.
- Second Computer: Runs the AIMEX colorbot system. Tested and confirmed to work efficiently on a Raspberry Pi 4B.
- MAKCU Device: Essential for hardware-level mouse input injection. While other devices might work, official support is only for MAKCU.
- Ethernet Connection: A stable, wired Ethernet connection between the main PC and the second PC is crucial for maintaining low-latency video streaming via NDI.
- C++ 17: The modern C++ standard used throughout the project.
- Boost Libraries: General-purpose C++ libraries, used for various utilities.
- OpenCV: Computer Vision Library for all image processing and analysis tasks.
- NDI SDK: NewTek's Network Device Interface Software Development Kit, necessary for NDI video reception.
- httplib: A lightweight C++ HTTP server and client library, used for the web-based configuration UI.
- nlohmann_json: A header-only C++ JSON library for parsing and serialization, used for configuration management via the web UI.
Follow these steps to build the AIMEX project on a Windows environment.
-
Install vcpkg packages:
- If you haven't already, install vcpkg and bootstrap it following their official instructions.
- Install the required dependencies using vcpkg:
vcpkg install opencv boost nlohmann-json httplib libusb
-
Install NDI SDK:
- Download and install the NDI SDK from the official NewTek website: https://ndi.video/for-developers/ndi-sdk/
- Crucially, ensure that the NDI SDK is installed to the default path:
C:/Program Files/NDI/NDI 6 SDK. If you install it elsewhere, you will need to adjust theNDI_SDK_PATHin the CMake command below.
-
Generate the build files using CMake:
- Navigate to your project's build directory (e.g., create a
.build/folder in the root of your project andcdinto it). - Run the following CMake command:
cmake .. -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -DNDI_SDK_PATH="C:/Program Files/NDI/NDI 6 SDK"
- Navigate to your project's build directory (e.g., create a
-
Build the project:
- After CMake successfully configures the build system, compile the project using:
cmake --build .
- After CMake successfully configures the build system, compile the project using:
-
Run the executable:
- The compiled executable (
AIMEX.exe) will be located in your build directory, underRelease/. - Important: When running the program, ensure that all required DLL files (from OpenCV, Boost, NDI, etc., which might be in your vcpkg installation's
binfolder) and theweb/folder (containing the web UI static files) are located in the same directory as the executable. - To configure the program, access the web UI from any browser on your network by navigating to
http://<IP_OF_SECOND_PC>:<WEB_PORT>(default port is8080).
- The compiled executable (
-
Dashboard tab: Control panel (start/stop/pause), NDI source UI, Mouse device UI, config system UI, performance metrics (FPS, latency, accuracy), terminal output, status indicator
-
Colour filtering: HSV color visualisation, Example enemy image, sliders aswell as input boxes
-
Mouse movement: dropdown for movement types, UI for configuring movement where needed
-
Aim, trigger, RCS UI: UI for configuration where needed (delay, randomisation, toggle/hold keys, etc.)
-
Hotkey Support: hold/toggle keys for interfacing withthe bot (e.g aim, trigger, RCS, stop, start, pause, etc.)\
-
Add triggerbot: Delay, randomization, hold and toggle keys
-
Add RCS: Smoothing, Bezier Curves, Movement Jitter, Delay Jitter, Adaptive Smoothing, Acceleration Curves, etc.
-
Humanizations: Smoothing, Delay Randomization, Bezier Curves, Movement Jitter, Delay Jitter, Adaptive Smoothing, Acceleration Curves
-
Latency Compensation: support for compensating input latency or frame delay.
-
Documentation: Better instructions for installation, usage, and configuration.
-
Cross-Platform support: increased compatibility and testing on other operating systems and architectures.
-
Resource monitoring: Monitor CPU, RAM, and GPU usage of the second PC, and display it in the web UI.
-
Config file system: Upload configs to 2nd PC, download configs to main PC, and natively load, write, create, rename, and delete configs
-
Web Notifications: Notify via push notifications (updates, errors, etc.)
-
Update support system: Check for updates, download and install them automatically, notifications, etc.
-
Live preview: display the NDI video stream, with visuals for debugging and configuration (similarity map, movement path, etc.)
This project is provided for educational and research purposes only. The use of automation tools in online games may violate the terms of service of those games and could lead to account suspension or termination. I am not responsible for any consequences that may arise from its misuse.
- Sensitivity Calculation: Ssarkos
- MAKCU Device Integration: K4HVH/makcu-cpp