This bot is pretty good at Watcher | Slay the Spire

Поделиться
HTML-код
  • Опубликовано: 7 сен 2024
  • 🏃The final character is here. Logan and Robert sit down to watch a run and provide casual commentary.
    If you're feeling a bit lost, check out the introduction video to the bot here: • We made a bot! | Slay ...
    🗣️ If you’ve got questions or comments, let us know!
    👨‍💻 The bot is written in Python, uses the CommunicationMod by ForgottenArbiter, and it only knows the same information a human would!

Комментарии • 76

  • @CairoShane
    @CairoShane Месяц назад +14

    I like that at 1:28 in shop the bot just goes “fuck no, i don’t want to think hard for that” and remove the conjurblade

  • @snuffmeister6720
    @snuffmeister6720 Месяц назад +106

    yeah,thats how i woulda done it

    • @BottledAI
      @BottledAI  Месяц назад +16

      Better watch out then! AI is coming for your gaming 👀

    • @Jengamouse
      @Jengamouse Месяц назад +11

      +2

    • @dasWombat01
      @dasWombat01 Месяц назад +14

      Egg references everywhere

    • @tomekk.1889
      @tomekk.1889 Месяц назад

      ​@@BottledAIlmao

  • @Icedragon481
    @Icedragon481 Месяц назад +20

    I especially enjoyed seeing the bot pause to run through stuff at certain points, that was pretty cool to imagine it thinking haha

    • @BottledAI
      @BottledAI  Месяц назад +3

      Haha if you like it when the bot takes a long time to calculate, consider checking out this uncommented earlier vid: ruclips.net/video/FmwfSu4Er1M/видео.htmlsi=iGCzVCz8yC1GiGz9
      Lots of playable cards in hand make for a long calculation time 😄

  • @toddbutler7558
    @toddbutler7558 Месяц назад +35

    This is an extremely impressive run. I was thinking about how it was probably better than me at this character and then you talked about it's current win rate, this bot is absolutely better then I am.

    • @BottledAI
      @BottledAI  Месяц назад +4

      Thank you for your kind words!

  • @mattmatt7294
    @mattmatt7294 Месяц назад +5

    Super cool to see how far the bot has come, especially with how much more complex Watcher’s card pool is. Hoping it eventually gets a way to consistently get to act 4.

    • @BottledAI
      @BottledAI  Месяц назад

      Yeah! Personally I like watching Watcher the best, because she gets to do the most complex turns so far.
      Heart kill remains an ambition to achieve at some point. 😄

  • @tomekk.1889
    @tomekk.1889 Месяц назад +19

    I'd love to see even a snippet of the code. This is fascinating

    • @BottledAI
      @BottledAI  Месяц назад +15

      Happy to hear it! Our next step will be to make it Open Source, and then you can see allll the code!

  • @ZokiPhantom
    @ZokiPhantom Месяц назад +9

    Commenting for support, so you can get yourselves better audio setups. Great job on the bot though! 👏🎉

    • @BottledAI
      @BottledAI  Месяц назад +7

      We will get good mics so that we can pivot to ASMR if the whole bot thing doesn’t work out!

    • @Damnschonbelegt
      @Damnschonbelegt Месяц назад +1

      Agreeing with this guy.

  • @tinycatfriend
    @tinycatfriend Месяц назад +2

    this is amazing!! so glad the algorithm picked it up, you deserve way more eyes on this project

  • @oil_moon
    @oil_moon Месяц назад +9

    Really fascinating stuff, especially considering just how many variables need to be considered to play StS optimally!

    • @BottledAI
      @BottledAI  Месяц назад +4

      Thanks! And yeah uh... the codebase has grown quite a bit since our first version. 🙈

    • @michaeletzkorn
      @michaeletzkorn Месяц назад

      I figured in post AlpgaGo era of AI, we'd be more accustomed to AI beating games in spite of large parameter space.

    • @henrymccoy2306
      @henrymccoy2306 Месяц назад

      @@michaeletzkorn AlphaGo cost around $40 million dollars, took multiple years, was made for an established game with very few parameters and had around 30 engineers working on it with the aid of a professional Go player.
      By few parameters I mean it makes the same single decision a turn and makes around 40 decisions a game. In STS you do that a dozen times a floor and it's done in a dozen different ways. The decision tree is several dimensions more complicated.
      AlphaGo is an outlier not the norm. This bot was made with none of that lmao

  • @mx_sunny
    @mx_sunny Месяц назад +11

    how does this have so few interactions? this is amazing

    • @BottledAI
      @BottledAI  Месяц назад +6

      Thank you! Glad you like it! 🙏

  • @roodog1
    @roodog1 Месяц назад +3

    This is so cool! My friend and I are trying to create our own "combat solver" (if that's possible lmao (it's probably not)) in python as a way for me to learn python. What were ending up doing is basically recreating spire in python and then simulating combats versus the enemies and calculating average damage taken and the best and worst cases. Of course we're starting with the most complicated class, watcher (she's my favorite character) and it's cool to see how you guys are basically telling it how to play combats, and communicate with the game versus us where we are trying to collect information about combats and doing it all outside the game! I do have a quick final question. About how long has this whole process taken you?
    Can't wait to see even more progress on making your bot better! Earned a sub!

    • @BottledAI
      @BottledAI  Месяц назад +1

      Cool! Consider publishing your results when you’ve got them. 😄
      How long it has taken:
      Uh hard to say. Our first discussions about it were in September 2022. We put some time into it then for several weeks, then picked up work again in 2023 for a couple months, and again this year the same. Not exactly pulling full 40-hour work weeks on it though, 😛 it’s a side project. And for the last two stints, most of the time when we are working on it, it’s only one person putting in significant time usually.
      Overall though, I can say we put quite a bit of time into this! 😄

  • @moartems5076
    @moartems5076 Месяц назад +22

    Impressive, but those skipped scrawls and vaults pain me somewhat.

    • @BottledAI
      @BottledAI  Месяц назад +17

      Heheh, fair.
      Vault specifically is actually one of the ~4 Watcher cards we didn’t implement yet. The issue was I looked at the list of interactions it has and noped out of there. We will get it in there at some point. 🙏
      In case you were curious, the other Watcher cards the bot doesn’t understand yet are Omniscience, Meditate, and Foreign Influence. 😄

    • @SPZ-gv2on
      @SPZ-gv2on Месяц назад +6

      I'm interested to see the results of implemnting those, meditate especially as it's quite a strong card imo.

    • @BottledAI
      @BottledAI  Месяц назад +9

      Agreed!
      Let me know if you’ve got an idea for generalizing how and when the bot should use the “select card to retain” part of it.
      Though… now that I’m thinking about it, I guess just selecting basically _any_ card is already valuable and gives more options for next turn, so we could just go with that and not worry too much.
      Oh! That’s actually exactly what the bot would choose to do once we teach it the choose-to-retain mechanic.
      Nice! Thank you for sending me on this journey.

    • @derp777_
      @derp777_ Месяц назад

      @@BottledAIyou could choose which cards to retain by either assigning value to individual cards based on how good they are in isolation assuming they are drawn for free, or you could assign value based on how each card can interact with other cards that might be in the character’s hand next turn (weighted by how likely those cards are to be drawn, by looking at the draw pile and discard pile and such). the interactions there probably go too deep to really solve, but i think it would be an interesting challenge to figure out how to look just 1 turn forward (which, if you do really well, might even be able to be made recursive and think further ahead? the breadth would get really wide though)

  • @luisdavila3058
    @luisdavila3058 17 дней назад +1

    Can’t wait for the next one, this one is very impressive.

  • @jaredw.7712
    @jaredw.7712 Месяц назад

    Excellent work gentlemen. I have spent some time trying to create an AI for a two player card game that I like that I've been trying to digitize called "Exceed: Fighting System" and it's been very difficult b/c there are so many complex interactions to boil down into if/else statements and whatnot. I'm saying this to let you know that I understand a little about the steep uphill climb you've had to face to get to this point and what you've accomplished is truly remarkable. I imagine at this point the bot plays better than either of you do, which is a really amazing feat as well. (My win rate is somewhere around 8%)

    • @BottledAI
      @BottledAI  Месяц назад

      Thank you! We hope your project goes well.
      In terms of our skill compared to the bot’s: the bot is faster than we are for some kinds of battle turns, and will sometimes see more efficient single battle turns than we would. However, several other areas are still quite behind a strong human player. For example its card picking, potion usage, and mid-term battle decision-making are all still quite limited! For now we both outperform the bot, and this will likely stay that way for a long time still. 🥲

  • @tay7931
    @tay7931 Месяц назад

    and they said it couldnt be done, amazing work!

    • @BottledAI
      @BottledAI  Месяц назад

      Thank you!! It has been good fun.

  • @VegasTheOrange
    @VegasTheOrange Месяц назад +1

    This is extremely impressive!

    • @BottledAI
      @BottledAI  Месяц назад

      Thank you! We had quite a bit of fun making it.

  • @jackcook3471
    @jackcook3471 Месяц назад +1

    The entropic brew for 2 at 8:15 hurt to watch

    • @BottledAI
      @BottledAI  Месяц назад

      I feel you. We need to improve the panic potion chugging at some point. 😄

    • @jackcook3471
      @jackcook3471 Месяц назад +1

      @@BottledAI Really cool bot and video btw! I was very impressed with it, you guys did a great job. I just thought that part was really funny

  • @Ardaaa_a
    @Ardaaa_a Месяц назад +5

    I’d like to see this aı vs hearth fight

    • @BottledAI
      @BottledAI  Месяц назад +2

      Would be cool!
      We currently can’t yet recognize the burning Elite on the map, which makes it hard to go for the Heart kill.

  • @AvangionQ
    @AvangionQ Месяц назад

    3:25 Please train the bot to use card creation potions BEFORE using blessing of the forge potion 🔨
    7:32 Did this bot just skip Scrawl?! WTAF?! Scrawl is the Watcher's best card. 🤦

    • @BottledAI
      @BottledAI  Месяц назад +1

      Potions: Yeah potion handling is currently still very barebones. 😄 The bot just yolo panic chugs everything when some conditions are met (like seeing
      a boss) and doesn’t actually know yet what most potions do. We will improve this at some stage!
      Scrawl: We had some other people upset about this one too, sounds like we should adjust it. 😄

  • @Chris-rz3wq
    @Chris-rz3wq 22 дня назад +2

    do you allow your bot to take runic dome, considering real players *do* memorise encounters and *could* calculate exact incoming damage given buffs/debuffs/strength etc?

    • @BottledAI
      @BottledAI  21 день назад +1

      Not currently, because we would have to give it the enemy patterns to store. It doesn’t know any of them currently - so when it’s got Runic Dome it just assumes there’s no damage incoming and goes ham. 😄

  • @vexave
    @vexave Месяц назад +6

    commenting for support

  • @sethdeneroff6490
    @sethdeneroff6490 Месяц назад +1

    Was pointed your way by folks in the STS community. Is your bot a rules based agent? Or in other words, did your bot learn from training data directly or did you program rules in to teach it how to play in the general case?
    If it learned from training data, how did you generate the set of data?
    For context, I'm interested in trying to build an AI myself for STS.

    • @BottledAI
      @BottledAI  Месяц назад +1

      Hi, cool! Our bot is rules-based, informed by the training data our human brains collected over the years. 😄

    • @BottledAI
      @BottledAI  Месяц назад +1

      I think there's a bunch of training data available in the Slay-I project, in case that's helpful for you: github.com/alexdriedger/SlayTheSpireFightPredictor

    • @sethdeneroff6490
      @sethdeneroff6490 Месяц назад

      @@BottledAI This does look helpful! The link to the data in that project appears broken though :(

    • @BottledAI
      @BottledAI  Месяц назад

      @@sethdeneroff6490 I think there's some included in the project itself potentially.
      If you add me on Discord, I can also add you to a server where people might have more. (EDIT: I have removed my Discord username.)

    • @sethdeneroff6490
      @sethdeneroff6490 Месяц назад

      @@BottledAI I believe I just sent you a friend request. I go by a different name on discord as well but for similar reasons I'd like to avoid posting here.

  • @johnnyh6536
    @johnnyh6536 Месяц назад +3

    Really cool project, kudos guys! Would you open source the code? Would love to contribute and extend this out

    • @BottledAI
      @BottledAI  Месяц назад

      Glad to hear it! That’s the next thing we will be working on, and would welcome contributions.

  • @eirikhauge2884
    @eirikhauge2884 Месяц назад

    Very interesting/impressive guys! I was wondering if the attack pattern of the enemies and the draw pile are used for its decision making?

    • @BottledAI
      @BottledAI  Месяц назад +1

      Possible future enemy behavior is not directly taken into account for the bot’s battle calculations - those are done mainly based on what it can currently see. There are a few special cases we have taught it for specific enemies though. For example, the bot knows it can take a couple free turns against Lagavulin before waking him up.
      The possible contents of the draw pile contents are not currently used, though the bot does know that it’ll lose things it might want from the discard pile (relevant with e.g. All For One) if we force a reshuffle.

  • @codegeek98
    @codegeek98 Месяц назад +1

    This bot is "pure clockwork", with no ML/NN component?

    • @BottledAI
      @BottledAI  Месяц назад +2

      Correct.
      In some places it makes decisions with a simple prioritized list, in some places with a few/several basic conditionals, and in combat it picks the preferred outcome from among the (many) options it calculates using a graph traversal of the different possible card plays. It can calculate the outcomes because it can simulate the result of play in much the same way a player would when looking at their hand, because we’ve taught it most cards/powers/relics. The evaluation of outcomes is done by checking about 30 different scores (e.g damage dealt, damage taken, etc) and picking which is most desirable given the criteria we give it.

  • @foggyplatypus
    @foggyplatypus Месяц назад +1

    Where will it be announced if this goes open source?

    • @BottledAI
      @BottledAI  Месяц назад

      At least with a video here. We will post in other places as well but they don’t always get much visibility!

  • @tylercousens3467
    @tylercousens3467 Месяц назад +4

    what ascension are you playing on?

    • @rompevuevitos222
      @rompevuevitos222 Месяц назад +5

      It seems to be ascension 0, altho it should not really affect much other than map pathing (?)

    • @BottledAI
      @BottledAI  Месяц назад +6

      Yeah, Bottle currently plays on Ascension 0!
      Us creators both play on 20, and uh, don’t tell him I said this, but Logan is significantly better than I (Robert) am.

  • @thomasneal9291
    @thomasneal9291 Месяц назад

    what a waste of time. I don't know any easy way to say it.

    • @derrickvo9292
      @derrickvo9292 Месяц назад

      You're being an asshole online for no good reason. I'd suggest reflecting on yourself and why you're acting this way.

    • @BottledAI
      @BottledAI  Месяц назад

      I hope you enjoy the next video you watch more! 🙂

    • @luisdavila3058
      @luisdavila3058 17 дней назад

      Quiet