What's new (changelog)
- UPDATE - ARCHIVAL
- Client version 0.3.1 (September 2nd, 2019)
- Client version 0.3.0 (August 30th, 2019)
- Client version 0.2.131 (August 2nd, 2019)
- Client version 0.2.130 (July 19th, 2019)
- Client version 0.2.129 (July 17th, 2019)
- Client version 0.2.128 (July 16th, 2019)
- Client version 0.2.127 (July 8th, 2019)
- Client version 0.2.126 (July 5th, 2019)
- Client version 0.2.125 (June 21st, 2019)
- Client version 0.2.123 (June 19th, 2019)
- Client version 0.2.122 (June 18th, 2019)
- Client version 0.2.121 (June 14th, 2019)
- Client version 0.2.120 (June 11th, 2019)
- Client version 0.2.118 (June 10th, 2019)
- Client version 0.2.117 (June 5th, 2019)
- Client version 0.2.116 (June 3rd, 2019)
- Client version 0.2.115 (May 29th, 2019)
- Client version 0.2.114 (May 28th, 2019)
- Client version 0.2.113 (May 28th, 2019)
- Client version 0.2.112 (May 27th, 2019)
- Client version 0.2.111 (May 25th, 2019)
- Client version 0.2.110 (May 21st, 2019)
- Client version 0.2.109 (May 17th, 2019)
- Client version 0.2.108 (May 7th, 2019)
- Client version 0.2.107 (May 6th, 2019)
- Client version 0.2.106 (April 23rd, 2019)
- Client version 0.2.105 (April 16th, 2019)
- Client version 0.2.103 (April 12th, 2019)
- Client version 0.2.101 (April 8th, 2019)
- Client version 0.2.99 (April 4th, 2019)
- Client version 0.2.98 (April 3rd, 2019)
- Client version 0.2.97 (April 2nd, 2019)
- Client version 0.2.94 (March 20nd, 2019)
- Client version 0.2.93 (March 2nd, 2019)
- Client version 0.2.92 (February 23rd, 2019)
- Client version 0.2.91 (February 20th, 2019)
- Client version 0.2.90 (February 20th, 2019)
- Client version 0.2.88 (February 15th, 2019)
- Client version 0.2.86 (February 11th, 2019)
- Client version 0.2.84 (February 3rd, 2019)
- Client version 0.2.83 (January 28th, 2019)
- Client version 0.2.82 (January 22nd, 2019)
- Client version 0.2.80 (January 14th, 2019)
- Client version 0.2.79 (January 14th, 2019)
- Client version 0.2.62 (December 14th, 2018)
- Client version 0.2.60 (December 14th, 2018)
- Client version 0.2.54 (October 10th, 2018)
- Client version 0.2.53 (October 10th, 2018)
- Client version 0.2.52 (September 29th, 2018)
- Client version 0.2.51 (September 26th, 2018)
- Client version 0.2.50 (September 20th, 2018)
- Client version 0.2.49 (September 7th, 2018)
- Client version 0.2.48 (September 5th, 2018)
- Client version 0.2.47 (August 23rd, 2018)
- Client version 0.2.45 (August 1st, 2018)
- Client version 0.2.43 (August 1st, 2018)
- Client version 0.2.42 (July 3rd, 2018)
- Client version 0.2.41 (July 2nd, 2018)
- Client version 0.2.39 (June 29th, 2018) (skipped some versions)
- Client version 0.2.35 (June 17th, 2018) (skipped some versions)
- Client version 0.2.30 (June 4th, 2018)
- Client version 0.2.29 (May 30th, 2018) (skipped 0.2.28)
- Client version 0.2.27 (May 18th, 2018)
- Client version 0.2.26 (May 11th, 2018)
- Client version 0.2.25 (May 4th, 2018)
- Client version 0.2.24 (May 1st, 2018)
- Client version 0.2.23 (April 23rd, 2018)
- Client version 0.2.22 (April 20th, 2018)
- Client version 0.2.21 (April 11th, 2018)
- Client version 0.2.20 (April 2nd, 2018)
- Client version 0.2.19 (March 30th, 2018)
- Client version 0.2.18 (March 6th, 2018)
- Client version 0.2.17 (February 27th, 2018)
- Client version 0.2.16 (February 23rd, 2018)
- Client version 0.2.14 (February 13th, 2018)
- Client version 0.2.13 (January 19th, 2018)
- Client version 0.2.10 (January 12th, 2018)
- Client version 0.2.9 (January 3rd, 2018)
- Client version 0.2.7 (December 4th, 2017)
- Client version 0.2.3 (November 27th, 2017)
- Client version 0.2.2 (November 13th, 2017)
- Client version 0.2.1 (November 10th, 2017)
- Client version 0.2.0 (November 7th, 2017)
- Pre-beta changes
- Client version 0.1.77 (November 6th, 2017)
- Client version 0.1.75 (October 25th, 2017)
- Client version 0.1.74 (October 24th, 2017)
- Client version 0.1.73 (October 23rd, 2017)
- Client version 0.1.72 (October 20th, 2017)
- Client version 0.1.71 (October 18th, 2017)
- Client version 0.1.70 (October 16th, 2017)
- Matchmaker version 1.0.30 (October 11th, 2017)
- Matchmaker version 1.0.28 (October 10th, 2017)
- Matchmaker version 1.0.25 (October 6th, 2017)
- 0.1.69 (September 27th, 2017)
- 0.1.67 - 0.1.68 (September 22nd, 2017)
- 0.1.66 (September 15th, 2017)
- 0.1.65 (September 13th, 2017)
- 0.1.64 (September 12th, 2017)
- 0.1.63 (September 11th, 2017)
- 0.1.62 (September 6th, 2017)
- 0.1.60 - 0.1.61 (September 1st, 2017)
- 0.1.59 (August 30th, 2017)
- 0.1.58 (August 29th, 2017)
- 0.1.57 (August 25th, 2017)
- 0.1.56 (August 23rd, 2017)
- 0.1.55 (August 18th, 2017)
- 0.1.54 (August 17th, 2017)
- 0.1.53 (August 16th, 2017)
- 0.1.52 (August 15th, 2017)
- 0.1.51 (July 28th, 2017)
- 0.1.50 (July 26th, 2017)
- 0.1.49 (July 24th, 2017)
- 0.1.48 (July 21st, 2017)
- 0.1.47 (July 19th, 2017)
- 0.1.46 (July 10th, 2017)
- 0.1.45 (July 7th, 2017)
- 0.1.44 (July 3rd, 2017)
- 0.1.42 (June 28th, 2017)
- 0.1.41 (June 27th, 2017)
- 0.1.40 (June 27th, 2017)
- 0.1.39 (June 26th, 2017)
- 0.1.38 (June 23th, 2017)
- 0.1.37 (June 16th, 2017)
- 0.1.36 (June 9th, 2017)
- 0.1.35 (May 29th, 2017)
- 0.1.34 (May 19th, 2017)
- 0.1.33 (May 15th, 2017)
- 0.1.32 (May 12th, 2017)
- 0.1.30 (May 3rd, 2017)
- 0.1.29 (May 2nd, 2017)
- 0.1.28 (April 26th, 2017)
- 0.1.27 (April 21st, 2017)
- 0.1.26 (April 18th, 2017)
- 0.1.25 (April 10th, 2017)
- 0.1.24 (April 7th, 2017)
- 0.1.23 (April 3rd, 2017)
- 0.1.22 (March 29th, 2017)
- 0.1.21 (March 27th, 2017)
- 0.1.20 (March 24th, 2017)
- 0.1.19 (March 22nd, 2017)
- 0.1.18 (March 21st, 2017)
- 0.1.17 (March 14th, 2017)
- 0.1.16 (March 13th, 2017)
- 0.1.15 (March 10th, 2017)
- 0.1.14 (March 8th, 2017)
- 0.1.13 (March 7th, 2017)
- 0.1.12 (February 27th, 2017)
- 0.1.11 (February 24th, 2017)
- 0.1.9 (February 21st, 2017)
- 0.1.8 (February 20th, 2017)
- 0.1.7 (February 10th, 2017)
- 0.1.6 (February 8th, 2017)
- 0.1.5 (February 7th, 2017)
- 0.1.4 (February 6th, 2017)
- 0.1.3 (February 2nd, 2017)
- 0.1.2 (February 1st, 2017)
- 0.1.1 (January 31st, 2017)
- 0.1.0 (January 30th, 2017) - Alpha launch
- 0.0.61 (January 27th, 2017)
- 0.0.60 (January 20th, 2017)
- 0.0.59 (January 13th, 2017)
- 0.0.58 (January 11th, 2017)
- 0.0.57 (January 10th, 2017)
- 0.0.56 (January 9th, 2017)
- 0.0.55 (January 4th, 2017)
- 0.0.54 (January 3rd, 2017)
- 0.0.53 (December 7th, 2016)
- 0.0.52 (December 6th, 2016)
- 0.0.51 (November 29th, 2016)
- 0.0.50 (November 28th, 2016)
- 0.0.49 (November 25th, 2016)
- 0.0.48 (November 23rd, 2016)
- 0.0.47 (November 22nd, 2016)
- 0.0.46 (November 22nd, 2016)
- 0.0.45 (November 21st, 2016)
- 0.0.44 (November 18th, 2016)
- 0.0.43 (November 16th, 2016)
- 0.0.42 (November 14th, 2016)
- 0.0.41 (November 11th, 2016)
- 0.0.40 (November 8th, 2016)
- 0.0.39 (November 7th, 2016)
- 0.0.38 (first uploaded November 4th, 2016)
- 0.0.37 (first uploaded November 2nd, 2016)
- 0.0.36 (first uploaded November 1st, 2016)
- 0.0.35 (first uploaded October 31st, 2016)
Clone this wiki locally
This entire page on GitHub is an archive of the version history; the changelog now appears directly in the game (it's currently in the Settings menu in the "Game" section):
In general: add replay-speed option, improve Challenge Mode UI and Blockly, fix bug when attacking.
- Fixed critical bug when winning a ranked match as an attacker.
- Added option for "reset replay speed on new match". This defaults to being unchecked.
- Your replay speed is also persisted across sessions if this option remains unchecked.
- Challenge Mode UI
- Removed pre-attack screen altogether
- Added difficulty options in post-match screen
- Changed the "attack" button in the post-match screen from "attack another player" to "do another challenge"
- Scripting changes
- Added modulo and absolute value Blockly blocks.
- Show error messages on attempting to save a script. For Blockly, this will show all of the annotations' messages that would have shown had you converted the script to code first.
- Removed beta banner from the login page on desktop
In general: launch prep (add Multi Missiles, rebalance progression, lay foundation for monetization).
- Added Multi Missiles! They target all enemies within range and need to be purchased with Botcoin.
- Change how mission progress is gained.
- Mission progress is now granted regardless of whether you win or lose (and note: mission progress was always granted in ANY PvP match (unranked, ranked, public attack)).
- You get a 50% bonus to mission progress when you win.
- Reintroduce cosmetic-item rarities. These are not clearly visible in the UI yet, but the buy/sell amounts reflect the rarity.
- Salvage packs generate at least one item of at least Uncommon quality.
- Revamped progress in preparation for launch.
- Only allow experience as an attacker
- Grant experience even on losses
- Scale values to match new balancing (e.g. hardware cost went from 50 → 5000)
- Random bot names are now 400% more flavorful! Instead of using Greek letters, you'll now get combinations like "ZeroHeap", "SlickRobo", and "SuperCrash".
- Fix bug where key presses would be absorbed by the tutorial. This would prevent guest users from typing feedback.
- Add monetization support to all platforms (even though monetization features will not be enabled until launch).
Minor fixes/improvements (click to expand):
- Improve the tooltip that shows when hovering over experience points, and made it show when on desktop.
- Confirm that a player really wants to repaint bots (it costs Botcoin to do so).
- When guests indicate that they are not enjoying Bot Land, they are now forced to type feedback rather than it being optional. While this may turn away some users who don't feel like typing, the previous method (prefilled complaints offered as checkboxes to the user) was not helpful for us as designers/developers.
- Change the word "starter" to "default" in the default Blockly script.
- Zoom Arena to fit when entering.
- Allow tall modal dialogs to be scrolled. This caused a bug in the scripting-video tutorial where you couldn't close the dialog on small mobile devices.
- Improve wording in tutorials.
- Include link to Discord when servers are being upgraded.
- Replace firstname.lastname@example.org with email@example.com in almost all locations (hey, in some cases, I do want you to email me directly!).
- Show ban reason and end time for banned users.
- Attempt to address client-out-of-date issues where the dialog saying that the client is out-of-date would show multiple times in a row. This may not actually be fixed yet.
- Give option of directly entering Challenge Mode after tutorial.
- Fix open-graph properties. The image wasn't displaying correctly on Twitter at the very least.
- Increase buy button hitbox in the salvage-pack UI.
In general: Challenge Mode and bug fixes.
- Challenge Mode is now in the game! Every day, there will be three unique challenges: easy, medium, and hard. This feature is still a prototype, so please bear with us as we test this out! Note that the stars you earn are currently just for bragging rights (and in the distant future, all accumulated stars will likely be shown on a single page to amplify your Brag Radius™).
- Fix a clipping issue with bot graphics in the avatar and blueprint editors.
- Fix bug with notched phones where the UI wouldn't extend all the way to the right of the phone.
- Lay support for monetization and a Steam version of the game. This doesn't actually impact you, the player, just yet, but I wanted to talk about it somewhere! 😄
In general: improve tutorial experience.
- Improve tutorial experience
- Remove first tutorial entirely. In it, you were tasked with destroying a defenseless CPU. Now, the first tutorial is destroy a CPU that has weak bots accompanying it.
- Remove create-blueprint buttons when they aren't usable
- Change wording on first tutorial to add a reference to ΩMEGACORP ⚡
- Increase opacity of tutorial background overlay to make it easier to spot what's being highlighted
- Fix bug where the open-salvage dialog would show on top of the convert-account dialog.
In general: improve performance.
- Memory usage should be reduced by something like 24%. This is the result of downgrading an internal library (PixiJS).
In general: improve performance and fix bugs.
- Cut down on memory usage of small images in the UI by 40-90% (depending on the size of the bot in the UI and your screen's pixel density). This is a drastic savings: some images were 100 KB and will now be 12-37 KB.
- Fix guest conversion bug. Previously, rather than converting your account, it would make a brand new account with the name/email that you wanted. This caused several unintended side effects, e.g. being put back into the tutorial no matter what.
- Fix bugs with notification times:
- Notifications would be sent 30 minutes later each day. They will now always be sent around noon UTC.
- Daily and weekly notifications were not guaranteed to be synchronized. This meant that you would not get combined roll-ups at the end of the week and would instead get two separate notifications.
- Animate rating and Botcoin amounts changing in the match results screen.
In general: fixed broken guest sign-up.
- Signing up as a guest is no longer broken.
- Revenge matches that you played as an attacker are labeled "REVENGE MATCH", not "UNRANKED MATCH".
In general: 🎉 fix crashes 🎉, add revenge battles, add new login/registration flow, add attack replays, fix bugs.
- Cut down on GPU memory usage. This should fix crashes in lower-end devices (especially iOS devices). It's hard to give exact numbers because there are so many factors, but I'd say there's roughly 40% lower memory usage.
- Add revenge battles. You will now see a red icon next to most replays in your battle log indicating that you can get revenge on that player! Revenge battles:
- Are unranked
- Are only able to be done once per match to prevent spamming
- Can be bounced back and forth between two players (i.e. Player X can get revenge on Player Y, which then allows Player Y to get revenge on X if they want, and so on back and forth)
- Can be started regardless of whether you won/lost the original match
- Do not give any rewards
- You can now view your last three attack replays in your battle log!
- Add new sign-in and sign-up flow. It is now tabbed rather than all trying to take place in one area. It also should be slightly clearer for guests that they can log in as their existing guest account.
- Pause music when minimizing Bot Land on mobile. This should fix the bug where the music would play infinitely (even after closing Bot Land 😳).
- You can skip to the end of the round by clicking the ⏩ icon in the round's progress bar directly (you can still skip to the end by long-pressing the ⏸ button if you prefer).
Minor fixes/improvements (click to expand):
- Swap order of "resume match" and "cancel" for when you attack via someone's public-attack link. This matches the order that revenge battles use.
- Fix bug around deleting an account with "stay logged in" enabled. You would get stuck in an infinite loop of errors on the client because we kept trying to log you in as an account that no longer existed.
- Fix bug with skipping to end of replays that would rarely occur when an entity was on fire and died due to the damage-over-time effect.
- Fix bug with rate-limited matchmaking where a user wouldn't be told why they couldn't join a new match.
- Decrease time before rate-limiting matchmaking in an effort to make "downgrading" to an unranked match smoother. I.e. you would try to join a ranked match, but the server wouldn't find any, so you'd see a dialog saying "play unranked match instead". Clicking this second dialog would usually result in a message saying that you've been rate-limited.
In general: add round-skipping and fix bugs.
- Add round-skipping to battles. To use this, long-press the pause button while a match is playing out (it takes 1½ seconds to activate).
- Fix bug where the button to start an unranked attack didn't show on iOS.
- Fix content of mobile notifications. The notifications were going out correctly before this, but the numbers in the notifications were wrong.
In general: fix mobile notifications and some bugs.
- Try to fix mobile notifications (again). There were so many bugs. 🐛
- Fix Arena music loop during a battle.
- Fix small memory leak on cosmetic items in the inventory.
- Fix client-side bug around enabling many mobile notifications in rapid succession on a device unrecognized by the server (i.e. it's your first time enabling notifications).
In general: a potpourri of improvements.
- Attempt number 6 at fixing mobile notifications. I must be close! 😭
- Only deselect blueprint when clicking >1 tile out of bounds. Previously, clicking the closest boundary tiles in the Arena when a blueprint was selected would deselect the blueprint. Now, that perimeter will retain your selection, but the tiles just outside of those will still deselect your blueprint.
- Show error dialog when a ranked match cannot be found. Previously, when a user wanted to join a ranked match and couldn't, we would silently convert the game to an unranked match. This would lead to some problems now that unranked games can be started voluntarily, so I think it's better to expose an error and give the user the choice of starting an unranked game.
- Properly loop Arena music tracks. Previously, we would always play the same track over and over. Now, it'll play one track twice, then the other track twice, then keep repeating this cycle of four plays in this fashion.
- Animate the blueprint selector opening/closing.
- Center match result information.
- Add tooltip to the icons denoting rounds at the bottom. They explain what rounds are and that you can watch replays using them if one exists in the round you hovered over.
- Clarify text in first tutorial about where to place your bots. Some users were confused when they tried to place bots too close to the CPU.
- Change login page slightly. Instead of ever showing "Follow me on Twitch", it now only shows when I'm live. Also, I removed the "Feedback" link from the mobile login page. These two changes mean that when I'm not live on Twitch, the mobile login page will have no extra text.
- Correct typo in in-game documentation ("Zap hardware" → "Zapper hardware").
In general: add login rewards, fix bugs, more newcomer friendliness.
- Add pseudo-random login rewards. You get your first by logging in >=8 hours after the time you made your account. After that, you'll get them at an average rate of once every 7½ days (but there's a lot of variance!).
- Fix bug where battle log only showed unranked battles. This was only visual; most matches against you were likely ranked and did result in ratings/Botcoin changes.
- Attempt number 5 at fixing mobile notifications. I swear I'll get them working one day! ✊
- Modify premade Blockly scripts.
- I got rid of "Teleport and Melee" since it was really just two snippets.
- I added "Friendly support" and "Weapons master".
- Show scripting-video pop-up when entering the script editor. It'll only open once on its own, then you can find it in the ❓ menu if you want to see if again. This should help alleviate some confusion around how to use Blockly.
- Limit height of premade blueprint list.
- Change the word "phase" to "round" everywhere. People were confused about phases, so I hope this helps new users a bit.
In general: add unranked battles.
- You can now challenge other players without anxiety! A separate, hidden, unranked-specific rating will be used for unranked battles, so you will still play against different defenders, but no one (including you) will see the ratings/rankings. Note that this is still a prototype-level feature, so there may be bugs and future UI fixes.
In general: fix major bugs, clarify points of confusion.
- [Hopefully] fix mobile notifications. They've apparently been broken since they launched 2-3 months ago... 😳 (UPDATE FROM 6/14/19 - I certainly did not fix them in this patch)
- Fix bug on iOS that prevented players from making it past the third tutorial.
- During the introductory tutorial, you'll now get toast notifications indicating that you get 5 Botcoin each time you complete a tutorial section (for a total of 25 Botcoin). Note that before this, you would get the Botcoin, but nothing would tell you that you got it, so this change is purely informational.
- Add tooltips to circular button groups on desktops. The ✖ button previously had no tooltip and tended to confuse new players.
In general: premade blueprints and tutorial improvements.
- Added premade blueprints. This should greatly help new users to the game since the blueprints don't have to be made from scratch, but they can be customized just like regular blueprints after being selected. This feature still requires some polish, but the bulk of the work is done.
- Users can no longer skip the introductory tutorials (you used to be able to by clicking something that the tutorial didn't tell you to do, then you'd be presented with the "skip" option).
Minor fixes/improvements (click to expand):
- Add goofy reminderHint embellishments around increasing font sizes and the 😡 emoji. This is mostly a joke just to keep people engaged during the tutorial.
- Highlight enemy bots during the third tutorial. This should make it more obvious that the user has to tap them.
- Clarify public-attack link-hiding UI. Previously, part of your attack link would show even when hidden, so it was less obvious to new players how you should use the UI.
- Normalize capital letters in tutorial display names.
In general: tutorial and new-player improvements.
- Change fifth tutorial to grant permanent blueprints. Previously, you were given blueprints in the fifth tutorial that would cease to exist when the tutorial was over. Now, whatever you end up with at the end of the battle will be saved to your account. This should make it easier for new players to attack another player when they're done with the tutorial.
- Make "figure it out" its own entire Blockly section alongside Snippets, Premade Scripts, and Advanced.
- Improve tutorial in various minor ways (bolded more words, fixed a rare bug, and one other thing not worth mentioning).
- Change empty-cosmetics-category text. Instead of "You have no Heads", for example, it now says "You have no head items".
In general: tutorial and new-player improvements.
- Force new players to do the tutorial. After a lot of deliberating, I think it's best NOT to give new players a choice on whether they want to do the new tutorial.
- Grant Botcoin on completing the introductory tutorials.
- Nothing tells the user that this is the case yet.
- I changed the starting Botcoin from 75 to 50 since users are granted the extra 25 Botcoin through the tutorials now (5 Botcoin each).
- When a battle lasts for longer than five seconds, a tooltip will appear on the increase-replay-speed button telling you that you can speed up the battle. After doing so with this tooltip open, you won't see the message again on the same device.
Minor fixes/improvements (click to expand):
- Remove dialogs at the end of intro tutorials. The dialogs had an IOU message saying that you'd get Botcoin. You DO get Botcoin now, but you aren't told about it and likely won't be until we have toast notifications in the game.
- Reset replay speed to 1x for introductory tutorials.
- On desktop, your script name is now a link to the script editor.
- Fix issue where the mission log on the pre-attack screen can show only two missions instead of three.
- Rename store hardware categories. They were "Attack hardware" and "Defense hardware", which led users to believe that the hardware could only be used by attackers or defenders. That distinction isn't in the game (yet), so I renamed them to "Weaponry" and "Support hardware".
In general: fix bugs, improve UI.
- Fix bug where sometimes you couldn't start a match that you should have been able to.
- Fix bug where the tutorial would sometimes show steps on the loading screen.
- After completing a match, your total attack rating and Botcoin will now show (instead of just showing the deltas). Note that on mobile, there's only space to show the Botcoin total, not the attack-rating total as well.
- Fix bugs in the ❓ menu for tutorials
- It couldn't be scrolled on any platform.
- You couldn't close it by clicking to the sides of the dialog.
- When submitting feedback as a guest, you are given the option to choose "Other" and type in a reason. Previously, this had no minimum length requirement, so people would check "Other" without specifying what the feedback was. :(
In general: improve tutorial (still a WIP).
- New players are now forced to attack a real player at the end of the tutorial. The old options were "Explore on my own" and "Open the ❓ menu", but in witnessing people play the game, those options almost always led to them being confused for longer.
Minor fixes/improvements (click to expand):
- Improve first tutorial. If a user drags a bot into the Arena instead of just selecting it, the tutorial will branch into a good experience instead of just preventing the user from placing the bot that way.
- Fix bug in fifth tutorial where you couldn't edit/create blueprints.
- Allow canceling out of the blueprint editor in fifth tutorial rather than popping up an error dialog.
- Change the words "No script assigned" to "Default script". This would show underneath a bot that had the default script (i.e. none assigned) and in the script-selection dropdown.
- Add tooltips to empty hardware slots in the Blueprint Editor. This may help brand new users figure out what the slots are for.
- Remove the error on having the maximum number of attack blueprints when trying to re-run the new tutorial (this wouldn't have affected new players).
- Add cursor:pointer to all slots to make it obvious that you can click them.
- Improve tutorial text wording and some styling.
- Clarify Stunning Lasers and stunlock in the extended item description.
- Fix bug with Blockly search where combinations of blocks would sometimes be missing certain constituent blocks.
In general: improve tutorial, fix tutorial bugs (note: this is still a WIP).
- Make tutorial more succinct (and hopefully a tiiiiny bit clearer too).
- Fix bug in final introductory tutorial where you would be left with "phantom blueprints", i.e. blueprints from the tutorial that you weren't allowed to use. I think the only solution was to refresh.
Minor fixes/improvements (click to expand):
- Disable ability to watch previous phases in the high-level strategy tutorial.
- Hide chip sockets in intro tutorials. This was done so as not to confuse new players with a mechanic that we never talk about in the tutorial.
- Add a margin to the CPU image in the very first tutorial.
In general: revamp tutorial (still a WIP), fix several bugs.
- Revamp entire introductory set of tutorials. There's an excessively long write-up on this here outlining the problems and the proposed solutions. This still requires some work to be considered complete (they don't grant Botcoin yet, the wording could probably be improved, and there's some polish needed), but I wanted to get feedback on the new tutorials as soon as possible.
- Fix bug where the attack button would get stuck in the loading state. This occurred every time you didn't place enough bots to be able to actually commence a match but you pressed the "Attack" button anyway..
- Add hardware icons in Blueprint Editor and Store (image here). This should make it easier to use X-ray Mode and just generally inspect bots at a glance since it'll reinforce what the icons represent.
- Fix bug where dragging hardware on iOS would not make the icon follow your finger. This made it very difficult to equip some hardware.
- Fix bug where dragging hardware on iOS would scroll the hardware inventory.
- When asking guests for feedback, there is now an "ask me later" button for those who feel like 5 minutes is too soon.
- Increase time before asking guests for feedback from 3 minutes to 5 minutes.
- When the servers are offline for whatever reason, the client now shows a "try connecting again" button so that you don't have to close the app/site.
In general: guest-account feedback and bug fix.
- After being logged into a guest account for 3 minutes, you'll be prompted for feedback. Answering 👍 will suggest that you convert to a full account. Answering 👎 will ask what you don't like about the game and send the feedback to us.
- Fix bug where choosing "stay logged in" as a guest account and then reloading Bot Land would incorrectly treat you as a full account, leading to lots of bugs (e.g. not being able to convert to a full account, getting into parts of the UI you shouldn't be able to get to, etc.).
In general: bug fixes and new-player improvements.
- New Blockly scripts contain helpful comments and a figure-it-out block to help new players get started.
- Change bot-placement text to help new players. Many players were confused about why the game told them they could place X more bots in the game when they'd already placed the maximum amount in the current phase. I changed the wording slightly to hopefully clarify the confusion.
- Fix bug where you would still end up deleting Blockly blocks by dragging them to where the toolbox would be if it were open.
- Fix server-crashing bug with validating defenses.
- The blueprint selector automatically closes when a battle starts. If this happens, then it'll automatically open when the battle is done playing out.
- In-game documentation now remembers what you were last viewing so that closing it doesn't cause you to lose context.
- Allow for arrow keys, backspace, and delete on the selected bot in the Arena.
- Shrink leaderboard width by 30px on mobile.
- Fix bug where pressing '3' on the News page would show an error in the UI.
- Fix bug where the salvage UI smoke particles would get stuck.
- Change wording on "servers offline" message to make it more user-friendly.
- The convert-to-full-account dialog now properly shows above the salvage UI.
- Fix bug where the avatar cosmetics inventory wasn't taking up the allotted space on Chrome.
- Adjust rename script animation on mobile so that the resting position of the ✔ lines up with the position of the ✏ that you clicked to start renaming.
- When on a browser on iOS or Android, you'll now get a banner advertising the app.
- Fix bug where pressing number keys would be completely consumed by certain parts of Bot Land, thus preventing things like ctrl+1 to change browser tabs.
In general: bug fix for iOS.
- Fixed a bug with CSS on iOS that was causing many screens to be laid out poorly.
In general: bug fixes and UI improvements.
- Fix several UIs that would either under- or over-fill their expected contents.
- Add spinner animations when attacking or saving your defense that indicate that the client is waiting on the server.
- Fix Z-index issue with several dialogs so that they're layered correctly.
- When using another player's public-attack link as a guest, you're now warned that the match won't generate a replay.
- Scroll spies should be slightly more intuitive (see this bug for more information). For example, clicking an image in a scroll spy will always highlight that image.
- Fix bug where showing a Blockly script and immediately pressing "undo" would clear the whole script.
- Validate most input on the client for the account-related modals that you can find through the Settings menu.
- When your battle log is empty and you have no defense, an entry will now show indicating that you should edit your defense.
- Fix how the store would filter by item type, e.g. typing "ea" would return every head item since "head" is part of each item's name.
- Improve salvage UI
- Hide the no-pack message when loading
- Show a spinner instead of the word "loading..."
- Increase feedback modal size on desktop
- Add syntax highlighting to in-game documentation
- Add a button to in-game documentation that will add the Blockly example to the current workspace. Note that this is not extensively used yet, but the functionality is there.
In general: fix Android issues
- See Android changelog on Google Play
- Improve in-game documentation a bit (e.g. better styling, clearer distinction between examples).
In general: add in-game documentation.
In general: fix context bar bugs.
- Fix several bugs with the context bar (the panel that shows name/description/hardware when you select an entity in the Arena). Many of the bugs had to do with stale data or having multiple selections.
In general: fix bug with Camera zooming
- There was a broken calculation that caused the Arena to be too zoomed-out in some cases.
In general: improve crispness of graphics in a specific case.
- Layman terms: if you don't have a hi-res display, the game may look better (and possibly perform worse). Technical terms: when
devicePixelRatio === 1for your browser, I now draw the canvas at 2x the regular size and use CSS to downscale it.
In general: fix crash regarding Landmines.
- An error would occur in a certain case involving Landmines on bots.
In general: address graphics blurriness, add hi-res avatars in some places, and add a new music track.
- Turn off shaders on all devices. This was a hack to bypass a graphics fuzziness issue on retina desktop devices. As a result of not having shaders enabled, certain effects will either not exist or will look different, e.g. cloaking a bot or lasers hitting a target.
- Add a new music track that plays in the Arena. Note that right now, when you enter the Arena for the first time in a session, it'll pick one of the two possible Arena tracks and only ever play that for the whole session. I DO want them to switch back and forth eventually.
- Use detailed bot sprites for the Avatar page, your avatar on the News screen, and editing your blueprint.
In general: lay foundation for mobile notifications, minor UI improvements.
- The bulk of the work done was on the back-end, and none of it is visible/accessible to users yet. This work was in preparation for having mobile push notifications. I just feel the need to tell people why this changelog is so bare. 😜
Minor fixes/improvements (click to expand):
- Add ▶ indicator for previous phases during a match.
- Update rename-script UI on mobile to no longer user a
- Fix edit script header ribbon left padding.
- Replace test custom strategy select by a custom dropdown component rather than a
In general: persistent logins, Twitch-streamers panel, in-game leaderboards, and bug fixes.
- Enable persistent logins (finally!). You can now choose "Stay logged in" in order to have Bot Land remember you for next time. To accommodate this, there is now a "Log out" button in the Settings menu.
- Add Twitch streamers panel directly to the home screen. Anyone streaming in this category on Twitch will be shown (after a couple of minutes of starting the stream).
- Leaderboards are now directly in the game! Click any rating flag to see them. The external site is still supported in case you want to see them from outside of Bot Land, but the site will no longer be advertised in the game.
- When in Replay Mode, the ▶ button will automatically advance to the next phase rather than continuing to replay the current phase.
- Move battle-log avatars to the right side of the log.
- Fix WebGL bug that I thought I'd fixed during the last deploy. Hopefully no one sees the "your browser doesn't support WebGL" message now.
- Fix major bug where a defender who deleted their account would cause certain attackers to get stuck; the attackers would perpetually get an error message on trying to find a match.
Minor fixes/improvements (click to expand):
- Improve store UI.
- On phones with notches (e.g. iPhone X), Bot Land will now take up the full screen.
- Fix iPhone bug where the login screen would show a white bar at the bottom.
- When you have an unopened salvage pack, the icon will wiggle at you.
- Fix layout of mobile replay buttons (they weren't aligned to each other properly).
- Improve guest UI for login/registration
- Replace the 🔀 icon with the dice icon everywhere
- Change Edit Blueprint page confirm button to always be a ✔ (instead of a ➕)
In general: new UI, lots o' bug fixes.
- Greatly revamp lots of pieces of the UI: colors, borders, buttons, etc. Bot Land got a facelift!
- Add Open Graph and Twitter meta tags, that way linking play.bot.land into Discord/Twitter/etc. should show nicely. Try it by linking it (politely) in a Discord server that may appreciate it!
- Allow editing the avatar by clicking the avatar as opposed to just the 🔧 icon.
Minor fixes/improvements (click to expand):
- Address the excessive no-WebGL errors people have been getting. This could result in some people not getting an error when they should be getting one, meaning they'll try to play Bot Land and it'll either be horribly broken or will play like sludge.
- When a replay is unavailable, show a ❓ next to it with a tooltip for the full explanation.
- Fix bug where the "Rename script" button was enabled on mobile even though no script was assigned to a blueprint.
- Prevent navigation to script editor while in tutorial, that way people don't get lost or make bots that end up doing nothing.
- Fix bug trying to place a chip outside of the Arena. It was supposed to deselect the chip, but instead it resulted in a bug with infinite recursion.
- Fix bug around login-related errors. I was marking all errors as being handled, so most errors wouldn't spawn a dialog.
- Change tooltip after Full Test Mode on the attack button to say "test again" rather than "battle another player".
- Change replay-speed-button tooltips based on feedback. They thought "Increase replay speed" wasn't the best word choice because it doesn't seem like a replay from the player's point of view. I agree. Changed to "Increase game speed".
- Remove debug buttons from Setting menu. They were used to toggle the FPS and turn off shaders. I'd always meant to get rid of them.
- Fix bug where missions would reorder themselves after you canceled one.
- The EULA/PP now show directly in-game. There are some bugs around this right now.
- Hardware info tables now scroll horizontally when they can't fit (as opposed to getting truncated).
- UIs around creating or converting guest accounts has been improved (e.g. accepting the EULA is done via checkbox).
- Fix bug where switching from JS → Blockly would produce extra whitespace on the right side of the screen.
- Switching between Quick and Full Test Modes is done via radio buttons at the bottom left rather than the old, clunky style I had before.
- Fix various Blockly search issues around when search should be visible.
- Remove the Missions tab on the News page. They already show before and after attacking.
In general: fix two bugs.
- Apparently lowering the long-press time from 200ms to 100ms was a bad idea. 😳 Raised it to 200ms again until I figure out something better.
- Fix bug where salvage packs could not be opened at all.
In general: improve new-player experience.
- Deselect the current blueprint when tapping outside of the Arena.
- Fix bug where guests would sometimes get stuck attacking the same person over and over.
- Hide "skip" button in tutorial in many cases. This constantly confused people; it was a clickable button, so it would attract their focus when they were told to do something in the game even though skipping was almost never what they wanted to do. It's not that skipping was removed completely, but now you can only skip it by performing an action that the tutorial DOESN'T want you to do or by clicking the ❓ menu and skipping through there.
- Clicking an enemy entity when you have a blueprint selected will now select the entity rather than doing nothing.
- Fix crash around entering the tutorial from a screen that didn't know about the tutorial (e.g. the Edit Blueprint page).
- Lower long-press time from 200ms to 100ms. This should make it feel more natural to relocate bots/chips.
Minor fixes/improvements (click to expand):
- Add text in tutorial giving a tip about pan/zoom features.
- Change tutorial overlay opacity 0.4 → 0.7 so that it's more obvious where your focus should be.
- Change "hide" to "minimize" for the match results screen. I'd gotten feedback that someone thought it would hide the results from the leaderboard with the old wording.
- Clicking your Botcoin total now opens the Store.
- Improved wording on several dialogs.
- Animate scale of rocket button for attack dialogs to make it stand out more.
- Fix bugs 213, 289, and 272 - they were all caused by having unsaved changes in your defense, entering Test Mode, and then exiting Test Mode in such a way that you skipped past Edit Defense Mode.
- Fix minor alignment issues with sprites for jackhammer torso and steamroller foot.
In general: bug fixes.
- Fix Avatar page so that close button is showing.
- Change Blockly search UI and allow it to find snippets (but not full premade scripts like "figure it out").
- Lots of various bug fixes
In general: guest accounts, no need for verified emails, and updated CPU tileset.
- Add guest accounts.
- You can create a guest account without having to type any information whatsoever.
- Guest accounts can be created to full accounts at any time.
- Guest accounts are locked-down versions of full accounts (no defenses, no ranked matches, etc.). They do not generate replays for defenders.
- You can now play Bot Land for as long as you'd like without having a verified email address. It's still helpful to do if you'd like to protect your account, and it will eventually be necessary in order to make real-money purchases. To incentivize verifying your account, you'll get a free salvage pack upon completing the process. All existing users (verified or not) were given a salvage pack.
- Updated the CPU tileset to look less tile-y.
In general: bug fixes.
- Attempt to fix problem where it says the servers are offline when they aren't. I think the connection was just timing out, so I raised the timeout from 3s → 8s.
- Reset replay speed in certain scenarios, that way you don't accidentally start a match at 8x speed and miss what's happening:
- When you're on mobile, you don't have replay-speed controls visible BEFORE commencing a test or real attack, so the replay speed will now get set back to 1x.
- On mobile AND desktop, entering Test or Attack modes will also reset the speed.
- Entering Replay Mode or starting a replay does not modify anything.
- Change figureItOut to use Zapper on non-bot enemies, that way your Zapper-only bots don't just dance around the enemy CPU.
- Show pause/play button while an attack is commencing. This isn't just aesthetic; there actually was no way to pause an attack before this.
- Resetting your password now automatically verifies your email address.
- Many other minor bug fixes.
In general: new battle music, bug fixes, feedback can now be provided directly in the game.
- Add new battle music called Crushbot. This can be randomly chosen along with DotExe and Robo Hustle.
- There's a "Feedback" button at the upper right of most pages that can be used to file a bug or suggestion without having to leave Bot Land.
- Fix severe and easy-to-find bug around quick-testing your own defense.
- Fix bug around tutorial mute button where you'd have to press it twice for it to work when you first made an account.
- Fix bug where attacker could place fewer bots than allowed. This provided no in-game advantage.
- Show error roll-up on user-defined 'for' loops. Previously, you'd get an error message about how your for loop's body was erroneous without actually seeing the reason why unless you hovered over the body itself. Now, it will be rolled up into the 'for' statement.
In general: relax code timeouts.
- Previously, individual bots were given at most 50 ms to run a single turn. Sometimes, due to causes outside of a user's control, a turn's time would exceed that amount. The user was then punished for this. That timeout is now minimally 100 ms, and at most it can go up to
100 ms * the number of starting bots that you had. Even with the 50-ms limit, there were only 6 timeouts in the last ~2,000 games played.
- Overall games take slightly longer before they timeout, although this shouldn't impact users.
In general: fix crucial bug around running user-defined code.
- User-defined functions run outside of their own statement (e.g. inside an
ifstatement) would throw errors when being run.
In general: performance improvements.
- Attempt to improve performance of game simulation. The goal was to cut down on timeouts that happen on individual bot turns when attacking other players.
In general: fix several bugs.
- Fix breaking bug around tutorial that would leave people in a state where it couldn't be completed very early on.
- Fix favicons - they were completely missing.
- Fix graphics glitch in top-left corner during battles.
- Output licenses as licenses.txt so that they open in the browser more easily.
In general: new infrastructure, improved UX/graphics, and database deletion.
- The entire database has been wiped out. This means that you'll have to recreate your account and start from scratch. I didn't completely intend for this to happen, but I think it's okay during Beta for accounts to be deleted.
- Improve store UI
- Added a checkmark to hide unafforable items
- Added toggles for showing all or unowned items
- Improved mobile experience
- Speed up time to load the login page
- Only ~2.7 MB is needed to load the login page now as opposed to the ~5-6 MB that we needed before.
- Any other pages will be downloaded dynamically, so you'll see some brief loading screens the first time you play.
- Add Blockly search
- You can now search for individual blocks. Snippets don't show up (yet).
- Improve icon usage
- Icons are now consistent and are from FontAwesome instead of Material.
- Improve the experience equipping cosmetics
- The randomize buttons now only show if they would actually do anything (e.g. if you only have one head item, the randomize button will be hidden until you have at least two).
- When you don't have any items of a particular location (head/torso/foot), the UI will tell you this and direct you to the store.
- New graphics
- Add greatly improved Zapper (and Inferno Zapper) graphics
- Add electrical explosions to Zapper attacks
- Add new chip graphics
- Add league medals
- New feedback system
- Rather than having a public GitHub repo for issues, there is now a "Feedback" button in the game that will let you file a bug or suggestion without needing a GitHub account. This gets filed privately, so there's no way for you to know whether a piece of feedback was already submitted by another user. Note that we haven't fully switched to this system yet, so the old bug tracker may still exist for some time, and the new bug tracker may get silently migrated.
- New infrastructure
- I spent about two months migrating to a new infrastructure. There's a bunch of boring/out-of-date information about this here.
In general: fix bug preventing editing blueprints.
In general: gave the game a facelift.
- Completely revamp opening salvage packs. It's pretty sweet now: it's got smoke particles, sounds, and explosions! 👍 To celebrate, I gave everyone one extra salvage pack.
- Completely revamp lasers. Say good bye to green squares and say hello to COLORED RECTANGLES! The color is chosen based on which particular laser hardware you're using (Regular, Vampiric, etc.). Check out a preview here.
- Add tooltips for almost every button in the game.
- Improve BlueprintSelector UI in several ways (colors, buttons, alignments, etc.).
- Add replay speed controls in Quick Test Mode on mobile.
- Whiffed lasers can now fire outside of the Arena. Previously, a bot that was, say, on the bottom of the Arena that tried to fire downward would just appear to do nothing. Now, it shoots a laser outside of the whole Arena.
- Fix inconsistent ◀ button.
- Fix bug where music would play even when disabled.
- Show a tooltip for experience points when editing your defense on mobile.
- Show link to the store when you don't have a particular type of cosmetic items. This may sound like a money-grubbing change, but it's actually to alleviate confusion around an empty UI (in a money-grubbing way).
- Fix bug where the pre-attack screen was off-screen on mobile.
In general: tutorial and UI improvements.
- Improve tutorial experience in some minor ways
- "Learn more" at the end of the first three tutorials closes the match-results screen
- Dragging hardware during the Create Blueprint tutorial while IntroJS is still showing hides IntroJS
- Reminder hints in the ❓ menu no longer show for every single tutorial, and they no longer show when you're not even in the tutorial.
- Clarified wording for some steps that told you to press buttons.
- Prevent IntroJS from going off the bottom of the screen in the rankings/leagues tutorial.
- Add Home button to match-results screen.
- Fix tutorial bug saying you have unsaved changes.
- Fix rocket not being centered in attack button.
- Fix "got it" not being yellow in several tutorials.
- Fix delete button misalignment.
- Fix other minor UI spacing/scrolling issues (e.g. this one).
- Fix disabled ranking flag colors.
In general: tutorial and UI improvements.
- Add five more tutorials in the ❓ menu.
- Hide "current tutorial" section in the ❓ menu when not in tutorial.
- In the tutorial, the "Got it" button now replaces the "Next" button.
- Improve BlueprintSelector UI - there is now a dedicated "Chips" tab, and on desktop, the "Create blueprint" button shows at the top.
In general: bug fixes, tutorial improvements, UI improvements
- Fix major bug around Edge/Firefox where you couldn't create an account or log in properly
- Hard-reset everyone's ratings/rankings to address a bug that should hopefully never happen again.
- When in portrait mode, warn that you need to be in landscape mode (Bot Land cannot be played in portrait mode)
- Almost all buttons should now change colors on hover
- Tutorial improvements
- Show reminder hints when you try doing an action that's not allowed, that way you can get back on track if you forgot what to do. These hints also show in the "?" menu.
- Flash "?" button when a tutorial that you haven't done already is relevant. This can be disabled in the "?" menu itself.
- Attempting to skip the tutorial asks if you're sure now (since people were accidentally pressing the button).
- Change wording/options in some steps
- Fix bugs
- After updating a blueprint, it will now be selected in the Blueprint Selector
- Improve experience equipping hardware on mobile
In general: improve tutorial and fix bugs.
- Add mute button to the very first tutorial dialogs asking if you want guidance at all.
- Fixed lots of bugs (most have to do with iOS/Safari): 108, 120, 179, 193, 195, 223, 224, 248, 249, 255, 257
- Various tutorial improvements for clarity.
- Change border styles while equipping hardware. This will hopefully make things slightly clearer to new users about how to use the UI.
In general: the tutorial is back and better than ever!
- Tutorial is back in! There's a basic chain of tutorials that you can complete. They're repeatable, skippable, and short. Also, the whole experience is probably a little rough around the edges right now, so please be patient!
- Fix crucial bug around resetting seasons where it wouldn't happen at the right time (the 1st of the month).
- Fix bug where you couldn't choose certain presets in Quick Test Mode.
- Fix floating script-name text on the mobile Blueprint Editor.
- Fix bug around dragging hardware on mobile. It should be more reliable and hopefully faster.
- Remove unnecessary calls to render. This may improve performance in some cases.
- Fix bug around detecting a new client version. It should happen within 45 seconds when I deploy.
In general: UI improvements / GDPR / QoL fixes.
- Big changes
- Overhaul the process of equipping hardware. Previously, you would drag hardware from your inventory onto static level selectors, and if possible, the hardware would get added to your loadout. This made it difficult to replace hardware, and it was unclear that you could change levels. Now, most scenarios (adding/removing/replacing) should take one action from the user. There's also a new feature when you try over-equipping hardware where you can choose which slots to remove.
- Add GDPR stuff
- You can now change your username once every 60 days.
- You can change your email address.
- You can delete your account.
- The browser back/forward buttons now work!
- Quality-of-life changes
- Exiting Full Test Mode no longer puts you in Quick Test Mode; it takes you back to editing your defense.
- Saving your defense will bring you back to the News screen on success rather than popping up a dialog and then leaving you on the Edit Defense page.
- Allow saving from the "unsaved changes" dialog. Previously, the only options were "discard" and "cancel". Now, there's a "save" option.
- You can now edit/create blueprints from Quick Test Mode.
- Increase scripting limits
- Blockly maximum increased from 30k to 45k.
- Move the "change password" dialog from Login to Settings.
- Bug fixes
- Fix bug where you couldn't activate your account if you had reset your password prior to verifying your email address.
- Fix bug around matchmaking between seasons. Previously, when in between seasons, the Matchmaker would always return the same player since it was trying to find the closest ranked match. However, the resulting match would be unranked because we were between seasons, so it would continually return that player over and over. This is fixed by telling the Matchmaker to force a random match when in between seasons.
In general: fix tremendous server instability.
In general: fix bug preventing seasons from resetting.
- The game is very temperamental right now, so you'll probably get a lot of errors.
In general: fix another bug.
- Fixed a bug where Full Test Mode wouldn't allow the match results to show.
In general: fix a bug.
- Fixed a bug where your lowest and highest ratings ever achieved during a season were not being tracked correctly. This information is never shown to the player as of now, but maybe some day it will be, so I'd like it to be accurate.
In general: RANKINGS AND LEAGUES!
Rankings and leagues are now done! The high level description of this is as follows:
- A season automatically starts every month.
- You have to play 10 placement matches to get a rating/league assigned to you. These are split into attack/defense matches, so it's possible to just get a league as an attacker, for example.
- If you're in the top 200 players, you'll see your absolute rank directly in the game.
- You can see your rating/league information by clicking or tapping the red/blue flags on the landing page (right after logging in).
- Buff Regen and Landmines
- Landmines are buffed from 500 to 600 damage.
- Regen is buffed from 5/15/30 to 10/25/50.
- Styled the landing page a little differently to accommodate the rating bars.
- Increase minimum defender hard timeout from 990ms to 1170ms. This should fix defenses that are very "turtly" (e.g. Nomad's defense) so that they don't get stuck in a 1v9 scenario where they can't move.
In general: 😡🤜⌨
- Fix gaping security flaw. Note: this flaw, if leveraged, would have allowed people to ban arbitrary users or delete ongoing games. It would not have allowed users to get access to personal information (of which I really only have your email address anyway). As far as I know, this flaw was never exploited.
In general: fixed two major bugs.
- Fix bug around Glicko scores. This was the painful Glicko bug that I just never addressed for the longest time. The solution I decided on is this: if a match would cause your Glicko rating to change in an unexpected way (e.g. you win, but your displayed rating still drops), I instead freeze your displayed rating and adjust your deviation so that the numbers still work out.
- Fix hard-timeout exploit. If you attacked a defender in such a way that you let them burn through their time, you could trivially easily defeat them. Now, defenders minimally get 990 ms of execution time before fizzling out, meaning that on average, they should be able to simulate all 3000 turns allowed in a game by themselves.
In general: improve experience (these 5 items are all over the place).
- Completely change how code timeouts work. Having a single bot execute code for too long is not grounds for killing them any longer. Instead, your player as a whole gets 40 ms per bot to execute, and if you exceed that value by too much, all of your bots will stop executing code. These limits are set high enough that no player should ever run into these unless they're trying to hit them or they accidentally coded an infinite loop or something.
- Improve the store items and preview. They're not finished, but they look better than they used to (text shouldn't be overlapping like crazy).
- Buff Acceleration Missiles. Decreased their initial cooldown from 2.0 to 1.7. This means that instead of firing 10 missiles in 10.6 turns, it now fires 10 missiles in 8.6 turns. This is as opposed to regular Missiles that fire 10 missiles in 10 turns.
- Hopefully sped up logging in. There used to be 10 calls to the server, and now there are only 3.
- Players are now added to the Matchmaker just by logging in, rather than having to attack another player (this takes up to 5 minutes after you've logged in to work).
In general: improve error handling and Avatar page.
- Code timeouts now kill bots. There's no real indication that this is why they're dying unless you open the console. I increased the time it takes for this to happen from 15ms to 25ms, so they should be less frequent than before (which was already happening only once every 80 simulations or so).
- Finish Avatar page for mobile/desktop styling. There shouldn't be any major changes here, just some minor final stuff.
- Error handling on the client got much better. Many actions that produce errors should now be clearer and only spawn an error dialog once. This fixes bugs 131 and 177.
- Show the email-verification dialog as a warning before the 3-day limit on verification. If you log in before the 2-day mark, it will pop up at exactly the 2-day mark. Any time between 2 and 3 days will spawn as soon as you login.
- Fix issue where volume levels weren't being respected
- Hide email addresses by default in the email-verification dialog that shows up (and allow users to press a button to show it). This feature is intended for streamers.
In general: bug fixes, balance changes, and minor UI improvements.
- Increase power of attackers at defender levels 3 and 4. Each level now gives attackers one more possible bot to place.
- Add entry to battle log when you can upgrade. The entry will always appear at the top of the log, that way it's obvious when you can upgrade without having to edit your defense.
- Improve cosmetics-related functionality/looks. There is now a randomize-all button for cosmetics on both Avatar and Edit Blueprint pages for mobile and desktop. There are individual randomize buttons.
- Allow equipping by clicking on desktop. This is for cosmetics inventories so that it matches how you can equip an item on mobile.
- I finally have a way to ban (and unban) you, so don't be unruly!
- Tighten rate limits on all requests. Previously, you could send 10 requests per second and burst up to 15. I think this was too high, so I'm setting it to 5 r/s with a burst to 10. If you see any problems as a result of this, please let me know.
- Hide context bar when starting match. Note that I only hide it specifically when you had a blueprint selected. If you had an entity selected (e.g. a bot, chip, or CPU), it will still show; the thought process behind this is that you had to specifically click for it show on an entity.
- Fix bug around Full Test Mode and upgrading. When you upgrade, your computer can get bigger (and the CPU can move), but Full Test Mode was using the un-upgraded computer for the sake of placement, so you would get an error if you tried commencing a Full Test after placing bots according to the new dimensions.
- Show placeholder Twitch status on Login page to indicate whether Adam13531 is live.
- Change the "kill 10 enemies using charge with Melee" mission. I converted it into just "charge 50 times with Melee" to make it easier. Thus, anyone who already had this mission will have progress toward the new mission when this change takes place.
- Change Twitch link to Twitter link when the Account Servers are offline.
- Embed newbie scripting video instead of having it always open in a new window.
- Style Blockly toggle-toolbox button correctly. It used to be a floating round button whereas now it's "attached" to the toolbox.
- Show script name on desktop Edit Blueprint page. Originally, we used to show the EditScript header even when looking at the "bot" half of the page, so we didn't need this.
- Change how clicking PhaseProgress works. Previously, if you had finished a game in fewer than three phases and you clicked a phase that didn't have data, it would take you back to "placement mode" even though the match was already done. Now, it will toggle the visibility of the match results.
- Include client version in bug reports.
In general: fix bugs.
- Finally updated Node to 8.11.1. Hopefully this reduces the frequency of CODE_TIMEOUT_HIT messages that you see when attacking other players (not when attacking yourself).
- Started working on the Edit Avatar page on mobile. It's not finished, and as a result, the desktop version is unpolished (e.g. no margins).
- Fix bug around hidden close button. The close button for the mobile hardware inventory on the Edit Blueprint page was positioned incorrectly.
- Fix bug where you couldn't exit a view on mobile. In the script-placeholder page (where you don't have a script assigned), there was no way on mobile to exit the screen because the overlay was covering the button.
- Fix bug around Blockly toolbox visibility button. There was a problem where the button would be hidden when you opened a category, but nothing would show it again when you chose a block from that category.
In general: get Edit Defense working on mobile and fix a bunch of bugs.
- Get Edit Defense and Test Defense working on mobile.
- Improve cosmetics inventory styling on mobile.
- All three buttons (back, randomize location, equip all) are in the "main" content area instead of being in three different locations.
- The equip all button equips based on which item is selected. Previously, it showed on each equipped item.
- You can now remove cosmetic items on mobile by tapping the red "remove" button that appears on any equipped item.
- Add button to show/hide Blockly toolbox. There's a bug around this right now where the button itself sometimes gets hidden.
- Add a way to rename scripts on mobile. This has to use window.prompt instead of a TextEdit because of space constraints.
- Add "no script assigned" option to dropdown. The only way you could ever go from having a script to not having a script before this change was to delete the script that you were using.
- Fix bug around surviving bots not being removed in Full Test Mode.
- Fix a weird bug around "ghost clicks" where you would sometimes tap the "edit blueprint" button on mobile and it would go directly into editing your hardware for that blueprint.
- Add an internal way to track code timeouts for bots (just letting players know that I'm keeping an eye on things).
In general: fix a bug and add minor UI.
- Fix bug around debugLog. When in Full Test Mode, debugLog wouldn't print anything.
- When in the Blueprint Editor on mobile, the blueprint name and the script now show. Tapping the script will bring you into editing it.
In general: make Blueprint Editor slightly more mobile-friendly and fix lots of bugs.
- The Blueprint Editor's bot/script tabs at the bottom left now work! Note that the Blueprint Editor itself is not totally functional on mobile yet even though it's probably about 80-90% of the way there.
- Add a "script placeholder" page that shows up when a bot has no script assigned. On this screen, you can choose an existing script or create a new one.
- Change how you pick hardware levels. Previously, the drop targets would always appear in the last empty slot of your loadout. Now, they appear as an overlay so that the levels are always in the same locations. The styling is not final.
- Finally fix Edge issues where you couldn't log in at all on Edge.
- Fix sound bug. There was a bug where you could hear blips of sound or music right around the time you'd log in even though you had them set to mute.
- Fix "too many requests" bug
- Fix a bug where clicking in the Match Results background would start another match
- Fix bug in BlueprintSelector where clicking it would sometimes enter Edit Mode even when that should have been impossible.
- Remove some unnecessary logging that was clogging the console.
- Fix bug around changing scripts. If you made a new blueprint and then tried doing basically anything with the script (e.g. selecting/making a new one), it would prompt you to see if you have unsaved changes.
- Switch to Script view on certain actions. Creating a new script or duplicating a script will put you into the Script view since you most likely will want to modify the script after you've done those actions.
- Polish TextEdit a bit. I now highlight all of its contents when you click it, and I changed the highlight color to make it more visible.
- Style Edit Blueprint background. It now looks like a circuitboard instead of a solid color.
- Color WebGL background according to the Arena. I hard-coded a mint-green color as opposed to a gray color for now. Eventually, this would change based on the Arena tileset.
In general: fix major bug.
- There was a bug where you would silently lose any defense blueprints or scripts that you made/altered when you toggled to Full Test Mode.
In general: bug fixes.
- Show correctly styled replay controls on desktop (sorry, these aren't on mobile yet). This consists of the speed-up, speed-down, and current speed controls in most bottom bars.
- Fix a bunch of bugs that I never filed on GitHub. There were several minor ones, so I'll just list the critical ones here:
- Fixed a bug where you could save progress correctly to the server, but then the client would be messed up until you refreshed the page.
- Fixed a bug where the normal attack flow would put you into a strange state that caused all sorts of other errors.
In general: attacking works on mobile, greatly improved the blueprint selector.
- Improved styling of the pre- and post-attack screens.
- Post-attack screen works on mobile. The buttons are sort of strange on desktop still.
- Missions now show on the pre- and post-attack screens (and the bars animate on the post-attack screen when you make progress!).
- Fix critical bug around upgrading your computer. If you had created any scripts or blueprints before upgrading your computer and before saving your defense, you would run into a bug that left you in a really bad state.
- Greatly improve the blueprint selector.
- It used to just show icons of bots without you being able to discern their names, script names, or hardware equipped until you'd clicked an icon. That all shows without having to click now.
- The selector is an overlay now, meaning that if it doesn't cover the whole screen, you can see underneath it.
- You can minimize the blueprint selector entirely.
- On mobile, touching-and-dragging over the hardware that shows will give you tooltips about what the hardware does. With a mouse, just hover over the piece of hardware.
- Greatly improve the context bar in the Arena. This used to be a full-width yellow bar, and now it's a much smaller bar that shows salient details in a nicer way (especially hardware, where tooltips now show).
- Improve the look of phase controls (i.e. the things that indicate which phase you're on and how far into the phase you are). This isn't finalized yet.
- Update manifest for pinning the app on mobile. The main change here is that it will force landscape orientation and remove the browser chrome, so you can play Bot Land in full-screen on your phone (or at least the parts that work!).
- Stop rendering completed missions. The BattleLog used to show completed missions and I've just removed that functionality entirely. Eventually, a placeholder should show there saying something like "you have no missions".
- Change default camera zoom on small screens. I zoom out by a factor of 2 when the screen width is less than 1024px.
- Add button to the Arena that tries to "maximize" the space that the Arena fills in the browser.
- Fix bug in the settings pop-up where it wouldn't vertically scroll if it was constrained.
In general: get rid of attack-choice screen.
- Get rid of attack-choice screen (full write-up here). This was the screen that would show up after clicking "Attack" that would let you choose between attacking another player and attacking your own defense. Now, to attack another player, you simply press the same "Attack" button and don't need to make a choice. To attack your own defense, you can choose "Full Test Mode" by editing your defense, clicking "Test", and then choosing "Full". This change allows you to test your defense in a "real" match before you've saved it, as opposed to before where you had to save your defense (thus making it attackable by the outside world).
- Get rid of the tutorial. Unfortunately, due to the above change, the tutorial would have had to go through a big revision in order to work, so I just got rid of it for now. I don't think it was the most effective in its old state and I'd been planning on updating it anyway, but that will happen after the UI has settled. The completion rate of the tutorial was about 48% anyway (which is very low).
- Fix several bugs of varying degrees of severity.
In general: categorize scripts as either attack or defense.
- Previously, scripts could be shared between attack and defense blueprints. Now, they're categorized as one or the other, meaning they can no longer be shared. I ran an automated process to categorize all existing scripts based on where they were being used. 26 of the 710 scripts in Bot Land were shared between attack/defense blueprints. In those cases, I categorized the script as an attack script and unassigned the script from any defense blueprints using it.
In general: made the login and news pages responsive (meaning they will work on mobile devices).
- Styled the login and news pages for mobile devices.
- Show an error message when you type the wrong credentials at login.
In general: minor improvements.
- Lower most default volume levels (a few people had complained about the initial volumes being too high).
- Fixed various error-related scenarios, e.g. around password length or when multiple dialogs would show up for the same error.
- Stop showing FPS by default.
In general: X-ray Mode and keyboard shortcuts.
- Implement X-ray Mode. This shows up as an "I" in a circle over the Arena:
When enabled, it will show you the hardware that bots are using without having to click them. X-rays are hidden while in a battle. The UI is not completely finished for this yet, so ignore the colors and border radius. :)
- Fix issue where keyboard shortcuts went to the wrong dialog
- Allow for WASD again for camera movement
- Allow for pressing 'H' to toggle X-ray Mode
- Allow for pressing 'T' to show tile grid again
- Allow for pressing 'X' to save your defense again
- Allow for pressing 'C' to cancel out of whichever Arena screen you're on
In general: improve performance.
- Greatly improve performance. This is most noticeable on phones/tablets even though the UI still doesn't make the game totally playable there. On my iPad Air, the FPS went from ~15 to about ~50 even with a lot of bots on-screen.
- Enable shaders based on your device type. If you're on a phone or tablet, shaders will be off with no way to turn them on. If you're not on such a device, shaders will be on with a debug option to disable them if performance is bad.
- Only render lifebars when you've taken damage. This makes the Arena less busy, especially outside of battles.
In general: bug fix.
- Fixed a bug where you couldn't resume a match in which you'd already played out phase 1.
In general: asset loading and back-end improvements.
- Greatly improved how assets get cached. Previously, every time I published a new version of Bot Land, you would have to download every single asset as though it were new. Starting with this version, any assets that are unchanged should get cached by your browser, meaning load times for new versions should be much better. For a frame of reference, about 5 MB get downloaded while you're on the login page and another ~2 MB after logging in. I estimate that this should be down to about 1 MB while on the login page in most cases.
- [This isn't a client change] Allow game servers to scale properly. Previously, there could only be one game server in the back-end given how I was setting up DNS internally. Now, I can scale as needed. Note that there hasn't been a need during Beta so far.
In general: news items and back-end improvements.
- Add capability for dynamic news items. Previously, I'd hard-coded these directly on the client, but now the client fetches these from the server every 45 seconds.
- Added the capability for urgent news items. These pop up a dialog on the client as soon as they're fetched. I only plan on using these for planned server outages for now (e.g. "The servers are going to shut down in 5 minutes for an upgrade!").
- A check is now performed to make sure the client is on the right version. Previously, some players were getting a cached version of the game, so they wouldn't be able to play, but they wouldn't know that they couldn't play until it was "too late" (e.g. they'd made changes to save). Also, I hopefully addressed what was causing this version mismatch, so this message hopfully won't show up at all.
- Addressed some long-standing stabilization features that mostly affect the back-end but that should make it easier for me to deploy changes in the future. For example, one of these changes is that I now have the ability to stop traffic to the servers while I'm upgrading them, that way you don't end up with random errors about certain servers being down.
In general: handle general Beta feedback.
- Change figureItOut scripts.
- Removed "figure it out (defense version)" from Blockly. If you already had this in your Blockly script, then it's still fine, but it doesn't do anything different from the regular "figureItOut".
- Changed figureItOut for defenders so that it moves randomly if it can't do anything else rather than moving left across the Arena.
- Changed the premade script "figure it out (expanded)" to reflect the change to figureItOut's movement.
- Note that this only affects players who either had no script or explicitly put the helper function "figureItOut" (as opposed to the premade script).
- Zoom "at the mouse" rather than stupidly. I think I was trying to approximate some kind of zooming behavior before, but it definitely didn't feel natural. This is the right math for zooming, but it's still not as convincing as it could be if your browser is able to fit an entire dimension (width or height) of the Arena in the viewport. Once zoomed in such that neither dimension is fully visible though, the zooming feels natural.
- Increase number of attack blueprints allowed. Increased the max from 10 to 14. The number of defense blueprints allowed is still 10.
- Change to type='email' for registration. I also styled it according to the built-in validation that the browser has, so when it's invalid, it'll show up red, but it won't actually stop you from registering.
- Add comments to the premade/expanded Blockly figureItOut script.
- Modify Blockly snippets
- Rename "Logic" snippets to "Advanced"
- Add snippet for an "init" function
- Clarify in tutorial that you can click enemy bots since a bunch of people didn't know you could do this.
In general: improvements for newcomers to the game.
- Add one more attacker bot when the defender is level 1 (which is the level you will be at right after the tutorial). This should improve new attackers' win ratios and incentivize upgrading your defense beyond level 1.
- Add rankings page to news log. This is still just a stopgap for when they show in a much cleaner way in the UI. Also, increased number of returned rankings from 100 to 500.
- Improve Blockly for beginners
- There is now an "Advanced" category with everything other than snippets and premade scripts. This is so that beginners don't try to manually piece together difficult Blockly scripts.
- Added four premade scripts:
- "Teleport and Melee"
- "Move to other side of Arena"
- "Reflect first, then figure it out"
- "Basically Artillery script (no movement)"
- Added a section for snippets called "Logic" that focuses on 'if' statements.
- Added a snippet for "compareNumbers" under the new "Logic" category.
- Added a comment for the activateSensors snippet.
- Fix script-deletion issue
In general: LAUNCH BETA!
- Improve look of tutorial settings button. I no longer "pin" it to the tutorial dialog, rather I elevate the existing settings gear on the page to show through the tutorial's overlay.
- Fix crazy bug where replays would seemingly randomly get deleted.
- Fix directions in figureItOut premade script. The defenders and attackers were trying to go to the wrong side of the Arena.
- Fix broken EULA/TOS link.
- Fix bug around avatar "update" button. It used to be disabled if you didn't have at least 10 Botcoin regardless of whether you were actually changing your colors (which is the only thing that costs money on that page).
Show pre-Beta Changelog (LARGE) (this is from October 2016 to November 2017)
In general: Beta preparation.
- Email addresses are now being used and proper links are sent as emails to those players.
- Style BlueprintSelectorIcons. Most importantly, you can now quick-edit the script or blueprint without first having to select the blueprint icon since the buttons show on hover now.
- Tutorial changes
- Hide back button in tutorial. It was a bit confusing to some people to have a button that they were SUPPOSED to click and also the back button present, so they would reflexively click the back button even though that's not what they wanted. I don't think the back button was providing much value anyway, so now it's gone.
- Minor styling changes.
- Show settings gear on the tutorial dialog so that players can lower the volume of sound/music without having to wait until they're in a particular part of the tutorial.
- Allow pasting attack links in the settings dialog. Previously, the only way to attack another player was to have the link in the URL bar. While that still works, there's now a way to access it in-game as well.
- Sound/music changes
- Add "dozed_slowed" music track that plays on the News page. "Dozing", which used to play there, now plays in the Arena and has been polished more.
- Non-battle music fades in over the course of 1 second rather than replaying it with no fade.
- Normalize music files so that they're roughly the same volumes.
- Adjust volume of sounds based on their rate. When sounds play back too quickly in a row (because the replay speed is high), it is seemingly louder than normal, so this attenuates the volume to make it less cacophonous.
- Added "forward" and "backward" as directions. These affect move(), fireLasers(), melee(), and the corresponding conditionals (like "canMove", "canFireLasers") and are available in Blockly as well.
- Blockly-specific changes
- Added round, ceil, and floor blocks under "math"
- Added isAttacker built-in variable
- Removed UltraKiller and Artie Artillery premade scripts
- Added "figure it out" as a premade script.
- You are no longer limited to how 25 Botcoin/day as an attacker. You're only limited by how many ranked matches you can play.
- Move CPU to the right side of the Arena. I also moved the defender's BlueprintSelector to the right side.
- Add Beta banner to News page and Login pages. Clicking it will bring you to a document describing expectations around the Beta.
- Salvage UI changes
- Show proper player colors instead of always having purple.
- Show the composed bot on-screen rather than clipping it.
- Replace Android icon with a bot icon in the defense UI.
- Add Botcoin symbol instead of using a "$" everywhere.
- Add video tutorial for script editor. This shows up when you enter the script UI for the first time (well, the conditions are more complex than that, but that's essentially when it shows).
- Lower max username length from 25 to 15.
- Center camera on CPU when editing defense.
- Bug fixes
- Fix bug around CodeMirror on Firefox
- Fix bug around CodeMirror not wrapping long lines.
- Blacklist certain names like "Adam", "Adam13531", "admin", etc.
- Disable certain keyboard shortcuts as a temporary measure to fix another bug. They were stomping on other, more important keyboard shortcuts. For example, if you tried copying a link using "ctrl+C" from the Settings dialog while you were in the Arena, the keyboard handler for the 'C'character would get hit and eject you from the Arena. I've disabled these for now since Beta is so close and I don't want to spend the time doing the "proper" fix.
In general: fixed bugs.
- Remove unnecessary table from cosmetics/chips in the store
- Fix small bug on email address input. It was disabled instead of being marked as readonly, so the text color was different on Safari.
- Change mission log abandon button from a "refresh" symbol to an "X".
- Fix the settings dialog's volume sliders in Firefox
- Allow for emojis in blueprint/script names. This change won't actually take effect until I wipe out the database, and once it DOES take effect, you'll only see it for your own bots/scripts, not others'.
- Fix bug around getEntityAt. If you specified coordinates that were out-of-bounds, it would throw an error as opposed to just returning null, so the rest of your code wouldn't work.
- Adjust lifebar styling: improved contrast and lowered lifebars so that they look a little less like platforms.
- Use two columns of blueprints for attackers instead of one.
In general: fixed bugs.
- Fix issue around Blockly scripts not having the right code
- Fix perf bug around testing defense. Every time you would test your defense, another requestAnimationFrame call would get kicked off, and eventually performance would just become terrible.
- Fixed how volume sliders can be grayed out despite being enabled
- Show proper errors in certain cases where the messaging was either missing or lacking:
- When the Matchmaker is offline
- When there are no other valid defenders in Bot Land
- Fix client-side bug around bot names. You used to be able to name a bot " " on the client, but the server never allowed that, so the server would generate a random name for you without telling you, so the client would have the wrong name set. This wasn't a major issue, but it wasn't that hard to fix. Note that there's still a display issue around this in HTML; multiple consecutive spaces will show as just one space.
- Fix bug around math_change Blockly block; it used to be unusable due to the code it would produce. I'm referring to this block:
In general: UI styling.
- Improve Arena styling. Improved the styling of lifebars and text components. Text components now only show up if you either have that entity selected or if you have the blueprint of a bot selected. Also, it always shows for chips so that you can differentiate them.
- Style tutorial dialogs. I also fixed how the arrow points to the wrong part of buttons.
In general: UI styling.
- Style Settings page (huge overhaul)
- Style modal dialogs
In general: change itemization and allow selling items.
- Changed cosmetic-item requirements (read more at proposal 2 here). Summary: you used to need one cosmetic item per blueprint. Now you just need one cosmetic item total for any number of blueprints/bots.
- Selling items has been re-enabled.
- You are warned before selling an item that's in use by either your avatar or any blueprints that you have. Selling the item anyway will remove that item from anywhere it's in use.
- Style MatchResults page.
- Modal dialogs are now queued rather than rejected, meaning if two errors occur in a row, you'll see them both.
- Fix bug around Blockly variable-name collisions. There was a problem with Bot-Land-specific APIs where using a reserved word as a parameter would not be changed so that there was no collision. For example, "pursue(CPU)" should have been changed to "pursue(CPU2)".
- Update Zapper description. It used to say "enemies at close range", now it says "adjacent enemies".
In general: Beta prep (UI/balance changes).
- Style pre-attack screen. This isn't totally done, but it probably won't be changed for Beta. Eventually, your missions should show here.
- Enable sounds and music by default. Lowered default levels of Master and Game volume sliders so that it hopefully isn't too overpowering.
- Update descriptions for hardware so that you shouldn't see "TODO: add description" any longer.
- Gave all cosmetics families flavor text.
- Nerfed shields.
- All levels' cooldowns up from 6 to 8, meaning it can't be used as frequently.
- Level 1 absorption down from 300 to 150
- Level 2 absorption down from 400 to 300
- Level 3 absorption down from 500 to 400
In general: fix bug.
- Fixed an issue where a player's expiration time in the Matchmaker was based on when they were added to the Matchmaker, not when they last logged in. This meant that you would be considered a valid defender for longer than you should have been, which meant active players would be attacked less since there would be a larger pool of defenders.
In general: fix critical bugs.
- Fixed an issue where you would be removed from the Matchmaker every time you tried finding a match. I never uploaded version 1.0.26 or 1.0.27 which would have made this a HUGE issue, so this was just a big issue.
- Fixed a problem where players who had many large scripts in their defenses could not be attacked due to a JSON-parsing issue. I think only one player had such a defense, so anyone who tried attacking that person would infinitely see HTTP 500 errors.
In general: huge Matchmaker improvements.
- Matchmaker matches are now much closer in rating than they used to be, meaning matches are higher quality.
- Players are now removed from the Matchmaker after 7 days of not attacking, that way active players are the only players who are considered for matches.
- If two matches of identical rating are possible, the one that was chosen less recently will be used. That means that having 1000 players with rating=700 will still allow each player to be selected fairly.
In general: improve Edit Script page and fix bugs.
- Improve Edit Script page.
- Implemented both Duplicate and Create script in the header.
- Removed a purple border that was inexplicably in the codebase for almost two years.
- Improved styling.
- Fix several bugs around populating details correctly. These were probably not common enough to list the details here.
- Fix Store z-index issue.
In general: UI changes and bug fixes.
- Store improvements
- Style Store tab buttons as tabs instead of radio buttons.
- The Store is now a pop-up instead of a page. It can be closed with the 'X' or by clicking outside of it.
- Address the problem discussed here by only considering defenders to be valid matches for attackers if they've logged in during the last week. Previously, this was set to 30 days. This means that you should get more replays in your battle log as a defender than you would have before this change.
- Switch color pickers. There are now 40 choices (30 "colors" and 10 grayscale). This is probably not the final set of colors.
- Remove purchase control from store preview. The only way to purchase an item now is to use the green "buy" button that shows when you've hovered over or selected a store item on the left side.
- Lay out structure of ScriptEdit page. I still have to refactor a bit, add in some functionality, and style everything, but the general structure is there for now (i.e. header- related contents are actually in the header and likewise with the footer).
- Fix bug around dragging BlueprintSelectorIcons. Previously, there was no width for the icons, so you couldn't see what you were dragging. Also, dragging took place from the upper left of the icon whereas now it's in the center.
- Fix bug where you could only search for items by using lowercase strings.
In general: minor fixes.
- Fix issue where scripts didn't have updated code.
- Style header buttons. These aren't totally finished, but they're 90% of the way there. I'm waiting until I've finished changing the Store and related pages to popups before I finish the styling on these buttons.
- Remove faint line from title section. A box-shadow on a pseudo element was bleeding through the "real" element.
- Improve attack-choice radio buttons colors on the attack-choice page. This is temporary and is just to improve readability for now.
In general: UI styling.
- Change styling of headers
- Moved purchase controls to the right
- Darkened the background
- Improve Arena footer styling
- Minor aesthetic changes
- Replay speed controls are now shown before attacking. Previously, the only way to modify replay speed as an attacker was to either be playing out a replay at the time or to use the keyboard keys. Now, speed controls always show on the current phase even if the attack isn't currently playing out, that way you can change them before the phase commences.
- Fix tutorial roadblocks. There were some impassable steps before.
In general: UI styling and bug fixes.
- Improve styling of Arena page. The header is just a settings button and the footer was overhauled.
- Improve styling of Arena footer.
- Remove "back" button from the green part of the footer of almost all pages. People were slightly confused that the generic footer had a back button followed by the title of the page. To some users, it seemed like you were going back to the page that you were already on. Now, there's a consistent set of cancel/confirm buttons instead of having that back button in the title section.
- Fixed bugs
- Fixed a bug where you could still edit or create blueprints after a match finished as an attacker. Previously, if you tried doing this, it wouldn't ever allow you to save them, so now it just prevents it altogether.
- Fix bugs around showing skill levels
- Fixed a bug where your skill level was shown as though it was your opponent's skill level.
- Fixed a bug where your skill level wouldn't necessarily be updated at the end of a match, so you may show stale data in the next match.
In general: fix bugs.
- Fix bugs where you couldn't watch replays of particular phases due to errors around IS_EXPLOSION or DISPLAY_FIRE components.
- Change Artillery max range from 12 to 7. Artillery was never USABLE at a range of 12 because your vision range is capped at 7, so this should alleviate some confusion.
In general: add public-attacks feature.
- Added a feature called Public Attacks. Enabling this feature provides a shareable link that allows players to attack you directly in an unranked match. Find out more here.
- Prevent error on closing tab. If you closed the tab without ever viewing the Arena then the 'beforeunload' handler would choke.
In general: SSL and bug fixes
- Incorporated TLS certificates so that Bot Land can be played over HTTPS. This means that "http://play.bot.land" is now "https://play.bot.land".
- Restyle buttons in the bottom bar. I got rid of the special icon styling, so the colors are all gone. Also, I got rid of the old blocky style of buttons (which were never intended to stay around).
- Fix bug around ScriptLibraryDropdown. When you were at the maximum number of allowed scripts, it wasn't possible to edit the currently assigned script or select an existing script.
- Fix landmine bug where they weren't being deleted on the client despite no longer existing.
- Fix bug around A*-pathing with landmines. If a landmine existed, A* would treat it as an obstacle even if it was friendly, so you would end up pathing around your own landmines.
In general: music!
- Music now plays on the landing page (after logging in), when editing a blueprint, and when playing out a battle. Note that some of this music still needs to be polished, and there's an entire track missing still. Also, one last note is that music is off default and has to be enabled in the settings.
- Fixed the new-replay indicator so that it shows on top of the Replay button again in the battle log for new replays.
In general: UI and graphic updates.
- Update on-fire graphics. There is now a properly animated sprite specifically for this art style of Bot Land as opposed to my using the prototype sprite that looked pixelated.
- Add hardware graphics for EMP and Area Repair.
- Style ScriptEditFooter buttons; they used to just be basic elements.
- Style Store a bit better.
- Only show Buy or Sell buttons on an item when that particular action is possible.
- When only showing one of the Buy/Sell buttons, make it half-size and center it.
- When you can't buy or sell an item, change the price-tag color.
- Allow for selecting cosmetic items. Note that this does nothing functional; some people like to idly click things and I wanted there to be some feedback for that.
- Style indicated blueprint differently (yellow + solid ==> white + dotted).
- Fix bug where some sounds played slightly before their corresponding actions, e.g. a laser firing would make a sound as the gun was being pulled out, not as the projectile was produced.
In general: UI polish
- Fix bug where the tutorial wouldn't scroll the hardware inventory when you had to make a specific blueprint.
- Styled the tutorial UI a bit. It's still terrible, but it looks slightly better than it did before.
- Style mission log slightly better. You can no longer select missions. Instead, in order to abandon a mission, you can click the "refresh" icon to the right of the progress bar. If a mission is complete, it will show a checkmark instead of a refresh icon.
- Style radio buttons slightly better, e.g. when picking who to attack and when picking Blockly vs. code.
- When selecting a different hardware item on the EditBlueprint page, we'll now scroll the description field to the top.
- Clicking a selected store item will deselect it.
- Clicking buy/sell in the Store selects an item.
In general: UI polish
- Style the BlueprintSelector.
- Objects in the BlueprintSelector now have relatively clear indications as to what originated from where. For example, if you select a blueprint in the left bar, you'll see a yellow highlight around bots of that blueprint in the Arena. Likewise, if you select an entity of yours in the Arena, you'll see a yellow border in the BlueprintSelector around the object corresponding to that entity.
- Style the Arena footer.
- Show context bar when selecting a chip in the BlueprintSelector (i.e. the bar on the left in the Arena).
- Render selection around all entities. When you select a chip or a CPU, you'll see the selection square behind it just like you would for bots.
- Add filter to the Store so that you can find particular items.
- Fix scrollspies on Firefox (which means I fixed the inventories and Store on Firefox).
- Hide Arena header by default.
In general: fix Store preview and bot names.
- Styled the footer correctly on all pages
- Clicking anywhere in the green-ish section will now go back to the last page instead of having to click the tiny back arrow.
- Fixed the ridiculously large Attack button on the "Attack Choice" page and gave some padding to the missions.
- Allow for editing bot names again.
- Render chip previews correctly in the store.
In general: style the Store page.
- Style store items correctly.
- Style store preview (on the right side) correctly for hardware and cosmetic items (not chips yet). When selecting a cosmetic item, the entire family of bot parts will be displayed on the right.
In general: UI work and bug fixes.
- Center context bar description text.
- Set visibility to hidden on life bar in the context bar so that selecting an entity and then a blueprint doesn't cause elements to jump around.
- Give proper cursor to context bar close button.
- Fix Arena context bar bug where closing the context bar and then clicking another entity of the same type would not re-show the bar. Now it does.
- Clean up hardware preview in inventory.
- There is now a set height, so as you select different pieces of hardware, you won't see the UI jump around.
- When you don't have anything selected, the text indicating that you can select an item will be centered.
- Fix battle log being too tall in Firefox.
- Fix Firefox Arena layout. The header and footer div was pushing everything else down since it had position: relative. I changed that.
- Fix scroll spies. Scroll spies didn't render correctly in Safari. I don't know if this fix actually worked, so I'll need someone to test it.
- Fix color-picker pop-up closing behavior. Previously, clicking the button to show the color picker when it was already showing would close and then reopen it. Now it just closes it.
- Add a little triangular div to "attach" color pickers to where they open from.
- Clicking any part of a color picker will open it. Previously, you had to click the paint brush button.
- Show current colors in Avatar inventory. When you choose colors in the color pickers on the Avatar Page, the cosmetic items in the inventory on the right side will reflect the new colors.
- Prevent dragging scroll spy anchor links/images.
In general: many UI improvements.
- Overhauled many pages: Edit Blueprint, Avatar, part of the Store, and most of the Arena.
- In the Arena, switching between bots and chips is now much more obvious.
- Got rid of the floating panels in the Arena for showing information on blueprints or entities. There is now a context bar anchored to the bottom that shows the same information. You can even click hardware slots in this bar to see more information.
- Added proper color pickers to the Edit Avatar page. There used to just be "randomize [primary|secondary] color" buttons.
- Allow for filtering inventory using a string, e.g. typing "wasp" to find all wasp parts.
- Fix text-spike problem - there used to be spikes on "pointy" text in the game like the letters 'M' or 'W'. That's finally fixed because I learned what miterLimit is.
In general: improve UI.
- The header now shows in the Arena and can be hidden (note that this setting isn't persisted right now)
- Improved how the battle log looks
In general: improve News-page UI.
In general: miscellaneous improvements.
- Use minelayer_empty graphic. Right after laying a landmine, the "full" graphic will change to an "empty" graphic and the "full" one will slowly fade back in.
- Adjust Melee animation time. It's 60ms longer so that it's slightly more obvious what's happening.
- Center landmines on their tiles.
- Remove tags from login-related pages. These were causing bugs where it would be impossible to log in or register because the "forms" were getting submitted as a "GET /".
- Fix bug with disabled login button (it had required you to click the EULA checkbox even though it was no longer on the same page).
In general: polish login UI.
- Polish "login" set of UIs: logging in, registering an account, changing your password, resetting your password, etc.
In general: graphical improvements.
- Melee now animates itself punching
- Show different explosions for different actions
- Nukes show every time a bot/chip/CPU dies
- "Minor smoke" shows on Melee hits
- "Minor fire" shows on projectile hits
- "Major fire" shows on landmine hits
- Slow down simulation speed. It used to be 700 ms per turn, now it's 1200. This makes it much easier at 1x replay speed to gauge what's happening in the Arena. It only gives more animation time for turns; it doesn't change gameplay at all and doesn't affect individual animations like explosions or hardware emblems.
- Make shield/reflect more transparent.
- Add hardware graphics to store/inventory for Cloaking, Regen, Teleport, Thrusters, Reflect, Shield, and Armor
- Animate hardware emblems in the Arena for Cloaking, Teleport, Reflect, and Shield
- Download assets while on Login screen. This is intended to improve the new-player experience; while users are registering for an account, we'll download game.webm and all of the Arena spritesheets, that way you save ~2 MB of download that would typically happen after logging in.
In general: bug fixes.
- Fix a bug with scripts where assigning a new script to a bot in a specific way would wipe out the new script's code
- Fix bug around placing chips. If you had a chip selected when you entered Test Mode, it would only ever let you try to place chips (which was impossible). I now close the chips panel entirely when you enter test mode so that you'll be placing bots.
- Fix bug where you can edit/create blueprints. When an attack was playing out and you paused it, you would be able to create or edit blueprints. I've disabled this now.
In general: tutorial improvements and bug fixes.
- Bug fixes:
- Fix bug where whiffed lasers didn't play sounds or show the laser's hardware graphic
- Fix sprite-flicker issue
- Assign random name to unnamed blueprints. Without doing this, the BOTS would get random names, so it meant placing an unnamed blueprint multiple times would produce bots of different names (which was confusing).
- Fix issue with deleting hardware slots
- Fix bug around showing "Attack Missions" twice when on the AttackChoice page.
- Fix bug where popups showed above modal dialogs (so you wouldn't see an error when trying to purchase a salvage pack without having money).
- Fix bug where findClosestAlliedBot would always return null.
- Improve tutorial experience
- Add text to the tutorial indicating that you can zoom.
- Show hint in tutorial for placing a chip.
- Going into the Script Editor for the first time when your computer level is <= 1 will show you a placeholder dialog so that you can eventually get help on how to use the editor.
- Prevent removing hardware during tutorial. Technically this was already prevented, but the hardware would remain red-highlighted after clicking it. I fixed that part.
- Change wording and remove unnecessary messages in tutorial
- Prevent closing post-tutorial modal by clicking outside of it.
- You now place two attack bots instead of one so that we don't need to clarify why we have you place just one bot. The original reason was so that you'd lose the first phase, but a commit from a week or two ago made it so that you have less life in phase 1 (so you'll likely lose anyway).
- Prevent you from editing your cosmetics loadout and instead show an error dialog.
- Show the player how to get back to their blueprints when chips are showing.
- Make it less confusing when it comes to instructing players how to configure blueprints. Instead of telling you to drag highlighted hardware to highlighted slots, I just tell you to start by dragging Lasers. Dragging to the wrong level tells you specifically which level you needed instead of overwhelming you with the entire blueprint's hardware configuration.
- Add placeholder for Script Editor help
- Always show replay speed buttons when testing your defense, that way you can change the speed without having to press the "test" button.
- Show your bot names in the Arena. Previously they only showed in two out-of-way places, so this makes them more prominent. For other players' bots, you'll just see their account name.
In general: small cosmetic changes.
- Allow clicking cosmetic slots to remove items. Clicking hardware items on your blueprint would remove items, but until now, it didn't work for cosmetic items.
- Show item images for cosmetics and hardware while customizing a blueprint or your avatar.
- Hide buy/sell buttons for cosmetic items while editing a blueprint; you have to go to the Store page to do this.
- Added four new bot families
- Sea monster
- Boat (note: this will probably eventually be limited to Twitch followers or subscribers)
- Lay out ScriptEdit buttons on right side to be consistent with other navigation buttons.
In general: more tutorial feedback.
In general: more tutorial feedback—mostly bug fixes and wording.
In general: handle more tutorial feedback.
- Greatly improve tutorial (including reducing the amount of time needed to complete it)
- Show "AT MAX" when trying to place a bot or chip when you already have as many as you're allowed.
In general: handle tutorial feedback.
- Tutorial work
- Split tutorial messages. Instead of one dialog with two sentences, I'm preferring two dialogs each with one sentence.
- Theme IntroJS Next/Done buttons differently to make them more visible.
- Testing your defense in the first part of the tutorial should result in a win now that there are only two enemy bots (down from four).
- Remove unnecessary sentences.
- Fix bug with projectiles tracking to the wrong destinations; they would target the upper left of the CPU and chips, and when lasers missed altogether, they would hit seemingly random coordinates in the Arena.
- Fix text rendering bug. Text used to be blurry and have weird outline problems. I now use a very large font size and then rely on Pixi's scaling to make it look crisp.
- Move debug buttons from News to Settings.
- Contain HTML preview to BlueprintSelector. When dragging a bot or a chip from the left side, you would previously see two preview images: one in HTML and one in WebGL. I now hide the HTML image when you're dragging outside of the BlueprintSelector.
- Render test-defense options ("Mixed bag", "All melee", etc.) as a dropdown instead of individual buttons.
In general: really add in the tutorial.
- "Finished" the tutorial; there's just some polish-level work left. Players automatically start the tutorial when they register for an account. Players have to go through the tutorial before they're able to attack or be attacked.
- Tutorial progress is now saved on the server so that you can pick up where you left off if you close Bot Land.
- New accounts now start at level 0 with 0 experience (instead of level 2 with 4000 experience). Going through the tutorial makes you upgrade it to level 1. The only reason you started at level 2 before is so that we could test more complex defenses.
In general: add in tutorial.
- The tutorial has been about 80-90% implemented. Press F12 and type "debugMain.testTutorial()" to get to it for now. This command will eventually be removed.
- Fixed a bug where you couldn't upgrade your defense.
In general: add in hardware graphics
- Bots now take out their weapons in the Arena before using them! This is purely aesthetic. See picture below.
- Add four new bot families: Blender, Rice Cooker, Sewing Machine, and Ninja.
In general: fix sprite-offset issue.
- Fix sprite-offset bug. Now any sprites like shield/reflect/zapper or even just projectiles tracking to a target should use the right coordinates.
- Dragging/placing chips works just like how it does with bots; a preview entity shows to indicate where you'll end up placing the chip and you can also "paint" chips into available sockets by left-clicking when you have one selected.
- Added five new sets of cosmetic pieces: Junk, Bear, Vacuum, Rocket, and Water. These are available in the store for purchase with Botcoin.
In general: tech tree and chips.
- Chip changes!
- You can now buy chips from the Store page. Note that I granted all of the chips to all existing accounts, so there isn't a NEED to buy chips yet, but it's possible.
- Placing/relocating chips now works very similarly to how placing/relocating bots works; you can click to select a chip and then "paint" it into the sockets in the Arena. Swapping chips by dragging them between sockets also works.
- Hardware requirements have been implemented! "Special" hardware (Inferno Lasers, Stunning Lasers, Vampiric Lasers, Acceleration Missiles, Inferno Zapper, and Area Repair) now require the "basic" hardware (Lasers, Missiles, Zapper, and Repair respectively). If you don't meet the requirement, the hardware will be highlighted red in the store.
- Show proper UI after finishing attacking yourself. Before, a window.alert would pop up. Now a proper MatchResults dialog shows, and clicking "Next battle" will bring you back to the AttackChoice dialog so that you could potentially attack another player.
- Show mission log before attacking. Instead of showing a relatively bare page when you click the "Attack" button from the News page, we now show your active missions.
- Fix transparency effect on preview/dragged entities. Previously, when cloaking entities, dragging them, or drawing the "preview" entity, the alpha would get combined where the torso overlapped with the head or the foot. Now I apply alpha through a shader to avoid this.
- Fix bug around testing defenses. There was a bug where we wouldn't restore the attacker state when custom-testing your defense.
- Nerf some level-1 hardware.
- Melee lv. 1: damage down from 350 to 300
- Artillery lv. 1: damage down from 300 to 250
- Shield lv. 1: duration down from 10 to 9
- Reflect lv. 1: chance to reflect down from 55% to 50%
- Make "Clear all" also remove chips when you're editing your defense.
In general: bug fixes and incorporating feedback
- Add an option after pressing 'Attack' from the News page that lets you choose between attacking someone else or attacking your own defense. Your choice is persisted in localStorage so that it is remembered next time you revisit the pre-attack screen.
- Fix bug where you could edit attack blueprints. Previously, you could edit your attack blueprints through the BlueprintInfoPanel when testing your defense. This shouldn't have been allowed because there's no way to save those blueprints.
- Fix bug where defenders' positions were reset. In the case where the attacker won without killing the defender's bots, the defender would see their bots overlap the attackers at the end of the replay.
- Fix bug around pressing 'V'. If you pressed 'V' while editing your defense without having enabled test mode, you would get an error since the game would try simulating the defense without having any AI scenario set up.
- Add clear-all button when testing defense. There was already one present while EDITING your defense, but now there's a way to clear the attacker bots when you're testing it.
- Fix bug around relocating test bots. When testing your defense, you can relocate attack bots manually to valid tiles (this part always worked). However, if you go back to editing your defense and place defense bots where the attack bots were, then re-entering test mode would try to relocate the attack bots automatically. It only ever checked for an unoccupied tile though, not a VALID tile; it wasn't taking into account whether the tile was too close to the CPU. Now it does.
- Restore attacker state after testing defense. When you click the "Test" button, I now save the attacker state so that finishing the test or re-entering test mode will restore the state. This lets you test your defense, then maybe realize that you want to make changes, then once you're done, you can test against the same attack that made you want to improve your defense in the first place.
- Add replay-speed buttons while testing defense. These are just temporary; there's a shoddy UI I implemented as a stop-gap measure that contains a slow-down button, a speed-up button, and the current replay speed. These only show while test is playing back.
- Change "test" into "cancel" while testing. The Test button gets replaced with a Cancel button while you're testing your defense.
- Disable testing appropriately for editing defense. You can't press the "test" button until you have bots placed.
- Remove forfeit button when attacking self.
In general: you can now attack your own defense for testing!
- Implemented most of a feature where you can attack your own defense for the sake of testing. This allows you to save your attack blueprints without having to play a "real" match against another person. This is still a bit rough around the edges.
- Fix bug around testing defense where your defending bots may not have their scripts set correctly so they would default to figureItOut().
In general: there are more options for testing your defense.
- Previously, when you clicked "test" while you were editing your defense, it would immediately place AI bots that would attack you. Now, it transitions you into "test mode", where you're able to place any attack blueprints that you've already made or use preset configurations of bots (which you can also move around). Note that you cannot create or edit your attack blueprints from this mode.
In general: sound effects!
- Added sound effects, although they're off by default. Many UI actions have sounds associated with them (although not all of them). Almost every game action (e.g. firing a laser) should have a sound associated with it.
- The "Settings" button at the upper right now actually does something! Clicking it will allow you to change sound settings. These persist to localStorage automatically.
- Rebalanced mission goals a bit to normalize the time taken to complete them.
In general: missions!
- Missions are in the game!
- You now get one mission per calendar day (according to UTC).
- There are a total of four missions to choose from.
- Completing a mission will give you a reward of 15 Botcoin.
- You can abandon a mission once per day to get a new mission assigned.
- You can hold up to a total of three missions at a time and make progress toward all of them.
- Progress can only be made while winning as an attacker.
- View your missions in the "Missions" tab on the News page.
In general: salvage UI.
- Add a visual way of opening salvage packs. This UI can be opened from the header on the news/avatar/store/blueprints pages. The UI is NOT final; I know it doesn't look the best yet.
In general: the only changes here were in refactoring or on the back-end.
In general: misc. changes.
- Implement temporary color-picking UI. This is just a stop-gap for now that lets you change your player colors through the UI. There are buttons for "randomize primary color" and "randomize secondary color". Also, it technically doesn't cost any Botcoin to change your COLOR right now, but it does to change your avatar, and the two are linked.
- Fix Acceleration Missiles. They didn't have a damage source associated with them, so creating the projectile on the client didn't work.
- Improve hardware customization experience. Previously, when you tried to add hardware to a bot that already existed in a similar form (e.g. putting Inferno Lasers on a bot with Lasers), it would fail and not tell you why. Now it silently replaces the existing hardware.
In general: basic code-splitting and Blockly work.
- Greatly improve performance of loading on non-Chrome browsers. Load times used to be upwards of 25 seconds, now they should be at most about 5 seconds.
- Add colors to Blockly categories.
- Fix some minor Blockly bugs.
- The toolbox would cover the header section when you first created a script. That no longer happens.
- Removed a brief flash when you switched between two saved Blockly scripts.
- Fixed a bug where bots facing left would not render when they were right at the edge of the camera's display area.
In general: UI work (replays + avatars)
- Avatars are now in the game! You can customize them from the News page (click "Edit" on the left side). Note that selling an item that's in use by your avatar will remove it from your avatar.
- Finished replay UI.
- When you're finished attacking someone, you can now watch the phases that you played out.
- Phases that don't have replay data will be grayed out.
- Clicking a phase that does have replay data will set up the Arena for that phase and hide the match results. The results can be shown/hidden again via an icon on the bottom bar.
- There is now a "next battle" button so that you don't have to go back to the News page in order to play against a new defender. This button also shows in the match results as opposed to "exit to main menu"
- When you're finished attacking someone, you can now watch the phases that you played out.
In general: the replay UI is working much better!
- Almost finished implementing the replay UI:
- Controls that were buggy or unimplemented should now be working.
- When watching a replay (not as an attacker), any phases that never played out will be gray.
- Added a progress bar for bot-placement in the entire game behind all of the phase progress bars.
- When you've placed enough bots as an attacker to be able to hit Commence without it erroring, the background of the replay phase will change.
- Remove unused replay controls:
- Attacker placement stats (which now show in the "replay" UI)
- The floating "Cancel" button on every page
- The "Replay" button that showed as an attacker
- The entire ReplayHUD (it has now been subsumed by the bottom bar)
- Fix issue around replay progress. Previously, the progress shown on screen as a match was playing out would increment based on turns, not on time. See the issue for more information.
In general: bug fixes.
- Address Pixi issues
- Fix bug around creating blueprint+script. When you created a blueprint and a script at the same time while attacking and then tried to use the quick-edit-script button in the BlueprintSelector, the UI would think that your script didn't exist and would create a new one. Now it knows to edit the script you just created.
- Fix bug around whiffed lasers. Previously, a laser that didn't hit anything would try to set a shader value on its target, but it didn't have a target because it didn't hit anything, so it would fail and throw exceptions.
- Fix bug with not having code when testing defense. If you viewed a script's code at any point BEFORE testing your defense, then the UI would have the code set correctly, but your underlying Player object used for testing would not have it set, so your bots would default to figureItOut. This only should have affected testing defenses.
- Address performance issue with testing defenses. Previously, animations would try to run while simulating the defense being tested. Both operations are CPU-intensive, so lower-end devices would lag. This would cause the code execution timeout to get hit, which means bots would lose their turns. I'm now disabling animation entirely before simulating the test, then I reenable it before playing back the resulting journal.
- Blockly changes
- Add a grid (and snapping) to Blockly.
- Disable sounds. There's no way to turn them back on for now. These were sounds that would play when you snapped two blocks together or deleted blocks.
- Fix bug where you couldn't access the Store page while editing a blueprint or script. I also changed some styling so that the store's footer is smaller and the "back" button has an icon.
- Fix UV coords in shaders. It turns out that I have no idea how shaders work. I was never using the mappedMatrix that was passed in because I didn't know what exactly it was for, and I didn't even realize that issue #8 (the one this commit fixes) was an issue at all. This commit technically changes nothing, but in the case that I want to use vTextureCoord in the future, I should instead use mapCoord.
- Fix bug around Botcoin total being incorrect. There was a race condition between a setInterval call to update your Botcoin total and winning a match (which would add the payout to your total); if the interval occurred just before winning, then your Botcoin total would seem slightly higher than it really was.
- Fix server-side bug with new blueprints. You used to be unable to use an existing script from a new blueprint because of a false assumption I'd made.
- Fix a bug in how blueprints and scripts are validated. The bug itself isn't important, and you only could have hit it if you were intentionally trying to manipulate the server.
In general: back-end fixes.
- Enforce cosmetic constraints. Previously, you only had to own a single cosmetic item in order to use it across any number of blueprints. Now you need to own one cosmetic item for each blueprint that you're using it on. Note that attack and defense blueprints have separate counts for this, so if you own a single Wasp Head, you can equip it on one defense blueprint and one attack blueprint, but not two defense blueprints like you could before.
- Enforce limits on numbers of blueprints and scripts. You used to be limited to 20 blueprints total across your attacks and defenses. Now, you can have 10 defense blueprints and 10 attack blueprints. This means that if you previously had more than 10 of a particular kind of blueprint, you'll have to delete some of those blueprints before you'll be able to play Bot Land. Also, you're still allowed 16 total scripts across both kinds of blueprints.
- The majority of this version's changes were behind the scenes. I completely changed how temporary objects work on the back-end. Before this change, every time you created a script or blueprint, a temporary copy was created on the Account Server. Now, the client sends all creations/updates/deletions at once, and the server figures out how to map its permanent IDs back to the client's temporary IDs.
In general: fix Matchmaker bugs.
- Fix Matchmaker bugs:
- Fix a bug where Matchmaker players could be duplicated. This led to a second bug where you may find unranked matches much sooner than you expected; this is because the duplicated players were "clogging" the Matchmaker.
- After completing a game against a defender, I now update the Matchmaker with the defender's up-to-date glicko score if they're still a valid defender. If they're NOT a valid defender (which currently is only possible if they haven't logged in for 30 days) then they'll be outright removed from the Matchmaker.
- Nerf cloaking again. Reduced damage dealt while cloaked from -40% to -80%. This is meant as a stop-gap nerf until I change Cloaking so that attacking breaks stealth.
In general: Bot Land is playable again.
- Fix many critical bugs preventing people from playing:
- Chips were being given CodeComponents despite that they shouldn't have them, so defenses with chips couldn't be tested.
- Fix a bug where chips were always giving a buff of "1". With percentage-based buffs, this meant 100%, meaning Haste, Damage Dealt, and Damage Taken chips were out of control.
- Fix a bug where you couldn't resume matches against players.
- Prevent clearing all bots while testing defense. The "Clear All" button used to be enabled even while you were testing your defense. Pressing it would lead to an exception.
- Nerf cloaking: cooldown on all levels increased from 8 to 9.
- Fix bug around cloaking and its damage reduction. The cause of the bug was that I only took the source entity's cloaking status into account at DAMAGE time, not at FIRING time, so if an entity shot artillery or laid a landmine while cloaked but the shell/landmine didn't deal damage until the entity decloaked, then it would do full damage despite that it should have been reduced since it was created while the source entity was cloaked.
- Add shader effects for Lasers:
- Firing an inferno laser will flash the target red.
- Firing a vampiric laser will flash the target purple.
- Firing a regular laser will flash the target gray.
- All other projectiles have no impact on the shaders.
- Fix bug where BattleLog wouldn't update while you were looking at it. This was because the component could only update after it had been removed from the DOM and re-added.
- Fix bug where Vampiric Lasers didn't steal life at all.
- Nerf cloaking. Damage dealt while cloaked is reduced by 40%.
- Rebalance computer levels to favor defenders more. Read more about the balance changes here: https://goo.gl/mBIitq
- Change starting bot color formula. It used to be much brighter and flashier; they're now a bit more subdued.
- Fix several Pixi-related memory leaks.
- Add functionality to "clear all" button. When editing your defense or attacking someone, you can now clear all of your bots. Clicking the button prompts before clearing.
In general: improve UI
- UI changes
- Changed the styling on the landing page (centered items, fixed some paddings, etc.).
- The NewsScroller is now part of the LandingNav component as opposed to being placed in the center of the page.
- I'm now showing a placeholder avatar on the landing page.
- Got rid of a pink border that I'd inexplicably left in.
- Render upgrade-defense controls correctly
- Add icons for in-game defense buttons
In general: improve load times
- Spritesheets are only downloaded when needed. At the login page, that means I only have to download a few of them so that we can render a random bot image. After you've logged in, we download all of the remaining spritesheets necessary for playing a game. For some quick stats, you previously had to download ~5MB before the login UI would even show. Now, you only have to download 2 MB for the UI to show, and after logging in, an additional 1 MB needs to be downloaded. The 2 MB that you're NOT downloading is spritesheets that just never show up in the game yet (they're for detailed bot images, and I'll eventually show them in the blueprint/store UIs).
- Fix bug with unranked matches. Previously, I didn't allow you to play a ranked match against someone who you played against in the last 24 hours regardless of whether that last match was ranked or unranked. This meant that if you played a number of games every day equal to the number of possible defenders that you could never earn Botcoin by attacking again (unless more people signed up for the game) because all matches would be considered unranked after the first day, and playing any match would prevent you from getting ranked matches. I fixed this for now by only preventing you from playing against players when you recently played a RANKED match against them.
- Add images for some hardware in the store.
- Fix bug where bot icons in the UI would be stretched.
In general: bug fixes
- Fix bug where replays wouldn't save. I'm not sure about the extent of this bug because it was due to sloppy coding and bad eslint rules, but one definite repro was when you won a match in a single phase; it wouldn't produce a replay at all. I corrected the logic and order of statements to fix this bug.
- Fix bug in returning battle log. I wasn't doing an "orderBy" clause, so I was just fetching 20 random matches instead of the latest 20 matches.
- Fix 47-year-old defense bug. I'm no longer showing that you updated your defense if you never updated it.
- Sort Battle Log chronologically. This is still a bit weird because some entries are based on UTC and some are based on your local timezone.
- Include attack Botcoin earned in Battle Log. Clicking a BotcoinLogEntry will now show you how much you earned as an attacker in that particular day.
- Fix bug where Botcoin roll-ups were always today. I was using an undefined variable, so it would always make a new Moment which used today as the default value.
- Fix bug around Acceleration Missiles. I was applying the cooldown of Acceleration Missiles to non-missiles actions, e.g. moving randomly without ever firing missiles would be very slow.
In general: lots of improvements!
- This version took so long to produce because I refactored a bunch of database tables. This won't result in many visible differences (the ones that are present have been listed below), but it's much nicer from a developer perspective! To accommodate the database refactor, I've reset the entire database, so you'll have to recreate your accounts and scripts.
- Add Acceleration Missiles. Consecutively firing these missiles lowers their cooldown. Performing other actions resets their cooldown.
- Battle Log improvements
- Explicitly state when matches are canceled
- Show Botcoin earnings for the last few days in the Battle Log
- Show when you last edited your defense in the Battle Log
- No longer show the "Replay" button in the Battle Log on the client when there's no replay associated. There's a special message based on what the outcome of the match was (e.g. forfeit vs. canceling).
- Start only 1 game server instance instead of 2. This may cut down on the number of times bots hit the code execution cooldown since the servers are one-core machines anyway.
- Increase allowed script lengths.
- Allowed Blockly went from 15000 characters to 30000
- Warn user on navigating away with unsaved changes. This should help stop people from accidentally hitting the "back" button on their mouse and losing all of their script edits.
- Start BlueprintInfoPanel on right side of screen. Note: this UI eventually won't exist, but for now, it may as well not be obscured by the Blueprint Selector.
- Fix replay-related bugs
- When forfeiting during phase 0 or when canceling a game due to upgrading game versions, a replay will no longer be created. Previously, I'd created one with a null journal, so it only served to fill up your replay slots for no reason.
In general: rework incentive system for defenders.
- Change Botcoin incentive system for defenders. Previously, wins/losses as a defender would translate into a daily Botcoin payout or removal based on how well you did (and this value was clamped between a range like [-10, +25]). Now, there's no monetary penalty for losing, and every time you win, you immediately get a certain amount of Botcoin. The UI is not all there yet for this feature, so there's no easy way to know how much Botcoin you're earning through defending now.
- Address confusion around placement stats. Previously, if you were allowed to place 10 bots in the game and up to four per phase and you placed four in the first two phases, then the final phase would say "you've placed 0 of 4 bots in this phase" even though you were only allowed to place two. This confused players. I've changed it so that the last phase will only tell you how many you have remaining ("0 of 2" in this case).
- Color defense and attack buttons on News page.
- Fix replay issue. I'm now saving computer_level directly into the replay so that I can restore it when you try to watch it.
In general: handled more Alpha feedback.
- Buff defenders by giving +1 bot to people with computer levels from 2 to 5 (inclusive). Note: you have to edit your defense and add these bots manually; you'll still be in the valid pool of defenders even if you're not using the maximum number of bots.
- Nerf Melee. It used to do 400/475/550 damage, now it does 350/450/550 damage so that the lower levels are slightly less powerful.
- Add/modify several user-accessible APIs
reduceEntities: this takes in an array of entities and reduces them to the total amount of missing life that they have. In the future, we could expose more options than just "missing life".
count): this is simply an alias to Lodash's
_.sizefunction. It's used to count how many elements are in an array or object.
getLife: you are allowed to get the life values of enemies as well as allies.
findEntitiesnow takes a third parameter to say whether the bot finding the entities can be returned if it matches the search parameters.
findEntitiesInRange: this is essentially the
findEntitiesfunction but with a
- Added a snippet for Area Repair that finds all friendly bots within 3 tiles and checks if the total amount of missing life is high enough to call repair().
- Fix a bug where replay sizes were blown way out of proportion when EMP was used during the match.
- Log to the journal when a code-timeout happens. Liquidor had run into a problem on the production server where his bots stopped working and I think it was due to a code timeout getting hit, but I had no way to confirm. Now, journals will contain information about whether it was hit and how long the bot took.
In general: added Area Repair!
- Add Area Repair hardware.
- Animate explosions using new sprites. This was mostly for testing, so you'll still see changes here eventually.
- Fix bug where you were able to save your defense while testing it.
- Fix bug around updating placement stats. When deleting a blueprint, all placed bots corresponding to that blueprint would get deleted, but the placement statistics wouldn't get updated. This could result in the "Commence" button being enabled when it shouldn't have been.
- Make it clearer how to go from Store to News. It used to be in the upper right of the page just floating around and a lot of people were confused. Now it's at the bottom left where "STORE FOOTER CONTENT HERE" used to be.
In general: tackle Alpha feedback.
- Fix bug around quick-edit-script button. This was a bug around the quick-edit-script button when you associated a new or different script with the blueprint.
- Fix another unsaved-changes confirmation problem. Forfeiting a game no longer triggers an "unsaved changes" dialog even if you had unsaved changes. In the case that you DO have unsaved changes, it will now warn you that you'll lose those.
- Fix bugs around the "forfeit" button (also also fixes #15). Disable forfeit button appropriately, either while a match is playing out or once it's done.
- Stop saving password to localStorage. I'm letting the browser save the name/password when logging in or registering.
- Update hardware descriptions. Many of them used to be "Base Artillery Description" or something equally uninformative.
- Rework cooldowns so that they're never negative. Previously, cooldowns in the UI would show as negative sometimes because the "real" cooldown was always (cooldown + duration). This meant that if Shield had a duration of 12 and we wanted the cooldown to be 7 that we'd have to represent the cooldown as -5. Now, we can just say the cooldown is 7, which makes more sense for everyone.
- Fix all target="_blank" links to have a "rel" tag. Without doing this, the page that I open could control Bot Land via redirect or impacting performance.
- Allow EMP('REPAIR') through Blockly. All other EMP variations were already allowed, but Repair wasn't for some reason.
- Clean up settings/logout. I didn't actually implement either of these yet, but now they are consistent in their use of icon+text, and the unimplemented features now pop up an alert telling you that I haven't coded them.
- Add Blockly snippet for activateSensors. This used to only exist in the premade Artillery script.
In general: tackle Alpha feedback.
- Force attackers to use all bots in a game. Note: attackers can still place however many they want per phase as long as it will allow them to use all of their bots over the course of the entire game. For example, if you're allowed to place 2 per phase and 5 for the whole game and you place only a single bot in the first phase, then you should be forced into placing two bots in each subsequent phase so that you can still hit 5 bots total.
- Fix the balancing of testing your own defense:
- When testing your defense on smaller Arena sizes, bots will still be deployed.
- When testing your defense on lower computer levels, fewer AI bots will be deployed.
- Increase max bot and script name lengths from 12 to 25 characters.
- Increase amount of scripts from 8 to 16.
- Differentiate the first 6 computer levels in Arena size (earlier levels are smaller).
- Stop creating a bot for new accounts. I used to make 'BotLad' which had Lasers lv. 3 (and nothing else) on it for users, but I don't think it's helping with anything, so this forces users to make their own bots for defending.
- Unranked matches no longer affect stats. Previously, even unranked matches would result in experience points, num_wins and num_losses getting updated, and also Botcoin payouts. None of those things happen any longer.
- Add link to rankings on the News page. I don't have ranking information in a more consumable way, so as a stop- gap measure, I'm putting a link to the CodePen that maytim made.
- Add confirmations via the new Modal dialog. There was one confirmation already in the game ("are you sure you want to go back to the main menu when you have unsaved changes?"); I converted that to use the new Modal dialog. I added confirmations for deleting a blueprint, deleting a script, and forfeiting a match.
- Fetch battle log more frequently. The battle log is fetched automatically every minute instead of every 5 minutes. Also, it's only done automatically when the page has the focus.
In general: high-priority bug fixes.
- Fix unsaved change confirmation bug. The isDirty flag was not getting reset when we saved your scripts, so the "you have unsaved changes" dialog would pop up all the time.
- Replace window.alert almost everywhere.
- Fix click-handler bug. I doubled the press threshold from 100ms to 200ms because a lot of players were complaining about their "tap" action being interpreted as a "press" action.
- Compress images using pngquant. I'd hacked this together for version 0.1.1, but now I'm doing it properly in version 0.1.2.
- Fix link to EULA and PP.
- Fix GitHub issue Adam13531/BotLand#10. News links now open in new tabs.
In general: handle Alpha feedback
- Balance changes
- Move chips to make them easier to defend. The top- and bottom-most chips have been moved farther to the left so that they're closer to your CPU. This is another effort to improve defenders' win ratios.
- Double life value of all chips
- Require players to place all defense bots. Previously, you were allowed to place any number UP TO the maximum, but you weren't forced to place the maximum. This should make it so that all defenses that players find online will at least have bots in it even if the bots don't do anything.
- Give everyone Steamroller cosmetic set. New accounts will automatically be given all three Steamroller parts. The buy price is set to 0 so that old accounts can benefit too.
- Delete oldest replay when at max. When attempting to save a new replay while you're already at the maximum number of allowed replays, the oldest one is now deleted no matter what. Previously, I tried to delete replays where you'd won over replays where you lost so that you could learn more from the replay, and I also tried to take whether you'd viewed the replay into account. Those rules were a little bit complex and I'm not sure if they made as much sense as sorting chronologically.
- Prevent exporting defense from outside of editing. I think people were accidentally hitting the 'X' key while attacking another player, and because your defense may not have been loaded, I think this led to your defense getting wiped out. I sort of addressed this in a previous bug by requiring that you always have the maximum number of allowed defender bots placed before being able to save, but this should address the cause of the issue instead of a symptom.
- Lower matchmake rate limit from 10s to 2s.
- Apply Google Analytics to most pages. When transitioning between pages, I now call into Google Analytics, that way I capture everything from one code location.
- Stop trying to download wall.png. This was resulting in a 404 even though wall.png wasn't being used.
In general: launch Alpha.
- Stop showing FPS by default.
- Add some news items instead of placeholder text.
- Add Google Analytics for just the main page.
In general: alpha preparation, bug fixes, and some new APIs.
- User-defined code changes:
- Add findEntity API, which is sort of like "findClosestX" but more generic in that it can filter based on [lowest|highest] [life|distance].
- Add APIs that will greatly impact how certain scenarios like repairing bots work: findEntities and filterEntities. findEntities will return all friendly or enemy entities of a specified type. filterEntities will then return a single entity based on up to two filters, e.g. "lowest distance" and then "lowest life".
- Added/removed some Blockly snippets. There are new ones around repairing and many now use the new findEntity API. I removed some premade scripts that were terrible and got rid of a few blocks that are now redundant or irrelevant (e.g. waypoint-related APIs).
- Allow "canTeleport" with no argument. Previously, having no argument meant that you were trying to teleport to an entity that didn't exist. Now, you can just do something like "if (canTeleport()) teleport(x-2,y+2);".
- Prevent players from buying hardware duplicates. When you attempt to purchase hardware (NOT cosmetic items) that you already own, you'll get an error.
- Added a button for filing a bug on GitHub.
- Disable salvage packs and pseudo money for Alpha.
- Disable selling items for the sake of Alpha.
- Remove debug API to grant Botcoin; clicking the credit-card icon no longer sets your Botcoin to 10000.
- Rebalance for Alpha. Adjusted almost all progression to make it MUCH faster.
- Melee lv. 2 damage up from 450 to 475.
- Teleport cooldown down from 15 turns to 10.
- All Zapper levels' damage up 50 (to 250/300/350).
- Inferno Zapper levels buffed across the board (in either fire duration or direct damage).
- Bug fixes:
- Fix bug around forfeiting a game.
- Fix bug around not being able to upgrade. I just had pointer-events set to 'none' on the parent div of the Upgrade button.
- Fix bug where on-fire sprite never went away. When igniting a bot, it would appear to be on fire forever despite not actually being on fire.
- Fix bug around dragging bots on mobile. I'd only had a mouse-event handler for updating the coordinates of the bot that you're dragging. I added a touch handler for it.
- Fix bugs around dragging BlueprintInfoPanel. There was a problem where the remove/edit/close buttons inside of the info panel did not work with touch events. This is due to this issue: https://github.com/taye/interact.js/issues/371
- Delete artillery shells at the end of a phase, Previously, artillery shells would still move toward their target and then sort of just hover there because nothing ever told them to explode. That was confusing for players, so I'm now deleting them when the phase ends.
In general: rendering performance improvements.
- Upgraded to Pixi v4. This should give better rendering performance, especially on devices.
- Added a debug button on the News page to toggle the FPS display. This setting is not persistent. Also, FPS is shown by default.
- Fix several small bugs
- There was a bug where if you showed the cross-hairs to place a bot over a tile that was VERY far out-of-bounds, the cross-hairs would fade to an alpha of 0, and then I think it would go negative or something, which would cause it to render with full opacity.
- I am now rendering the preview entity (and the little 'X' indicator) even when the entity is out-of-bounds, that way you can tell that it can't be placed there.
In general: lazily load images.
- Lazily load images in store. Previously, when you clicked the "Cosmetics" tab in the store, there was a long load time for two reasons: base64 data had to be generated, and then it had to be put in the DOM. However, this was done on every single item regardless of whether it was currently in-view in the DOM. I'm now using react-lazy-load, which means that we're only loading images for items that are in-view.
In general: bug fixes.
- Fix bug around incorrect placement stats. Due to incorrectly ordered code, I was always updating the amount of bots placed as an attacker for the entire game to 0. This meant that you were only limited by how many you could place in a single phase. That in itself led to another bug where you could only place 11 bots total in groups of up to 4, so players online would place 4, then 4, then try to place 4 again, and the client wouldn't stop them, but the server would and they'd have no explanation as to why.
- Fix CSS bug with the BlueprintSelector where changing between blueprints and chips would sometimes change the width of the panel which would push the canvas to the side (which would show some blank space off to the right).
- Fix bug around the blueprint info panel remaining open. If you went into Replay Mode as an attacker for a phase that you'd lost and selected one of your own bots (which was guaranteed to not exist at the end of the replay thanks to your losing), then exiting the replay would keep the info panel open, and what's more is that the edit/remove buttons would be enabled for a bot that no longer exists. That led to its own weird bugs. I've fixed them all by just closing the info panel at the end of a replay if the bot no longer exists.
- Fix a bug where blueprints disappear. When you would create a new script on an attack blueprint from the quick-edit-script button on the blueprint's icon, it would seemingly delete the blueprint. What was actually happening is that the blueprint would be categorized as a defense blueprint despite that you were attacking, so it wouldn't be visible. I've fixed this.
- Switch back to official Interact.js. If you end up with any weird mouse-drag issues (i.e. NOT mouse-click issues), then it's probably a result of this and you should report it to me.
- Remove outline on canvas. This was a subtle bug on Firefox.
In general: minor client-side improvements.
- Allow surrendering a game. The only weird thing I did here is that if you forfeit before playing even a single phase, the game will still be saved as a replay for the defender, but when they try to watch it, it will do a window.alert telling them that there is no associated replay data.
- When playing an unranked match, the client will now tell you that they're unranked before you play them. Unranked matches were already working on the server (in that they didn't affect your rating on completion), but there was no indication that you were playing in an unranked match until the very end of it on the client.
In general: unranked matches.
- Unranked matches are now possible. Previously, you could be paired up with someone you'd already played against, but all it would do is print a message on the Account Server saying that the match should be unranked. Now, unranked matches will not affect your Glicko scores. Unfortunately, I haven't updated the UI yet for this, so there's no indication that you're playing an unranked match (except for at the end of the match when it says that your rating hasn't changed).
- Fixed a few matchmaking issues. Matches WOULD be better if there were more players, but you probably won't notice any differences until there are >1000 players in Bot Land.
In general: force players into finishing games (see below).
- You are now forced to play against the defender you are matched with. Previously, you could cancel out of the match or refresh the page and the Account Server wouldn't remember who you were playing against. Now, canceling or refreshing will re-download the game that you were playing.
- Show preview images of cosmetic items in store
- Stop rendering waypoints. This was the green square that would show up at the upper left of the Arena when you selected a defending bot. This was confusing people since waypoints aren't fully supported in the game right now.
In general: graphics.
- Show tile grid (by pressing 'T') even while a game is playing out. Note that this still doesn't work across games, so you have to enable it every time you enter the Arena.
- Add new graphics: landmines, explosions, artillery shell, missile, reflect, "nope.png" (for showing that you can't place a bot somewhere).
- Added 9 new bot families: Air, Drill, Ladybug, Mantis, Armadillo, Horse, Eye, Camera, Wrecking Ball. Also, I renamed these sprites:
- Omega --> Default
- Geode --> Earth
- V8 --> Engine
- Blacksmith --> Fire
- Fix quick-edit-script button. Previously, I'd temporarily disabled the quick-edit-script button when you didn't have a script on a blueprint due to a bug where it couldn't associated the newly created script with the existing blueprint. I've just fixed that bug in this commit.
- Fix bug around preview entity. Fixed a bug where the preview entity and crosshair wouldn't show up after exiting replay mode (as an attacker) even though you had a selected blueprint.
In general: artwork!
- Added artwork for 7 new bots: Battery, Bat, Crabby, Jaguar, Jackhammer, Scorpion, and Steamroller.
- Draw a "crosshair" of tiles highlighting the bot that you're about to place in the Arena.
- Information tables now show in the store and in your hardware inventory (when a piece of hardware is selected) that will describe the stats of each hardware. This isn't polished yet, so the information isn't displayed in the friendliest way.
- Allow for pressing T to toggle the tile grid.
- Lower HammerJS movement threshold from 100 to 30. This should make it more natural to pan around the Arena.
- Always show amount of chips placeable regardless of whether the panel is "expanded".
- Fix bug where number of wins showed as undefined when you lost a game.
In general: tilesets and bugs.
- Added support for tilesets rather than a blue checkerboard Arena. The default tileset is the computer-y tileset that everyone will have for now. It is always randomized even during play sessions, but eventually that won't be the case.
- Sockets are now rendered underneath chips.
- Categorize hardware only as ATTACK or DEFENSE, not ATK/DEF/UTIL.
- Show BlueprintInfoPanel higher than replay text.
- Style cursor correctly for some Close buttons.
- When dragging a hardware or cosmetic slot off of a loadout, it will now highlight the background color in red to indicate that it will be deleted.
- Fix bug around updating attacker placement stats. The repro steps for the bug were as follows:
- Attack someone.
- Play a phase.
- When it's done, place a bot. The Commence button will be enabled.
- Click "replay".
- Replay the last phase.
- Exit the replay mode.
- After running these steps, the Commence button would no longer be enabled. This is now fixed.
- Show replay arrow when finished watching replay. To clarify: when you finished watching the last phase in a replay, it used to show you the "Play" button, but clicking it didn't do anything. Now, it will show you the "Replay" button (which is a circular arrow), and clicking it will play the first phase in the replay.
- Fix bugs around artillery shells not working.
- Fix various image issues
- Render percent completion for replays. The UI for this isn't great, but it's at least a way of letting users know how far along a replay they are (which is especially helpful for stalemate conditions that take a while to play out).
- Prevent editing/creating blueprints while testing your defense.
- Fix replay bug where you could still remove bots.
- Fix bug where replay button wasn't disabled. It is now disabled as soon as you press Commence rather than once the server has responded.
- When you enter replay mode as an attacker, the cancel button now exits replay mode instead of exiting the attack entirely.
- Fixed a bug where canceling out of testing a defense wouldn't just stop the test, it would go back to the main menu.
- Fixed a bug where canceling out of a defense while testing would leave your temporary blueprints on the client. Attempting to later use these blueprints would fail because they didn't exist on the server.
- Fixed a bug where sockets would stop showing up after testing your defense. This was because the game thought we were in the RESULTS phase.
- Fix HammerJS thresholds. There was a bug where sometimes users would click and it wouldn't get registered as a click. I'm assuming that what was really happening is that it was getting registered as a pan event instead of a tap, so users couldn't place bots easily. HiDeo gave me some HammerJS threshold code that could rectify this.
In general: added experience/Botcoin progression.
- You now earn experience points when you win as an attacker (+50) or a defender (+250). Only 1000 can be earned per day.
- You can level up your computer when you get enough experience points. Given that it takes 16 days to earn enough experience points to level up, testing this won't really be possible yet.
- You now earn Botcoin every time you win an attack: +20, +15, +10, +8, +7, and then no reward for all subsequent wins of the day.
- You can now earn or lose Botcoin every time you defend. When you lose a defense, you lose 10 Botcoin, and when you win, you earn 20 Botcoin. The payout only happens once a day (based on midnight GMT), and it can't go below -50 or above 50.
- New accounts start with Lasers, Missiles, Artillery, Melee, Thrusters, Shield, and Reflect instead of a much larger inventory. There are also no duplicates granted any longer.
- Clicking the credit-card icon in the upper left of the News page will set a user's Botcoin to 10000. This is just a debug API that I'll disable eventually.
In general: added replay controls.
- Added better replay controls. You can now jump to a specific phase in a replay and you can slow down and speed up the replay rate.
- At any point where a game is playing out, you can press - or + on your keyboard (or numpad) to adjust the replay speed. This affects all game modes, so increasing the speed while playing out an attack will also have it be increased when defending.
- Allow for pressing space to pause/play replay.
- Allow for replaying while attacking. After attacking for at least one phase, a "Replay" button will appear that you can use to enter a pseudo Replay Mode that will allow you to see what happened so far during the game.
- Fix bug around exiting replay while it's playing. When you were watching a replay while you're attacking and you try to exit, it would cause an error. This was affecting a lot of people.
- Fixed a bug where you couldn't test your defense.
- There's currently a bug around the quick-edit-script button on a blueprint while in a game if the blueprint doesn't already have a script. For now, I just put in a window.alert telling you that the button doesn't work in that case.
- Fix bug where around replays and explosions. Explosions previously didn't take the replay speed into account, so they would either last for a really long time or a really short time. I also ensure that they at least get to render for one frame before "dying".
In general: fix bugs.
- Fix bug around canceling an attack. If you commenced an attack and then canceled (e.g. because it was taking too long), it wouldn't stop the journal from replaying, and that would cause huge bugs that people ran into constantly.
- Fix bug around on-fire entities. Entities that were ignited will still be on fire in later phases if the fire duration doesn't run out. There was a render bug on the client side with creating on-fire entities and a bug on the server with not saving the fire's duration. Both are fixed.
- Show preview entity after phase ends. This bug at least used to happen when you would lose an attack phase; the preview entity would just not show on the mouse until you'd clicked.
- Add button to the match results panel after finishing an attack that goes to the main menu.
- Fix bugs around text consuming mouse events. The replay text ("replaying phase X out of Y") and the placement stats ("X bots placed out of Y") now no longer consume mouse events.
- Fix bug where you couldn't create new scripts. The ScriptLibraryDropdown has a "new script" button that didn't actually work when you were already editing a script.
- Fix bug where EULA checkbox is checked by default on play.bot.land.
- Fix bug around unsaved script changes. Attempting to cancel out of an attack or a defense where you haven't saved changes made to scripts will now warn you that you'll lose the changes.
In general: fix bugs.
- Fix bug around selecting scripts from dropdown. Previously, selecting a script from the ScriptLibraryDropdown would not fetch code for the newly selected script, so it couldn't update the Blockly canvas. Now it can update the canvas, but it involves flickering the code window so that Blockly is forced to update. 😢
- Canceling out of a match by pressing 'C' no longer crashes the game.
- Prevented default event handlers on key events. This mostly affected users with the AZERTY layout because '4' is really apostrophe which triggers Quick Find in Firefox.
- Fix bug around attacking repeatedly. Previously, double-clicking the attack button with any sort of latency would cause an error because the Account Server would try finding multiple matches for you. Now, the Attack button is essentially disabled as soon as you click it until you get a response.
- Fix bug where you cannot place bots. This most commonly occurred after you'd tested your defense.
- Fix severe bug around leaking user code. This was a combination of a debug feature (being able to watch any user's replay) and a mistake (injecting code into entities in the replay for no reason). Thanks for finding this, IAMABananaAMAA!
- Hot-fixed an issue where the preview entity would try to render at the end of a match despite internal issues. This caused screen-flickering and multiple exceptions to be thrown.
In general: quality-of-life improvements.
- Improved experience for dragging bots. When dragging a bot around the Arena, attempting to relocate it to an invalid location will simply do nothing (as opposed to deleting the bot like it did before). Dragging it outside of the Arena will still delete the bot (so this is unchanged). Dragging it to an empty location will still relocate the bot, but this code is now better. Finally, dragging it to another one of your bots will swap the two bots (instead of deleting both of them).
- When dragging a blueprint from the BlueprintSelector or when dragging an existing bot around the Arena, you will now see the correct preview image at your cursor.
- When you can't place a bot due to an invalid tile or an obstruction that you're not allowed/able to move, the preview image of the bot will now show with an explosion graphic over it. Previously, this graphic only showed up when attempting to place a bot on the CPU.
- Fixed a bug where the preview image of the bot that you'd place would show while playing out a game or replaying a game.
- Stopped selecting blueprints by default when you enter a game. Note that by not having a blueprint selected, you will be in "view mode", meaning that by clicking an entity in the Arena, you'll see details about it.
- Allow for pressing escape to close UI elements: you can now close the BlueprintInfoPanel, the StructureInfoPanel, and deselect your blueprint all via escape.
- Attempting to place a bot on something like the CPU used to place the bot on the nearest available tile. I don't think that's the intention of the user, so I made it just not place a bot at all in those cases.
- Fix bug in Firefox where you could drag an tag from BlueprintSelector which led to weird behavior with a preview image getting "stuck" on your mouse.
In general: quality-of-life improvements.
- A preview of the blueprint that you have selected is now rendered in the Arena.
- When a blueprint is selected and you click one of your own bots, it will remove the existing bot if the blueprints are the same type, and it will replace the existing bot if the blueprints are different.
- Added a quick-edit-script button to the bottom left of each blueprint icon in the side bar
- Deselecting blueprints
- Pressing escape will now deselect all blueprints. Remember that the number keys on your keyboard will select blueprints.
- Clicking a selected blueprint will deselect it instead of opening up the info panel.
- When you don't have a blueprint selected, clicking an entity in the Arena will show you details about that entity.
- Dragging a bot into the Arena from your side bar will only show an image of the bot now instead of all of the DOM elements that form that bot (e.g. its background, any buttons, etc.)
In general: fix bugs.
- Allow for deleting structures from the info tooltip. When you click a chip, a "Delete" button will show up as long as it's your chip and you're not playing back a match.
- Render lifebars for chips and CPU in tooltip.
- Clicking the CPU now shows you the name, description, and life of it.
- Fix bug where the Structure Info Panel wasn't showing in Firefox/Safari at all.
- Make chips panel scrollable.
- Fix bug around z-index of dragged blueprint. Previously, dragging a blueprint would show the dragged image beneath the Blueprint Selector.
In general: add better support for chips and fix bugs.
- You can now add chips to your defense through the UI. Make sure to place them in the white sockets in the Arena. I believe you're allowed to place 2 chips with the way that I've set up the server. I do not claim that there's any balance here yet!
- Clicking chips in the Arena will show you what they do via a tooltip. Clicking an empty space in the Arena will hide this tooltip. You can also press-and-drag to relocate chips or to remove them (by dragging off of the Arena entirely).
- The amount of time you have to press before it's registered is now 100 ms (down from 250 ms), so it should feel smoother to drag bots/chips around the Arena.
- Fix bugs where certain elements like replay controls or the blueprint info panel did not appear on Firefox or Safari.
- Fixed a bug where press-and-drag on a bot would sometimes leave the bot on the mouse. This is technically still possible but it shouldn't be hard to get out of this state.
- Fix bug around watching others' replays. It would try to mark the replay as "viewed" despite that it wasn't your replay.
- A special page is now shown when WebGL is not enabled in your browser.
- Fixed a crazy code-execution bug that Ovexator had found. I won't write the full details here, but you probably never would have hit this bug anyway.
In general: add very basic support for chips.
- You will see the letter 'S' in your defense now. These represent sockets in which you can place chips. The only chip in the game right now is the Regeneration Chip, which provides +15 regen per turn for all of the defending bots regardless of their distance to the chip. The attacker can destroy these chips to prevent the buff from being provided.
- Prevent Blockly flyout from autoclosing
- When you click a blueprint in the Blueprint Selector, bots of the same blueprint will now be highlighted in the Arena.
- Fix bug for cosmetics inventory scroll spy where clicking "head", "torso", or "foot" did not scroll the appropriate section into view.
In general: more UI!
- All attacker bots are now horizontally flipped.
- Overhauled the Blueprint Selector. This is the bar on the left that shows as you're defending or attacking.
- You can now select ANY bot or blueprint to find details about it. Previously, you could only select the opponent's bots to see their details, and that used to happen in a sliding panel on the left.
- You can now relocate deployed bots in the Arena by long-pressing them and then dragging them around. By dragging them into the gray area in the Arena, you can remove them (you can also remove them by using the info panel that pops up).
- You can no longer place bots by clicking invalid areas in the Arena. This used to be possible and it would just clamp the coordinates to valid ones. This was frustrating for some players who would accidentally place an extra bot when attempting to hit the "Commence" button while attacking.
- Fixed a bug where bots moving too quickly appeared to stutter.
In general: more UI!
- There is now UI that shows before you attack someone that lets you know their name, ratings, and when they last updated their defense.
- Skill-rating details now show in the battle log. You will probably not be able to see the attacker's information here, but for now, I thought it might be interesting.
- There is now UI that shows at the end of a match. This tells you whether you won or lost, and it also tells you how your ratings changed.
- I'm now tracking the overall number of wins/losses you have in the database. These are tracked separately for attacking/defending.
In general: bug fixes.
- You are now warned when you try to cancel out of a defense or an attack and you have unsaved changes to blueprints or scripts.
- Address performance issue with WebGL hopefully.
- Fix bug with bots getting 2x turns. There was a problem earlier where bots would get twice as many turns as they should have. This is what resulted in bots stuttering around the Arena.
- Add debug API for getting player rankings. Go to http://acct.bot.land:8080/rankings or http://acct.bot.land:8080/rankings?orderByAttackRank - don't count on this API staying in the game; it's just a stop-gap so that Adam doesn't have to keep looking through the database manually.
- Wait for projectiles to settle after replays. I'm now waiting a little bit of time so that a GIF like this will no longer be as confusing in the future: http://i.imgur.com/FVplDPk.gif
- I had to wipe out all existing replays due to a small infrastructure change (which should be completely opaque to you, so I won't describe it here).
- Fixed a bug where pressing the "play" button when a replay is completely finished would crash the game.
- Fix bug with using the wrong kind of blueprint. Previously, when you entered Attack Mode, you could have a defense blueprint selected without realizing it. This led to some confusion because you would place a bot that seemingly didn't correspond to your blueprints.
- New replays are now marked as new. As soon as you log in, they're no longer marked as new in the database, but they're considered to be new on the client until you view them.
- Fixed a bug where you could only have one less than the maximum number of replays saved. This means you can now have the intended 10 replays instead of 9.
- Watched replays are prioritized for deletion over unwatched replays.
In general: bug fixes and feedback items.
- Show atk/def ratings on News page.
- Allow client to watch any replay even if you're not the defender in it. Also, all users are authorized to watch any replay for now.
- Change deploy location to play.bot.land instead of a crazy S3 URL.
- Disallow placing attacker bots close to CPU. There's also a red highlight over invalid tiles.
- Change default bot attack priority from towers --> CPU --> bots to bots --> towers --> CPU.
- Fix bugs with Interact.js. You should no longer see the setEventXY bug. There was also a bug where if you started dragging the mouse OUTSIDE of a draggable element and then moved the mouse over the draggable element that it would start dragging that element.
- Increase max password length from 64 chars to 128.
- Show selected blueprint name in in-game UI.
- Make BlueprintSelector scrollable.
- Disable Create button for blueprints when at max.
- Remove 'L' hotkey to fetch users with defenses.
In general: very minor fixes.
- Updated interact.js. This should prevent breaks due to drag-and-drop, but there will probably still be some bugs around it because I'm using an unstable version. Please report any drag-and-drop bugs.
- Fix bug: canceling out of a replay should no longer break the game.
- Underscores are now allowed in usernames.
- The maximum amount of time that code can run for has been decreased from 75 ms to 10 ms. When you hit this timeout, your bot will wait for ~10 turns (up from ~4 turns) before trying to run code again. This should punish infinite loops and bad code much more than it did.
In general: fixed a bunch of bugs.
- Hopefully fixed a bug where placing/unplacing bots rapidly didn't feel natural. This was because dragging the mouse slightly while tapping was not considered as a click.
- Removed several sliding panels from the in-game UI that weren't functional and only served to confuse users.
- You can no longer edit your blueprints from outside of a game (via the "Blueprints" page). You now have to do so through the context of defending or attacking. This was to address confusion around trying to create attack blueprints outside of a game (which was impossible).
- Fix bug: the Commence button is disabled after clicking it so that you can no longer press it while an attack is playing out.
- Fix bug: attacker positions are now reset after a stalemate.
- Fix bug: the controls for editing your defense no longer show when you're playing a replay.
- Defenders and attackers are now limited as to how many bots they can place.
- Everyone starts with a computer level of 4. This means that defenders can have 10 bots and attackers can have 11 bots (in groups of up to 4 per phase).