CCP dial logoConditioning Control Panel v6.7.4 OK
field_manual / premium.dir / gentle

Webcam & Gaze Tracking

Calibrate once and your eyes become an input. Stare at a bubble to pop it, or play a focus game that only rewards you for looking at the right thing. Every frame is processed on your machine and thrown away.

Overview

CCP can use your webcam to work out roughly where on screen you are looking. Nothing is recorded. The camera image is turned into a handful of numbers - a gaze point, whether your eyes are open, whether your face is there - and the picture itself is dropped immediately.

Once you've calibrated, that signal feeds several features:

  • Focus Gaze - stare at a bubble or flash for about a second and it pops. No clicking.
  • Gaze Minigame - two panes side by side. Hold your gaze on the right one, ignore the other.
  • Blink Trainer - hold your eyes open. Every blink swaps the image.
  • For You feed - scroll the feed hands-free with your eyes.
  • Deeper triggers - if you author or play Deeper enhancements, "looks at region", "avoids region", "blinks", "opens mouth" and "looks away" can all fire timeline rules.

What it can tell

Face present or not, where you're looking (a screen point, plus a simple left / centre / right), blinks, eyes held closed, head tilt, mouth open, tongue out. That's the whole list. It does not recognise faces, and it cannot tell who you are.

Premium feature

Camera consent and calibration are free, but the features that use them are not. Blink Trainer needs any paid tier. Focus Gaze and the Gaze Minigame live in the Lab, which needs the higher tier. See patreon_features.txt for what each tier covers.

Privacy & Hardware

How the camera is used

Three small AI models are bundled in the installer: one finds your face, one maps 468 points on it, one finds your irises. They run on your CPU, in this app, with no internet connection. Each frame goes in, numbers come out, and the frame is disposed of before the next one arrives.

What never happens
  • No frame, image or snapshot is ever written to disk.
  • No frame is ever transmitted - not to CC Labs, not to Patreon, not to anyone.
  • Nothing is recorded. There is no video preview anywhere in the app.
  • Audio is never captured. The camera's microphone is not touched.
  • The AI runs offline. No internet connection is used or required by this feature.

The only thing that persists is your calibration file: a short list of numbers describing how your eye positions map to screen coordinates. No pixels, no face template, nothing that identifies you.

Two things worth knowing

Your webcam light stays on the whole time tracking is running. That's Windows doing it, and the app cannot switch it off - treat it as your honest indicator.

The code for this feature is public and readable. The consent dialog links straight to it. Don't take our word for any of the above.

What you need

  • A working webcam. Built-in laptop cameras are fine - it only asks for 640x480 at 30fps.
  • Windows camera permission for CCP
  • Even, frontal lighting. Harsh side-light breaks iris detection.
  • A stable seating position 50-70 cm from the camera, with your whole face in frame

Turning it off again

Two levels:

  • From Windows. Settings → Privacy & Security → Camera, and toggle CCP off. This one is out of the app's hands, which is the point.
  • From inside CCP. Hit Revoke consent on the webcam card (Privacy info, next to it, just re-opens the contract to read). Revoking stops tracking immediately, deletes your calibration file, disables every webcam feature, and clears the consent record. You'll be asked to consent and recalibrate from scratch next time.

If the privacy contract ever changes - a new sensor, a new stored value - the app invalidates your consent and asks again. Old consent does not roll forward.

First-Time Setup

Two things happen exactly once: you consent, and you calibrate. After that the tracker just works whenever a feature asks for it.

Step 1: Consent

The first time you open any webcam feature, a four-step dialog appears. It walks through what the camera does, what it never does, and links to the source code. The app deliberately makes this hard to click through on autopilot.

  1. Read the first two steps. They explain the feature and the privacy contract.
  2. On step three, tick all three boxes. None are pre-checked. The third one matters: you're confirming that you're the only person in front of the camera, or that anyone else there has agreed too.
  3. Type ENABLE in the confirmation box. The button stays greyed out until all four gates pass.
  4. Windows may also prompt for camera access. Allow it.

Consenting does not switch the camera on. It only unlocks the option. You still have to enable a specific feature before anything opens the lens.

