Bot Land cover
Bot Land screenshot
PC Mac Android iOS Steam
Genre: Strategy, Indie

Bot Land

Bot Land version 1.0.8

Major changes:

  • Drastically improve performance on the Battle Log page.
  • Fix bug on mobile where hardware tooltips wouldn't show up.
  • Moving bots or chips is now considered to be a change when it comes to editing your defense. That means that if you simply move a bot and try to leave your defense, it will prompt you to save the changes.
  • Increase code execution timeouts by 50%. This should hopefully fix issues some players have reported where their bots had totally stopped moving.
  • Show an entry in the battle log instructing you to make a defense even when you have attack replays. Previously, this entry would only show when you didn't have a defense but ALSO didn't have any attack replays.


Minor changes:

  • Fix a bug where you could join a public-attack link from a new account that still had to complete the tutorial. Now, the tutorial takes priority.
  • Allow pressing Enter to rename a script on mobile.
  • Clarify Cloaking in documentation.
  • Add tooltip to mobile "Test Mode" button to indicate what the button does.
  • Fix bug where dragging hardware on desktop and then pressing the "back" button on your browser (or mouse or keyboard) would leave the dragged element on the screen forever.
  • Fix width of changelog so that it doesn't fill the screen.

Bot Land version 1.0.7

Major changes:

  • Mistyping an email address when signing up or changing your email address will now provide suggestions for common domains (e.g. typing "adam@examlpe.com" would suggest "adam@example.com").
  • Saving your defense will now ask for confirmation so that you're aware that the defense will be attackable by other players. There is an option right in the dialog to have it stop warning you on future saves.
  • Pressing the spacebar will start a match and pause/play replays.


Minor changes:

  • When people are streaming Bot Land on Twitch, the "Streams" tab in the game will now show the number of active streams in parentheses.
  • If the attacker's final bot kills the CPU but _also_ dies, it will now be considered a win for the attacker, not the defender.
  • Allow opening salvage packs from any screen. Previously, when you got a random salvage pack reward on login, there were cases where you would choose "Open now", but nothing would happen.
  • Fix changelog readability on notched iOS devices.

Bot Land version 1.0.6

Major changes:

  • Improve matchmaking, especially for new players.

    • Priority was already given to players in the Matchmaker who hadn't been chosen in the last 5 hours, but now, _all_ players will have priority in the Matchmaker at start-up (i.e. after a new version is deployed). The result is that some matches will be chosen based on priority instead of optimizing for the best rating even during the first 5 hours that the Matchmaker is online.
    • Only ranked matches go through the priority system now. This means that defenders won't "waste" their priority when they're chosen for an unranked match. This _should_ result in more experience for brand new defenders so that the time it takes to level up should take <2 days (as opposed to >2 weeks).

  • Upgrade Blockly. This fixes some major bugs around renaming function parameters (like changing `x` → `X` or removing the name entirely). It also adds features like shadow blocks, which show where a dragged block will connect before releasing block.
  • On Android and iPads, there is now a full-screen button on the Battle Log page so that you don't need to download the app or pin the site to your home screen in order to get rid of the browser's address bar. This will not work on iPhones due to an unsupported API.


Minor changes:

  • Add tooltip to the Botcoin text that shows in the match results screen. The tooltip explains how you earn Botcoin and what the limitations are.
  • On mobile, when you have no blueprints, you will now see text explaining how to make blueprints (this was already present on desktop).
  • Fix how the UI shifted when loading Blockly.
  • Convert all sword icons to rocket icons.

Bot Land version 1.0.4

Major changes:

  • Greatly improve load times when starting a match or commencing a round.
  • Stagger explosion animations on the client side. This should make it look less like there's just a single explosion when multiple projectiles land at the same time.
  • Increase JavaScript and Blockly script length limits by 10% each (JavaScript: 15000 characters → 16500, Blockly: 45000 → 49500).
  • Add floating text for bot/chip placement errors. This was done for two major reasons:

    • There was some confusion in the first tutorial around WHY a user couldn't place bots.
    • The only indications we had before this change were on hover, and they weren't always the clearest (there was a red X and the text "at max"). The hover property meant that they wouldn't show on mobile.

  • Fix issue on iOS and Firefox on Android where hardware could not be dragged at all. This affected a good deal of new users who were unable to complete the tutorial as a result.
  • Block Steam purchases in Belgium (they were already blocked on all other platforms).


