@@kylekiske_ yeah, a lot of people (especially if they're tilted) will just play on autopilot. Leading something like a choice scarf Landorus Therian and clicking u-turn turn 1 is something that will often work out well for you It's like spamming a high damage move in a fighting game which is the mark of a noob rather than "high level play", you find something that works and just keep doing it. This is an important thing to identify when trying to improve. When you catch yourself going on autopilot the best thing you can do is slow down and try to force yourself to use more time per turn (temporarily). That is not to say you always need to spend a minute thinking through every turn, experience can help you off-load a lot of the processing so you can focus your conscious thought on tricky scenarios (and sometimes you can get in "the zone" where you can play super fast because even though you're not consciously thinking about each play you subconsciously are quickly following the correct logic).
@@lucaslbpo91not really. Pokemon is largely about tactics, and knowing your win condition. Prediction is only a small part of it. I doubt most players think more than a few moves ahead, since RNG and other factors change the board often.
Yeah. It actually makes it the best kind of practice AI to put into a videogame. Since if there is always an average of 50% chance to win or lose regardless of your skill level it will always be a challenge and keep you learning and improving.
Honestly speaking this is absolutely the golden opportunity! Even though it was not the creators intention having a computer that pushes a player no matter the skill level and both the player and the computer having an even chance at beating each other should be its own project. Modeling skill curves is damn hard and is some secret sauce!
Playing to the opponent's skill level is actually an incredible accidental creation. You've built an AI that, if it's pared down a bit, could be plugged into a pokemon game to provide an interesting opponent throughout the game.
Honestly, I'm tired of NPCs that don't EVER switch their Pokemon until one of them faints and moves on to the next Pokemon they have... I'd like one or a few that at least have some "skill" and a solid strategy but no unfair to the player and it's challenging and rewarding to defeat them even they gradually increase the difficulty of the battles based on certain game conditions as you progress or do quests or something like that... It would be super interesting and cool and teaches you how to play for real like in Pokemon Showdown, for example!
@@asterlofts1565 Having read Chorocojo's Let's Play Pokemon Platinum, Barry seems to be a weirdly skilled NPC by the general standards of the series, not only switching out of unfavorable matchups, but punishing the player character for switching out through the use of the move Pursuit. While kind of a doofus in general, he's sort of an idiot savant when it comes to his chosen form of competition, like so many anime protagonists I guess.
This is why I liked Pokémon black and white 2. The hard mode was decently difficult and made the second play through way more fun. Wish they would add hardmode to all Pokémon games
Professional ML Engineer / Data Scientist here. You did amazing work. Some particular points that I think deserve commendation: 1. Picking a language based on how well it fits the needs of the project. (Yeah, I'm a Python fanboy, but I think the call to use JS here was the right one for the reason you mentioned.) 2. Being socially responsible with the code release -- thinking of cheaters making the game not fun. 3. Making the model available to test by outsiders. So yup. I'm floored. Awesome work.
I feel like a problem that may have led to this was only using the last used move as a parameter and not all the moves that have been used throughout the battle.
"I made an ai that plays at the skill level of its opponents" Dude, that is not easy. Every video game ever wouldn't mind having that ability for co op vs ai games.
@@davideleoncini6246 Think league of legends. Every player has an elo rating. Their current co-op vs ai mode doesn't scale in difficulty though, any player better than bronze can easily defeat them. If they changed up their difficulty based on the elo of the players, that'd be a LOT better than the current implementation.
Technically it could be possible. If the ai was incorporated into the story mode it could just base it's level off of how many gym badges the trainer has, probably some other factors too like total number of wins or losses, total number of defeated trainer pokemon.. Definitely would love to see something like this in the main games, the story mode is way to easy
@@Nintendilly it wouldnt make a difference, a pokemon game should just give better pokemon to trainer and make them do moves that actually do something, thats all, youll have a difficult game for 90% of pokemon player. If you want to know why AI wouldnt make a noticeble pratical difference its because you cant make it choose the trainer team and level, thats all setup in advance, and even if you make it choose, you should give a small selection cause of type trainer that use only some type of pkmn.
This is genuinely one of the best videos I’ve ever seen. I’ve played Pokemon for years at various levels, but I know precious little about actual computer science; yet when I watched you explain the AI in depth, I never felt talked down to or lectured towards, just educated. It’s a rare skill to be able to explain a topic in-depth, and passionately, without coming off as showoff-ish, but you nailed it. Sub earned. Great work, I can’t wait to see more!
That is truly all I strive for when making these videos; ngl this comment had me tearing up a bit. It's super uplifting to see this and I'll do my best to keep the quality coming!
I would love to see how it would fare with meme teams like focus-sash + endeavour + quick attack rattatas or pain-split + sturdy level 1 mons. Would the ai find a worthy challenge in trying to predict extremely fringe cases or be at a loss.
without any kind of learning or preparation for FEAR mons itd probably struggle, but it could very easily be taught or learn to recognise and counterplay any possible FEAR strats
Considering the likelihood of it carrying toxic, and burn it would probably be able to play accordingly..being able to detect the set automatically with its database of million of battles.
I really like listening to you talking about anything, you’re very active but calm at the same time. I can’t really explain it, this is the first of your videos that I have ever seen.
Way back in high school, I tried to do almost the same thing. It's kinda hilarious hearing you describe all my wrong choices! I tried to write it in Java, using Webdriver to interact with PS!, so I had to write a very basic simulator. After half a year, my final demo was winning a carefully designed 2 turn battle where it had to use a strong move followed by a priority move. Great work!
It's impressive enough that you were able to make an AI with results these good, but you also made a super entertaining video and explained things very clearly using fantastic visuals. I'm also a programmer, and this is exactly the type of quality programming content I want to see more of on UA-cam. You definitely earned my subscription. Looking forward to what you make next!
I shiver in fear for the day that this bot ends up loading up full stall and begins to grind down the ladder lol. Jokes aside, very cool. Reminds me a lot of the development of AlphaGo, except on a much smaller scale.
I wonder if the AI would ignore hazards and not even click defog/rapid spin, cause if it only plans 3 turns ahead it doesn't care about the long term. I think that teaching the AI the importance of removing hazards is the only thing it has to be manually taught tbh.
You’re going far man. My jaw dropped when the graph started going crazy and the music played. Stylish. Sharp as a knife. And lovable. I wish you were my data science professor. Subscribed.
I'm still wrapping my head around this video's random surge, but what I can understand is how absolutely grateful I am for the support and kind words yall have given it; A huge THANK YOU to all of you! This has been a huge project, so I'm thinking it's time we assemble a team. If you know a lot about Pokemon, programming, or both, fill out this form ( forms.gle/6R85bn2GwajrgteL7 ) so I can gauge interest in creating a team. No promises anything comes of it, but if you fill it out, I'll let you know if it does. Also, finally learning how to use Discord, so that might be a thing soon too. (P.S.I'm surprised no one's found any Easter Eggs yet. If my face isn't on screen, odds are there's something to find 😉)
When you finish doubles, it would be so cool to see WolfeyVGC play against it! This is really cool. I hope more people get to see your hard amazing work.
Every facet of this - the concept, the editing, the explanation, and the whole project - is awe-inspiring. Fantastic work on all of this!!!! Really fascinating how fine-tuning it without machine learning has made it better at battling for now - makes me wonder if being more selective with the battles input in the dataset to only have battles between high ranking players could change that or if it wouldn't matter? (EDIT: just watched the sequel to this and learned the fault of neural networks here. Still really rad that you tried it out!) Well, no matter what, I'm really looking forward to seeing whatever comes next!!! Best of luck on your project
Dude, every time you go another step into the simulation it just keeps blowing my mind at the solution you used to solve it. Its amazing to see the process.
This so much. Future Sight AI would be an amazing tool to test strategies against and for general training. I'm sure gamefreak would love a dynamic difficulty setting to keep players engaged too.
I made a PS ai, too. In fact, it was my bachelor thesis. Also we had the same ideas for many topics. I used JS as well for the exact same reason and Tensorflow. Plus I had the same idea to go over the next turn with the original ps code. There are some differences, too. You went for an Alpha Go approach because the used data is from actual pvp battles. I chose Alpha Zero, meaning I wanted the ai to learn by itself. I only used ai vs ai battles so it learns the game by itself. I think this was the main reason, why your project succeeded and mine failed. The ai battles were slow and I couldn't generate enough data in time. In the end, my neural network was very weird, it always predicted Thunder Wave and I wasn't able to fix that before the deadline. However, there is another difference and I think this idea might help you. I noticed that created teams often followed some patterns. If a team doesn't have a grass type, then it's more likely that the pokémon have grass type coverage. But wait, at a specific turn grass knot wasn't used althought I had Swampert on that turn. Could it be, that this pokémon of the opponent doesn't have the move in the set? I was able to create a system to handle this problem. It's a bit too complex for aUA-cam comment but if you want, I can show it via voice chat or something.
I know nothing about this field, but why not just combining the two approaches? I mean, now that he has a good AI trained on pvp battles data, he can make it train by playing against itself, can't he? Sorry if i'm asking a stupid question, but once again i know nothing about this and i'm just curious.
@@hydrostrikehd4661 This idea is called Alpha Go Zero. And yes, it is a good idea, however we will face the same problem: We need many, many battles to train the ai. Plus, for PS specifically it might not be a good idea, because human players play differently than the ai, which is a problem when predicting the opponent's moves. To be honest, this is also a problem for my Alpha Zero approach.
This is absolutely amazing! Love how you explain it and applied it thus far. Thank you for sharing your mind with us here. Going to have to tell my subs to check this video out
I don’t know how often this dude uploads, but I see his videos in my recommended very rarely and I’m always so impressed with his mind, his warmth and his ability to communicate complicated ideas
This feels like one of my old biotechnology classes. You clearly know what you are talking about, do a great job of explaining what you are doing and how it works and overall are just making it interesting...yet I can barely comprehend the kind of time and effort learning all of this must have taken...
This video needs to blow up. As a showdown player myself this has been one of the most interesting videos I’ve seen. Hoping this hits it big because I’m mind boggled by the work you’ve done here. I play a variant of pokemon called draft league in which each player only has 8-12 possible pokemon to choose from and build a team of 6 and each opponent knows what the other 8-12 pokemon the opponent has. Your AI seems perfect already for something like that as compared to OU you only need to prep for 12 possible pokemon and their sets compared to the hundreds on the OU ladder. Can’t wait to see how you grow this.
Thanks for the complement! Ah yes, I've been thinking the latter half of your comment for a while, and under my best guess, this AI would be an absolute threat in a draft league! There are so many optimization it could make (and I could add) with only 12 possible foes a match. Once I'm done fixing the current set of bugs, we'll see what it can do.
haha im right there with you, seeing this in draft would be amazing... but it could definitely cause problems too, since leagues are just like tournaments and some owners may not like this being used in their league - i for one know that i am unsure of what to think about it in this regard.
On top of that, I imagine you could train the dataset for particular player (though sample size might be an issue there) which could be quite significant when looking at tendencies (i.e. whether somebody clicks pursuit or not).
Dude, how old are you? The level of thoughtfulness and maturity of your channel is off the charts, not to mention the entertainment value and editing. I'm showing this to all my sons, and we're counting it for school. 1000%
Hey man, this is incredible, the sheer scale of what you're doing is just insane. Props to you for having the ability to make this happen! Good luck on your future endeavors and on the AI
This is a jaw-droppingly cool project! I'm very excited to check this out in more detail. I'm looking to learn more about competitive Pokemon play, and a skill-matched AI opponent seems like a great low stakes way to do that. Plus you've got amazing production quality on the video itself. All around incredible work!
So I used to play on the generation seven ladder and there is a bot on that named FildrongEstNul. The bot is usually a free win because it uses the same team over and over and makes the most basic plays it can so it became obvious it was a bot(not even a good one tbh) . This is shocking that an A.I. like yours can learn mons so quickly and get top500 to the point it can be disguised as a real player. This is great work.
14:30 I’m so happy I watched this video. Not only was it intriguing and entertaining, I always thought of myself as a low ladder player since elo decay starts 1400+ and my peak was only 1400 and I averaged around 1350. This gives me a small confidence boost knowing I’m an upper 25% ish player. Thank you man. 🙏
I love the attention to detail and the polish in this video, especially the easter eggs in the pseudo-code around 20:39. Really looking forward to the rest of the series!
Congratulations my friend, UA-cam just recommended this masterpiece to me, so expect a lot more people to come. Looking forward to the future of this project, and the most important part is that you are having fun with it :)
This is the most high quality video I have ever seen from someone with fewer than a million subscribers, let alone the fewer than 1000 you have. Your channel has a bright future.
Dude people combining and nerding out about their favorite things is always amazing to watch. You got some talent and dedication cannot wait to the fruits of your labour
When the Go-playing computer was in the news, the first thing I thought of was "show me a computer that can play competitive Pokémon and I'll be impressed." This is awesome!
This is absolute awesome work for sure, but the Go AI is so much more difficult and impressive in every ascept. Not trying to talk this down in the slightest, of course that is no competition with a full team of Google AI scientists VS a single dude.
@@brzt4256 You significantly underestimate the complexity of Go and the effort behind AlphaGo. Pokemon is magnitudes easier to solve, because most of its numeric complexity covers cases that are trivial to rule out and/or don't play any role in the decision making. Another significant difference is that in Pokemon, only a small subset of moves have any impact on future turns, and if they do it is really straightforward. In games like chess and even more so Go a move that seems poor at the time played even for the best human player can commonly turn out to be brilliant 20, 30, 40 turns later. Pokemon is trivial in comparison which makes it way easier to train a decent AI. Also the language doesn't make much of a difference in the end (except for runtime maybe), at the core it is the same Tensorflow library which does the heavy lifting. Other languages just make your life easier.
@@BrawlLegendLink I agree, but pokemon is far more complex at an actual competitive level. This AI can beat the equivalent of an 'average' player at pokemon, in singles OU. The skill level increases drastically after 1500s, and the distributions aren't actually representative of the communities skill (lots of competitive (>1700s) players ceebs laddering). To make a truly powerful pokemon ai, in other words 'solving' it, you would need to account for all the probabilities.
@@gattabat No, it is not. The skill ceiling is fairly low, compared to really hard games such as chess or go it is the equivalent of TicTacToe. It is impossible to brute-force solve even chess, which has much fewer possibilites overall. The difference is: In chess, it is impossible to even guarantee that a certain move is objectively bad most of the time (always whenever it does not lead to a known guaranteed loss). In Pokemon, a 6 year old can tell you that Bodyslam always is better than Tackle. Most options are like that.
this is one of the coolest and most impressive videos i've seen on youtube from a small creator. both the coding and video are VERY impressive, and it was really cool hearing you walk through your process and decision making
As someone who fits into both categories of people - Avid Gamer (long time pokemon fan) and an AI & Data Science Masters student(Python FTW haha) , I thoroughly enjoyed this! Seeing the success rates too was really good, can't believe its your 1st DS project! One thing that really amazed me was the 4th parts ability to essentially summarise the learning from the first 3 and make its own decision but outside of the ML lifecycle, truly amazing stuff!
Incredible ai you've made, this is actually astounding you were able to make this with such high odds. If only the ai could emulate how salty some players get, then it'd truly be a top tier player
I commented on the other video, but this is truly a work of art-the pokemon draft league community has their eyes on it now, and the very creation of a bot this successful could be really cool for mock battles. I don;t think anyone in the competitive pokemon community has come close to what you have today, we have Porygon which tracks Kills/Deaths in replays and that's about the only notable one. If you had a Patreon to help fund the bot, I'm sure plenty of people would want to help make this the best it can be-it has so much potential. Thank you for putting so much effort into a good bot, a high quality video, and sharing it with us.
Bit late to the party but damn... I develop AI to detect cancer subtypes, and the work you've put in here is Masters if not PhD worthy! Just getting the data clean enough to use would have been the biggest pain in the ass. Congratulations Sir! If I could invest in UA-cam channels, best believe I would invest with this one
Gives me Jon Bois vibes but with Pokémon! This is the first Pokémon Showdown content I’ve digested in years and it’s easily some of the best. The information is amazing, the theory and process is described succinctly and the production is smooth! You should be extremely proud!
"Complex" As Lusamine's Clefable Metronome's herself to death. I remembered Clefable using metronome and both my Machamp and her Clefable was inflicted with a 3 turn death timer
Me and my friends have discussed this recently, it was great to see how it works, and this video explains it very well. Thank you for taking your time to do this.
I don’t think I can overstate how great this video is. Cool projects like this are what first got me interested in machine learning, and I’m sure this video did the same for some people. Thank you for this video, keep up the good work!
That team at the end. I recognized Ampharos, Empoleon, Gardevoir and Dragapult. Not 100% sure what the green and orange outlines are but I think they might be Pangoro and Ribombee.
Gotta say, I deeply respect that you were willing to say: ‘It’s not perfect but it works!’ in so many parts of your process, too many engineers I know and work with focus too hard on finding the “best” solution and fail to find a solution that simply works.
I love how you had to add inverse damage calculation after your first attempt to make the AI while that’s actually something players around its elo do all the time. Joey has seen damage numbers and known instantly that something has a Choice Band and the AI just had to catch up. You’re really teachin it the basics of being good at the game.
This is absolutely amazing. It occurs to me that this could be a fantastic tool to teach battles as well. If it knows which action is most beneficial every single turn, I could see this being helpful for demonstrating ideal choices in every circumstance and to train ourselves to be better at battling as well!
Please keep a positive attitude towards being a positive influence and I hope you keep us posted on your future endeavors. Thanks for this amazing video!
Very well made video that needs to have more views. I really like how the bot is self learning, so hopefully it can climb the ladder with time! I know you mentioned that the bot had similar win percentages vs all player levels. Pretty interesting to see that even AI can play down to an opponents level. A lot of other people in this comments section are also from this part of the community, but I play Pokémon draft league, and I feel like inverse damage calculation plays a big part in how we view the game compared to ladder mains or even doubles mains. Hopefully the weather ball modifier can help the AI learn lol. It might be worth looking at the showdown damage calc and seeing if you can include code from that to maybe improve the AI. Will definitely be keeping an eye on any future uploads regarding this, keep up the good work bro! :D
Dude, this video is legitimately amazing. I’ve played showdown for years and always wondered just how optimized pokemon could get, and seeing this really scratches that itch. Props!
Hey man this is the best thing I’ve ever seen props to you this is an absolutely amazing idea and you are brilliant. This video is going to blow up and this is so dope
Ngl I feel like ur being detailed without talking down, or trying to be a "teacher" I feel like I'm talking to myself. And I love hearing people just explain stuff without being "HAHAHA YOU'RE A NOOB! I KNOW SO MUCH MORE!!!"
I just found this video, and it's absolutely amazing what you've done. This is incredibly impressive and I hope this channel blows up, you definitely deserve it
holy hell this video actually made my day. i am really bad at coding but this video has inspired me to keep working on a runescape bot id abandoned. it is just so exciting to see him explain the genius of the code and i cant wait to see my work pay off as well.
Hm, a team of dragapult, ribombee, pangoro, ampharos, empoleon and gardevoir.. Interesting, even if I don't see ampharos putting in a lot of work for OU.. But it'll be interesting!
If someone realised it was an AI it would be a lot easier to predict as there would be no randomness and you can be assured it “thinks” of every aspect so it’ll pick the best move, which is very easy counterpredict. However just using it to help you, it’s insane and a really cool project
That's not how things work. At the end of the day, his agent tries to pinpoint the odds of his opponents next play. I didn't saw the whole video yet, but the output of the agent could easily be a distribution of choices that is the best against the distribution of moves of the opponent, and them use a RNG to pick the move.
5 minutes in, I knew this video was going to be amazing! You've created something spectacular. The graphics throughout the video are also top notch and really illustrate your points well. Thank you for sharing this!
this is one of the coolest videos i’ve ever seen in my entire life and just makes pokémon even more fascinating and interesting than it already was. amazing job!!! you’re making our state proud 🍊☀️
The way you explain things comes off as very easy to understand you have a talent for this I hope you go very far your channel deserves way more subs great video quality too
This is a really interesting project. I do wonder about if the AI is be able to "force" opponent players to make the moves it desires to happen ( a bit like chess ) as a byproduct of predicting their moves, and if this happens consistently.
I laughed over landorus u-turn being no.1 prediction, AI already learned the essence of high-level play
"high level play" being asleep at the wheel. sure.
@@kylekiske_ "high level play" spaning spore with amoongus
@@xav9992 Only in VGC, this is playing OU.
@@xav9992 when the ai is sus
@@kylekiske_ yeah, a lot of people (especially if they're tilted) will just play on autopilot. Leading something like a choice scarf Landorus Therian and clicking u-turn turn 1 is something that will often work out well for you It's like spamming a high damage move in a fighting game which is the mark of a noob rather than "high level play", you find something that works and just keep doing it. This is an important thing to identify when trying to improve. When you catch yourself going on autopilot the best thing you can do is slow down and try to force yourself to use more time per turn (temporarily). That is not to say you always need to spend a minute thinking through every turn, experience can help you off-load a lot of the processing so you can focus your conscious thought on tricky scenarios (and sometimes you can get in "the zone" where you can play super fast because even though you're not consciously thinking about each play you subconsciously are quickly following the correct logic).
The fact that it plays to the opponents skill level means that you just made a competitive “play against AI” mode in Pokémon. That’s impressive.
If the AI is to improve, it should always play its best, and not adjust to skill level.
@@KinkajusRevenge
with pokemon, a bad player can outplay a good player that over thinks or over estimating a player
@@tl1326 Yes, but i believe that in the long term, playing to the best move in a given situation wins more often than trying to underpredict a player
@@KinkajusRevenge but to properly do that the AI will need to see a lot more turns ahead than the current 3
@@lucaslbpo91not really. Pokemon is largely about tactics, and knowing your win condition. Prediction is only a small part of it. I doubt most players think more than a few moves ahead, since RNG and other factors change the board often.
This is so sick
Why do I hear boss music...
But seriously, your videos helped a lot in making this, so I'm glad you think it's cool!
Joey himself here :o
Joey vs FuturesightAI when?
Feature challenging the AI on your channel. Be a sick vid
J his name is…
An AI that has a consistent ~50% winrate in all levels of play is honestly pretty cool.
It has a better winrate than I do
Yeah. It actually makes it the best kind of practice AI to put into a videogame. Since if there is always an average of 50% chance to win or lose regardless of your skill level it will always be a challenge and keep you learning and improving.
And that's on the weakest setting 😂
Such a perfect practice tool
Honestly speaking this is absolutely the golden opportunity! Even though it was not the creators intention having a computer that pushes a player no matter the skill level and both the player and the computer having an even chance at beating each other should be its own project. Modeling skill curves is damn hard and is some secret sauce!
Playing to the opponent's skill level is actually an incredible accidental creation. You've built an AI that, if it's pared down a bit, could be plugged into a pokemon game to provide an interesting opponent throughout the game.
Honestly, I'm tired of NPCs that don't EVER switch their Pokemon until one of them faints and moves on to the next Pokemon they have... I'd like one or a few that at least have some "skill" and a solid strategy but no unfair to the player and it's challenging and rewarding to defeat them even they gradually increase the difficulty of the battles based on certain game conditions as you progress or do quests or something like that... It would be super interesting and cool and teaches you how to play for real like in Pokemon Showdown, for example!
Lots of post games have something similar where the only way to get far is to have a competitively viable team
Alternatively, slap it into smogon and let it rip
@@asterlofts1565 Having read Chorocojo's Let's Play Pokemon Platinum, Barry seems to be a weirdly skilled NPC by the general standards of the series, not only switching out of unfavorable matchups, but punishing the player character for switching out through the use of the move Pursuit. While kind of a doofus in general, he's sort of an idiot savant when it comes to his chosen form of competition, like so many anime protagonists I guess.
This is why I liked Pokémon black and white 2. The hard mode was decently difficult and made the second play through way more fun. Wish they would add hardmode to all Pokémon games
This is so freakin cool. Congrats on building something this impressive!
Thanks, I really enjoy your videos too!
Its the music man :O
Hi Carlos!
Carlos 😳
Carlos plays competitive? 😳😳😳😳
Professional ML Engineer / Data Scientist here. You did amazing work. Some particular points that I think deserve commendation:
1. Picking a language based on how well it fits the needs of the project. (Yeah, I'm a Python fanboy, but I think the call to use JS here was the right one for the reason you mentioned.)
2. Being socially responsible with the code release -- thinking of cheaters making the game not fun.
3. Making the model available to test by outsiders.
So yup. I'm floored. Awesome work.
17:45 “it has this weird limitation where it played to its opponent’s skill level”
THATS SUCH A WHOLESOME LIMITATION THO 🥺
Fun to play against for anyone, giving a challenge but good win chance... that's the perfect opponent for anyone.
@@Katharina-rp7iq yeah it would be good as a built-in bot for the game. But, he wants it to be the best... That means wrecking everybody
Honestly, that seems like the next logical step. Over prediction is a thing.
I feel like a problem that may have led to this was only using the last used move as a parameter and not all the moves that have been used throughout the battle.
lol that emoji
"I made an ai that plays at the skill level of its opponents" Dude, that is not easy. Every video game ever wouldn't mind having that ability for co op vs ai games.
It's not usable, the ai can do that because he know the opponent rating and what's usually used at that rating, it couldn't work in single player game
@@davideleoncini6246 Think league of legends. Every player has an elo rating. Their current co-op vs ai mode doesn't scale in difficulty though, any player better than bronze can easily defeat them. If they changed up their difficulty based on the elo of the players, that'd be a LOT better than the current implementation.
@@kairotox I was thinking about Pokemon story mode ahahah, Im with you in this though, it would be good
Technically it could be possible. If the ai was incorporated into the story mode it could just base it's level off of how many gym badges the trainer has, probably some other factors too like total number of wins or losses, total number of defeated trainer pokemon.. Definitely would love to see something like this in the main games, the story mode is way to easy
@@Nintendilly it wouldnt make a difference, a pokemon game should just give better pokemon to trainer and make them do moves that actually do something, thats all, youll have a difficult game for 90% of pokemon player.
If you want to know why AI wouldnt make a noticeble pratical difference its because you cant make it choose the trainer team and level, thats all setup in advance, and even if you make it choose, you should give a small selection cause of type trainer that use only some type of pkmn.
This is genuinely one of the best videos I’ve ever seen. I’ve played Pokemon for years at various levels, but I know precious little about actual computer science; yet when I watched you explain the AI in depth, I never felt talked down to or lectured towards, just educated. It’s a rare skill to be able to explain a topic in-depth, and passionately, without coming off as showoff-ish, but you nailed it.
Sub earned. Great work, I can’t wait to see more!
That is truly all I strive for when making these videos; ngl this comment had me tearing up a bit. It's super uplifting to see this and I'll do my best to keep the quality coming!
Yes
"Multithreaded"
"But he just said he did everything in javascri..... Oh, poor soul"
I didn't really understand it, can you explain?
@@illusion9423 there are languages that make it easier to use multithreading... And that is somewhat of an understatement.
@@elirantuil5003 do you mean like C++ or is it even easier in other languages?
@@jenidu9642 for multithreading yes
@@PabloRozario easier in C++ or other languages?
I would love to see how it would fare with meme teams like focus-sash + endeavour + quick attack rattatas or pain-split + sturdy level 1 mons.
Would the ai find a worthy challenge in trying to predict extremely fringe cases or be at a loss.
Might be possible that the computer, through machine learning, could pick up that Level 1 Rattata = FEAR and play accordingly.
without any kind of learning or preparation for FEAR mons itd probably struggle, but it could very easily be taught or learn to recognise and counterplay any possible FEAR strats
Considering the likelihood of it carrying toxic, and burn it would probably be able to play accordingly..being able to detect the set automatically with its database of million of battles.
@@nya69 Actually, I don't think it's likely to run out of PP versus a FEAR pokemon
/j
If this project is still active I wonder how it would fare against weird metas like revivecats of the former natdex AG
I really like listening to you talking about anything, you’re very active but calm at the same time. I can’t really explain it, this is the first of your videos that I have ever seen.
I’d easily watch a 3-hour version of this with every tangent included; this project is so impressive
I’d watch that too
Yeah maybe as a second channel video or something
2 years later, its still worth a 3 hour version, im now down a rabbit hole and hoping the 3 hour compilation exists.
@@keylowjoe same 😢
this video is criminally underrated: the editing, presentation, and the entire project itself of course is AMAZING. Keep it up!
honestly the most impressive video ive ever watched on yt, subbed and look forward to more vids !
Hi trippy pls do more showdown content🙏
Same
hi
Way back in high school, I tried to do almost the same thing. It's kinda hilarious hearing you describe all my wrong choices! I tried to write it in Java, using Webdriver to interact with PS!, so I had to write a very basic simulator. After half a year, my final demo was winning a carefully designed 2 turn battle where it had to use a strong move followed by a priority move. Great work!
It's impressive enough that you were able to make an AI with results these good, but you also made a super entertaining video and explained things very clearly using fantastic visuals. I'm also a programmer, and this is exactly the type of quality programming content I want to see more of on UA-cam. You definitely earned my subscription. Looking forward to what you make next!
I shiver in fear for the day that this bot ends up loading up full stall and begins to grind down the ladder lol.
Jokes aside, very cool. Reminds me a lot of the development of AlphaGo, except on a much smaller scale.
I wonder if the AI would ignore hazards and not even click defog/rapid spin, cause if it only plans 3 turns ahead it doesn't care about the long term. I think that teaching the AI the importance of removing hazards is the only thing it has to be manually taught tbh.
Imagine playing a 100+ turn match against a stall AI… I would cry lol
@@Flapjack3734 100 is kinda tame. 500+ is the point I’d start to worry
@@highvoltage3508 in one of the clips we say lando T click Defog I front of a dragon it’s w screens, so it does seem to recognize that
Bots work horizontally.
That means lots of computing work.
They will probably do better on hyper offense.
Me: Show me your team so I know it's not a stall team.
AI: I'm sorry Dave, I'm afraid I can't do that.
XD
This was a treat to watch you’re awesome
omg hi bestie
Eskay!
wait eskay under a pokemon vid pog
Pog eskay is here
Yow Eskay!
You’re going far man. My jaw dropped when the graph started going crazy and the music played. Stylish. Sharp as a knife. And lovable. I wish you were my data science professor.
Subscribed.
You're going places man
Also your editing is fantastic
I'm still wrapping my head around this video's random surge, but what I can understand is how absolutely grateful I am for the support and kind words yall have given it; A huge THANK YOU to all of you!
This has been a huge project, so I'm thinking it's time we assemble a team. If you know a lot about Pokemon, programming, or both, fill out this form ( forms.gle/6R85bn2GwajrgteL7 ) so I can gauge interest in creating a team. No promises anything comes of it, but if you fill it out, I'll let you know if it does. Also, finally learning how to use Discord, so that might be a thing soon too.
(P.S.I'm surprised no one's found any Easter Eggs yet. If my face isn't on screen, odds are there's something to find 😉)
Submitted 👍
I doubt I’ll be able to help much, but I wanna learn more about this anwyay
Done
When you finish doubles, it would be so cool to see WolfeyVGC play against it! This is really cool. I hope more people get to see your hard amazing work.
double the problems
Doubles will probably be for DOU because this is for showdown- Wolfey plays VGC
@@snacqk6550 he uses showdown to practice VGC with training partners I thought
Would be fun to see ‘anti-computer’ pokemon develop like anti-computer chess
Holy heck yes. This needs to be a thing.
Every facet of this - the concept, the editing, the explanation, and the whole project - is awe-inspiring. Fantastic work on all of this!!!!
Really fascinating how fine-tuning it without machine learning has made it better at battling for now - makes me wonder if being more selective with the battles input in the dataset to only have battles between high ranking players could change that or if it wouldn't matter? (EDIT: just watched the sequel to this and learned the fault of neural networks here. Still really rad that you tried it out!)
Well, no matter what, I'm really looking forward to seeing whatever comes next!!! Best of luck on your project
Ai trains this Pokémon from egg lvl 1 to 100
Get back to grinding lvl 100 boy 😂
Dude, every time you go another step into the simulation it just keeps blowing my mind at the solution you used to solve it. Its amazing to see the process.
Absolutely amazing! Ever talk to the dev's of Pokemon Showdown to see if you can make your AI something players can play against?
This so much. Future Sight AI would be an amazing tool to test strategies against and for general training. I'm sure gamefreak would love a dynamic difficulty setting to keep players engaged too.
@@JohnYoo39 this! Heck work for game freak and create an actual hard mode AI for pokemon!
@@JohnYoo39 I suspect it's probably too big and slow, and probably has some quirks he has to manage.
@@KorgCrimson Original BW had a mode like this I believe but only after yo beat the main story. Idk why they never did this again
@@damsonrhea for now... he can only improve from here!
I made a PS ai, too. In fact, it was my bachelor thesis. Also we had the same ideas for many topics. I used JS as well for the exact same reason and Tensorflow. Plus I had the same idea to go over the next turn with the original ps code.
There are some differences, too. You went for an Alpha Go approach because the used data is from actual pvp battles. I chose Alpha Zero, meaning I wanted the ai to learn by itself. I only used ai vs ai battles so it learns the game by itself. I think this was the main reason, why your project succeeded and mine failed. The ai battles were slow and I couldn't generate enough data in time. In the end, my neural network was very weird, it always predicted Thunder Wave and I wasn't able to fix that before the deadline.
However, there is another difference and I think this idea might help you. I noticed that created teams often followed some patterns. If a team doesn't have a grass type, then it's more likely that the pokémon have grass type coverage. But wait, at a specific turn grass knot wasn't used althought I had Swampert on that turn. Could it be, that this pokémon of the opponent doesn't have the move in the set? I was able to create a system to handle this problem. It's a bit too complex for aUA-cam comment but if you want, I can show it via voice chat or something.
I know nothing about this field, but why not just combining the two approaches? I mean, now that he has a good AI trained on pvp battles data, he can make it train by playing against itself, can't he? Sorry if i'm asking a stupid question, but once again i know nothing about this and i'm just curious.
Always predicting thunder wave regardless of the mon in front of you is a valid approach if you're on showdown.
@@hydrostrikehd4661 This idea is called Alpha Go Zero. And yes, it is a good idea, however we will face the same problem: We need many, many battles to train the ai.
Plus, for PS specifically it might not be a good idea, because human players play differently than the ai, which is a problem when predicting the opponent's moves. To be honest, this is also a problem for my Alpha Zero approach.
@@TalonFlo Got it, thanks for the answer.
"Always predicted thunder wave"
the 20XX of Showdown
Bro how are you so smart?
Dayum. Max props for the effort on this video!
Du hier :o
Lol
Hi Sephi :D
Florida boy
This is absolutely amazing! Love how you explain it and applied it thus far.
Thank you for sharing your mind with us here. Going to have to tell my subs to check this video out
not gonna lie, something like this could be really useful to the council
I don’t know how often this dude uploads, but I see his videos in my recommended very rarely and I’m always so impressed with his mind, his warmth and his ability to communicate complicated ideas
This feels like one of my old biotechnology classes. You clearly know what you are talking about, do a great job of explaining what you are doing and how it works and overall are just making it interesting...yet I can barely comprehend the kind of time and effort learning all of this must have taken...
This video needs to blow up. As a showdown player myself this has been one of the most interesting videos I’ve seen. Hoping this hits it big because I’m mind boggled by the work you’ve done here.
I play a variant of pokemon called draft league in which each player only has 8-12 possible pokemon to choose from and build a team of 6 and each opponent knows what the other 8-12 pokemon the opponent has. Your AI seems perfect already for something like that as compared to OU you only need to prep for 12 possible pokemon and their sets compared to the hundreds on the OU ladder. Can’t wait to see how you grow this.
Thanks for the complement!
Ah yes, I've been thinking the latter half of your comment for a while, and under my best guess, this AI would be an absolute threat in a draft league! There are so many optimization it could make (and I could add) with only 12 possible foes a match. Once I'm done fixing the current set of bugs, we'll see what it can do.
haha im right there with you, seeing this in draft would be amazing...
but it could definitely cause problems too, since leagues are just like tournaments and some owners may not like this being used in their league - i for one know that i am unsure of what to think about it in this regard.
it's hitting the algorithm rn
On top of that, I imagine you could train the dataset for particular player (though sample size might be an issue there) which could be quite significant when looking at tendencies (i.e. whether somebody clicks pursuit or not).
That's definitely possible, it's just hard to find enough battles from any one player to train on
Dude, how old are you? The level of thoughtfulness and maturity of your channel is off the charts, not to mention the entertainment value and editing.
I'm showing this to all my sons, and we're counting it for school. 1000%
Your chance of predicting whether a player will win is almost the same as stone edges chance of hitting. How poetic.
50%?
*stone miss :´)
Though the exact thing. That and focus blast
Nice 30%
@Zeta Then it is 50%.
Hey man, this is incredible, the sheer scale of what you're doing is just insane. Props to you for having the ability to make this happen! Good luck on your future endeavors and on the AI
This is a jaw-droppingly cool project! I'm very excited to check this out in more detail. I'm looking to learn more about competitive Pokemon play, and a skill-matched AI opponent seems like a great low stakes way to do that. Plus you've got amazing production quality on the video itself. All around incredible work!
I love how you number the sources and show them at the bottom left that’s so much easier than how most channels link stuff, super cool video :3
So I used to play on the generation seven ladder and there is a bot on that named FildrongEstNul. The bot is usually a free win because it uses the same team over and over and makes the most basic plays it can so it became obvious it was a bot(not even a good one tbh) . This is shocking that an A.I. like yours can learn mons so quickly and get top500 to the point it can be disguised as a real player. This is great work.
fun fact: fildrong is a huge french pokemon youtuber and the username means "fildrong sucks" in french
@@perrydimes6915 Ok time to make a bot named BlunderBad which will only click the hardest reads like scizor on CB Vic lol.
@@freezerman7109 LMAO
I’d love to see a top Pokémon player react to or even challenge this AI like Wolfe or Cybertron
Tag them lol
Nah nah, it’s singles, gotta get BKC
14:30 I’m so happy I watched this video. Not only was it intriguing and entertaining, I always thought of myself as a low ladder player since elo decay starts 1400+ and my peak was only 1400 and I averaged around 1350. This gives me a small confidence boost knowing I’m an upper 25% ish player. Thank you man. 🙏
I love the attention to detail and the polish in this video, especially the easter eggs in the pseudo-code around 20:39. Really looking forward to the rest of the series!
When you said 81% accuracy my jaw dropped. AI that does its intended task with 55% accuracy is considered pretty good. That’s insane.
Congratulations my friend, UA-cam just recommended this masterpiece to me, so expect a lot more people to come.
Looking forward to the future of this project, and the most important part is that you are having fun with it :)
This is the most high quality video I have ever seen from someone with fewer than a million subscribers, let alone the fewer than 1000 you have. Your channel has a bright future.
The editing, the structuring of the vid, the idea, the vid itself, all amazing, keep up the work this vid gonna blow up
You've got a good presentation style. Can't wait to see where this project goes!
Dude people combining and nerding out about their favorite things is always amazing to watch. You got some talent and dedication cannot wait to the fruits of your labour
The fact that this video only has 227 views blows my mind... This is the craziest thing I've ever seen. You're the goat.
Looks like your comment was the final push into the algorithm zone because it’s been 1 week and now it’s got 55k
@@BarrettC9 LET'S GOOOOOO
Well well, 2 weeks in an it's at 150k
@@hucklejoko4838 this is ageing nicely
@@hucklejoko4838 almost 200k lol, lets gooo!
When the Go-playing computer was in the news, the first thing I thought of was "show me a computer that can play competitive Pokémon and I'll be impressed." This is awesome!
This is absolute awesome work for sure, but the Go AI is so much more difficult and impressive in every ascept.
Not trying to talk this down in the slightest, of course that is no competition with a full team of Google AI scientists VS a single dude.
@@BrawlLegendLink It's because AlphaGo was coded in Lua. If this guy switches languages, his AI will be top-tier in no time.
@@brzt4256 You significantly underestimate the complexity of Go and the effort behind AlphaGo.
Pokemon is magnitudes easier to solve, because most of its numeric complexity covers cases that are trivial to rule out and/or don't play any role in the decision making.
Another significant difference is that in Pokemon, only a small subset of moves have any impact on future turns, and if they do it is really straightforward. In games like chess and even more so Go a move that seems poor at the time played even for the best human player can commonly turn out to be brilliant 20, 30, 40 turns later. Pokemon is trivial in comparison which makes it way easier to train a decent AI.
Also the language doesn't make much of a difference in the end (except for runtime maybe), at the core it is the same Tensorflow library which does the heavy lifting. Other languages just make your life easier.
@@BrawlLegendLink I agree, but pokemon is far more complex at an actual competitive level. This AI can beat the equivalent of an 'average' player at pokemon, in singles OU. The skill level increases drastically after 1500s, and the distributions aren't actually representative of the communities skill (lots of competitive (>1700s) players ceebs laddering).
To make a truly powerful pokemon ai, in other words 'solving' it, you would need to account for all the probabilities.
@@gattabat No, it is not. The skill ceiling is fairly low, compared to really hard games such as chess or go it is the equivalent of TicTacToe.
It is impossible to brute-force solve even chess, which has much fewer possibilites overall. The difference is: In chess, it is impossible to even guarantee that a certain move is objectively bad most of the time (always whenever it does not lead to a known guaranteed loss). In Pokemon, a 6 year old can tell you that Bodyslam always is better than Tackle. Most options are like that.
To be so young yet so bright - I'm absolutely stunned. You're an inspiration!
this is one of the coolest and most impressive videos i've seen on youtube from a small creator. both the coding and video are VERY impressive, and it was really cool hearing you walk through your process and decision making
As someone who fits into both categories of people - Avid Gamer (long time pokemon fan) and an AI & Data Science Masters student(Python FTW haha) , I thoroughly enjoyed this! Seeing the success rates too was really good, can't believe its your 1st DS project! One thing that really amazed me was the 4th parts ability to essentially summarise the learning from the first 3 and make its own decision but outside of the ML lifecycle, truly amazing stuff!
I'm blown away by this project.. and the AMAZING animations in this video..
the production quality of this video is absolute top tier
Incredible ai you've made, this is actually astounding you were able to make this with such high odds. If only the ai could emulate how salty some players get, then it'd truly be a top tier player
This mans fuckin made a win predictor more accurate than focus blast, holy shit
I've been working on a project like this for months! I'm so jealous and excited someone scooped me, and with such a well produced video. Great job!
Love your brutal honesty that's not rude. You seem chill af down to heart.
26:10 I don't know anything about competitive pokemon but that was the hypest Who's That Pokemon segment ever.
I commented on the other video, but this is truly a work of art-the pokemon draft league community has their eyes on it now, and the very creation of a bot this successful could be really cool for mock battles. I don;t think anyone in the competitive pokemon community has come close to what you have today, we have Porygon which tracks Kills/Deaths in replays and that's about the only notable one.
If you had a Patreon to help fund the bot, I'm sure plenty of people would want to help make this the best it can be-it has so much potential. Thank you for putting so much effort into a good bot, a high quality video, and sharing it with us.
Bit late to the party but damn... I develop AI to detect cancer subtypes, and the work you've put in here is Masters if not PhD worthy! Just getting the data clean enough to use would have been the biggest pain in the ass. Congratulations Sir! If I could invest in UA-cam channels, best believe I would invest with this one
I'm so excited to see more updates on this!
That neglecting type prioritization in the beginning was so slick. instead of Gen 1 AI you got an absolute monster of a program.
Gives me Jon Bois vibes but with Pokémon! This is the first Pokémon Showdown content I’ve digested in years and it’s easily some of the best. The information is amazing, the theory and process is described succinctly and the production is smooth! You should be extremely proud!
The production and the program are both so insane, you will go places!
"Complex" As Lusamine's Clefable Metronome's herself to death. I remembered Clefable using metronome and both my Machamp and her Clefable was inflicted with a 3 turn death timer
You mean, Perish Song?
@@MidoseitoAkage Meaning Metronome landed on Perish Song.
Me and my friends have discussed this recently, it was great to see how it works, and this video explains it very well. Thank you for taking your time to do this.
I don’t think I can overstate how great this video is. Cool projects like this are what first got me interested in machine learning, and I’m sure this video did the same for some people. Thank you for this video, keep up the good work!
That team at the end. I recognized Ampharos, Empoleon, Gardevoir and Dragapult. Not 100% sure what the green and orange outlines are but I think they might be Pangoro and Ribombee.
Gotta say, I deeply respect that you were willing to say: ‘It’s not perfect but it works!’ in so many parts of your process, too many engineers I know and work with focus too hard on finding the “best” solution and fail to find a solution that simply works.
Why did the algorithm wait to show us this amazing video?
I'm excited to see Top Players challenge your AI build in near future.
I love how you had to add inverse damage calculation after your first attempt to make the AI while that’s actually something players around its elo do all the time. Joey has seen damage numbers and known instantly that something has a Choice Band and the AI just had to catch up. You’re really teachin it the basics of being good at the game.
This is absolutely amazing. It occurs to me that this could be a fantastic tool to teach battles as well. If it knows which action is most beneficial every single turn, I could see this being helpful for demonstrating ideal choices in every circumstance and to train ourselves to be better at battling as well!
Please keep a positive attitude towards being a positive influence and I hope you keep us posted on your future endeavors. Thanks for this amazing video!
Very well made video that needs to have more views. I really like how the bot is self learning, so hopefully it can climb the ladder with time! I know you mentioned that the bot had similar win percentages vs all player levels. Pretty interesting to see that even AI can play down to an opponents level. A lot of other people in this comments section are also from this part of the community, but I play Pokémon draft league, and I feel like inverse damage calculation plays a big part in how we view the game compared to ladder mains or even doubles mains. Hopefully the weather ball modifier can help the AI learn lol. It might be worth looking at the showdown damage calc and seeing if you can include code from that to maybe improve the AI. Will definitely be keeping an eye on any future uploads regarding this, keep up the good work bro! :D
hi blu
Dude, this video is legitimately amazing. I’ve played showdown for years and always wondered just how optimized pokemon could get, and seeing this really scratches that itch. Props!
Hey man this is the best thing I’ve ever seen props to you this is an absolutely amazing idea and you are brilliant. This video is going to blow up and this is so dope
Ngl I feel like ur being detailed without talking down, or trying to be a "teacher" I feel like I'm talking to myself. And I love hearing people just explain stuff without being "HAHAHA YOU'RE A NOOB! I KNOW SO MUCH MORE!!!"
Albert!!! My mind was blown when I saw you on this. Excited to see you and not surprised youre still killing it, thanks for the video :)
I just found this video, and it's absolutely amazing what you've done. This is incredibly impressive and I hope this channel blows up, you definitely deserve it
This is incredible. I can’t wait to see where this project goes :)
This is a really impressive project for someone just starting in ML!
This is wild man. Very impressive dedication. You are going places brother
holy hell this video actually made my day. i am really bad at coding but this video has inspired me to keep working on a runescape bot id abandoned. it is just so exciting to see him explain the genius of the code and i cant wait to see my work pay off as well.
Ladies and Gentlemen, this is what passion looks like
Hm, a team of dragapult, ribombee, pangoro, ampharos, empoleon and gardevoir.. Interesting, even if I don't see ampharos putting in a lot of work for OU..
But it'll be interesting!
Weird Ampharos and Empoleon aren't in swsh?
well the AI works around the OU tier instead of VGC, so that might be the reason...
That intro made me feel smart. Like as if my years of Pokémon battling makes me a strategy genius. 😂
If someone realised it was an AI it would be a lot easier to predict as there would be no randomness and you can be assured it “thinks” of every aspect so it’ll pick the best move, which is very easy counterpredict. However just using it to help you, it’s insane and a really cool project
That's not how things work.
At the end of the day, his agent tries to pinpoint the odds of his opponents next play. I didn't saw the whole video yet, but the output of the agent could easily be a distribution of choices that is the best against the distribution of moves of the opponent, and them use a RNG to pick the move.
for a moment I was so excited, then realized this was *July*
and also OVER TWO YEARS AGO
5 minutes in, I knew this video was going to be amazing! You've created something spectacular. The graphics throughout the video are also top notch and really illustrate your points well. Thank you for sharing this!
Cant say I didn’t expect machine learning to get ditched. In my experience it always ends up being training wheels for truly good AI.
I get the impression that would be the case for all but the most large scale/ambiguous/volatile problems.
this is one of the coolest videos i’ve ever seen in my entire life and just makes pokémon even more fascinating and interesting than it already was. amazing job!!! you’re making our state proud 🍊☀️
This was incredibly accessible for a video involving machine learning, and an application that is dear to my heart as well. Amazing video!
The way you explain things comes off as very easy to understand you have a talent for this I hope you go very far your channel deserves way more subs great video quality too
This is a really interesting project. I do wonder about if the AI is be able to "force" opponent players to make the moves it desires to happen ( a bit like chess ) as a byproduct of predicting their moves, and if this happens consistently.
Dude this is actually insane. Beautiful work.
This really was one of the best videos i have seen in a while!
You bring restored honor to the term "Florida Man". So cool! Reminds me of Deep Blue. Props if you make history!
Incredible vid, can't believe how good your art direction / editing are, on top of how deep the math goes. True talent!