Step 2: Calibrate (about a minute)

Calibration teaches the tracker how your eye positions map to your screen. It's tied to where you're sitting right now, so if you move, you redo it.

  1. Start Calibrate from the webcam card.
  2. The dot grid. A dot works its way across a 4×4 grid, 16 points in all. Stare at each one until the ring around it fills and pulses, then it moves on. Don't chase it - let your eyes settle.
  3. Quick checks. A few prompts confirm the rest of the tracking works: glance left, glance right, blink, open your mouth.
  4. Miss a dot twice and it restarts. Sit a little straighter and go again.
Re-calibrate whenever anything moves

New chair, new monitor, laptop on a different surface, glasses on or off - all of it drifts the tracker. Re-run calibration whenever it feels off. It takes a minute.

Step 3 (optional): Quick Recal

If the tracker feels slightly offset after a long session - the cursor sits a few centimetres above where you're actually looking - run Quick Recal. It fixes that kind of sideways drift in seconds without the full 16-point grid. It won't fix errors that only show up in the corners; for those, do a full calibration.

There's also automatic drift correction, on by default, which quietly nudges the mapping back into place as you use it.

Blink to recalibrate

Blink six times fast (within about three and a half seconds) and the app stops everything you had running, then asks whether you want to recalibrate now. It's a hands-free escape hatch for when the tracker has wandered mid-session, and it's on by default. Your natural blink rate is nowhere near fast enough to set it off by accident. The toggle sits on the webcam card.

Focus Gaze

Focus Gaze lets you pop bubbles and flashes without touching the mouse. Look at one for about a second and it pops, exactly as if you'd clicked it - same sound, same XP, same achievements. Look away before the second is up and the timer resets.

It's in the Lab tab, in the EYES zone.

Turning it on

  1. Finish consent and calibration first (above).
  2. Find the Enable toggle on the Focus Gaze card.
  3. Switch it on. The status line should read "Active - gaze and dwell."

If it won't turn on

The status line tells you what's missing:

  • "Camera consent is required." - you haven't been through the consent dialog yet.
  • "Calibrate the webcam first." - consent is done, calibration isn't. Run it now.
  • "Couldn't start the webcam." - something else has the camera, or Windows revoked permission. Close other camera apps and check Windows privacy settings.
It stacks with clicking

Focus Gaze sits on top of normal click-to-pop, so you can mix the two freely. It works well as the slow, hands-busy option. Turn on the debug cursor while you're learning it so you can see where the tracker thinks you're looking.

Multi-monitor

By default, gaze-reactive content is kept on the screen you calibrated for, so bubbles don't appear on a monitor the tracker can't reason about. You can turn that off in Settings if you'd rather it roamed.

Gaze Minigame

Each round puts two things side by side: one you're supposed to look at, one you're supposed to ignore. Hold your gaze on the right side long enough and you pass. Glance at the wrong side and you fail the round, and the screen shakes at you.

It runs in its own window, so you can leave it going alongside a session. It's in the Lab tab.

Playing a round

  1. Open the Lab tab and click Gaze MinigameOpen.
  2. On the title screen, click Select assets. Pick one "focus" pack and at least one "ignore" pack. You need two packs minimum for there to be a game.
  3. Set the sliders on the ready screen, then hit Start.
  4. A countdown plays, then rounds begin. Hold your gaze on the correct side until the ring fills.
  5. The results screen breaks down correct / wrong / timeout per round, with total dwell times.

Settings (per session)

Setting Default Range What it does
Image rounds 8 0-20 Image-based rounds per session
Video rounds 2 0-10 Video-based rounds per session
Image duration 5s 2-10s How long each image stays on screen before timeout
Video max duration 30s 10-120s Cap for video rounds
Pass time 3s 3-30s Continuous dwell on the correct side needed to pass. Higher = harder.
Wrong-side tolerance 0ms 0-2000ms How long you can glance at the wrong side before failing. 0 = strict (first pixel on wrong side fails the round).
Vibration mode None None / OnCorrect / OnWrong Optional toy buzz on a pass or a fail. Needs haptics set up.

Reward effects

