At the end of the level graphics around 20 minutes got accidentally cut off (just before 03:09:47 ), you can find that part here: ruclips.net/video/dh3f70t_1Lo/видео.html Sorry for the inconvenience :(
@@berento I am certainly sure that only a part of it. I'm a python programmer, I made several telegram bots with it but they don't use the same syntax even if they're the same programming language. So, you'll only learn part of python programming from this tutorial.
@@berento No!! to follow up the above tutorial , you must have a good understanding of python list, dictionaries , tuples etc , also function definition and declaration, classes and objects , inheritance etc are must prerequisite.
I’m not sure why this video isn’t doing as well as the rest but just thought I’d show my support. You taught me a lot and I hope you continue to make videos. Would love to see how you make Pokémon in pygames!
Thank you so much for creating this comprehensive pygame Python tutorial. I haven’t gone through it all yet but I think it’s the most detailed pygame tutorial I have seen.
@@cleidecampiolrezende4503 usa a legenda mana e procura uma introdução boa ao pygame e ao dev de games, depois de um tempo vc consegue acompanhar as instruções dele e compreende mais facilmente cada etapa
I've been following along with your Zelda pygame tutorial for inspiration with a game I'm making. I love your videos, they're easy to follow and extremely helpful. I'd love to see you make a turn based RPG in pygame, where you traverse the map just like in your Zelda video, but upon making contact with the enemy, instead if taking damage, it starts a turn based battle. Anyway, keep up the good work, you're the best.👍
thank you so much for the high quality content! I have learned so much thanks to you! I really can't wait to make me some time to go over through this :D I love your work!
Thanks to you I learned to develop video games in pygame, you are very good as a teacher. maybe one day I will publish some tutorials on pygame in Italian the way you do it
I have been anxiously waiting for what felt like forever. Thank you sir for your hard work. Just a suggestion; if you get the chance, please make something about web-dev with python
Hello Chris, thanks for sharing such a great tutorial. I have learned a lot of great techniques, and the material continues to improve. I have watched your videos from the first one. Also your teaching style is excellent and it does make a big difference. While I was following the tutorial, I tried two different techniques and they worked very well with no game impact, just perhaps a simpler approach with less code, so I would like to share with you and everyone here: 1. When working on the collision detection of the Shell with the player, I used the same rectangle idea from Tooth, like this: def state_management(self): # player_pos, shell_pos = vector(self.player.hitbox_rect.center), vector(self.rect.center) # player_near = shell_pos.distance_to(player_pos) < 500 # player_front = shell_pos.x < player_pos.x if self.bullet_direction > 0 else shell_pos.x > player_pos.x # player_level = abs(shell_pos.y - player_pos.y) < 30 front_rect = pygame.FRect(self.rect.center, (500*self.bullet_direction, 2)) if front_rect.colliderect(self.player.rect) and not self.shoot_timer.active: # if player_near and player_front and player_level and not self.shoot_timer.active: self.state = 'fire' self.frame_index = 0 self.shoot_timer.activate() 2. For the Spike rotation I used a vector2 instead of trigonometry. In the __init__ here is the change: # rotation using a vector self.loc = vector(0, 0) super().__init__((self.loc), surf, groups, z) # trigonometry # y = self.center[1] + sin(radians(self.angle)) * self.radius # x = self.center[0] + cos(radians(self.angle)) * self.radius # super().__init__((x,y), surf, groups, z) In the update, here is the change: # y = self.center[1] + sin(radians(self.angle)) * self.radius # x = self.center[0] + cos(radians(self.angle)) * self.radius # self.rect.center = (x,y) # rotation using a vector self.loc = self.center + vector(self.radius, 0).rotate(self.angle) self.rect.center = (self.loc)
Dude i swear i want to learn game dev using C++ since i just think its cool to learn C++ xD but everytime i see one of your videos man, you make me want to switch to pygame, you are the bane of my existance
Awesome 9 hr course, I still remember working on this exact project over a ago using your older platformer tutorial, I don't use pygame anymore but your videos have been really fun to watch, and have taught me a lot of things, I've also noticed that you released a complete free course on Godot, out of curiousity do you plan on making Godot and Pygame related tutorials or just focusing on one of them?
Loved following this video! Along with the Udemy course and many of the youtube tutorials, I have finally got the confidence to make games myself! Thank you so much, i enjoy all your content and advice :) Could you please make a Pokemon style game next? That would be amazing!
Hello @ClearCode. First of all I would like to say you a huge thank you very very very much for your tutorials. Would you please cover creating isometric scenes and isometric maps created in Tiled in you further tutorials. It would be very very interesting topic.
This probably won't get answered, but I get to about 3:11:00 and keep getting an error about the index list being empty for self.frames. I can't figure out why mine doesn't work, the code appears the same. If I comment out super().__init__(pos, self.frames[self.frame_index], groups, z), it runs fine (without any animated objects). Is the frames list else where?
when you are importing the graphics something went wrong so self.frames is empty. You can test this by printing self.frames on the line before and to fix it just doublecheck the imports; chances you just got a typo in the path
@ClearCode At 1:23:03, I followed exactly the same steps, however when I move (self.collision('vertical')) to the bottom, the code the character does not jump except when it is not colliding with any of the floor, left, right. And when I place it here (orange arrow, it jumps fine but when jumping while colliding with right wall, it sinks downward.: def move(self, dt): self.rect.x += self.direction.x * self.speed * dt self.collision('horizontal') if not self.on_surface['floor'] and any((self.on_surface['left'], self.on_surface['right'])): self.direction.y = 0 self.rect.y += self.gravity/10 * dt else: self.direction.y += self.gravity / 2 * dt self.rect.y += self.direction.y * dt self.direction.y += self.gravity / 2 * dt ▶self.collision('vertical') if self.jump: if self.on_surface['floor']: self.direction.y = -self.jump_height self.jump = False Can you kindly help with that?
I think that issue happens on a lower framerate; it will be fixed later in the game. Basically, when you jump, move the player up by a single pixel, then things should work fine.
@ClearCode @josephalbert. thats interesting, i ran into a similar problem. i moved the "self.collision('vertical')" line where you said and it started working again. def move(self, dt): self.rect.x += self.direction.x * self.speed * dt self.collision('horizontal') if not self.on_surface['floor'] and any((self.on_surface['left'], self.on_surface['right'])): self.direction.y = 0 self.rect.y += self.gravity / 10 * dt else: self.direction.y += self.gravity / 2 * dt self.rect.y += self.direction.y * dt self.direction.y += self.gravity / 2 * dt ▶self.collision('vertical') if self.jump: if self.on_surface['floor']: self.direction.y = -self.jump_height elif any((self.on_surface['left'], self.on_surface['right'])): self.timers['wall jump'].activate() self.direction.y = -self.jump_height self.direction.x = 1 if self.on_surface['left'] else -1 self.jump = False before it was at the end and it worked at startup, but then broke as i was playing around with it.
PyGame is very similar to some features of the Godot game engine, or vice versa :). The only difference is that there is a lot of manual work compared to Godot, although PyGame includes some techniques to make the game easier to create. But... By programming the entire game by hand, I began to understand more about how the game works, how collisions and movements work, how textures are loaded and much, much, much more. Thank you so much for such a wonderful lesson! PS. My player still falls through the platform as it moves down. I looked at your code, but didn’t find any differences (maybe I didn’t look well :) ).
For anyone struggling with the file path or getting the error "no such file or director". I have a Macbook and I use VS code. The file path that has worked for me was 'data/levels/omni.tmx'. Just make sure you don't add the '../' in front. That should fix it!
Thanks for the code, just wanted to ask, at 13:14 you start writing a line related to pytmx. Is this line nessesary, because if so, is there any way to write it without getting an error?
@@ClearCode Hi man, thanks for the reply. This is the exact error: Traceback (most recent call last): File "C:\Users\smkei\Documents\Python Coding - Home\SPW_Main\__init__.py\code_start\Clear code platformer.py", line 35, in game = Game() File "C:\Users\smkei\Documents\Python Coding - Home\SPW_Main\__init__.py\code_start\Clear code platformer.py", line 18, in __init__ self.tmx_maps = {0: load_pygame('../data/levels/omni.tmx')} File "C:\Users\smkei\AppData\Roaming\Python\Python312\site-packages\pytmx\util_pygame.py", line 183, in load_pygame return pytmx.TiledMap(filename, *args, **kwargs) File "C:\Users\smkei\AppData\Roaming\Python\Python312\site-packages\pytmx\pytmx.py", line 549, in __init__ self.parse_xml(ElementTree.parse(self.filename).getroot()) File "C:\Program Files\Python312\Lib\xml\etree\ElementTree.py", line 1203, in parse tree.parse(source, parser) File "C:\Program Files\Python312\Lib\xml\etree\ElementTree.py", line 557, in parse source = open(source, "rb") FileNotFoundError: [Errno 2] No such file or directory: '../data/levels/omni.tmx' Do you know what I can do about it?
so when you try to import the omni.tmx file something is going wrong in the file path and the code cannot find it. You probably have typos somewhere of the folder names
Hi, I have a question that at 21:59 I am not showing the same as in the video, I checked the files again and still can't find the error, so is it because of the problem with my onmi.tmx file?
I've just started this project from earlier videos on your channel. Was just finished generating the level with the list of strings. Is this a different version of the same project? Or part of it?
I'm having trouble, everything works perfect until 1hr 22mins. The wall slide, I've checked and kept code correctly and i get a weird result jump wont work properly if at all adding the changes to move module. If I remove the code and test, it works fine. seems to be moving self.collision('vertical') might be causing it? I sometimes get the error direction in x error too. Odd my code is exactly how shown?
I think you need to move the player up by a pixel whenever you jump, otherwise the floor detection catches you; I am adding that part later in the tutorial
Hi, I've tried almost everything, but nothing helped me.. :( I'm in 17:09 and it still gives me this error FileNotFoundError: [Errno 2] No such file or directory: '..\\..\\data\\levels\\omni.tmx' I have a main folder where I have a CODE folder and in it I have .py files, then in the main folder I have data and there I have the rest, exactly as it is in the video (also in your .rar file, which I tried to download and also the same problem) you don't know what it could be? thank you very much :)
Love this tutorial! Say, not sure if you are into this, but if you are I’d love it if you could make use of type hints in Python, especially since you are using VSCode like I do. That said, I love how you arrange your code and your tutorials, especially when you make mistakes (I’m guessing sometimes not accidentally). Those mistakes teach me more than anything else… Say, just wondering. I see you are not using python package scripts and things like __init__.py files in your folder structures. I’m wondering if that’s just a preference or something about a recent version of Python where they are not necessary any longer?
Awesome tutorial! By the way, if I would like to make the horizontal movement acceleration based - so e.g. when you press Left, it starts slower and then sets to the 'max speed', how would I implement that? (same could be done to deceleration aswell?). I think it would add a nice touch to the smoothness of character movement.
After reaching the Stage 4 Node and completing the level, the path disappears entirely for that node and doesn't let you move anywhere, does anyone know a fix? I've tried on the completed code version provided after changing the self.unlocked_level variable to 0 in the "data.py" file (setting it directly to 4 also works for testing) and the same issue occurs.
hi brother can you enlighten me there is an error like list index out of range in the class AnimatedSprite(Sprite) thank you very much for the transmission of knowledge
Is it necessary to program the entire collision system? ( Isn't there anything like in Godot, GameMaker or Phaser where collision are already set for us? )
Hello @ClearCode, I don't understand how you make the pearl collision working as the Shell is in the collision_sprite so the pearl is killed right after its creation. I had to use this trick to make it work : def pearl_collision(self): for sprite in self.collision_sprites: if not isinstance(sprite, Shell): pygame.sprite.spritecollide(sprite, self.pearl_sprites, True) Did I miss something ?
I'm going insane. For the timer at 1:30:49, I import the timer with "from .timer import Time" The VS Code highlights and functions indicate that the player.py file successfully located the module but for some strange reason it keeps shooting this error: "ImportError: attempted relative import with no known parent package" Please help I am going insane
inside of vs code open the entire project folder, not just the code one and then it should. Make sure to adjust the paths though (you just need to remove the "../' from them.
@@ClearCode I've already had the entire project folder opened but it doesn't work. How do I adjust the paths? Also, "from timer import Timer" doesn't work. I have to always replace timer with .timer in to refer to the parent directory before it's referenced for some reason.
@@ClearCode Okay, I got it to work. I just renamed the module to something other than timer and now I can access the class with ease. Thanks for helping
@@rorkeslayer3925that’s what worked for me. No problems with other modules in same directory. Maybe the namespace got polluted with a different module somewhere? I don’t think it’s a built-in like “time,” but it could be something in one of the “ from xyz import * “ places. Not sure.
Hi there! Awesome video wich I'd love to follow. But I run into a problem early on, when importing the first tileset. No matter how I pass the path (absolute, relative, with/without join()), the line "self.tmx_maps = ..." throws a FileNotFoundError, saying no such file or directory ''F:\Python_projects\Platformer\data\levels\../tilesets\../../graphics/tilesets/outside.png'.' In the levels-folder from github, there are only the tmx files. I'm using VSCode on Windows, if that matters. Any idea what's the issue here? Thanks in advance und liebe Grüße :)
hey, the tmx file is looking for files in the graphics folder so if you change the folder setup it will break. I guess the easiest way to check would be to open the tmx in Tiled, you should get a lot of error messages but Tiled lets you update the paths.
After reading your first reply i literally went and counted all your videos to see if they add up to 46 fueled by a mix of fear of going insane and shame of making such dumb mistake 😂.
@@ClearCode I know it's unnecessary and a little bit late but i felt i had to justify my previous stupid blunder, when i watched the first part i went past the shader chapter cuz i thought it would be too early to go into the topic so i skipped the part where you say using Big White laters that the second part is in description and as I've only just found out about it i find myself back here..... I swear to you I know how to read 🥲
I have a question. I'm 6 hours into the tutorial and I don't understand why are we using a different method to create the background tiles. Can't you just draw the the BG tiles in Tiled too and use a for loop like we do in the level setup?
@@ClearCode Thanks for the answer you always do awesome work. I asked that question mostly because when I use that method, my game slows down dramatically. :(
At the end of the level graphics around 20 minutes got accidentally cut off (just before 03:09:47 ), you can find that part here: ruclips.net/video/dh3f70t_1Lo/видео.html
Sorry for the inconvenience :(
I have no idea about python ..... will it be ok for me to follow this tutorial ? or should i learn python first ?
@@berentoi've been following the tutorial while using Unity and C# instead . I'm trying to recreate the logic and it's a good challenge.
@@CodeAikawa will it be possible to learn python and this tutorial side by side ?
@@berento I am certainly sure that only a part of it. I'm a python programmer, I made several telegram bots with it but they don't use the same syntax even if they're the same programming language. So, you'll only learn part of python programming from this tutorial.
@@berento No!! to follow up the above tutorial , you must have a good understanding of python list, dictionaries , tuples etc , also function definition and declaration, classes and objects , inheritance etc are must prerequisite.
I'm glad you are back! Definitely appreciation your work! Very high quality
thank you so much! :)
I appreciate the tutorial using pygame-ce :)
I’m not sure why this video isn’t doing as well as the rest but just thought I’d show my support. You taught me a lot and I hope you continue to make videos. Would love to see how you make Pokémon in pygames!
Now that I look closely it is probably that the thumbnail is too similar to your previous video!
we've waited for over a half a year for this, glad you're back
YEAH DUDE !!!
Love your content... Good to see you back
This is just amazing quality. Thank you so much!
I JUST finished space invader's one yesterday. I'm so pumped to wake up today and see what I get to learn next!
So glad you're back! This looks brilliant!
I can't believe you make this great and educational content for free
Thank you so much for creating this comprehensive pygame Python tutorial. I haven’t gone through it all yet but I think it’s the most detailed pygame tutorial I have seen.
Thank you!
I like how Clear Code didn't notice this.
You're amazing! Appreciate all the effort you put in your content
The lord has returned with another banger!
This is amazing man. Thank you for putting out quality like this, the premise of the game is exactly what I was looking for
Very happy that you continue to make content for Pygame!
So glad you're back! I love all your inspirative contents :3
Thank you for the course!!
Appreciate people like you giving out such good quality courses for free
God bless you
Genuinely good content, keep it up!
please continue with the videos, they are incredible, I'm from Brazil and I study through your channel
Mas como entende???
@@cleidecampiolrezende4503 usa a legenda mana e procura uma introdução boa ao pygame e ao dev de games, depois de um tempo vc consegue acompanhar as instruções dele e compreende mais facilmente cada etapa
More than glad you're back
Your content is top notch, please release more material!
Here since you had like 4k subs man, Keep up the work. Thank god i learnt godot before the unity disaster.
I've been following along with your Zelda pygame tutorial for inspiration with a game I'm making. I love your videos, they're easy to follow and extremely helpful. I'd love to see you make a turn based RPG in pygame, where you traverse the map just like in your Zelda video, but upon making contact with the enemy, instead if taking damage, it starts a turn based battle. Anyway, keep up the good work, you're the best.👍
Working on that, will be out in early March!
@@ClearCode sounds great😁 can't wait
thank you so much for the high quality content! I have learned so much thanks to you! I really can't wait to make me some time to go over through this :D I love your work!
LET'S GOOOOOOO! THE MASTER RETURNED!! WE'VE ALL BEEN WAITING FOR YOU MASTER FOR OVER HALF AN YEAR!! THIS IS CELEBRATE WORTHY! 🥳🎉
استمر في الابداع انت شخص جيد
Keep creating, you are a good person
Thanks to you I learned to develop video games in pygame, you are very good as a teacher. maybe one day I will publish some tutorials on pygame in Italian the way you do it
I have been anxiously waiting for what felt like forever. Thank you sir for your hard work.
Just a suggestion; if you get the chance, please make something about web-dev with python
Hello Chris, thanks for sharing such a great tutorial. I have learned a lot of great techniques, and the material continues to improve. I have watched your videos from the first one. Also your teaching style is excellent and it does make a big difference.
While I was following the tutorial, I tried two different techniques and they worked very well with no game impact, just perhaps a simpler approach with less code, so I would like to share with you and everyone here:
1. When working on the collision detection of the Shell with the player, I used the same rectangle idea from Tooth, like this:
def state_management(self):
# player_pos, shell_pos = vector(self.player.hitbox_rect.center), vector(self.rect.center)
# player_near = shell_pos.distance_to(player_pos) < 500
# player_front = shell_pos.x < player_pos.x if self.bullet_direction > 0 else shell_pos.x > player_pos.x
# player_level = abs(shell_pos.y - player_pos.y) < 30
front_rect = pygame.FRect(self.rect.center, (500*self.bullet_direction, 2))
if front_rect.colliderect(self.player.rect) and not self.shoot_timer.active:
# if player_near and player_front and player_level and not self.shoot_timer.active:
self.state = 'fire'
self.frame_index = 0
self.shoot_timer.activate()
2. For the Spike rotation I used a vector2 instead of trigonometry.
In the __init__ here is the change:
# rotation using a vector
self.loc = vector(0, 0)
super().__init__((self.loc), surf, groups, z)
# trigonometry
# y = self.center[1] + sin(radians(self.angle)) * self.radius
# x = self.center[0] + cos(radians(self.angle)) * self.radius
# super().__init__((x,y), surf, groups, z)
In the update, here is the change:
# y = self.center[1] + sin(radians(self.angle)) * self.radius
# x = self.center[0] + cos(radians(self.angle)) * self.radius
# self.rect.center = (x,y)
# rotation using a vector
self.loc = self.center + vector(self.radius, 0).rotate(self.angle)
self.rect.center = (self.loc)
Finally! I've done. Thank you very much , I hope that you'll success on your own ♥
fantastic!! thank you for all the hard work
I am going to start learning from this awesome resource. Thanks buddy ❤
I love the art style! Pirates are awesome!
You are a inspiration to all of us ❤
Return of the KING!!!
Thank you for this.
Finallt you uploaded!!
Finally finished the whole tutorial!
Appreciate your tutorials!
Leaving a like and commenting so the algorithm can boost up the video ❤
Dude i swear i want to learn game dev using C++ since i just think its cool to learn C++ xD but everytime i see one of your videos man, you make me want to switch to pygame, you are the bane of my existance
even though his videos are mainly in python (and now gdscript as well), his videos never fail to help me in my sfml journey really appreciate it :)
Thank you.
You had a course about sprite classes in your channel, I couldn't find that
Thank you for this lecture
Hello! Thank you for this tutorial!
I hope some day in the near future you consider making a roguelike. It would be awesome to watch and code along.
maybe later this year!
@@ClearCode I'm glad to read that!
Awesome 9 hr course, I still remember working on this exact project over a ago using your older platformer tutorial, I don't use pygame anymore but your videos have been really fun to watch, and have taught me a lot of things, I've also noticed that you released a complete free course on Godot, out of curiousity do you plan on making Godot and Pygame related tutorials or just focusing on one of them?
Loved following this video! Along with the Udemy course and many of the youtube tutorials, I have finally got the confidence to make games myself! Thank you so much, i enjoy all your content and advice :) Could you please make a Pokemon style game next? That would be amazing!
Hello! I love your tutorials, thanks a lot. And i would be very happy if you make a full kivy course like tkinter :)
Hello @ClearCode. First of all I would like to say you a huge thank you very very very much for your tutorials. Would you please cover creating isometric scenes and isometric maps created in Tiled in you further tutorials. It would be very very interesting topic.
WOW, JUST WOW!
Woooo! More awesome game tutorials! 👍 👍
Yooo new video just dropped. I’d love to see you make a (online or LAN) multiplayer game, just to see how to handle synchronization and all…
It's on the cards, I've heard!
@@beemarron3642 really? Thanks, that is excellent. May I ask where you heard about that? Patreon or discord?
I'm lucky enough to love this talented creature@@hoteny (He'll HATE me getting mushy in the comments, but I can't help being so proud!)
This probably won't get answered, but I get to about 3:11:00 and keep getting an error about the index list being empty for self.frames. I can't figure out why mine doesn't work, the code appears the same. If I comment out super().__init__(pos, self.frames[self.frame_index], groups, z), it runs fine (without any animated objects). Is the frames list else where?
when you are importing the graphics something went wrong so self.frames is empty. You can test this by printing self.frames on the line before and to fix it just doublecheck the imports; chances you just got a typo in the path
@ClearCode At 1:23:03, I followed exactly the same steps, however when I move (self.collision('vertical')) to the bottom, the code the character does not jump except when it is not colliding with any of the floor, left, right. And when I place it here (orange arrow, it jumps fine but when jumping while colliding with right wall, it sinks downward.:
def move(self, dt):
self.rect.x += self.direction.x * self.speed * dt
self.collision('horizontal')
if not self.on_surface['floor'] and any((self.on_surface['left'], self.on_surface['right'])):
self.direction.y = 0
self.rect.y += self.gravity/10 * dt
else:
self.direction.y += self.gravity / 2 * dt
self.rect.y += self.direction.y * dt
self.direction.y += self.gravity / 2 * dt
▶self.collision('vertical')
if self.jump:
if self.on_surface['floor']:
self.direction.y = -self.jump_height
self.jump = False
Can you kindly help with that?
self.collision('vertical') seems to be the issue, what can I do?
I think that issue happens on a lower framerate; it will be fixed later in the game. Basically, when you jump, move the player up by a single pixel, then things should work fine.
@@ClearCode Thank you so much for your reply.
@ClearCode @josephalbert.
thats interesting, i ran into a similar problem. i moved the "self.collision('vertical')" line where you said and it started working again.
def move(self, dt):
self.rect.x += self.direction.x * self.speed * dt
self.collision('horizontal')
if not self.on_surface['floor'] and any((self.on_surface['left'], self.on_surface['right'])):
self.direction.y = 0
self.rect.y += self.gravity / 10 * dt
else:
self.direction.y += self.gravity / 2 * dt
self.rect.y += self.direction.y * dt
self.direction.y += self.gravity / 2 * dt
▶self.collision('vertical')
if self.jump:
if self.on_surface['floor']:
self.direction.y = -self.jump_height
elif any((self.on_surface['left'], self.on_surface['right'])):
self.timers['wall jump'].activate()
self.direction.y = -self.jump_height
self.direction.x = 1 if self.on_surface['left'] else -1
self.jump = False
before it was at the end and it worked at startup, but then broke as i was playing around with it.
Thanks for working on that
unbelievable, amazing.
Great Video!
PyGame is very similar to some features of the Godot game engine, or vice versa :). The only difference is that there is a lot of manual work compared to Godot, although PyGame includes some techniques to make the game easier to create. But... By programming the entire game by hand, I began to understand more about how the game works, how collisions and movements work, how textures are loaded and much, much, much more.
Thank you so much for such a wonderful lesson!
PS. My player still falls through the platform as it moves down. I looked at your code, but didn’t find any differences (maybe I didn’t look well :) ).
the goat is back
why does moving the collision around 1:20 not let me jump
For anyone struggling with the file path or getting the error "no such file or director". I have a Macbook and I use VS code. The file path that has worked for me was 'data/levels/omni.tmx'. Just make sure you don't add the '../' in front. That should fix it!
yes, when you open a project folder in VS code it starts going from the main folder, hence the path needs to be relative to that.
Thanks for the code, just wanted to ask, at 13:14 you start writing a line related to pytmx. Is this line nessesary, because if so, is there any way to write it without getting an error?
what error message do you get?
@@ClearCode Hi man, thanks for the reply. This is the exact error:
Traceback (most recent call last):
File "C:\Users\smkei\Documents\Python Coding - Home\SPW_Main\__init__.py\code_start\Clear code platformer.py", line 35, in
game = Game()
File "C:\Users\smkei\Documents\Python Coding - Home\SPW_Main\__init__.py\code_start\Clear code platformer.py", line 18, in __init__
self.tmx_maps = {0: load_pygame('../data/levels/omni.tmx')}
File "C:\Users\smkei\AppData\Roaming\Python\Python312\site-packages\pytmx\util_pygame.py", line 183, in load_pygame
return pytmx.TiledMap(filename, *args, **kwargs)
File "C:\Users\smkei\AppData\Roaming\Python\Python312\site-packages\pytmx\pytmx.py", line 549, in __init__
self.parse_xml(ElementTree.parse(self.filename).getroot())
File "C:\Program Files\Python312\Lib\xml\etree\ElementTree.py", line 1203, in parse
tree.parse(source, parser)
File "C:\Program Files\Python312\Lib\xml\etree\ElementTree.py", line 557, in parse
source = open(source, "rb")
FileNotFoundError: [Errno 2] No such file or directory: '../data/levels/omni.tmx'
Do you know what I can do about it?
so when you try to import the omni.tmx file something is going wrong in the file path and the code cannot find it. You probably have typos somewhere of the folder names
@@ClearCode ok, how do I find the location of the omni.tmx so I can make sure that the folder names are correct
@@Qwerty-gu2je in the project folder there is a data folder which contains the tmx maps; I talk about the folder setup early on in the video
Hi, I have a question that at 21:59 I am not showing the same as in the video, I checked the files again and still can't find the error, so is it because of the problem with my onmi.tmx file?
Great video ! Will you ever make java tutorials ? Because you teach very well and your videos look clean.
Thx for the tutoriel.
Thank you 🩵
Just love you
Sensacional!!!! Meus parabéns amigo!!!👏👏👏👏👏👏😎👍
Thank you so much ❤
I've just started this project from earlier videos on your channel. Was just finished generating the level with the list of strings. Is this a different version of the same project? Or part of it?
this video is the updated version of the old platformer tutorials, it makes all the old ones obsolete!
Thank you!@@ClearCode
at 2:01:30 I keep having my sprite moving through the moving platform while it goes down, I can't seem to find a way to fix it
okay I fixed it, when I continued watching the semi-collidable platforms, the hint of wrapping the old_rects in ints fixed it for some reason
Awesome!
damn, can't use it cuz my laptop is win-7 and (match func) only works in later version,
can we use other func instead of match 2:25:21
Hey, you can always use if statements instead of match; although in that timestamp I am not using match?
@@ClearCode 2:51:44
Was finding solutions for days because of this error, but couldnt find any
I'm having trouble, everything works perfect until 1hr 22mins. The wall slide, I've checked and kept code correctly and i get a weird result jump wont work properly if at all adding the changes to move module. If I remove the code and test, it works fine. seems to be moving self.collision('vertical') might be causing it? I sometimes get the error direction in x error too. Odd my code is exactly how shown?
Have it a bit more response now but still since adding the wall check, jump is very unresponsive at times.....odd
I think you need to move the player up by a pixel whenever you jump, otherwise the floor detection catches you; I am adding that part later in the tutorial
same here, did you fix it?
Hi, I've tried almost everything, but nothing helped me.. :( I'm in 17:09 and it still gives me this error
FileNotFoundError: [Errno 2] No such file or directory: '..\\..\\data\\levels\\omni.tmx'
I have a main folder where I have a CODE folder and in it I have .py files, then in the main folder I have data and there I have the rest, exactly as it is in the video (also in your .rar file, which I tried to download and also the same problem)
you don't know what it could be? thank you very much :)
are you using VS code? This one uses a different folder path system unless you specifically open the folder
@@ClearCode Yes, I use VS code, I already fixed it :) Thanks alot
import os
script_dir = os.path.dirname(os.path.abspath(__file__))
tmx_file_path = os.path.join(script_dir, '..', 'data', 'levels', 'omni.tmx')
self.tmx_maps = {0: load_pygame(tmx_file_path)}
self.current_stage = Level(self.tmx_maps[0])
Well, now I know what I am going to do on my weekends
Love this tutorial! Say, not sure if you are into this, but if you are I’d love it if you could make use of type hints in Python, especially since you are using VSCode like I do.
That said, I love how you arrange your code and your tutorials, especially when you make mistakes (I’m guessing sometimes not accidentally). Those mistakes teach me more than anything else…
Say, just wondering. I see you are not using python package scripts and things like __init__.py files in your folder structures. I’m wondering if that’s just a preference or something about a recent version of Python where they are not necessary any longer?
я только вчера посмотрел 1 часть и вот спустя 1 день (1 год), 1 час назад вышло продолжение, спасибо тебе
Awesome tutorial!
By the way, if I would like to make the horizontal movement acceleration based - so e.g. when you press Left, it starts slower and then sets to the 'max speed', how would I implement that? (same could be done to deceleration aswell?).
I think it would add a nice touch to the smoothness of character movement.
i have the same probleme
thank you
this is great! can you upload more of tutorials with godot please?
After reaching the Stage 4 Node and completing the level, the path disappears entirely for that node and doesn't let you move anywhere, does anyone know a fix? I've tried on the completed code version provided after changing the self.unlocked_level variable to 0 in the "data.py" file (setting it directly to 4 also works for testing) and the same issue occurs.
Same thing occurs with Stage 5 Node if you unlock all the stages by default
hi brother can you enlighten me there is an error like list index out of range in the class AnimatedSprite(Sprite) thank you very much for the transmission of knowledge
something has gone wrong in the import part and there are no frames inside of the AnimatedSprite, so check that part
Thank brother 🙏
The intro music is that of the Ninja Pizza Cats! 😄
Isn't the series called Samurai Pizza cats? :P
@@ClearCode Yes! That one! 😅😅😅
Is it necessary to program the entire collision system? ( Isn't there anything like in Godot, GameMaker or Phaser where collision are already set for us? )
yep, it sucks
You cheeky little goat 🐐
Hello @ClearCode, I don't understand how you make the pearl collision working as the Shell is in the collision_sprite so the pearl is killed right after its creation. I had to use this trick to make it work : def pearl_collision(self):
for sprite in self.collision_sprites:
if not isinstance(sprite, Shell):
pygame.sprite.spritecollide(sprite, self.pearl_sprites, True)
Did I miss something ?
when the pearl is created it gets an offset so that it doesn't collide with the shell
@@ClearCode Ok it's my bad, I forgot I changed it after I chose to launch it from the mouth :D You are perfect. Thank you.
So I need to let my fix to make that works.
@@dimebagou7219 no worries, hope it works now!
I'm going insane. For the timer at 1:30:49, I import the timer with
"from .timer import Time"
The VS Code highlights and functions indicate that the player.py file successfully located the module but for some strange reason it keeps shooting this error:
"ImportError: attempted relative import with no known parent package"
Please help I am going insane
inside of vs code open the entire project folder, not just the code one and then it should. Make sure to adjust the paths though (you just need to remove the "../' from them.
@@ClearCode I've already had the entire project folder opened but it doesn't work.
How do I adjust the paths?
Also, "from timer import Timer" doesn't work. I have to always replace timer with .timer in to refer to the parent directory before it's referenced for some reason.
@@ClearCode Okay, I got it to work. I just renamed the module to something other than timer and now I can access the class with ease. Thanks for helping
@@rorkeslayer3925that’s what worked for me. No problems with other modules in same directory. Maybe the namespace got polluted with a different module somewhere? I don’t think it’s a built-in like “time,” but it could be something in one of the “ from xyz import * “ places. Not sure.
the best pygame tutor is back. you should do his udemy course if you have not done so already!
where did you get those sprites?! (Pirate sprites pack)
& thank you
Hi there!
Awesome video wich I'd love to follow. But I run into a problem early on, when importing the first tileset. No matter how I pass the path (absolute, relative, with/without join()), the line "self.tmx_maps = ..." throws a FileNotFoundError, saying no such file or directory ''F:\Python_projects\Platformer\data\levels\../tilesets\../../graphics/tilesets/outside.png'.'
In the levels-folder from github, there are only the tmx files.
I'm using VSCode on Windows, if that matters. Any idea what's the issue here?
Thanks in advance und liebe Grüße :)
hey, the tmx file is looking for files in the graphics folder so if you change the folder setup it will break. I guess the easiest way to check would be to open the tmx in Tiled, you should get a lot of error messages but Tiled lets you update the paths.
@ClearCode Yeah, I actually messed up the folder structure. Thanks for getting back so quickly!
Er hat sich so viel Mühe gegeben.😂
Watched your ultimate godot tutorial and found it very helpful but i was wondering where is part 2 cuz i can swear there was a part 2 on ur channel
it's literally in the description of that video...
What the heck?! I went to search for it in the videos section of your channel and it doesn't show up but if i go to the description there it was ....
@@colipcarazvangbriel7394 the video is unlisted :) Publishing a second video would mess with my RUclips metrics
After reading your first reply i literally went and counted all your videos to see if they add up to 46 fueled by a mix of fear of going insane and shame of making such dumb mistake 😂.
@@ClearCode I know it's unnecessary and a little bit late but i felt i had to justify my previous stupid blunder, when i watched the first part i went past the shader chapter cuz i thought it would be too early to go into the topic so i skipped the part where you say using Big White laters that the second part is in description and as I've only just found out about it i find myself back here..... I swear to you I know how to read 🥲
yeah the sound in the game is very SNES inspired
I have a question. I'm 6 hours into the tutorial and I don't understand why are we using a different method to create the background tiles. Can't you just draw the the BG tiles in Tiled too and use a for loop like we do in the level setup?
It's been a while but if I remember correctly the background needs to be more flexible to accommodate for the sky in the some levels
@@ClearCode Thanks for the answer you always do awesome work. I asked that question mostly because when I use that method, my game slows down dramatically. :(
@@ClearCode These lines were slowing the program apparently, and I don't remember why I wrote them lol.
if dt > 0.001:
dt = 0.001
Wow, 9 and 1/2 hours!!! Would it be possible to create bit size playlists videos?
It's split into 15 time-stamped selectable sections which is nearly the same. Hope this helps.
@@nicklansbury3166 Not really, I easily lose track at where I was the last time
Is our protagonist Lemmy from motorhead by chance?
Yes!
@@ClearCode Nice!!
Does this one include joystick control AS WELL AS KEYBOARD? That is a major stumbling block on pygame. And is tiled files available as well?
joystick no but tiles yes.
Will cover joysticks/ gamepads on my other channel this month.
Wonderful.