
A real-time Overwatch coaching overlay that reads the game screen — not its memory — to recommend hero counters as a match unfolds. A Python detection engine captures the scoreboard/killcam region, matches hero portraits with template matching, infers the enemy composition, and renders click-through suggestions through an Overwolf overlay. Packaged as a standalone Windows desktop app. SAFE BY DESIGN — The whole thing is deliberately screen-space only. It never reads or writes game process memory, never injects into the client, and makes zero network calls during play — so it is not a cheat and stays inside the game's terms of service by construction. The counter logic is a local ruleset; nothing about the player's session is uploaded. ENGINEERING — Auto-calibration locates the relevant HUD region across resolutions, template matching runs above a 0.87 confidence threshold to avoid false positives, and the overlay stays click-through so it never intercepts input. The build ships as a PyInstaller executable with a desktop shortcut and icon, plus a small stats-fetcher that pulls aggregate hero data offline.
# Reads the SCREEN locally — never game memory, never the network. TOS-safe.
import mss, numpy as np
# Screen-space template matching only: no process-memory reads, no injection.
HERO_ICONS = load_templates("hero_names.json")
with mss.mss() as sct:
region = calibrate(sct) # auto-locate the killcam / scoreboard
while running:
frame = np.asarray(sct.grab(region))
matches = match_templates(frame, HERO_ICONS, threshold=0.87)
enemy = [m.hero for m in matches if m.team == "enemy"]
counters = suggest_counters(enemy) # local ruleset — zero API calls
overlay.render(counters) # click-through Overwolf overlayScreen-space only — never touches game memory, makes zero network calls. TOS-safe by construction.