Minor changes:

  • Fix bug in "Friendly support" premade script. It was referencing "repairTarget", which was never defined.
  • When registering or converting an account, if you try to use an email that already exists in Bot Land, there will be a button to reset your password right from the error dialog that shows up.
  • Prevent entering the "Edit defense" tutorial as a guest since you can't edit your defense as a guest anyway.
  • For password inputs where you have to come up with a password, the allowed length (8-128 characters) shows as placeholder text.
  • Fix ฿ symbol so that it faces left in the Store.
  • Small documentation fix: "lasers" was written where "melee" was meant in one spot.
  • Fix React warning around propTypes when opening the Tutorial menu.

Bot Land version 1.0.3

Major changes:


  • Greatly improve matchmaking

    • Fix crucial bug in Matchmaker that allowed finding what should have been considered invalid players. In _general_, this meant that you could play against the same player more than once in a 24-hour period (but the rules around matchmaking are complex, so that's just an example).
    • Revamp priority system in subtle or complex ways. Essentially, this should mean people get better matches.
    • Cut down matchmaker expiration time from 7 days → 3 days. This is the amount of time after a login before you're removed from the Matchmaker. Before, you could log in once a week and be attacked on any day of the week. Now, you'll have to log in every 3 days. This should help defenders who aren't getting attacked as much.

  • Warn about performance when we detect that you may have hardware acceleration disabled on Chrome or Firefox. This includes a message on how to enable hardware acceleration.
  • Increase number of replays allowed per player from 10 → 25. You should get fewer grayed-out replay buttons now!
  • Allow more attack rewards. Originally, you would be capped at 250 Botcoin per day as an attacker. Now, you can get 3 Botcoin per match for the next 10 wins after hitting 250. However, keep in mind that you can get 350 per day as a defender and 500 per day as either a defender or an attacker, so this extra 30 may not actually matter in some cases.
  • Add Blockly snippets to set shared variables.
  • Remove the cap of 500 daily games. At least two users hit this legitimately, so I'm removing it completely.


Minor changes:

  • Change Blockly "create text with" block to generate different code.
  • Clarify in the Store that Shield can be used on allies.
  • Clarify `canTeleport` in the in-game documentation.
  • Clicking the background of the Match Results page no longer minimizes it. This should hopefully reduce confusion from players who didn't realize what they did.
  • Fix bug where the filterEntities Blockly block linked to the findEntities' help page.

Bot Land has LAUNCHED! 🚀

Bot Land launched today, which means two things:

  • Real-money payments for salvage packs are available.
  • Accounts have had their progress reset. Your scripts were saved, but your items, experience, etc. were lost. This means that your blueprints will have "holes" in them where purchased hardware was removed.


Now that it's out, the goal is to try to make the game profitable so that development can continue beyond 2019. To that end, please tell your friends about Bot Land! 😄

Bot Land 0.3.3

Version 0.3.3 brings some nice pre-launch improvements. Below are the most important changes, but to read them all, view the changelog from inside Bot Land directly (check the "news" tab).


  • Add links to buy more items from inventories. E.g. "➕ Buy new head items".
  • Add dialog to the game showing the counts and rarities of cosmetic items from salvage packs.
  • Expose `lifePercent` and `getLifePercent` to scripts.

    • In Blockly and in BotLandScript, you can now access the life percentage of any entity in addition to being able to get the absolute value like you could before.
    • The "repair self" snippet and the "figure it out" premade script have been updated to use lifePercent.

  • Blockly snippets

    • Add Blockly snippet for finding enemy bot with the lowest life.
    • Add `tryTeleport` Blockly snippet.
    • Include distance checks in pursue snippets (the `can move to [entity]` function includes a distance check already), that way bots don't waste a turn pursuing an enemy that's right next to them.
    • Add comments to fireArtillery Blockly block to mention the minimum range and `activateSensors`.

  • Enable "commence game" button by default to alleviate confusion. Previously, you had to place at least one bot when either testing your defense or attacking in order for the commence button to light up.
  • Remove EMP from figureItOut. You will now need to manually add a script for EMP if you want your bot to use it (like how Teleport already worked).
  • Fix bug on some weapons (notably Artillery) where there was a faint line of pixels on the side of the sprite.
  • Fix bug where an invisible rectangle at the upper right of the screen was absorbing clicks.