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.
- Read the first two steps. They explain the feature and the privacy contract.
- 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.
- Type
ENABLEin the confirmation box. The button stays greyed out until all four gates pass. - 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.
- Start Calibrate from the webcam card.
- 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.
- Quick checks. A few prompts confirm the rest of the tracking works: glance left, glance right, blink, open your mouth.
- 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
- Finish consent and calibration first (above).
- Find the Enable toggle on the Focus Gaze card.
- 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
- Open the Lab tab and click Gaze Minigame → Open.
- 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.
- Set the sliders on the ready screen, then hit Start.
- A countdown plays, then rounds begin. Hold your gaze on the correct side until the ring fills.
- 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
Conditioning Control Panel