Track the ball

Keep the paddle on a moving ball. Instead of a single click, you track the ball as it flies and glide the paddle after its height, locked to one axis, so the cursor follows a live target smoothly.

tracking glide axis lock Free 12 min

Clicking a target that sits still is the easy case. The real skill is keeping up with something that moves. In this lab the paddle has to stay glued to a ball that speeds up the longer you keep it alive, and it does it with moves alone, no click at all. Get this working and you have the pieces behind every chase-style, follow-the-thing flow.

Open the target first. It opens in a new tab. Point QHuman at it and read the stats as you go.

Open Pong

Your paddle does exactly one thing: it sits at the left margin and mirrors the mouse cursor's height. So the whole job is to keep the cursor in the paddle's column and slide it to the ball's height, again and again. Press Space to start or pause, R to reset, and 1 to 4 for the ball speed (it opens on 2).

A rally in progress, paddle level with the ball. Ball speed climbs the whole time the ball stays alive, topping out around 80% above the preset after 75 seconds, and drops back to the preset the moment someone misses. Missed at is the speed that beat you last, which is the honest measure of how fast your flow can still track.

Build the flow

  1. Start Pong slow, and make the detection Press 1 for the slowest ball, then Space to start, and leave it running. In QHuman, make a New Detection named pong, add a step called Follow, and open it.
  2. Find the ball by its colour Add a click step and set Find: to Pixel colour. The ball is a flat amber disc, and a moving, glowing disc is exactly the case where a colour beats a picture: nothing to snip, nothing to pause. Click Pick colour... and type the ball's hex #ffd54a (the target's own legend lists it), or eyedrop it off the board. Leave Colour tolerance at its default, nudging it up only if your display renders the amber a shade off. Then raise Minimum area to about 190: the stats legend carries a small chip in the very same amber, and the minimum area is the one thing that tells the ball's disc apart from that chip, so only the ball counts. Optional but worth it: tick Limit detection to a screen region and drag a box around your game window. It rules out anything amber elsewhere on screen and narrows the scan, so the lock is steadier; the trade is that the flow is then pinned to where that window sits.
  3. Turn the click into a move Set Action to Move only (no click). The paddle reads where the cursor is, so moving the cursor is the whole input, and a stray click would only steal focus.
  4. Set Move axis to Keep X This is the step the lab exists for. Keep X (follow up/down only) keeps the cursor's horizontal position exactly where it is and drives only its height. Park the cursor over your paddle once and it stays in that column forever, sliding up and down to meet the ball. The name trips people up: you are naming the axis it holds, not the one it follows. Pick Keep Y and you get a cursor that slides left and right and a paddle that never moves.
    The same two options, their names swapped in people's heads. Each names the axis it holds still, so Keep X holds your paddle's column and drives the height, which is all your paddle reads.
  5. Set Glide over to 0.05 s Left at its default of 0, the cursor teleports. A 0.05 s glide slides it to the ball's height the way a hand would. Longer and the paddle is still travelling when the ball arrives.
    The whole paddle bot is one dialog: the colour and its minimum area up top, then Move only, Keep X, and a 0.05 s glide. Everything else is default. Click OK.
  6. Loop it so it keeps following A step runs its Do list once and stops, which would move the paddle exactly one time. Add a transition: set Go to step: to Follow and Move on: to Always (every time). That is the self-loop the whole thing runs on: find the ball, glide, find it again.
    The row reads Click even though you set it to move only (that wording is the action's family name, not what it does), and it lists the colour as its raw BGR triple, the app's blue-green-red order for #ffd54a. Trust the dialog, not the row.
  7. Watch it first with Try it (dry run) Hit Try it (dry run). It runs the flow against the live screen and boxes the ball without moving your cursor, so you can check the colour match is holding onto it at speed before it takes the mouse.
  8. Park the cursor and let it rally Move the mouse onto your paddle, then set the flow running and take your hand off. Keep X holds whatever column you left the cursor in, so where you park it is the paddle. Leave it alone for a minute and watch Rally climb.
Checkpoint

The number to watch is Rival, and it should stay on 0. You only concede when the ball gets past your paddle, so a rival still on zero after a long rally means the tracking never slipped. Do not wait for You to climb: you only score when the rival misses, so a good flow mostly produces 0-0 and a Rally in the dozens. That rally counts both paddles' returns. When you do finally lose one, Missed at tells you the speed that beat you.

Make it yours

Make the track survive speed. Press R, step the preset up with 2, 3, 4, and find where your flow finally concedes. The ball also ramps about 80% faster over the 75 seconds after each serve, so surviving long enough beats the preset, and Missed at records where it broke. The Records card keeps your top ball speed and longest rally in this browser, so it is a real scoreboard for settings: shorten Glide over to 0.00 for a teleporting paddle, try 0.10 for a lazier one, and see which survives fastest. Its reset button clears those records; R does not.

If it went wrong

  • The paddle never moves Move axis is on Keep Y, so the cursor is sliding left and right at a fixed height and your paddle mirrors a height that never changes. It is Keep X: name the axis you want held.
  • The paddle lags behind the ball Glide over is too long for the pace. Shorten it, and remember the ball keeps accelerating for 75 seconds after each serve, so a glide that copes at the start can fall behind later in the same rally.
  • It clicks instead of just moving Action is still on Single click. Set it to Move only (no click). The Do row reads Click ... either way, so check the dialog rather than the row.
  • It never finds the ball The colour or the minimum area is off. Re-pick #ffd54a (or eyedrop the ball), and if it drops out mid-rally nudge Colour tolerance up a few points. If instead the paddle jumps off to the stats panel, your Minimum area is low enough that the same-amber legend chip is counting: raise it back toward 190 so only the ball's larger disc qualifies.
  • It tracked, then stopped dead The cursor left the board. Pong only reads the mouse while it is over the canvas, so if a glide carried it off the edge the paddle freezes where it was. Park the cursor over your paddle before you start.

Stuck?

Grab the finished flow. Download it and open QHuman's Import shared file... to load it. This one runs as-is: it finds the ball by its colour, not a screen-grabbed snippet, so nothing in it is tied to the machine it was built on and there is nothing to recapture. Park your cursor over your paddle, set it running, and it tracks. (It assumes 100% browser zoom and display scale, the same as your own build, so the minimum area still tells the ball from the legend chip.)

Download the solution (.qhz)

Keep going

Want the full detail behind tracking, glide, and axis lock? Read the track & follow guide. Ready for the next lab? Next up is Press the key on sight, where you fire a key the instant a falling note hits the line.

Taking this to a real game

These practice targets are ordinary web pages, so every macro here just works. A real game adds three things to check first:

  • Direct input is off by defaultQHuman sends input the normal way, which reaches almost every app. Full-screen and anti-cheat-aware games often only listen to the lower-level path, so if a macro does nothing inside the game, turn on direct input (Pro).
  • Elevated windows ignore ordinary clicksA game or launcher running as administrator will not accept synthetic input from a non-elevated app. Run QHuman as administrator too, or the clicks and keypresses land nowhere.
  • Full-screen vs windowed, and play fairBorderless-windowed is the easiest to detect and click against; exclusive full-screen can hide the pixels QHuman reads, so windowed or borderless is the safe start. Automating an online game can break its rules or trip anti-cheat, up to a ban, so only automate games where you own the risk.