The moment your bot realizes it’s being cheesed

Oct 30th 2025

Why hello Reader,

Bwrap. Bwrap. Bwrap.


The sound of little claws chewing through my base, reviewing another replay of a loss my bot took on the ladder to cheese, specifically a Zerg rush.

I guess I deserve it though. I did encourage putting it in the toolkit 😅. But my bot has a fleshed-out macro designed to get it to the late game, fancy tricks and clever solutions I’m proud of, but that doesn’t matter if it loses really early. I need to stop this but how?

What are the signs for our bot that an enemy is doing something cheesy, like a Zerg rush?

Let’s get into what I learned.

🛠️ In the Workshop

PiG_Bot: Enhanced the worker rush defense logic so that workers now pull back in combat, but also send the right amount of workers to respond instead of all of them.

Botato: Defeated the top bot NegativeZero 😱, with an expansion blocking strat. Naturally, Mindme went on to fix the exploit, but still! [the game]

Are you a member and want your bot update featured in the workshop? Shoot me a message

Cheese: a strategy or tactic that relies heavily on surprise, exploiting niche or matchup-specific weaknesses.

To defeat the cheese, we’ll need to build a reaction system.

Which we can take a look at in 3 parts:

  • Signals — information your bot receives
  • Policy — how it interprets that information
  • Responses — what it does after its interpretation, including nothing

Let’s talk about the first part

Understand what makes a good signal

Before your bot can react, it has to notice.

Good signals come early. They’re how your bot sees the world, the little clues that whisper, ‘Zerg rush incoming.’

If the sight of Zerglings is your first or only signal, it doesn’t give your bot much time to respond. Early detection means survival. So we need to look further up the chain.

Timing matters: The basic building blocks of a Zerg rush are a Spawning Pool -> Zerglings, but what makes it a rush is that the Spawning Pool is built right away, before anything else, less than a minute into the game.

Location tells a story: In another cheese, like a Proxy Barracks or Gateway (Terran and Protoss cheese where they hide production buildings close to your base), location becomes the signal.

Absence is a clue: Sometimes it’s not about what your bot does see, but what it doesn’t. With a cannon rush or proxy cheese, your opponent’s base will often be empty because their resources are dedicated elsewhere, a strong signal that something sneaky is happening.

Learn from patterns: A game like StarCraft has its cheesy strategies codified all over the internet. You can pick up signals by searching or reviewing your bot’s replays to spot common patterns.

🗒️ ./run Notes:

Challenge of the week:
Help your bot notice the clues of an incoming cheese (zerg rush)

Tracks these signals:

  • Timing –When are key buildings started or finished? Can you estimate when the Spawning Pool was built? If it’s less than 1:00 in game.time, that’s a red flag.
  • Absence – What’s missing from the Zerg base compared to a normal macro game?

To start implementing, you’ll want to make sure your bot is scouting and gathering lots of information about the enemy

Hint: self.is_visible to gate your signal logic to make sure it’s something your bot has seen

🔁 In Case You Missed It

video preview

Making Python Bot Build Orders Easier

Build orders can be a pain in the butt to put together, especially if you want to make them more flexible. In this workshop, I break down a method to make your builds easier and save you the time and headache.

May the Bugs Be Ever In your Favour🪲

Email Preference:
Unsubscribe | Update your profile | 113 Cherry St #92768, Seattle, WA 98104-2205