I wouldn't really call it a "speedrun", because it's a genetic algorithm tasked to reach the next level of game, not to reach it as fast as possible. A good idea would've been to make Reinforcement Learning algorithm (PPO for example) that would've been punished for every second of its miserable existance and rewarded for getting as close to the level transition trigger as possible. Then just train a bunch of models on different levels and then you would definitely get a solid speedrunner, you would just have to switch between models as you progress through the levels. Unless you want to train a giant model on the whole game when you restart from the very beginning after each death of course.
Dude nice work, hope to see more from this and I hope your skills get better and better over time. I really love the idea of AI agents for playing games
I just had an idea after seeing the beginning of the video, maybe next time instead of letting the ai play for you you could make one that assist you so everything you do i perfectly smooth, you won't die, or anything like that ( kinda like the think in Mk8 delux that forbid you to fall of but with real inputs )
Great video :) ! Quick advice to make even better next videos : - i feel like the second part of the video where we see the AI test all the paths is too long. Maybe you can cut into it or add some commentary that will make it more interesting, as I know my fellow youtube watchers, we tend to skip repetitive content like this. - Also consider using game better known, smash bros was a good one, i'm not sure celeste will help you have more views. I'm giving this advie because I believe your number of views is not rewarding enough all the work you have done for this video. But i enjoyed it anyway :) Thanks again for your videos, you have a new subscriber from france now !
my biggest gripe with these sorts of videos is... no, it didn't learn to play celeste. it learned to play specifically your inaccurate recreation of celeste. like i kinda get it but.. still
I want to do something similar, except I want to stick to Celeste, not the Pico 8 version, and I want to write the inputs by hand. Run in some direction for some duration, then jump in this direction, then dash in some direction. Something like that. I'm trying to find the best way to script the inputs.
A lot of games have community-made TAS tools, which could be helpful. For Celeste, this seems to be the go-to choice: github.com/EverestAPI/CelesteTAS-EverestInterop
I was thinking whether one could use computer vision to train an ai to play games. This is exactly what I was looking for thank you! (before 3:51) But you mentioned that the moving camera is an issue for the real game, so you chose the earlier version of Celeste with a fixed camera. Can you share why is the moving camera a problem, exactly?
I was wondering if for the checkpoints of each level you chose them yourself or agent through the hell of using an algorithm to determine them. Happy to see someone make videos of this very niche topic that makes my brain happy :))
To get informations about celeste (x, y, is dead, room, frames...) you have celeste debug rc with the tool celesteTAS. You can lauch http requests from a local host server to get informations. Also I have a question, if no individual in the population reaches a checkpoint, how is the selection process done?
That's a good idea! If no individual reaches the checkpoint, the moves are re-randomized. If after a certain number of attempts they don't reach the checkpoint, more their max move count is increased.
@@effdotsh Yes. I coded the equivalent of the monkey model (lol) but with the real Celeste in python. The big problem with my version is that I can't run several individuals at the same time
I have some experience in Machine Learning, if you want to include some network into your Celeste project, give the model a representation of the level grid as a one-hot encoded image where each channel corresponds to a block type and give it a second grid of the same size where only the current position is set to one. This could already give you some interesting results. The output of the model should be probabilities for pressing each of the action keys
Building on top of the base celeste classic code would mean the AI would also need to be created in pico8, which is a much more complex task (imo) than just remaking the game
There was no easy way of getting an input state to the neural network other than using images and training on a CNN would've taken longer, absolutely a valid approach though
I can't believe I'm probably the first person this video got pushed out to, this video is such an amazing concept and I'm glad I found this video
Keep up the good work. Your dedication to creating these projects is insane
this is genuinely amazing!! hope one day you will blow up to millions of views that you deserve man!
im very happy i subscribed to this channel, very well made video
I wouldn't really call it a "speedrun", because it's a genetic algorithm tasked to reach the next level of game, not to reach it as fast as possible. A good idea would've been to make Reinforcement Learning algorithm (PPO for example) that would've been punished for every second of its miserable existance and rewarded for getting as close to the level transition trigger as possible. Then just train a bunch of models on different levels and then you would definitely get a solid speedrunner, you would just have to switch between models as you progress through the levels. Unless you want to train a giant model on the whole game when you restart from the very beginning after each death of course.
this is actually really cool and very well explained, amazing video man
great video this is extremely interesting stuff, surprised it doesn't have more views
Dude nice work, hope to see more from this and I hope your skills get better and better over time.
I really love the idea of AI agents for playing games
I love videos like this. Truly a unique art form. Your soundtrack choices were spot on. Or were those choices made by AI?
for someone who's invested so much time into researching artificial intelligence, you could have at least given the manifesto an honest read
dude wtf how has this only got 600 views this is quality content
you have a good taste in music
next up, "I want to be the guy"
WAOH THIS NEEDS MORE VIEWS!
I just had an idea after seeing the beginning of the video, maybe next time instead of letting the ai play for you you could make one that assist you so everything you do i perfectly smooth, you won't die, or anything like that ( kinda like the think in Mk8 delux that forbid you to fall of but with real inputs )
The Strawberry is a Lie
Underrated channel
Keep it up please🤌
yoo new video!
Obligatory algorithm boost comment here! Jokes aside, this is some incredible work. Keep it up!
came for the ai, stayed for the comunist manifest jokes :)
Underrated as fuck
How do you have so little subscribes this is awesome
hey dude can i have the code for the Pico8 version of celest that you did in the beggining of the video? thx
just flipped the repo to public, feel free to use as you wish, but I won't be providing any support for the code.
github.com/effdotsh/celeste-bot-old
Great video :) !
Quick advice to make even better next videos :
- i feel like the second part of the video where we see the AI test all the paths is too long. Maybe you can cut into it or add some commentary that will make it more interesting, as I know my fellow youtube watchers, we tend to skip repetitive content like this.
- Also consider using game better known, smash bros was a good one, i'm not sure celeste will help you have more views. I'm giving this advie because I believe your number of views is not rewarding enough all the work you have done for this video. But i enjoyed it anyway :)
Thanks again for your videos, you have a new subscriber from france now !
Celeste is a pretty popular game actually
Underrated!
yooooooo
~Celeste TASer
Algorithm are you there? Can you hear me?
o7
my biggest gripe with these sorts of videos is... no, it didn't learn to play celeste. it learned to play specifically your inaccurate recreation of celeste. like i kinda get it but.. still
This was super interesting and fun, but I wouldn't call it AI. It's more of a brute force method to find the best key combination to beat celeste
True. It's a more advanced bruteforce method that uses some ideas from the AI algorithms, but it's not actual AI. Still very interesting tho
not even the best, just one that works
Nice!!
Fun video
I want to do something similar, except I want to stick to Celeste, not the Pico 8 version, and I want to write the inputs by hand. Run in some direction for some duration, then jump in this direction, then dash in some direction. Something like that. I'm trying to find the best way to script the inputs.
A lot of games have community-made TAS tools, which could be helpful. For Celeste, this seems to be the go-to choice: github.com/EverestAPI/CelesteTAS-EverestInterop
Love this content , one day I’m going to me making AI to play video games too ❤
I was thinking whether one could use computer vision to train an ai to play games. This is exactly what I was looking for thank you!
(before 3:51) But you mentioned that the moving camera is an issue for the real game, so you chose the earlier version of Celeste with a fixed camera.
Can you share why is the moving camera a problem, exactly?
Code Bullet? Those had their moments but got old pretty fast. When you said “remake the game” and “waypoints” that’s exactly like one of his vids
This is an amazing project that takes insane dedication, seriously this is awesome
I was wondering if for the checkpoints of each level you chose them yourself or agent through the hell of using an algorithm to determine them. Happy to see someone make videos of this very niche topic that makes my brain happy :))
All the checkpoints were manually placed
Celeste is a w game
Algoritm boooooost
Thank you for your service o7
To get informations about celeste (x, y, is dead, room, frames...) you have celeste debug rc with the tool celesteTAS. You can lauch http requests from a local host server to get informations. Also I have a question, if no individual in the population reaches a checkpoint, how is the selection process done?
That's a good idea!
If no individual reaches the checkpoint, the moves are re-randomized. If after a certain number of attempts they don't reach the checkpoint, more their max move count is increased.
@@effdotsh Yes. I coded the equivalent of the monkey model (lol) but with the real Celeste in python. The big problem with my version is that I can't run several individuals at the same time
I have some experience in Machine Learning, if you want to include some network into your Celeste project, give the model a representation of the level grid as a one-hot encoded image where each channel corresponds to a block type and give it a second grid of the same size where only the current position is set to one. This could already give you some interesting results.
The output of the model should be probabilities for pressing each of the action keys
Pico 8 Celeste has the source code included, why not just modify it?
Building on top of the base celeste classic code would mean the AI would also need to be created in pico8, which is a much more complex task (imo) than just remaking the game
Algorithm.
yea nice. i want to say negative comments but i wont. *Heart emoji*
karl marx was way more intelligent than you, but nice video, I really love this game
When the AI move to new level does it use the same network or start fresh ?
It starts fresh on each level. This algorithm finds specialized solutions, not a general one
Make some ai play a turn based game xD
Awesome. Why did you use a genetic algorithm and not a neural net?
There was no easy way of getting an input state to the neural network other than using images and training on a CNN would've taken longer, absolutely a valid approach though
But good to know, I didn't know genetic algorithms could work better on stricter hardware requirements
@@effdotsh can't you extract necessary info from unity with some additional code?
Clickbait
15