Masks (and Pixel-Perfect Collisions) - Pygame Tutorial

Поделиться
HTML-код
  • Опубликовано: 24 дек 2024

Комментарии • 68

  • @boki2838
    @boki2838 2 года назад +73

    I don't know why but every time I watch one of his videos I get inspiration to continue working on my own pygame projects. I really wish more people knew about this chanel.

  • @john-coding
    @john-coding 2 года назад +9

    You are the first person i have seen create tutorials with such depth yet simplicity, from someone like me who has only scraped the surface of pygame am amazed by these intricate and useful features, you really explain it well

    • @brando3465
      @brando3465 2 года назад

      couldnt have said it better

  • @onogrirwin
    @onogrirwin Год назад +4

    In my software renderer I did pixel perfect collisions in the same way that you might do depth buffering. I made an int array the size of the window, initialized to 0, called ID buffer. Then when I render anything, of course I change the RGB of the screen pixel buffer and put the Z in the depth buffer, but I also update the ID buffer. Now when you want to know what objects are on a given pixel... just check the ID buffer. And remember to clear the buffer at the end/beginning of the loop. pixel perfect, doesn't cost too much memory, fast, and works perfectly for 3d as well.

  • @MoradSayed
    @MoradSayed Год назад +1

    I wanna thank u, I can't tell u how useful that was to me.

  • @undeadpresident
    @undeadpresident 2 года назад

    Thank you for mentioning that this doesn't work in earlier pygame versions. Saved me a lot of time.

  • @StreakyFly
    @StreakyFly Год назад

    Great tutorial! Learnt a lot of useful stuff :D

  • @pie2748
    @pie2748 2 года назад +1

    Excellent works. Keep it up!

  • @peytonwheeler559
    @peytonwheeler559 2 года назад

    Yuh so hyped for a new vid

  • @millankumar9245
    @millankumar9245 2 года назад +11

    I think the chapters might be wrong? (Something about selection sort rather than masks!) Either way the video was very helpful!
    Also what editor are you using? Looks very slick!

    • @DaFluffyPotato
      @DaFluffyPotato  2 года назад +2

      I accidentally copied over chapters from the last video. lol

    • @daksh8758
      @daksh8758 2 года назад

      @@DaFluffyPotato Sir i have a IMP question to make

    • @daksh8758
      @daksh8758 2 года назад

      May I procced

    • @thesupergamer4535
      @thesupergamer4535 2 года назад

      atom

  • @dicember92
    @dicember92 2 года назад

    Hero's come back!

  • @skysurfer_kon1641
    @skysurfer_kon1641 2 года назад +2

    A new pygame video?
    Yes!
    And it's the exact video I need and was searching for??
    Yes!!!
    BUT IT'S BY DAFLUFFYPOTATO?!?
    YESS!!!!!

  • @ugib8377
    @ugib8377 4 месяца назад

    Thanks a ton for this tutorial. Pixel perfect collisions in Monogame are extremely resource heavy. I want to see if I can implement something like this, which would really lighten the load.
    Even if I have to form a mask upon instantiation and figure out a way to run checks with a custom built system. Though, I'm fairly certain XNA has support for this.

  • @CardfightVanja
    @CardfightVanja 2 года назад

    This is a great intro. My usual usage of masks is through collidemask. For example if I'm making a bullet hell shmup, the hitbox for the player ship is generally smaller than the sprite, so I first check if a bullet is inside the player sprite with spritecollide and if so, then checking the mask collide. I'm sure there are better ways of handling this, but using masks to fine tune collision only when necessary seems to give decent performance.

  • @_pipok
    @_pipok 2 года назад

    It's him! It's the potato man!

  • @thiagosilva9816
    @thiagosilva9816 2 года назад

    "phenomenal"

  • @SidelongSuggestive
    @SidelongSuggestive 2 года назад

    Very cool! Can you calculate the outline outside of the mainloop and then just offset it's x and y to improve performance?

  • @Nerd0.09
    @Nerd0.09 2 года назад

    Your tutorials are really helpful but can you please make a video on your seamless tree swinging movements?

  • @minemoebsie
    @minemoebsie 2 года назад +1

    Hi, what editor do you use? (not video editor but just python editor) I've installed PyCharm but its kinda slow... I'm still using IDLE but the downside of that is that you can't really have more than 2 .py files open cuz then you wont be able to edit it very well...

    • @justjie1008
      @justjie1008 2 года назад +1

      That is Atom Editor with the package "Scripts".

    • @mingyi456
      @mingyi456 2 года назад

      Sadly Atom is being deprecated, so official development and support will stop soon. I used Intellij Idea before, and found the speed to be reasonable, so PyCharm should not be any worse. What are the specs of your computer?

    • @pnaeli2006
      @pnaeli2006 2 года назад

      I personally use vscode and highly recommend it

  • @astec9051
    @astec9051 2 года назад

    hey so a small question, do you have any recommended beginner tutorials that i could use to learn pygame? I have quite a nice knowledge in coding in general (I do a bit of python but i mainly specialize in lua but i wanna learn more of python) I looked over alot of tuts but alot of them arent really detailed so maybe someone that does this on a day to day basis might have some advice

    • @thelittledragon5595
      @thelittledragon5595 2 года назад

      not the potato, but i recommend codingwithruss. im currently watching his platformer shooter tutorials and they're really easy to understand

    • @astec9051
      @astec9051 2 года назад

      @@thelittledragon5595 thank you so much, his tutorials are really easy to understand thanks again!

  • @izionn6621
    @izionn6621 2 года назад

    How do you know what founction do what, do you know them by heart? I'm just a beginner and I try to understand this aspect of programming

  • @subomiatteh9363
    @subomiatteh9363 2 года назад

    Can you do a tutorial to show how to use masks for curved platforms collisions?

    • @DaFluffyPotato
      @DaFluffyPotato  2 года назад

      Depending on the type of platform, those get implemented with just math rather than using masks.

  • @rafikrizik4722
    @rafikrizik4722 2 года назад +2

    I dont know why, but I'm having a hard time finding an install for Pygame2, everything is Pygame1.X. Do you happen to have a link I could use to install Pygame2?

    • @Aashvark
      @Aashvark 2 года назад

      in console "pip install pygame --upgrade"

    • @lodybaguette2487
      @lodybaguette2487 2 года назад

      just make :
      py -m pip uninstall pygame
      py -m pip install pygame
      Btw, Idk why you have this pygame version but ok

  • @eboatwright_
    @eboatwright_ 2 года назад +1

    What color theme is this?

  • @-LTUIiiin
    @-LTUIiiin 2 года назад +1

    Why do stuff like fighting games still use hitboxes instead of having pixel perfect masks?

    • @DaFluffyPotato
      @DaFluffyPotato  2 года назад

      idk

    • @writethatdown100
      @writethatdown100 2 года назад

      probably because hitboxes are way easier to code and they're way faster (I think)

    • @dominicballinger6536
      @dominicballinger6536 2 года назад +2

      Think about it. Fighting games need consistency and speed. Using masks would make a basic punch unreliable depending on how the other character is shaped and the distance. And calculating masks for them would be more resource intensive than necessary. Using boxes is faster and you will always hit the opponent no matter how their body curves.

  • @avo-catto187
    @avo-catto187 2 года назад

    What do you think of Python Arcade?

  • @justjie1008
    @justjie1008 2 года назад

    can you tell us which theme that is?

  • @linuslim3841
    @linuslim3841 2 года назад

    Is it possible to make destructible terrain in pygame?

    • @GoldenAfroZZ
      @GoldenAfroZZ 2 года назад +2

      Yes
      Thank you for coming to my ted talk

  • @raeisac1991
    @raeisac1991 2 года назад

    I want to install pygame but it's not working

  • @spenceabeen
    @spenceabeen 2 года назад +1

    Gonk :]

  • @writethatdown100
    @writethatdown100 2 года назад

    Does anybody know of a video tutorial on collision with masks? Not for pygame, but just learning how mask collision works? Like not actual code or anything but explaining the algorithms. So I can learn how to make my own collision. But then again, I guess every language has a library for collision. But I still want to learn how it works.

    • @DaFluffyPotato
      @DaFluffyPotato  2 года назад

      It’s just a bitwise and.

    • @writethatdown100
      @writethatdown100 2 года назад

      @@DaFluffyPotato Oh, yeah. that's super simple. idk why I didn't think of that. duh

  • @majestyhype9605
    @majestyhype9605 2 года назад

    Please DaFluffyPotato i cant find a good python tutorial make one on yt please!!! I need to get into pygame u give me inspiration

    • @theonlydhruv7888
      @theonlydhruv7888 2 года назад

      ...here you go
      ruclips.net/p/PLX5fBCkxJmm1fPSqgn9gyR3qih8yYLvMj

  • @RoboLaboratory
    @RoboLaboratory 2 года назад +1

    Hello

  • @allwoundup3574
    @allwoundup3574 2 года назад +2

    it's pretty funny how unreliable pygames built-in collision detection methods are. I was having a hell of a time getting bullets to collide and ricochet appropriately until I finally just said "fuck it" and wrote my own methods.

    • @allwoundup3574
      @allwoundup3574 2 года назад

      @Michael Palmer you must be using it for very very basic collision detection

  • @DevNazmul
    @DevNazmul 2 года назад

    please make a game step by step and make video and publish on RUclips thats help us lot

    • @LukePeters
      @LukePeters Год назад

      Have you looked at his other videos? He's done this multiple times.

  • @lodybaguette2487
    @lodybaguette2487 2 года назад

    Python 3.7 ...

  • @daksh8758
    @daksh8758 2 года назад

    I am first sir

    • @daksh8758
      @daksh8758 2 года назад

      Sir i have a important question to ask

    • @daksh8758
      @daksh8758 2 года назад

      May I proceed

    • @herre3147
      @herre3147 2 года назад +1

      @@daksh8758 dude just ask the question you don't have to ask for permission

    • @robin7856
      @robin7856 2 года назад +1

      @@daksh8758 you cannot proceed

    • @daksh8758
      @daksh8758 2 года назад

      @@herre3147 ok