Project Cube On : An OU bot. (currently OU no mega) [Asking for ideas !]

Status
Not open for further replies.
Artemis Fowl said:
The bot will fill the attack slots left by mandatory moves with secondary moves, and in order to do so ... I was thinking of looking at how the opponent's team, given it only has mandatory moves (so 2 or 3 moves most likely) fare against the tier's main threats, and if it appears nobody in the team is able to fight a given threat, then the pokemon that have a secondary moves that make them able to fight the threat probably have them. But I haven't established any quantified protocol yet.
PK Bash said:
What I'd try and do is get the total coverage that said sets would get. For example, a team of Garchomp/Hippowdon/Breloom/Heatran/Landorus-T/Manectric(disclaimer: THIS IS NOT A LEGIT TEAM) would have lots of ground coverage in it's default sets but no Water coverage and a stupid amount of possible Stealth Rock setters. Cube would recognise this gap in the coverage, and would then proceed to test different sets to try and fill this gap. Using this logic, he'd give Garchomp Aqua Tail as it's the only possible Water move on the team (thus probably confirming no Rocks on him).
I agree, that's near to what I described earlier, in a simplier version.

I'll look into learning later, right now I'm establishing a first-sight guess protocol.
 
Ah sorry, I interpreted that completely incorrectly. What I thought you meant was how well it fared against specific threats, as opposed to how balanced the team's overall coverage was. I kind of touched on the threat thing but I'm not sure how well it would work. But I missed the "tiers main threats" bit, which probably would work. I'm guessing you'd base that on, say, the top 30 pokemon in the tier's usage stats?
Also, would it ignore the mega stones in a set? So if you see a Charizard, it's fair to assume it's a mega, but if it doesn't know what to do with mega evolution, would it just ignore the stone and assume regular Charizard? My thinking is you could acknowledge that the Pokemon has mega evolved by just assuming that it will evolve on the first turn that it's out. This might create issues with stuff like Slowbro where it's 50/50 as to if it's even holding a mega stone, but it's a thought.
 

Bughouse

Like ships in the night, you're passing me by
is a Site Content Manageris a Forum Moderator Alumnusis a CAP Contributor Alumnusis a Tiering Contributor Alumnusis a Contributor Alumnus
To be honest the entire notion of an evaluation system seems impractical (and borderline intractable) in a quantum game like Pokemon. It's not turn based like in Checkers or Chess, etc. So you can't just evaluate 12 ply deep or anything like that. There isn't really a single tree. There are somewhere between 16 and 81 (4 options each if you're both on last mon up to 9 options each if it's still 6 v 6) trees you would need to follow every turn, growing exponentially each move deeper. Chess is sequential and so you can quickly discard trees that clearly aren't working. There's also the matter of chess being a game of perfect information. Bishops always move like Bishops. In this circumstance you don't even really know what the trees you need to evaluate are. Does it have a boosting item? Am I faster? Is it carrying HP Fire? etc... and in Chess you never have to predict anything either. Your best move is always your best move, no probability weighting is needed. All in all Pokemon is more dynamic and you can't really do the same things you do to evaluate chess, because it's certainly more complex turn by turn.

But even if you figured out turn 1 fine (which I still doubt is doable in any sort of useful way with mere evaluation) it doesn't do much of anything to play Pokemon well in the long run. Long run strategy when playing offfense for example depends way more on winconditions than anything currently on the field. It seems your method would figure out how to play with more stallish teams decently, but not much else.

Instead, I think if this problem were actually going to be attempted to mimic intelligence and play at a real human-level strength, it would need to be done with something considerably more sophisticated, maybe via neural networks and machine learning. That might not even really be sophisticated enough though. This method was attempted to learn to play checkers (look up Blondie24) and it did it really, really well. But as I said above Pokemon is more complicated to evaluate than even chess, and so surely Pokemon is several orders of magnitude more complicated than checkers.

I don't want to diminish what you've done. It's cool. For sure. But I do want to make sure you really understand this method's severe limitations as well as how impossibly massive this problem is.
 
Ah sorry, I interpreted that completely incorrectly. What I thought you meant was how well it fared against specific threats, as opposed to how balanced the team's overall coverage was. I kind of touched on the threat thing but I'm not sure how well it would work. But I missed the "tiers main threats" bit, which probably would work. I'm guessing you'd base that on, say, the top 30 pokemon in the tier's usage stats?
Also, would it ignore the mega stones in a set? So if you see a Charizard, it's fair to assume it's a mega, but if it doesn't know what to do with mega evolution, would it just ignore the stone and assume regular Charizard? My thinking is you could acknowledge that the Pokemon has mega evolved by just assuming that it will evolve on the first turn that it's out. This might create issues with stuff like Slowbro where it's 50/50 as to if it's even holding a mega stone, but it's a thought.
Yeah, I hate, like, really, defensive coverages checks for team building. A beginner looking at his team will think he has a good defensive cover because, for exemple, he has 3 weakness and 3 resists in both ice and electric. Except for the fact that all these weak to electric are weak to ice, and the reverse. So, it's 6 weaknesses to boltbeam. It's shit.
If checking how a team fares against the main threats is too much while teambuilding, at least one should check how it fares against generic coverages, not types alone. Checking versus type doesn't make any sense at all. To me, defensive coverage checks are the best tools for building bad teams.

