Right now, the answer is no. There's a lot of technical reasons why this is the case, but we'll be looking into ways to speed up play, without causing any issues. An easy example to understand the core issue: 1. You play Madder Bomber. 2. The client has a short period of time when it doesn't accept new actions as the animation begins. 3. If you run AI before it finishes, the AI will make a decision based on unfinished client state (e.g., not all mobs are damaged / killed). This results in invalid actions. 4. You can "queue" an action during the animation, but once again, the AI won't know about it, resulting in invalid actions being generated as a result. The only way around this right now is to "wait" for actions to finish, and for the client to receive all data from the server. When you play the game, you're able to look at visual cues to get an idea of what's going on and you subconsciously know when to play. The bot instead can't make such a distinction, so all the data it processes it has to be able to figure out when or when it needs to wait longer before trying to do something. If the AI were to generate a series of commands to perform, it would help speed up actions, but it also makes logic a lot more complex, since once again, any action that results in randomness cannot be predicted, and would force a re-evaluate (slowing down the bot in a similar way it is now).
@pushedx But say your boardstate is clean of enemy minions, and you only have to go face. Wouldn't it be possible to try and increase the queing up abit? Since right now, a large board might mean you miss one or 2 attacks, and you do actions from the getgo until the rope is burned out.. It looks.. iffy.
That's part of the complexity itself; handling the specific cases where it's 'ok' to queue more actions (or not). Consider you have 3 minions on the board are are attacking face. Each minion has Blessing of Wisdom on it. The process of attacking with each minion is different due to the card draw effect, as opposed to minions without that enchantment. Let's say you attack with the first one, there's a period of time where you can't interact with the other cards and have to wait. Now, we're coding around various client behaviors, which is not a good thing, due to latency and other changes that take place on the server we don't even know about (the game gets updated a lot, we just don't get client patches for it since they are server sided changes). It's going to be an interesting problem to solve, but it's unfortunately one we just can't just change a few things and have better results. Since we're using input actions to play the game now, we are more limited in terms of when we're able to interact with cards and do things as opposed to just calling client functions which would ignore that (which is a bad thing to begin with anyways). If it were possible to create the order of cards in our decks, and play against an AI where we could specify the deck and card order, life would be a lot easier since then we could test and tune things on a consistent basis as opposed to trying to replicate actions randomly in games.
I really enjoy that you are very through in your explinations pushedx. Thank you for taking time to answer our questions Makes it less frustating