Spritestacks - Pygame Tutorial

Поделиться
HTML-код
  • Опубликовано: 18 июн 2023
  • Spritestacking is a simple technique for making layers of 2D artwork appear 3D! Spritestacking is quite easy to implement in Pygame, but any scalable implementations will probably require that you implement caching.
    Tutorial Reference Code:
    dafluffypotato.com/static/spr...
    Grass Tutorial:
    • I simulated 40K blades...
    Centered Rotations Tutorial:
    • Centering Images & Cle...
    Patreon:
    / dafluffypotato
    My Discord:
    / discord
    Potato Tier Patrons:
    Agent Effe
    Eivind Teig
    fatcake
    RyDawgE
    Sam Cork
    GaryTMSFruitcake
    Dale Topley
    Jb mandri
    tbf135
    #python #pygame #gamedev
  • НаукаНаука

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

  • @DaFluffyPotato
    @DaFluffyPotato  11 месяцев назад +28

    accidentally recorded with my gain too high. oops.

  • @eboatwright_
    @eboatwright_ 11 месяцев назад +37

    This effect never gets old! It's so charming

  • @solstice_enigma
    @solstice_enigma 11 месяцев назад +8

    That is a super neat and simple little trick! I guess the hardest part of all of this is just making everything consistent.

  • @maybe_tankerguy05
    @maybe_tankerguy05 11 месяцев назад +8

    This is a pretty cool effect. When I get to a point where I am able to make my dream project, I might add in spritestacking to give it a bit more of a unique look than a standard, 2d top down game.

  • @matheus5806
    @matheus5806 11 месяцев назад +1

    Nice to see you exploring other genres. I really liked the aesthetics in this video, good shit

  • @Dailyfiver
    @Dailyfiver 8 месяцев назад

    Duuuuude this is amazing! I never knew what it was called but I accidentally did a lower form of this for my first game ever! We also had drawn all the maps with regular flat “brightness” and then added a “shadows” layer over top of the entire game so that the shadows looked like they covered moving objects dynamically lol.

  • @QUASAR098
    @QUASAR098 11 месяцев назад

    damn this looks great! i really want to try out this racing game when it is finished

  • @sbd2639
    @sbd2639 11 месяцев назад +1

    I tried to make a car racing game before and used a free asset from itch but didn't realize the asset was meant to be used as spritestacks and just took the upper layer of the car and added rotation to make it turn which ended up looking very bad. I gave it a try after watching this video and sure enough, it looks 100x better :)

  • @quantum_hg3299
    @quantum_hg3299 11 месяцев назад +2

    Really cool concept

  • @dslower7578
    @dslower7578 11 месяцев назад +5

    I love how it looks, you allways find ways of making better looking games with pygame, it's awesome. Btw, how did all end with pygame and pygame-ce??

  • @zvisger
    @zvisger 11 месяцев назад +2

    :O I can't wait to watch this tonight!

    • @zvisger
      @zvisger 11 месяцев назад +1

      Ok so I watched it and this is awesome... idk why I never thought of this. Thanks Fluuff

  • @PaulHindt
    @PaulHindt 11 месяцев назад +4

    Your racing game reminds me of Codemasters' NES racing game called "Micro Machines", based on the toy cars from the 1990s of the same name. Have you ever seen that game? They rotate the car sprites in a way that looks very similar, albeit without sprite stacks. Also, your rotating background looks awesome, and is something that was not done in Micro Machines.

    • @DaFluffyPotato
      @DaFluffyPotato  11 месяцев назад +2

      I only know the name because someone else said the same thing.

  • @emperor8716
    @emperor8716 11 месяцев назад +4

    this is crazy

  • @red-52
    @red-52 4 месяца назад +1

    I use pg.RESIZABLE and pg.SCALED is there a reason why the other method is better?

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

      SCALED is faster but is more difficult to make work nicely with RESIZABLE. Also, I started using that technique before SCALED was even a thing.

  • @simonjones90
    @simonjones90 11 месяцев назад

    I'd love to know what base resolution you are setting with your games?

    • @DaFluffyPotato
      @DaFluffyPotato  11 месяцев назад

      it varies. you can just run the games and check

  • @fmailscammer
    @fmailscammer 10 месяцев назад

    What did you use to render the environment? is it just a huge version of spritestacking as well? it looks so good as well

    • @DaFluffyPotato
      @DaFluffyPotato  10 месяцев назад

      It's just a big flat image (aside from fences, which are also spritestacked)

    • @fmailscammer
      @fmailscammer 10 месяцев назад

      @@DaFluffyPotato thanks so much. I was about to start another game in Godot (which my only motivation for came from watching your "I make fast gaem" video and wanting to create a movement-based melee combat platformer) but now I really want to try and make something like this in pygame as a placeholder until I can come up with a real premise.

  • @novialriptide
    @novialriptide 11 месяцев назад +1

    5:24 looks trippy.. wow

  • @smosa605
    @smosa605 11 месяцев назад

    for a bigger game wouldn't this be very cpu intensive rendering all of these images for a 3d model because if they're multiple different 3d sprites in a game it could be a lot?

    • @DaFluffyPotato
      @DaFluffyPotato  11 месяцев назад

      No, it's as fast as rendering a 2D tile if you cache properly.

    • @smosa605
      @smosa605 11 месяцев назад +1

      @@DaFluffyPotato by cache do you mean iterations?

  • @metgaming9545
    @metgaming9545 9 месяцев назад

    Is there a trick to caching? Or do you just add layers you’ve already generated to a dictionary or array

    • @DaFluffyPotato
      @DaFluffyPotato  9 месяцев назад +1

      I actually prerender the whole stack and store it based on angle

  • @bobyjoegames2
    @bobyjoegames2 5 месяцев назад

    Are the fences in this scene sprite stacked too?

  • @doyoureallyneedahandle
    @doyoureallyneedahandle 11 месяцев назад +1

    Can you do a tutorial about top down sprite rendering I have problems at ordering them correctly

  • @rowanw5912
    @rowanw5912 11 месяцев назад

    In a game like this with a locked isometric perspective it seems more efficient to just do the spritework in 3d to begin with, that way you're not wasting performance on pixels that will never be rendered (the inside of the car for example). Even for the backgrounds since you're not using parallax the result will be identical to predrawn sprites with a clever tiling system. Spritestacking only seems worthwhile if you're trying to do 3D with perspective.

    • @DaFluffyPotato
      @DaFluffyPotato  11 месяцев назад +1

      You don't waste anything on the middle if you cache.

  • @carrotsandcats
    @carrotsandcats 11 месяцев назад

    Thanks, thats so cool, i’ve try this before but it was slow af.

  • @Fezezen
    @Fezezen 9 месяцев назад

    I think I first saw this on a 2kliksphillip video where he called them "dolley mixtures"

  • @howezae6338
    @howezae6338 11 месяцев назад +3

    Interesting concept! May I ask if you will ever be developing using a more efficient platform, say using C# or Java?

    • @DaFluffyPotato
      @DaFluffyPotato  11 месяцев назад +6

      I have no reason to at the moment

  • @OtateriheemEdRiemLav
    @OtateriheemEdRiemLav 10 месяцев назад

    It looks like the spinning 3D rat meme xD

  • @blunderingfool
    @blunderingfool 7 месяцев назад

    I was wondering when someone would make a game with 2KliksPhillip's "dolly mixture" method. :D It looks great!

  • @bloctans_4
    @bloctans_4 10 месяцев назад

    pygame is a wrapper for sdl2, i dont understand why people hate pygame but love sdl2

  • @__Rizzler__
    @__Rizzler__ 9 месяцев назад

    CUMAZINGGGGGGGGG!!!!!!!!!!

  • @user-eo1es6vz6s
    @user-eo1es6vz6s 11 месяцев назад

    coder space made the similiar stuf likes you but he used magica voxel to make stacked sprites))

  • @knut-olaihelgesen3608
    @knut-olaihelgesen3608 11 месяцев назад +1

    Have you developed your own framework when using Pygame?

  • @RiveBlakBerry
    @RiveBlakBerry 11 месяцев назад

    i been working on a same thing

  • @kevinkim9309
    @kevinkim9309 11 месяцев назад

    Hey dude, I have learnt way too much from you for free. Do you have a separate payment link? I'd like to donate some cash privately, without commission being taken off. Any cashapp would do.

    • @DaFluffyPotato
      @DaFluffyPotato  11 месяцев назад +1

      Patreon takes a pretty small cut (

  • @rapha4220
    @rapha4220 11 месяцев назад

    tutorial for caching!!

  • @Ansino558
    @Ansino558 11 месяцев назад

    Hi there guys

  • @plexus2000
    @plexus2000 11 месяцев назад

    wsg

  • @majomajo36
    @majomajo36 11 месяцев назад +2

    wait its online or its ai?