Also, I guess I'll just assume the mega in the opponent's team is the most often used ... Scripting the fact that the attributes of a pokemon can completely change from a turn to the next is already difficult enough, I won't even try to have it think wonder about which mega is it. And yeah, that it's going to evolve on the first turn.



To be honest the entire notion of an evaluation system seems impractical (and borderline intractable) in a quantum game like Pokemon. It's not turn based like in Checkers or Chess, etc. So you can't just evaluate 12 ply deep or anything like that. There isn't really a single tree. There are somewhere between 16 and 81 (4 options each if you're both on last mon up to 9 options each if it's still 6 v 6) trees you would need to follow every turn, growing exponentially each move deeper. Chess is sequential and so you can quickly discard trees that clearly aren't working. There's also the matter of chess being a game of perfect information. Bishops always move like Bishops. In this circumstance you don't even really know what the trees you need to evaluate are. Does it have a boosting item? Am I faster? Is it carrying HP Fire? etc... and in Chess you never have to predict anything either. Your best move is always your best move, no probability weighting is needed. All in all Pokemon is more dynamic and you can't really do the same things you do to evaluate chess, because it's certainly more complex turn by turn.

But even if you figured out turn 1 fine (which I still doubt is doable in any sort of useful way with mere evaluation) it doesn't do much of anything to play Pokemon well in the long run. Long run strategy when playing offfense for example depends way more on winconditions than anything currently on the field. It seems your method would figure out how to play with more stallish teams decently, but not much else.

Instead, I think if this problem were actually going to be attempted to mimic intelligence and play at a real human-level strength, it would need to be done with something considerably more sophisticated, maybe via neural networks and machine learning. That might not even really be sophisticated enough though. This method was attempted to learn to play checkers (look up Blondie24) and it did it really, really well. But as I said above Pokemon is more complicated to evaluate than even chess, and so surely Pokemon is several orders of magnitude more complicated than checkers.

I don't want to diminish what you've done. It's cool. For sure. But I do want to make sure you really understand this method's severe limitations as well as how impossibly massive this problem is.
I noticed the problem was difficult, indeed. That's why I've been looking in weird decision algorithms, and why I came to this : for reminder, the bot's insight into long-term playstyle is its situation rating, that is, evaluating each (36) power relation amongst pokemons. Also, he only looks one ply deep except for switches where it's two - since, as you said, looking further would be impossible.

I'm not trying to make a bot that can compete. I'm trying to make the best bot, in short, make it as good as possible.
Also, I'm not looking into 81 options, or rather, I won't, when anticipation is done. This would make little sense, about 70 of these 81 possibilities would never happen. What I'm planning on doing is deciding that one of the players is currently (I mean, on the field) in a better position than the other. Once this is established, I can make a lighter anticipation process.

But anyway, it is FAAAAAR more difficult to build decision trees on games where both players play at the same time. And worse, if anticipation matter. And even worse, if you don't know exactly what your opponent's cards are. I could figure out that much myself, and I do realize this is tough stuff.
 
Dang, that sounds really complected! I can only program in fortran, or I'd have some better suggestions! however, may I suggest using something that guesses what the mon's sets are initally? not an expert on this stuff.
 
This looks like a really cool project. I mean, it's nice to see what programmers are capable of, I've always wanted to see if a bot could play Pokemon and thankfully it's not going to be a bazillion times better than humans like computers in Chess, which I dislike. I've never considered getting into programming but it's always intrigued me and I'm a massive fan of this project. Nice job!
 
My suggestion would be instead of using an "actual" team for CubeOn, try using something a bit more fomulaic like GeoPass. GeoPass the program can do pretty simple evaluations each turn (Memento to weaken something that has high base attack, Tailwind against something with high base speed, etc.). It won't have to do a lot of "long-term" thinking. Ultimately it will culminate to whether to Geomancy / Cotton Guard with Smeargle.

The second thing I wanted to add is that for the Flamethrower + Fire Blast problems, couldn't you have the bot consider the type of move it is versus what the move actually is? Like instead of it thinking "Fire Blast", "Flamethrower", and "Wil-o-Wisp", think "Special Fire Attacking Move" and "Status Fire move". Understandably this is a lot harder to do because the data you are parsing is the usage stats. I guess if there was a json of the actual smogdex it would be a lot easier too.
 
Status
Not open for further replies.

Users Who Are Viewing This Thread (Users: 1, Guests: 0)

Top