Pick what fires when you pass a round. Combine with vibration for stronger conditioning.

None

Score only. Quietest option.

Flashes

A flash image pops for the round's duration.

Bubbles

Triggers a quick bubble burst.

Audio

Plays a reward clip. Choose from bell, chime, clicker, or lock-click.

Mind Wipe

Brief overlay-pulse blur effect. Heaviest option.

Overlay Pulse

Single soft overlay flash - lighter than Mind Wipe.

Tracker Test & Debug Cursor

If a game feels off, check the tracker before you blame yourself. Two tools tell you what it's actually seeing.

Tracker Test

Click Tracker Test on the webcam card. A black fullscreen overlay opens with a single cyan dot on it, and the dot follows your gaze. That's the whole thing - there is no video preview, here or anywhere else in the app. Move your eyes around and watch the dot. Jumpy usually means lighting; frozen means your face isn't being found. It only shows; it changes nothing and saves nothing.

Debug cursor

Tick Show Debug Cursor to keep a small floating marker on screen while you play, permanently showing the current gaze estimate. Worth leaving on while you learn the system: if things pop in odd places, the cursor tells you whether the problem is the tracker or your calibration.

Tips for Reliable Tracking

  • Lighting matters more than camera quality. Even, frontal light beats a 4K webcam in a dark room.
  • 50-70 cm from the camera with your whole face in frame. Closer cuts off your face; further makes iris detection unreliable.
  • Re-run calibration if you move. New seat, new monitor, laptop relocated - calibration is posture-specific.
  • Blinking is filtered. The tracker drops blink frames automatically - you don't need to stop blinking.
  • Run Tracker Test before blaming a game. If the cyan dot is jumpy or stuck there, no game will feel right.
  • Eye fatigue degrades tracking. Start with short minigame rounds and shorter pass-times. Build up over time.
  • Glasses are usually fine. Strong reflections on the lenses can confuse the tracker - angle the light source if needed.
  • Pick the right camera. If you have OBS, Snap Camera or similar installed, the app may grab a virtual camera instead of your real one. Use the camera picker to choose the physical webcam.
  • Give a slow camera a moment. Some webcams stream black for a second or two after they open. The app waits for a live picture before it starts, so an apparent hang at startup is usually just that.

When it won't start at all

  • "Camera in use" - another app has the lens. Some antivirus suites also shield the webcam; check yours.
  • "Camera denied" - Windows camera permission is off for CCP.
  • An error mentioning a missing DLL - install the Microsoft Visual C++ x64 Redistributable. The app links to it in the message.

Settings Reference

These persist between sessions. They live on the webcam card in the Lab, or in the Webcam & Mic popup on the Dashboard, which borrows the same controls.

Setting Default What it does
Webcam consent Off The master gate. Set by the four-step privacy dialog. Every webcam feature checks it first. Revoking also deletes your calibration.
Calibrated No Set when a 16-point calibration succeeds. Cleared if you revoke or reset.
Camera device System default Pick a specific camera if you have more than one, or to avoid a virtual camera. There's a Refresh button next to it.
Tracking monitor Primary Which screen the tracker targets. Calibration, Quick Recal, Tracker Test and gaze-reactive overlays all open here.
Sensitivity 0.5 0.0 to 1.0. How close your gaze has to be to a target. Lower is more forgiving.
Automatic drift correction On Quietly nudges the gaze mapping back into place as it wanders during a session.
Rapid-blink recalibrate On Six fast blinks stop everything and offer a recalibration. A hands-free escape hatch.
Keep gaze content on the calibrated screen On Stops gaze-reactive overlays wandering onto monitors the tracker wasn't calibrated for.
Show debug cursor Off Floating marker that follows the gaze estimate. Handy while you're learning the system.
Focus Gaze Off The dwell-to-pop layer for bubbles and flashes. Lab tab.

Gaze on flashes and videos

Three smaller toggles, all on by default, that let gaze affect the core tools:

  • Gaze-pop flashes - looking at a flash image pops it
  • Gaze-linger flashes - looking at a flash keeps it on screen a little longer
  • Gaze-click videos - your gaze can hit attention targets during a mandatory video