Python Platformer Game Tutorial for Beginners
Learn how to build a platformer game in Python. This game will have pixel-perfect collision, animated characters, and much much more!
✏️ Course created by @TechWithTim
💻 Assets and Completed Code: github.com/techwithtim/Python...
⭐️ Timestamps ⭐️
⌨️ (0:00:00) Project Demo
⌨️ (0:01:32) Project Brief/Getting Started
⌨️ (0:03:07) Project Setup
⌨️ (0:04:18) Asset Walkthrough
⌨️ (0:05:38) Game Setup
⌨️ (0:10:57) Generating The Background
⌨️ (0:18:15) Creating The Player
⌨️ (0:27:39) Moving The Player
⌨️ (0:31:20) Adding Gravity
⌨️ (0:35:19) Loading/Splitting Sprite Sheets
⌨️ (0:48:50) Animating The Player
⌨️ (0:56:14) Adding Terrain/Blocks
⌨️ (1:08:51) Pixel Perfect Collision (Vertical)
⌨️ (1:14:48) Jumping & Double Jumping
⌨️ (1:22:28) Scrolling Background
⌨️ (1:27:53) Pixel Perfect Collision (Horizontal)
⌨️ (1:36:16) Adding Traps (Fire)
⌨️ (1:45:09) Player Collision With Traps
⌨️ (1:50:51) Conclusion
🎉 Thanks to our Champion and Sponsor supporters:
👾 Nattira Maneerat
👾 Heather Wcislo
👾 Serhiy Kalinets
👾 Erdeniz Unvan
👾 Justin Hual
👾 Agustín Kussrow
👾 Otis Morgan
--
Learn to code for free and get a developer job: www.freecodecamp.org
Read hundreds of articles on programming: freecodecamp.org/news
Пікірлер: 189
Hattsoff!!!! To all of your team that you’re providing all these useful courses free of cost
This is crazy I've been searching for a tutorial like this for years. Thank You Tim!!!!
Thanks a million Tim! I've been searching for two months now for a tutorial exactly like this to do a project with my son. My search is over!
@DANtheman-90
6 ай бұрын
bro if it took you 2 months to find this video when searching specifically for something like this you may need a career change
You guys are so super i don't have words to appreciate you.Thnks for this video ❤❤
This is amazing. I skimmed through the video because I dont have much time but I really want to watch this. Saved for later
@gabrielgarcia5040
11 ай бұрын
Did you watch it?
@ThatOneSweat
2 ай бұрын
Did you watch it yet?
The box collision and mask collision stuff was very interesting. I remember as a kid that was one of the frustrating things when you "hit" something and the actual visible character clearly did not hit.
Absolutely amazing video!
This is a great introduction to python for gaming.
nice i used a lot of tims tutorials to learn python, can recommend !
This is excellent! Thanks.
Excellent tutorial mate!
Omg yay! I can’t wait to try this
I'am 43 , I did it! I just finished your course .. thank you Tim
@gelomelo8968
2 ай бұрын
it feels great that, people like your age is doing this. keep it up sir
I found that to be able to run the tutorial with a double-click in Windows (rather than via the development environment), I needed to add the line: mypath = os.path.dirname(os.path.realpath(__file__)) near the start of the code (I put it after the line setting the caption), and then change the joins that specify "assets" from path = join("assets", to path = join(mypath, "assets", This is needed because double-click does not set your starting directory to the one where the code is stored, so the assets folder can't be found.
@yotacaz
11 ай бұрын
you just saved my day
@domination656
7 ай бұрын
yes i fixed it thanks a lot!
Love this ❤
Nice guide THANK YOU!!
I can finally watch this with confidence, I guess I'll see how it goes
Tech with Tim good programmer channel was very understable
Woo! Nice one!
Thank you very much for posting this video.... 😀😀😀😀
YOU'RE AMAZING!
I remember trying to look up a tutorial like this and never found one this good for python. THANK YOU SO MUCH. I plan to build a small game maybe the scale of the first Mario and really hope it either lands me a job or at least some donations from fans 😂 I’m so excited to try this out this weekend
@alejandrolondono4659
Жыл бұрын
You got this!
So great 😀 ❤
its very fast paced and its a lil hard to keep up and the details are not much discussed and why the code is structured that way, lil confusing
@pexkk
7 ай бұрын
skill issue
@bhaveerathod2373
6 ай бұрын
I agree
@Show1.
5 ай бұрын
Exactly
@ThisIsACreativeName
5 ай бұрын
Yeah, I had to rewind the video a lot
@zdiddy4112
4 ай бұрын
Any time I watch Tech with Tim, I slow down the video by 0.25 to 0.50 and can usually keep up to pace without pausing or rewinding much, it just makes him sound a little drunk sometimes..
Hey, would you folks ever consider making text tutorials? I suffered a concussion middle of last year and even though I'm out of the 7 month window of recovery, it seems that migraines and audio sensitivity are going to be a thing for me for... who knows how long. So, I have my own personal reasons for wanting text tutorials, but I can't be the only one who would like to see one or two? Ty
@linusyong4731
7 ай бұрын
you can find the transcript of it in the description. I hope you get better soon.
Hvala Brate! :)
muito obrigado pela Magnifica aula
@vitorg.teixeira
7 ай бұрын
oloco meo
Thank you!!!
Considering pygame it's a SDL wrapper, this tutorial is useful for C++ programmers who are using SDL to game games aswell Great tutorial!
@TheRaylan20
17 күн бұрын
what is a SDL wrapper?
@yrds96
17 күн бұрын
@@TheRaylan20 SDL is a multimedia library written in C. Pygame has a layer/wrapper that allows you to use SDL without dealing directly with the C API and worrying about C specific things (like pointers and dynamic memory allocation).
@TheRaylan20
16 күн бұрын
@@yrds96 So, this is something like, how do you write the code for the program runs faster?
@yrds96
15 күн бұрын
@@TheRaylan20 Basically yes. Many python libraries work this way, letting the performant critical parts running on C/C++ and the rest done in python which is easier/quick to use these libraries.
@TheRaylan20
15 күн бұрын
@@yrds96 Oh, I see. Then, It's basically a trick. That's good to know.
1:35:40 I notice that when I jump and land on the very edge of the block, it triggers the falling animation - wondering how to fix this?
Amazing
Love the tutorial so far, but I've run into a snag and can't seem to get around it. I installed pygame through VSC but when I run the script to test whether it quits the game window, it gives me "ModuleNotFoundError: No module named 'pygame' " because my pygame installation is located under Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pygame (using Mac) -- any suggestions?
Wow That so cool😁
Thanks team~
Thank you so much! I'll try it right now
great!
Tim is a really good teacher.... hats off 🫂
Let's good Tim!
Need help, when i try to run the code on "Pixel Perfect Collision (vertical)" portion, i got error: AttributeError: 'NoneType' object has no attribute 'overlap'
Thanks so much for putting these tutorials out there. One of the things i don't understand is how do you know what functions to use within the PyGame library (Or any library for that matter)? I do know where to find the documentation online but it seems like a lot of info to parse through. Or do I just need to bite the bullet and RTFM? haha.
@gabrielgarcia5040
11 ай бұрын
reading is the best way to keep learning
Just Wondering: How Do You Add Multiple Fires?
Im very new to Python, and reigniting my interest in programing. This has whet my appetite to keep going in my learning. Thank you
Are the assets public domain? If someone wants to use them commercially, can they?
Cool
Best tutorial of the kind. Not too slow that takes 5 hours just to insert a block, not too fast that we dont understand. Perfectly timed, well done!!!
Thanks for your tutorial. How can make this game mobile compatible for ios/android? Please let me know the possibilities.
Got 2 questions Tim, why u dont use Sprites in pygame and what is the other way to bypass Sprites?
in Generating the backround, how in line 40 you make two variables take 2 values if there is only one? im having this error: ValueError: too many values to unpack (expected 2)
Thanks! It was fun but it works very laggy on my computer (and I don't know why, it's a good computer).
01:18:40 I can only jump the number of times it say: player.jump_count 01:27:50 Is there a fast way to add floor? 01:03:00 I checked it, every square in the terrain image is 8 px, it's 12 squares from edge to this image, 12*8=96 cant't find enemies file
does anyone know how to make it scroll upwards instead of side to side
1:28 "Jesse, we need to code"
WHY CANT EVERYONE BE AS DOPE AS THE BEGINNING BRO SAID IF THAT DOESNT WORK THEN HERES 5 OTHER OPTIONS AND 2 VIDEOS damn bro cares :)
why those the game get slower when you make the game window bigger ?
How can u run the file with a lot of problems I have one and it just crashes does anybody know how to fix it I installed the pygame module but it still didn't work
This is great but some visual explanation would help next time something similar to networkchuck but without the over-the-top energy.
what to do if the window doesn't pop up when running the program
I love this work! I am currently working on a similar game for uni, does anybody know how i could make those sprites myself? Any tool recommendations?
having a problem at 54:24 where my code is saying "" 'pygame.Rect' object has no attribute ''topLeft' " i am using replit, idk if that changes anything but if I could any help it would be appreciated :)
@loganjames2638
11 ай бұрын
Use "topleft" not "topLeft", I had the same problem but looking through the PyGame documentation helped with that.
@michaelsekelsky4875
22 күн бұрын
@@loganjames2638 Thank you so much, I couldn't figure out what was wrong.
For some reason whenever my character touches the ground it keeps bouncing on it, i double check the code with the one Tim had and I can't find the problem, anyone have any idea what could cause it?
@soultorpedo8447
11 ай бұрын
i changed my sprite to something with other dimension (200x200) and seem to be encountering the same thing lmk if you find something to fix this
Tech with tim
Where to get the enemies? says link in project page, but no link.
just when I close the application, appears to me the 'blue' blackground, instead of this appears black, why?
recreating the follw up on scripts , when making call player and just drawing it with the rectangle . i found out I put pgyame.rect but it required a pygame.Rect , that claimed a value error :(
I cant RUN, i mean, everything's fine, even the RUN.png loaded, but it doesn't run when it runs(?)
how to download the github repository?
more on phyton from scratch
Does anyone knows how to add more fire and traps? need help
I am at 1:14:00 in the Video and I have the problem that my Charakter dissapears after ~4 sec cant find the misstake I have made can anyone help me? solved the problem! Thanks for the Video
@ThatOneSweat
2 ай бұрын
Can i see your code? and are there any error you encounter?
CAN I MAKE GAME LIKE THIS TO ANDROID MOBILE PHONE AND RELEASE THEM IN GOOGLE STORE?
I watch Pygame tutorials so I can build my game in C SDL2 - it's literally the same library.
@EvenTheDogAgrees
Жыл бұрын
Thanks, that's good to know.
hey! can i use intellij idea to code this game
First!!
🎉
I am having trouble where on line 69 27:29 where he placed player.draw(window) and run the script it launched, but for me it gives the error of AttributeError: 'Player' object has no attribute 'draw' what should I do?
@eggsisnice
Жыл бұрын
Hi did you ever find a fix for this? Having the same problem and can't seem to solve Thanks
@danyalahmed3995
Жыл бұрын
No I couldn't, I can't find anyone who can help with me this specific problem
@linusyong4731
5 ай бұрын
can you describe the error i might be able to help
@temitopeolarinde1700
28 күн бұрын
@@linusyong4731 i'm having the same issue. it just says 'Plater" object has no attribute 'draw'
@temitopeolarinde1700
28 күн бұрын
nvm i figured it out
i cant import os modul
Wooooooooooooooooooooooooooow
The assets list makes it seeem like there is way more than this that you didnt go over. Its like this is a part 1 that never got a part 2
@lm2thed142
2 ай бұрын
assets , lists are just ways to bring images and other animations into code since you cant really make them in python besides creating turles etc. U make these in things like a sprite maker online or anything with the correct scale.
@shaunduzstuffs
2 ай бұрын
@@lm2thed142 I'm aware of that. I'm talking about the assets themselves suggesting there is more to this, such as assets for enemies
Tried the code from the GH repository. When you run to a side, why is it so visible that the scrolling of the floor is not smooth at all?
@ThatOneSweat
2 ай бұрын
Its probably because the width and height are too big, try scaling it down a bit
First!
🙏💯👍
This video seems cool but I've run into a problem. I'm on the part where we're making the window. when I tried to run the code I wrote and the tutorial code, it said " Traceback (most recent call last): File "C:\Users\freeg\PycharmProjects\pythonProject31\main.py", line 24, in if _name_ == "_main_": NameError: name '_name_' is not defined " what can I do to fix this?
@user-qb5xs9ye4i
3 ай бұрын
main should have double underscores around it
@ThatOneSweat
2 ай бұрын
yeah it should look like this: if __name__ == "__main__":
8:45 __main__ 12:48 running from correct directory 1:20:20 animation to jumps do I need not rlly
How to add fire trap at other positions as well
@ThatOneSweat
2 ай бұрын
In the "def main(window):" each time the "fire" Variable is called, i make a duplicate called "fire1". like this: fire = Fire(100, HEIGHT - block_size - 64, 16, 32) *fire1 = Fire(100, HEIGHT - block_size - 64, 16, 32)* fire.on() *fire1.on()* in the "objects" variable i do this: objects = [*floor, Block(0, HEIGHT - block_size * 2, block_size), Block(block_size * 3, HEIGHT - block_size * 4, block_size), fire, *fire1* ] and i add another loop too: fire.loop() *fire1.loop()*
There are no main.py when i downloaded it
I have a question can you make any game with these steps and code.
@EvenTheDogAgrees
Жыл бұрын
If by "any game" you mean "any platformer", and you're willing to expand the codebase a bit (e.g. it doesn't have projectiles or anything at the moment), then sure. This code would be a relatively decent codebase to start your game from. You could even change it to suit some other 2D genres, e.g. horizontal/vertical shooter, beat 'em up (double dragon style or mortal kombat style, your call), or take it in the direction of say Dead Cells, Contra, ... You have the basis for a platformer, which means you have surfaces to walk on, you can jump onto other surfaces, you have collision detection, ... Any game that can be built with those concepts can be built with this codebase. And if the game needs a bit more (powerups and health pickups, a magic system, RPG elements, ...) it can be added.
After creating the background my separate window just keeps shutting down and I figure out why?
@ThatOneSweat
2 ай бұрын
Can i see your code? and is there any error that showed up?
hello, I am having a problem at 48:34 at the def draw. I keep on getting this error in the terminal (KeyError: 'idle_left'). I've tried to fix this problem multiple times by rewatching and recoding it but I still can't seem to solve it. def draw(self, win): self.sprite = self.SPRITES["idle_" + self.direction][0] win.blit(self.sprite, (self.rect.x, self.rect.y)) I belive this is the code that keeps on erroring but I do not know how to solve it.
@jagzey
10 ай бұрын
the ‘if direction:’ conditional within the load_sprite_sheet function needs to be within the first for loop called ‘for image in images’, not just in the function, that fixed it for me
@joycedagodog3443
9 ай бұрын
How did you fix it I have a same problem
@otavio_rodrigues1823
9 ай бұрын
I was having the same problem, and it was happening because an identation error. For me, it was in th load_sprite_sheets function: the return of the function must be out of the else block, otherwise it wont work properly.
@LuisGonzalez-pc3zw
7 ай бұрын
Thank you so much@@otavio_rodrigues1823
Why does it say “for beginners” in the title but in the brief it says you should be intermediate???
Can you do this through REPLIT?
@EvenTheDogAgrees
Жыл бұрын
While I don't have the answer to your exact question, I want to thank you for not simply going off and trying it out, but asking a bunch of strangers in the KZread comments section instead. Contrary to what some may tell you, programming (or learning any new skill, really) is not about curiosity, taking initiative, experimentation or any of that crap. Instead, you're supposed to watch videos, read articles, and ask questions. And then patiently wait around for weeks or months in the hopes someone will eventually answer. It's the quickest way to make progress.
the file main.py is missing
This Tutorial is good but has a HUGE issue. since we are resetting the x.vel so the player doesnt move on toggle, but on hold... everytime the function is called we are resetting to the idle sprite. its not super visilible with this specific animation but its a BIG PROBLEM. maybe try to use on keydown instead of keys? idk
@dosomethingwild4999
16 күн бұрын
You can check this by adding print(sprite_sheet)
@dosomethingwild4999
16 күн бұрын
I cant believe this isnt in the comments. did everyone fallow line by line XD ?? hahaha no one tried different assets/animations....
The github code is kinda broken, i can't view the code there. But Good job!
@Ahmad-xr9jn
8 ай бұрын
same problem
Getting ModuleNotFoundError: No module named pygame. I’m on windows
@AAlgeria
29 күн бұрын
pip install pygame
It's okay. I kept running into a lot of errors despite following the code exactly :(
why this video is titled with the word 'beginner'?
@lm2thed142
2 ай бұрын
its a beginner class into making games. You cant really make a game without knowing the tools? why its considered a beginner status for making games. example being, you don't teach yourself a rainbow flick in football before you learn how to kick a ball
My files wouldn’t download😢
10:43
Hello👋, I will try to help if you have problem with the code.
⭐ Timestamps ⭐ ⌨ (0:00:00) Project Demo ⌨ (0:01:32) Project Brief/Getting Started ⌨ (0:03:07) Project Setup ⌨ (0:04:18) Asset Walkthrough ⌨ (0:05:38) Game Setup ⌨ (0:10:57) Generating The Background ⌨ (0:18:15) Creating The Player ⌨ (0:27:39) Moving The Player ⌨ (0:31:20) Adding Gravity ⌨ (0:35:19) Loading/Splitting Sprite Sheets ⌨ (0:48:50) Animating The Player ⌨ (0:56:14) Adding Terrain/Blocks ⌨ (1:08:51) Pixel Perfect Collision (Vertical) ⌨ (1:14:48) Jumping & Double Jumping ⌨ (1:22:28) Scrolling Background ⌨ (1:27:53) Pixel Perfect Collision (Horizontal) ⌨ (1:36:16) Adding Traps (Fire) ⌨ (1:45:09) Player Collision With Traps ⌨ (1:50:51) Conclusion