The Diorama Camera in GameMaker

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ก.ค. 2024
  • As far as GameMaker's 3D capabilities are concerned, the "diorama style" of games like Paper Mario or Pokémon are somewhat easier to work with than other kinds of 3D environments. My own game, Wizarducks, uses a style similar to that. Here are two ways you can create it yourself!
    This is also sometimes called "2.5D," but there's a lot of debate online about what is/isn't "2.5D" and I don't feel like entertaining those comments right now.
    Yes, I used footage from Color Splash instead of one of the older ones.
    Basic 3D setup in GameMaker:
    • Getting Started with 3...
    The very old "3D NPCs" video:
    • Game Maker Tutorial - ...
    The code:
    github.com/DragoniteSpam-Game...
    Shader playlist:
    • Shader Stuff - GameMak...
    GameMaker 3D playlist:
    • 3D in Game Maker Studio 2
    GameMaker Studio 2 playlist:
    • Game Maker Studio 2 - ...
    0:00 Introduction
    1:22 The sample project
    3:38 3D setup
    10:14 Using matrices to make sprites stand up
    17:21 Using shader shenanigans to make sprites stand up
    22:32 draw_sprite_general
    28:02 Limitations
    29:38 The end
    30:00 Other ways you can achieve this effect
    #GameMaker
    #GameMaker3D
    #GameMaker3DCamera
    - - - - -
    I've now made that Patreon:
    / wizardragon
    That promised social media link spam.
    / dragonitespam
    Transition / idle music is by my old friend Kamex:
    / greatgabite
    Rate, comment, subscribe, watch more, enjoy!
  • เกม

