Inspiration
FPS controls demand constant coordination across both hands. We wondered whether familiar movements, like turning your head or smiling, could offer another way to look, fire and move. We see this as a way to give players more choice, and possibly a route to accessibility applications. That second part is a hypothesis we haven’t tested. We built it for the USF BCI Build Sprint’s recreation track, using the original Modern Warfare 2 campaign’s “The Pit” as our test environment.
What it does
NeuroOps is a Windows prototype that turns head movement and facial gestures into game controls:
Head orientation: mouse-look Smile: fire Raised eyebrows: reload Mouth gestures (optional): movement. Opening the mouth moves forward, pursing the lips moves back, and shifting the mouth strafes.
It also has safety controls. F6 recenters, F8 arms or disarms, and F9 is an emergency stop that releases all held inputs. Output only goes to the MW2 campaign window.
How we built it Tracking: a webcam feeds OpenCV, and MediaPipe’s Face Landmarker provides facial landmarks, expression scores and head pose. Control logic: neutral-face calibration, smoothing and a deadzone reduce unwanted movement, and gesture gating decides when an input fires. Output: Windows SendInput sends keyboard and mouse events, restricted to the foreground iw4sp.exe process. Gaze mode: an experimental option with five-point and nine-point calibration. EMOTIV path: a separate prototype that uses the Cortex API to read the headset’s mental-command stream. Testing: a unit test suite covers calibration math, deadzones, gesture gating, tracking-loss recovery, foreground restrictions and input release. Privacy: frames are processed locally and not recorded.
Challenges we ran into
Headset trouble: our EMOTIV INSIGHT 2 headset was slightly faulty. We exported its data and combined it with the OpenCV gesture controller. The export and pairing code isn’t in the repo, so that experiment can’t be reproduced from it. No EEG gameplay: we never got reliable end-to-end EEG-driven gameplay working, so the camera controller became the active implementation. Control feel: unwanted movement from face jitter. Turning head motion into smooth mouse-look took calibration, smoothing and deadzones. Safety: we needed stuck inputs and accidental output to be impossible. That led to the foreground-window check, the neutral re-entry gate and the F9 stop. Accomplishments that we’re proud of A working hands-free camera controller that ran Modern Warfare 2 input during the sprint (a local demo, not a benchmark). Safeguards built in from the start: the emergency stop, window-restricted output, and a requirement for fresh tracking and a neutral face before control resumes. A tested codebase, not just a demo script.
What we learned
Calibration and filtering matter more than the tracking model for making face-based control usable. Safety features need to be designed in, not added later. Hardware is a risk at hackathons, so a camera-based fallback kept the project alive. Being clear about what a demo does and doesn’t show matters. We didn’t present camera-derived facial scores as EEG readings. What’s next for Neuro Ops Personal control profiles tuned for each player’s comfort Reproducible EMOTIV headset integration, including documenting the export workflow Repeated trials with players, comparing completion time and unintended actions against keyboard and mouse
If the form has a word limit, tell me and I’ll trim it. You may also want to add your teammates’ roles and any specific moments from the sprint to Inspiration and Challenges.