Pathfinding Showdown – printf’s Sneaky Probe

This Challenge is in Beta
:bullseye: 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).


:brain: 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.

:hammer_and_wrench: How to Start

:link: Click here to get the repo:
:backhand_index_pointing_right: 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

:round_pushpin: 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]

:dashing_away: Rules

  1. No unit.move() or unit.attack_move()
    • You must pathfind step-by-step using your own logic.
  2. No hardcoded waypoints
    • Use map analysis or dynamic navigation.
  3. No cheese
    • SC2’s built-in pathing = forbidden.

:test_tube: 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
    

:broom: Switch to Challenge 2

To enable Challenge 2 (enemy units present), change the map in config.py:

DEFAULT_MAP = "LightShade_Pathing_1"

:face_with_monocle: Resources


:light_bulb: 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.

:shuffle_tracks_button: Stretch Goal

Optimize your algorithm to beat your own efficiency score.