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:
Clone the Repo
Get StarCraft 2 Maps
You can download the required StarCraft 2 Maps from this link.
The maps must be copied into the root of the StarCraft 2 maps folder (default: C:\\Program Files (x86)\\StarCraft II\\Maps\).
Run It
Then clone it and run it locally:
- The bot shell, ready to run
- A
solution.pyfile where your logic lives - A
score.pythat 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.jsonfile 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 Challenges
To enable Challenge 2 or 3 (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.
