Inspiration
I wanted aim practice to offer more than a score. After a session, players should be able to understand what changed, consider possible explanations, and choose a practical next exercise. AI Aim Trainer connects a Unity shooting range with a floating AI Coach powered by NVIDIA Nemotron through Nebius Token Factory.
What it does
The game supports Static, Moving, Flick, and Reaction target modes, adjustable sensitivity, manual shooting, and session statistics. The floating Coach provides two functions: Session coaching: measured results, previous-session comparisons, conversational feedback, possible explanations, and training suggestions. Optional aiming assistance: smooth, bounded camera assistance using Unity's internal target and camera data. Assistance supports holding the right mouse button or proximity activation. Proximity assistance begins only when an eligible head is inside the configured zone and the mouse has remained still for 150 milliseconds. Moving the mouse interrupts it. Players can adjust assistance speed and zone size, and stop assistance using Stop, F8, or Escape. Firing remains manual.
How we built it
Unity and C# handle gameplay, target hit zones, camera movement, shooting, and measurement collection. A Python desktop Coach communicates with Unity over a local authenticated connection. NVIDIA Nemotron, hosted by Nebius Token Factory, receives session measurements and an available previous-session comparison. It generates conversational feedback, a possible explanation, and a suggested training experiment. Statistics and numerical comparisons are calculated locally. AI interpretations and possible causes are displayed separately from measured facts. Response structure and completeness are checked, with one retry before a local fallback. These checks do not guarantee that every AI suggestion is correct. Token Factory allowed me to integrate hosted NVIDIA model inference without running an LLM locally or managing a model server. The OpenAI Python SDK serves as an API-compatible client; inference requests go to Nebius. The Apple Silicon macOS app bundles Coach, Python, and its GUI runtime. Users enter their own Nebius API key, stored in their Mac's Keychain.
Challenges we ran into
One challenge was separating assistance performance from player performance. A small remaining error after assistance does not prove accurate manual aim. Correction measurements are therefore reported across the session and identified as assisted results. Another challenge was balancing reliable reporting with useful AI language. Fixed templates became repetitive, so I introduced conversational feedback while keeping measured statistics separate and labelling possible explanations as hypotheses. AI can still suggest controls the game does not provide. Improving this capability checking is remaining work.
Accomplishments that we're proud of
Built a working Unity game with four training modes and a floating desktop Coach. Integrated NVIDIA Nemotron through Nebius Token Factory. Implemented optional assistance without screen capture, YOLO, or automatic firing. Added session-wide correction statistics and chronological previous-session comparisons. Packaged a portable Apple Silicon macOS app with per-user API key setup. Passed 46 offline tests, plus packaged Coach startup, signature, and archive-integrity checks.
What we learned
A useful AI Coach needs clear measurements and understandable language. It also needs to distinguish an observed change from an explanation for that change. For example, a higher hit rate can be reported directly, but different assistance use, small samples, or unknown settings can prevent a fair comparison. The current exports do not save target mode and sensitivity, so the Coach cannot establish matched training conditions from those files.
What's next for AI Aim Trainer
I plan to record training settings with each session, strengthen checks that AI exercises use supported controls, and test the app on additional Macs. The current build supports Apple Silicon only and is not Apple-notarized. Local gameplay and statistics work without an API key; online coaching requires a user-owned Nebius key and may consume account credits. Source and download Competition source and setup instructions Competition macOS download
Log in or sign up for Devpost to join the conversation.