This Challenge is in Beta
Now hosted via GitHub Classroom
Pathfinding Showdown – Printf’s Sneaky Probe
Printf, the infamous Protoss cannon rusher, is back with a cheesy new plan. But to pull it off, his probe needs to sneak past enemy lines and reach a proxy location fast. No warpgates. No blink. Just brains and good routing.
Your mission: program the probe’s movement logic to reach a beacon with maximum efficiency — and no shortcuts.
Time is critical—delay the rush, and Printf’s legacy goes up in flames (and memes).
Challenges
- Challenge 1: Reach each predefined beacon location using your own pathfinding algorithm.
- Challenge 2: Same task — but now with enemy units on the map. Reach the goal without getting caught.
How to Start
Click here to get the repo:
Join via GitHub Classroom
Once you’ve accepted the assignment, GitHub will generate your own private repo.
Go to your repo, click the green <> Code
button, and copy the HTTPS link.
Then clone it and run it locally:
- The bot shell, ready to run
- A
solution.py
file where your logic lives - A
score.py
that tells you how efficient you were
Then just clone your repo, run the bot, and start testing:
git clone https://github.com/your-github/your-repo-name
cd your-repo-name
python run.py
Objective
Navigate Printf’s probe to the beacon located at one of the following positions:
Area 1 – [35.27, 140.06]
Area 2 – [47.20, 108.33]
Area 3 – [107.07, 112.04]
Area 4 – [137.66, 136.96]
Area 5 – [134.84, 69.69]
Area 6 – [84.90, 109.94]
Rules
- No
unit.move()
orunit.attack_move()
- You must pathfind step-by-step using your own logic.
- No hardcoded waypoints
- Use map analysis or dynamic navigation.
- No cheese
- SC2’s built-in pathing = forbidden.
Scoring
- A
score.json
file is generated automatically when your bot finishes a run. - It includes your total path distance, direct line distance, and calculated efficiency (1.0 = perfect).
- Once you’ve got your result, copy/paste them in the thread:
🧪 Pathfinding Score – @yourname Efficiency: 0.873 Path Length: 93.2 Direct Distance: 81.7
Switch to Challenge 2
To enable Challenge 2 (enemy units present), change the map in config.py
:
DEFAULT_MAP = "LightShade_Pathing_1"
Resources
Hints
- Use SC2MapAnalysis to find unwalkable terrain and nearby regions.
- Use
debug_drawer.draw_*()
to visualize paths and collision zones. - Log movement frame-by-frame — that’s your real weapon here.
Stretch Goal
Optimize your algorithm to beat your own efficiency score.