Python Platformer Game Tutorial for Beginners
Vložit
- čas přidán 4. 07. 2024
- 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
Hattsoff!!!! To all of your team that you’re providing all these useful courses free of cost
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!
bro if it took you 2 months to find this video when searching specifically for something like this you may need a career change
This is crazy I've been searching for a tutorial like this for years. Thank You Tim!!!!
Absolutely amazing video!
Excellent tutorial mate!
You guys are so super i don't have words to appreciate you.Thnks for this video ❤❤
Omg yay! I can’t wait to try this
This is excellent!
Thanks.
This is amazing. I skimmed through the video because I dont have much time but I really want to watch this. Saved for later
Did you watch it?
Did you watch it yet?
I'am 43 , I did it! I just finished your course .. thank you Tim
it feels great that, people like your age is doing this. keep it up sir
This is a great introduction to python for gaming.
nice i used a lot of tims tutorials to learn python, can recommend !
Nice guide
THANK YOU!!
Love this ❤
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.
Woo! Nice one!
YOU'RE AMAZING!
Thank you very much for posting this video....
😀😀😀😀
Tech with Tim good programmer
channel was very understable
I can finally watch this with confidence, I guess I'll see how it goes
So great 😀 ❤
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.
you just saved my day
yes i fixed it thanks a lot!
Hvala Brate! :)
Amazing
Thank you!!!
Thanks team~
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
You got this!
muito obrigado pela Magnifica aula
oloco meo
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
you can find the transcript of it in the description. I hope you get better soon.
Wow That so cool😁
Thank you so much! I'll try it right now
great!
Let's good Tim!
Tim is a really good teacher.... hats off 🫂
Considering pygame it's a SDL wrapper, this tutorial is useful for C++ programmers who are using SDL to game games aswell
Great tutorial!
what is a SDL wrapper?
@@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).
@@yrds96 So, this is something like, how do you write the code for the program runs faster?
@@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.
@@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?
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.
reading is the best way to keep learning
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?
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!!!
This is great but some visual explanation would help next time something similar to networkchuck but without the over-the-top energy.
Im very new to Python, and reigniting my interest in programing. This has whet my appetite to keep going in my learning. Thank you
Thanks! It was fun but it works very laggy on my computer (and I don't know why, it's a good computer).
Just Wondering: How Do You Add Multiple Fires?
Got 2 questions Tim, why u dont use Sprites in pygame and what is the other way to bypass Sprites?
Tech with 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'
does anyone know how to make it scroll upwards instead of side to side
Thanks for your tutorial.
How can make this game mobile compatible for ios/android?
Please let me know the possibilities.
Cool
1:28
"Jesse, we need to code"
Are the assets public domain? If someone wants to use them commercially, can they?
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 :)
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
skill issue
I agree
Exactly
Yeah, I had to rewind the video a lot
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..
why those the game get slower when you make the game window bigger ?
what to do if the window doesn't pop up when running the program
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)
01:18:40 I can only jump the number of times it say: player.jump_count < 2
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
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?
more on phyton from scratch
How to add fire trap at other positions as well
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()*
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
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?
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
Where to get the enemies? says link in project page, but no link.
how to download the github repository?
Does anyone knows how to add more fire and traps? need help
hey! can i use intellij idea to code this game
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 :)
Use "topleft" not "topLeft", I had the same problem but looking through the PyGame documentation helped with that.
@@loganjames2638 Thank you so much, I couldn't figure out what was wrong.
I cant RUN, i mean, everything's fine, even the RUN.png loaded, but it doesn't run when it runs(?)
i cant import os modul
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 :(
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.
Thanks, that's good to know.
8:45 __main__
12:48 running from correct directory
1:20:20 animation to jumps do I need not rlly
Can you do this through REPLIT?
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 CZcams 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.
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
Can i see your code? and are there any error you encounter?
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
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.
@@lm2thed142 I'm aware of that. I'm talking about the assets themselves suggesting there is more to this, such as assets for enemies
just when I close the application, appears to me the 'blue' blackground, instead of this appears black, why?
Wooooooooooooooooooooooooooow
I have a question can you make any game with these steps and code.
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.
the file main.py is missing
There are no main.py when i downloaded it
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?
Hi did you ever find a fix for this? Having the same problem and can't seem to solve
Thanks
No I couldn't, I can't find anyone who can help with me this specific problem
can you describe the error i might be able to help
@@linusyong4731 i'm having the same issue. it just says 'Plater" object has no attribute 'draw'
nvm i figured it out
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?
Its probably because the width and height are too big, try scaling it down a bit
The github code is kinda broken, i can't view the code there. But Good job!
same problem
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?
main should have double underscores around it
yeah it should look like this: if __name__ == "__main__":
After creating the background my separate window just keeps shutting down and I figure out why?
Can i see your code? and is there any error that showed up?
i am a beginer
⭐ 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
It's okay. I kept running into a lot of errors despite following the code exactly :(
I WILL MAKE SILKSONG
My files wouldn’t download😢
Why does it say “for beginners” in the title but in the brief it says you should be intermediate???
i could not under stand hoe the loading of the sprites worked
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
You can check this by adding print(sprite_sheet)
I cant believe this isnt in the comments. did everyone fallow line by line XD ?? hahaha no one tried different assets/animations....
Why not super Mario?
Getting ModuleNotFoundError: No module named pygame. I’m on windows
pip install pygame
Hello👋, I will try to help if you have problem with the code.
Hi
why this video is titled with the word 'beginner'?
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