AI learns to play PACMAN || Part 1 the making of Pacman
Вставка
- Опубліковано 20 сер 2024
- Hey guys this is how I made my clone of pacman
Check out the source code at github.com/Cod...
It would be awesome if you could join me on Patreon / codebullet
I hope you enjoy
Source code is up so check it out
github.com/Code-Bullet/PacmanGame
You are a genius and I respect you highly. Dare I ask if you could do an ai for lunar lander or centipede sometime in the future? I'd be very interested in how someone would program that and I know you can do it
Looks like you could use a parent class for the ghosts... Does Processing support inheritance? It looks very c++-like... But I haven't heard of it before (and haven't done my homework on it). This would prevent the copy/pasting of general features.
Have you seen the Berkely AI materials on pacman? They have the framework for pacman in python on their website.
I used the code to make hellish AI for the ghosts. I used A* and make the two ghosts always try to get on opposite sides of Pacman, fun times.
@dzjad I've tried to set up a parent class for it in that code but either Processing or Java just has some severe limitations that make it a real headache to do it. Children appear to use the Parent's values when it runs the Parent's code, regardless of what you set the same variables in the Child to, so you have to have a bunch of Abstracts and/or external code to set these values ( external from the Parent and the Child) anyway which makes having a Parent class largely pointless unless you migrate most of the code such as the pathfinding, node finding, movement, and other things, to their own classes and run the code per Child class, but that would basically require completely recoding the entire thing and that's well beyond my skill level.
A* is a pretty light algorithm for this few of objects pathfinding, though, so I wouldn't doubt it couldn't run on the hardware of the time. To top it off, the size of the code is still under 256KBs (despite nearly reaching it) which means it could also fit in the memory of the hardware at the time as well though it would be missing sounds, music, and most of the graphics, as well as the title, the score screen, and level progression, plus you also have to have the entirety of Java with this so... If you were to include all of that it might make it a bit too big for the time (Multiple sources of memory wasn't uncommon for MAME cabinets, but it definitely made it a lot more expensive and there usually was never more than 1MB of RAM if it even got that high)
As I was looking through the code, it did seem a bit over-engineered to me TBH.
I can't actually believe there was a time when a Code Bullet video wasn't just him shouting obscenities and losing his sanity
Me too bro/sis
lol
I could not agree less 🎉
A few details not covered in this video, for those who are curious:
1. At the two tunnel entrances just above the ghost house and the two entrances on either side of Pac-Man's starting location, the ghosts are unable to make upward turns (except in Frightened mode). This makes for some handy safe zones if the ghosts are concentrated below you.
2. After a certain number of dots are eaten on each level, Blinky enters a state known as "Cruise Elroy" (though where the name came from remains a mystery to this day), where two things happen: Blinky speeds up to nearly the same speed as Pac-Man, and he no longer targets his respective corner during Scatter Mode. When a second dot threshold is reached, Blinky speeds up yet again, to the point where he's visibly faster than Pac-Man.
3. Because collision in this game is tile-based instead of sprite-based, there's a rare phenomenon where Pac-Man can pass through a ghost unharmed, due to Pac-Man and the ghost changing tiles on the exact same frame.
Certainly a good start, in any event!
Don´t bully Clyde, he is trying!
Gregorio Cervejeira HE IS TRYING HIS BEST, OKAY?
Gregorio Cervejeira Don't*
No... he is clyde
knowing that he isn't a threat should help a lot
But takes up the path the player can use... Got an Exit, nope Clydes there.
I just stumbled on several of your videos today and you have earned the ability to send my phone notifications. Thanks for being one of the rare few deserving such.
billy vandory what's sad is your comment got likes
What a sap
I did not expect to learn so much about the mechanics of PACMAN.
You would learn more, if you watch "Pacman ghost AI explained".
same
3:29 “Did you see that?”
Me, an intellectual: The Power Pellet did nothing
A couple of years ago, I recreated Pac-man in C++ for my intro to computer science class. I remember researching the ghost behaviors in-depth, and it was immensely satisfying to see that you gave them (nearly) the same behaviors that I did.
Dude, you programmed PacMan from scratch in Java with authentic pathing! How long did that take you??
about a week
Huh, well it took Toru Iwatani and a nine man team a year in 1979 - what a bunch of slackers! ;-)
you realize they didn't have the same tools and they had to come up with the original game design
David you dropped this /s. Just in case ; )
scoutiano Dude, I wasn't being serious... ";-)" means "joke"
Iwatani and his team are legends. The AI pathing behaviour and gameplay replicated here is such great optimisation that we're talking about it decades later and you don't get that without investing a huge amount of work.
It was a bit of humour with the aim of delivering a compliment; a week is damn fast.
Do what you love and people will love you! And we do love you now!
And I love you
Can you do ai on Ragdoll runners now please :( i really recommend it
The one dislike is clyde
Edit. I clearly was early lmao
dammit Clyde
No one like this comment anymore
Fuck u clyde is the best one
and why should we listen to you?
HES MAFDE ALTS
10/10
Commentatin
g
F
F
F version 2020
F
How good can this channel be? ^_^
Dr.BonesGuy good
How do you do this stuff within weeks of each other?!? Don't you need to breathe sometimes?
Great as always!
To breath are for pussies.
But if you breathe...
You are dead..
100% animals who breath dead...
breathing actually kills you
Yep, hard tough guys dont breath because they can take it, softer guys and panties can not and thus they die.
Love it! We need more “AI plays ancient game and tests it’s capabilities...”!
Alto Bluedot Ai playing chess and checkers. .... i ve already seen this somewhere
Ai plays the original donkey Kong Mario game
Alto Bluedot its*
DeepMind released a paper focusing on a ton of Atari games, along with a video :)
wrong its
You put a lot of effort into your vids! simply put, amazing! Can't wait till part 2.
I like how the writing is so casual. Honestly! People always think that when regarding computers and coding you have to take it seriously. It’s so refreshing to find someone that speaks my language. I don’t wanna sound pretentious, but I have a fair share of knowledge about computers myself. Not about software however, more about hardware. I really enjoy learning the inner workings of AI and seeing it evolve. That combined with another person who does this stuff for fun, it’s a dream come true! Thanks for standing out.
Pretty good, but there are some minor differences from the arcade game. These are detailed in The Pac-Man Dossier (which several people have already linked to), and I presume you used as reference (because it's awesome, and what you *have* done is pretty good):
1. There are four routes in the maze that are "one way" to the ghosts, that they can go down but can't go up. They are the two vertical routes directly above Pac-Man's start location, and directly above the monster box. In play, these are useful for escaping pursuit.
2. Ghosts slow down in the tunnels.
3. This is a big one... there's actually a significant pathfinding bug in the arcade game that affects Pinky and Inky whenever Pac-Man faces north, that tends to cause them to cause them to home in on the wrong location, one to Pac-Man's left. It's fully detailed in the Pac-Man Dossier, but one result of it and the one-way routes is the infamous "safe spot," the area just right-and-up from the starting location that the ghosts' pathfinding often breaks down when they try to reach it when Pac-Man is facing up.
4. Finally, the ghosts aren't entirely random when vulnerable, but pick routes deterministically based, among other things, on reads from random memory locations. This has the weird side-effect of making it likely impossible to fully implement Pac-Man's AI without a full copy of the game's ROMs, although it's a really minor point ultimately unless you want to perfectly recreate the arcade game.
You man are legend.
What about the section on the sides of the screen where you cross between the left and right side? Have you tested that?
CB: let’s name the AIs
CB: *uses canon names*
_unless… they’re not canon_
I am so happy for having subscribed to your channel. Your content is fascinating.
I am waiting for your next video. This one was great. Thank you.
I really enjoy all your videos! you are my new hero :p
i can only imagine the "whoop whoop whoop" meme happening every time clyde targets his corner
Oh damn it's nice to see your channel getting bigger. You deserve it. For all the work you're doing for it. I subscribed on the last video, if you're interested in hearing.
It's wonderful both seeing a new channel get this fast of a start, and having one more channel doing AI stuff. And. Something in your style just seems so enjoyable.
I think it's the music taste. :)
9:05 TRIPLE KILL
The pinky part actually got an audible laugh I love that
Damn I came here thinking this was an older video so I could watch it all, looks like im subscribed for now 😂
Ah cool, I knew the ghosts had such personalities but it's nice seeing their pathing lines drawn out. Can't wait to see an AI tackle this :)
Super cool and really impressive. Butt... Pac man does slow down while eating dots and is able to outrun the ghost if there are no dots in front of him. But otherwise thumbs up.
it's supposed to do that
Bubba Church I never knew that I will now play god with my new knowledge
Pac-man also turns corners faster and we don't know if he implimented Blinky's speed increase or the looping from the sides. He also did a fixed version where it doesn't have the error where if Pac-man looks up, Pinky and Inky's target moves four tiles to the left
haha butt hhh hhahaahahha butt hhhh
I'm actually intending to make a Phaser version of PacMan, in order to learn some game programming techniques.
Thank you a lot man, you're a legend.
you're too good. Commentary 10/10. Logic 10/10.
"we need to give them personalities" "oh and names"
Don't forget to include your patreon in the description :)
thanks, It's there now
I love it! You actually recreated the actual logic begind pacman instead of just making the ghosts follow you as in many other pacman clones.
The comedy of your commentary really makes the video so much more entertaining- though watching you making AI is already pretty fun.
Quality stuff, keep it up man!
Great choice of music
Love learning patterns from Pac-Man
Awesome video! I spent DAYS trying to recreate Pacman in excel VBA and never figured it out. I was trying to implement dijkstra's algorithm for the ghost AI and it failed horribly, I never knew about A*. (Plus, using excel VBA to code certainly didn't make things easier). Thank you for the great information and posting the source code! Your videos provide great inspiration to learn more about coding, keep up the excellent work!!
RIP Blinky :c
You've done what I've always wanted to do
Awesome as always, can'y wait to see part 2!
Awesome! I realize my comment was probably posted when this was already being made, but im so glad you made a pacman video!
love your humor
SPACE INVADERS!
I wonder how hard it would be to recreate Pitfall...
i made Galaders, a mash up of space invaders and galaga...in visual studio using C# .. check it out
This was actually so funny and informative at the same time😂 Thanks bro, we appreciate u
5:15 when you are playing basketball and you break the other guys ankles
This is really awesome!
Check out A* Coding Challenge by Coding Train, excellent
but don’t forget the this.
this dot,
this dot,
this dot,
never forget the this dot
10/10
Wow, I was literally thinking this would be the next step, that's awesome.
i love how some lines of code can be more useful than me
What a good video, I can't wait for AI learns to play Tetris
PD: #ClydeDidNothingWrong
Lol, I've been working on my own Tetris implementation and an AI to play it but this guy will probably beat me to it, even though I started first.
I love you so much youve no idea??? U better be single bro. Nah jk. Like srsly thank you for creating these kind of videos ive always been so interested in codes n stuffs but im noob at them. Seeing them come alive makes me day. Tytytyty
bluh bluhbluh learn grammar
Jorge C. M. Sincere apology to you sir. When I feel extremely geniune towards someone I tend to be very informal, moreover, I would ignore the rules of expressing my message created by an old bearded man who named it "English" with a sub-category "grammar", and expresses them truly in my own way. From the bottom of my heart, I hope you spare this poor mankind you call a grammer jews.
sounds gay
bluh bluhbluh You just trolled the fuck out of that dude lol
Cool! Well done. And now for the REAL cool stuff! Hehe 👍🤓
Love the way you interact with us, the viewers! Amazing chanel keep it going!
Interaction?
yes
Pleas make more of these great videos I love the them
And could you say witch language you use to program
Java
MyTech37 MyTech37 learn grammar
is it worth your time going through all the comments and judging people's grammar ?
Fan count +1
fanCount++;
fanCount#;
I have been researching pac man and this video was really helpful in representing how the AI for the original game works
It was really cool to see you build Pac-Man from the ground up! Excellent video!
Song name (please)
Hyperspeed - eveningland
Darude - Sandstorm
I dont really understand Inky's position way...
He basically maneuvers around you so he can confuse you.
5:10 lol, Pinky just got *bamboozled*
Incredibly clear presentation of Pacmans Ai! :o
What are song names?
First song is Eveningland-Hyperspeed.
Your channel is seriously blowing up, how?
By doing something that a ton of people find incredibly interesting and unique. That is all.
Good original content made with passion.
"magic"
The UA-cam algorithm picked up on it. One of his videos recently went pretty viral, so the algorithm picked it up and helped him grow. I'm guessing it was his snake video.
He put a bomb inside it.
Clyde is like a melee-hunter with a phobia of getting too close to people
The red ghost gets me literally every time.
But can you go through the wall hole and go to other side?
0:00 *What The FİRST Song ? PLS*
Darude - Sandstorm
Hyperspeed - eveningland
😄😁😍😁😍😁😁
Very interesting! Can't wait for part 2!
originally all of these ghosts had diffrent AIs for example the Orange one alway turns if he is able to catch pacman and I am not sure who but one of them can only turn left.
But I still think this is a nice work and interesting video!! I am exiced for the next part ;")
Can you jump from one side of the board to the other?
What's the first song used in the video?
Eveningland-Hyperspeed
@@Random_Blip thank you so much!
@@twoeyedmike3529 Happy to help.
Glad I found this channel so early, I can tell it's gonna get really big quickly. Great videos keep it up man
"The red and orange ghosts are in the same position. And also since they have the same behavior (always following pacman) they will remain together forever" Well done captain obvious.
You basically recreated the game pacman with bots. Great job!
1 thing dough, blinky(red ghost ) is faster than the other ghost and than the player himself. Still , great job!
And.. By the way... You should try to recreate tetris and teach bots to play it , from generation to generation , until they play like the grandmasters. Just a sugestion .
No, he isn't. He moves at the same speed as the other ghosts unless in 'Cruise Elroy' mode, which occurs when the number of remaining dots is below a certain number (which, itself, is dependent on the level).
Actually, it isn't. It starts moving at the same speed as the player when 20 dots are remaining, and moves faster than the player when 10 dots are remaining. He also keep chasing the player while in scatter mode (scattering, but still chasing the player if possible). Killing him will remove that ability from him.
Like I said before, the number of dots remaining is dependent on the level. Also, Cruise Elroy speed boosts are 'normal ghost speed + 5%' for the first boost and 'normal ghost speed + 10%' for the second one. It just happens to be the case that the first speed boost makes Blinky the same speed as Pacman on the first 20 levels, but not from level 21 onwards...
What is the song that's used
The Horror you forgot the question mark
The song is called Sandstorm, by Darude.
Jesus It's 2018
Eveningland-Hyperspeed
This is the first CB vid I have watched with no narration and the funny thing is when I read the text, the narration voice is literally CB!
Love these vids man! Keep em coming!
Your implementation of the ghost AI is wrong. The red ghost is meant to go directly to Pacman, the blue and pink ghosts try to block your path, and the orange ghost just generates a path using the current RNG value.
Did you watch the full video? He added the specific ambush patterns present in Inky and Pinky and gave Clyde his fickle nature (which is less random than most people believe, it's a specific method he uses that gives his ghost an indecisive chasing pattern that looks rather random).
Clyde's movement is based on his "scatter mode" position and pacman's position. During scatter mode all ghosts will return to a specific corner of the map, however Clyde goes back to this as soon as he is within 8 tiles of pacman and goes towards pacman like blinky when 8 or more blocks away.
when you did the research before seeing the video because you mostly knew it... then see it all in the video...
Came to also comment that they have specific ais. Only 2 mins in though myself.
Clyde is like me, he only pretends he's doing his job but he really just wants to go back home. Y'all can call me Clyde now.
If you showed this to me without knowing this was Code Bullet, I would never have guessed.
I literally searched for 'AI learns to play pacman' yesterday before this video was published and here it is today... Woa.... Subscribed.
I’ll never see PacMan the same way again. 🤙🏼
I had so much fun watching this, omg.
And as a programmer also learned from it.
Sorry for my bad english, isnt my 1st language.
Really fantastic video, I would just like to add in that you forgot the level creation system. Pac-Man has a color palette and a sprite/audio sheet where it gets text, walls, ghosts, etc... The sprite sheet is why the glitched level exists because of the maximum number the machine can handle. Also the short cut scenes in between levels are missing, would like to see a complete version of the game.
Just this itself has thought me how Pac man works and I'm amazed
I'm just glad you gave the ghosts their actual names.
No, don't use A*. The ghosts have a very specific algorithm for greedily minimising distance out of a maximum of three directions to turn.
Also, pinky won't target four tiles in front of pacman when he's looking upwards, there's an error with vector addition which makes her target four tiles up and to the side
"Let's give them names" continues to just give them their original names
-all of the ghosts have different AI-
Edit:oh he figured that out
I like how you make me feel like I'm not too stupid to do this, even though I am
Subbed, I'm looking forward to more
Really like this one, love you're work
One last thing you forgot - after Pacman eats all the dots, he has to exit the maze to go on to the next level.
Don't know if this has been mentioned already, but due to a number overflow, Pinky actually targets the square four spaces up AND four spaces to the left whenever Pac-Man is facing up. When facing the other three directions, Pinky targets as indicated in this video.
I like Clyde. This and his appearance in Wreck-it Ralph actually gives some context to his actions. He doesn't want to be the bad guy, but it's the role he's been given.
Pacman has a 28x31 square tiled grid which is 868 square tiles and with 64 points where the Ghosts and Pacman could change direction.
Dudee you forgot something!! The ghosts turn 180° after pacman eat the special food. by the way great video! Keep it up!