ความคิดเห็น • 41

  • @FioreFire
    @FioreFire 8 หลายเดือนก่อน +13

    Tilting sprites a flat 90 degrees up from the ground at this camera angle causes some pretty obvious distortions to the sprites that you'd probably wanna deemphasize for games that aren't intentionally leaning into the paper aesthetic.
    Of the examples given: DS Pokemon games lean the sprites back to face the camera better, Octopath keeps the camera lined up at a specific angle with the main character's sprite, and Paper Mario, well, yeah, haha

    • @RyuKage2007
      @RyuKage2007 8 หลายเดือนก่อน

      I ran into the same problem while trying to go for something more towards the DS Pokemon games but I can't seem to sort out how to get it right. I have it next to an object drawing with projection the way I want, but even when the angles match the shader tilted one is smaller.

  • @Planarwalk
    @Planarwalk 8 หลายเดือนก่อน +7

    16:28 "This is probably way more grass than you're ever going to realistically have"
    Acerola would like a word

  • @enkiimuto1041
    @enkiimuto1041 8 หลายเดือนก่อน +7

    Minor correction: You're not reinventing the wheel in such cases, you're building a whole inverted catenary road so the square wheel can work.

    • @DragoniteSpam
      @DragoniteSpam  8 หลายเดือนก่อน +6

      thats just reinventing the wheel with extra steps

  • @juanignacioleyenberger55
    @juanignacioleyenberger55 4 หลายเดือนก่อน

    Man! ❤ I was lookin for something like this like forever! Thank you!

  • @OverworldStudio
    @OverworldStudio 8 หลายเดือนก่อน

    Haven't even watched this yet, new favorite video of yours

  • @user-gv4zm8uv8c
    @user-gv4zm8uv8c 7 หลายเดือนก่อน +5

    I appreciate this video, with the shader system some sprites are not rotated, why?

  • @Sonnavafitch
    @Sonnavafitch 8 หลายเดือนก่อน +2

    I'm a simple man, I see Paper Mario, I click

  • @fierorecensione5828
    @fierorecensione5828 8 หลายเดือนก่อน +1

    THANK YOU MICHAEL!!!

  • @MorphoMonarchy
    @MorphoMonarchy 4 หลายเดือนก่อน +1

    A little late to the party, but if you want to use the matrix method for tilting sprites and want to keep a sprite origin that's not at the bottom of the sprite, you can simply write draw_sprite(sprite_index, image_index, 0, -sprite_get_yoffset(sprite_index)) when drawing your sprite. This will draw the sprite at the proper tilt position while also allowing the sprite to be rotated the way you want. I'm not sure how this will work with the shader method, but if you don't need the extra speed then this will work fine.

  • @ajejebrazord4068
    @ajejebrazord4068 7 หลายเดือนก่อน +3

    Hello how are you? Is there any chance to avoid to recall every time in the draw event something like
    camera_set_proj_mat(global.camera3D, projmat);
    gpu_set_zwriteenable(true);
    gpu_set_ztestenable(true);
    gpu_set_alphatestenable(true);
    but more important, forcing every layer to 0 in the create event cause every time a lot of z-fighting for the things i make with normal 2D, some shadows, some footprint, some dust when the player's move, how can i fix this kind of problem?
    Thank you!

    • @DragoniteSpam
      @DragoniteSpam  7 หลายเดือนก่อน +2

      in my case (most) of the ground layers are drawn with z writing/testing turned off since they're just flat planes stacked on top of each other and they don't really need the depth buffer, but you can also use a matrix transform or something similar to draw them at slightly different depths to avoid having them fight

    • @ajejebrazord4068
      @ajejebrazord4068 7 หลายเดือนก่อน +3

      It would be awrsome to see a tutorial on how to do this thing, because i can’t figure it out, with the Zwriting and testing activated in the objCamera how did you can draw a layer with them turned off?

  • @ytabukki2604
    @ytabukki2604 8 หลายเดือนก่อน +3

    Hello Michael, i just want to ask how can i implement the shadows for my sprites rotated, thank you for this video btw!

    • @DragoniteSpam
      @DragoniteSpam  8 หลายเดือนก่อน +2

      try starting with this: th-cam.com/video/N1y90ut3o0g/w-d-xo.html

    • @ytabukki2604
      @ytabukki2604 8 หลายเดือนก่อน

      Thank you! @@DragoniteSpam

  • @loi0O
    @loi0O 7 หลายเดือนก่อน +2

    Hello, how did you draw the clouds on the ground? This video is huge BTW

    • @DragoniteSpam
      @DragoniteSpam  7 หลายเดือนก่อน +3

      that part's somewhat more complicated, it involves projecting a cloud texture onto everything that gets drawn at about a 45 degree angle

    • @loi0O
      @loi0O 7 หลายเดือนก่อน +2

      it would be great to see an entire step by step tutorial on how to recreate this system as well as the diorama style camera

  • @theelited246
    @theelited246 2 หลายเดือนก่อน +1

    Hey, I havea quesstion. How would we flip particle systems at a 90 degree angle? Should we somehow still do it with flipping the world matris or is there another trick for that?

  • @fierorecensione5828
    @fierorecensione5828 8 หลายเดือนก่อน +2

    Hello Dragonite, how are you?
    Is there any reason why larger sprites aren't rotated?

    • @fierorecensione5828
      @fierorecensione5828 8 หลายเดือนก่อน

      EDIT: the sprites that do not rotate are those that have empty pixels in the upper left and upper right parts, for example the sprite of my fir tree does not rotate

  • @go_to-the_xy7
    @go_to-the_xy7 3 หลายเดือนก่อน

    hello, your video helped me a lot, but there was a small problem with the movements of the characters, before I entered the variable z through the definition of variables, but something went wrong and I decided to ask you

  • @unsold-feather7956
    @unsold-feather7956 7 หลายเดือนก่อน

    Hey dragonite! Is it possible to make the 3d game tutorial but with 2 players if yes can you please make a tutorial!

  • @Gameboy69-xc6ue
    @Gameboy69-xc6ue 6 หลายเดือนก่อน

    How to make the sprite move in the diorama camera?

  • @digitalswordplay
    @digitalswordplay หลายเดือนก่อน

    Hey DragoniteSpam - Any chance you can expand on this video and add a building for the player to walk around and potentially a blur shader to the background ?

    • @DragoniteSpam
      @DragoniteSpam  หลายเดือนก่อน +1

      that might be a fun one to do sometime

    • @digitalswordplay
      @digitalswordplay หลายเดือนก่อน

      Would it be achieved with sprite stacking out of curiosity?

    • @DragoniteSpam
      @DragoniteSpam  หลายเดือนก่อน +1

      @@digitalswordplay more like vertex buffers and a depth of field effect

  • @victim.4
    @victim.4 7 หลายเดือนก่อน

    Hiy, DragoniteSpam. I'm using the shader method, and I'm getting weird red reflections on the ground. Is that fixable?

  • @piscesartianyt
    @piscesartianyt 3 หลายเดือนก่อน

    Hello! How would you handle collisions? With this method mine are totally spread away from the sprites :(

    • @DragoniteSpam
      @DragoniteSpam  3 หลายเดือนก่อน

      collisions should still work as they normally would in 2D, i usually have all of my sprite origins set to bottom-center for this

  • @R_Paranda
    @R_Paranda 7 หลายเดือนก่อน

    Everything was working well until I got to making the sprites stand up. When I followed the script and ran it, the player doesn't show anymore. What should I fix?

    • @DragoniteSpam
      @DragoniteSpam  7 หลายเดือนก่อน

      Make sure the culling direction isn't removing the front of the sprites.

    • @R_Paranda
      @R_Paranda 7 หลายเดือนก่อน

      @@DragoniteSpam The culling direction. Like the matrix?

    • @DragoniteSpam
      @DragoniteSpam  7 หลายเดือนก่อน

      @@R_Parandagpu_set_cullmode

    • @R_Paranda
      @R_Paranda 7 หลายเดือนก่อน

      @@DragoniteSpam Where is that? Sorry I'm a bit confused.

  • @plusisaac
    @plusisaac 5 หลายเดือนก่อน

    I have the character moving script but whenever I start the game it only moves the camera and the character doesn’t move, I am stuck please help

    • @plusisaac
      @plusisaac 5 หลายเดือนก่อน

      my camera also starts far away from the player

  • @MiguelAngelValdepenaDelgado
    @MiguelAngelValdepenaDelgado 2 หลายเดือนก่อน

    woow