Draw fewer tiles - by using a Dual-Grid system!

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 ก.ย. 2024

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

  • @parmesanzero7678
    @parmesanzero7678 หลายเดือนก่อน +1209

    This is some old-school game dev efficiency vs. the modern brute-force mentality. Indie devs are rediscovering and reinventing things the big studios have forgotten and schools no longer teach.

    • @minalgadhethariya
      @minalgadhethariya 27 วันที่ผ่านมา +77

      Constraints forces them to innovate.

    • @boines
      @boines 27 วันที่ผ่านมา +8

      2 grids take up way more than say 1 uh. i saw another showing pixel icons etc which explains this.

    • @jendorei
      @jendorei 25 วันที่ผ่านมา +132

      ​@@boinesTake up more of… what? This video is about workflow optimization and reducing the amount of work you have to do.

    • @sheepcommander_
      @sheepcommander_ 25 วันที่ผ่านมา +36

      @@boines wtf are you sayihng

    • @eftorq
      @eftorq 24 วันที่ผ่านมา +9

      I got a little bit into game boy game making & is crazy too wrap your head around all these limitations. But once your understand you have so many ideas to optimise

  • @sylvan4042
    @sylvan4042 หลายเดือนก่อน +1533

    As a game dev, hearing another dev say "I've got a new game idea" shakes me to my core 😅But it makes sense for scope reasons. Scope is hard 😔

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

      What do you mean? Why does it shake you?

    • @sylvan4042
      @sylvan4042 หลายเดือนก่อน +212

      @@matthewcharles9813 While there can be nothing wrong with starting a new project, it can become a bad habit of constantly restarting and never finishing. This can happen for many reasons, commonly by passing the honeymoon phase of your project, where difficulty starts to ramp up. Why it shakes me is what it can do to a dev who stays stuck in the loop, it's happened to me for a time and I know plenty of devs who have been stuck in a loop constantly restarting projects or changing the scope/design of their games for years and never finishing anything.

    • @MarsterMikkel
      @MarsterMikkel หลายเดือนก่อน +24

      @@sylvan4042 I'm kinda in this stage right now, everytime I start on a project and it gets boring, I move on to a new one that I find interresting. Do you have any tips for getting out of the bad habits?

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

      @@sylvan4042 okay tank you got explaining. Wasn't quite understanding your first comment.

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

      ​@@MarsterMikkeldiscipline, set goals?

  • @cinderwolf32
    @cinderwolf32 27 วันที่ผ่านมา +361

    I will never forgive youtube for the 1.5 year period where all I got recommended was garbage slop content and couldn't find awesome channels like this.

    • @le9038
      @le9038 21 วันที่ผ่านมา +11

      And don't forget all the overly sexual recommendations like what I have been suffering through...

    • @viralshark
      @viralshark 19 วันที่ผ่านมา +9

      @@le9038 its because youve clicked on some of them 😂

    • @le9038
      @le9038 19 วันที่ผ่านมา +1

      @viralshark but I don't like looking at that kind of stuff on TH-cam! And any suspicious activities I do are Done on another browser (Tor), under different accounts with separate email addresses using SimpleLogin...

    • @GoblinArmyInYourWalls
      @GoblinArmyInYourWalls 18 วันที่ผ่านมา +4

      Yeah especially in the game dev world. We definitely need more "I'm a Unity user who used godot for twenty minutes, here's an hour long video" /s

    • @MollyHJohns
      @MollyHJohns 14 วันที่ผ่านมา +3

      Don't forget to clean your watch and search histories on TH-cam so they don't keep recommending what you accidentally clicked. And choose "Don't recommend this channel" to avoid what you dislike. From this point on you can manually key in what you want to watch.

  • @narwhals6465
    @narwhals6465 29 วันที่ผ่านมา +150

    I think the craziest part of this is that it's the first time anything in the world of graphics programming has actually made intuitive sense to me. Instead of having each time correspond to a world tile and have 9 neighbors, each display tile corresponds to a corner and only has four neighbors. The display tiles don't have a "base tile," they are only made by combinations of neighbors.
    I didn't even plan on making a 2D game but it's a cool hack to know!

    • @MagicGonads
      @MagicGonads 25 วันที่ผ่านมา +8

      this is the opposite of a hack, it simplifies the design concisely rather than working around a design limitation by generating unmaintainable excess or unsupported behaviour.

    • @GikamesShadow
      @GikamesShadow 4 วันที่ผ่านมา

      Not really a hack like MagicGonads says. Say you make 16x16 tiles. All this process does is cut the 16x16 tile into 4 pieces that it can then choose from to use for the actual tile you wanna place. Now granted the program here can do this automatically. But even for paralax mapping this works wonders and can help you a lot.

  • @chrismeyer9990
    @chrismeyer9990 หลายเดือนก่อน +508

    Old programmer here, and I'm so happy that all of this is having a revival! I remember that problem from my DOS games too well. Many opted to just not build on unsuited border tiles, before this came along (and then it all went out of fashion together with times based games). At least opting for this solution is a no-brainer, as opposed to the question how to layout isometric maps: diamond shaped or square with offset odd rows. Maybe that discussion is coming back, too 😊

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

      Diamond shape!
      Honestly I dont care.

    • @DsiakMondala
      @DsiakMondala 26 วันที่ผ่านมา +1

      wow!!! I am so happy you did it!!! normaly you go 40 at 30 but you did it!!! I hope I can go that far keep on being such a good man!

    • @user-xk2yg3qp8t
      @user-xk2yg3qp8t 25 วันที่ผ่านมา

      You...don't look that...old.🤔

    • @chrismeyer9990
      @chrismeyer9990 24 วันที่ผ่านมา

      ​@@user-xk2yg3qp8t Looking younger than most mode 13h games.

    • @johncheng9253
      @johncheng9253 23 วันที่ผ่านมา

      nice work bro

  • @danieldavis2017
    @danieldavis2017 หลายเดือนก่อน +409

    This may be the single best game design video I've ever seen. It gives an interesting idea. Shows how it works. Suggests where you can get more detailed information. And gives a code example. Perfect.

    • @yt_n-c0de-r
      @yt_n-c0de-r 29 วันที่ผ่านมา +3

      Exactly this

    • @Polymeron
      @Polymeron 29 วันที่ผ่านมา +13

      Bonus points for open source engine example!

    • @cupostuff9929
      @cupostuff9929 27 วันที่ผ่านมา +8

      suggesting where to get more detailed information is something all tutorials should do, too many people acting like gospel

  • @salvationindustries
    @salvationindustries หลายเดือนก่อน +242

    "I think this scope will be a lot smaller" it's like famous last words. haha.
    Hope it actually is smaller in scope because we all been in the situation when it starts "small" but it becomes big after a while.
    Best of luck!

  • @DevDuck
    @DevDuck 28 วันที่ผ่านมา +72

    This is super helpful! At this point whenever I see you post I just wonder what I'll be refactoring in my game next. Thanks so much for sharing. Looking forward to your new project!

  • @erik-sandberg
    @erik-sandberg 29 วันที่ผ่านมา +28

    Thank you SO MUCH for 1. Exploring the different standard tile set sizes, 2. Showing an example in a game engine, and 3. Linking to more educational tools and videos. I was literally searching for this information and having trouble finding it, and TH-cam recommended this to me. Thanks again! Subscribed.

  • @squiddler7731
    @squiddler7731 หลายเดือนก่อน +37

    I remember coming up with this exact system for one of my games, and once I did I was honestly amazed that an idea like this wasn't already well known and used in the wider game industry. I remember the reason I looked into it was because I wanted to make a level editor with slopes, but in a way that's more free-form than something like mario maker 2 (where slopes are this dedicated object that can only be used in specific ways). Eventually I realized that trying to account for 8 neighboring tiles in my algorithm would've been nigh impossible once slopes were brought into the mix, so in my search to simplify things I came up with this system. Even ignoring slopes it made everything so much simpler, and expanded the options I had when designing tiles (now they're allowed to extend outside of the grid rather than being strictly limited to it, which was another issue I had). In the end I found that I would need 20 different slope tiles for every type of slope I wanted in the game along with the 16 base ones, so I can only imagine how many that would've been had I had to worry about 8 neighbors instead of 4

  • @CypiXmusic
    @CypiXmusic 29 วันที่ผ่านมา +14

    I don't even develop games anymore, but love when people come up with slick and efficient solutions

  • @bagandtag4391
    @bagandtag4391 หลายเดือนก่อน +303

    I feel like a caveman that was just given a fanta and experienced something they were not meant to.

    • @Me_Caveman
      @Me_Caveman 25 วันที่ผ่านมา

      What is Fanta?

    • @dksamaritan5200
      @dksamaritan5200 25 วันที่ผ่านมา +7

      It's a soda drink like mountain dew

    • @JNJNRobin1337
      @JNJNRobin1337 25 วันที่ผ่านมา +5

      ​@@Me_Cavemanorange soda

    • @xaigamer3129
      @xaigamer3129 24 วันที่ผ่านมา +3

      sprite but with flavor

    • @parkerstroh6586
      @parkerstroh6586 22 วันที่ผ่านมา

      Coke but for 1939 special Germany

  • @codingidiot6754
    @codingidiot6754 28 วันที่ผ่านมา +19

    casually dropping the most GOATED tutorial i've ever seen in my entire life, if i hadn't watched this video i would've literally never even thought something like this was possible. The amount of time this saves is incredible. 10/10 would learn again.

  • @echox_ray
    @echox_ray 21 วันที่ผ่านมา +6

    I just have to say this: In my eyes, this video is exceptionally good. It's informative, sticks to the topic, no unnecessary long intro and a nice flow and commentary. This is what I like to see when I go on TH-cam to find a solution to a problem. Great job, keep up your good work and best wishes for your games! :)

  • @MadsterV
    @MadsterV 28 วันที่ผ่านมา +24

    This is more widely known as "corner tiles", as a variation from "edge tiles" (which are themselves more widely known as Wang tiles, from the guy that invented them). I love these, they let you do hand-made transitions between tile types and there's up to 4-color (4 different "terrain types") packings so you can smoothly transition from any tile to any tile as required (since each tile can have at most 4 different colors, 1 per corner, if you have more than 4 colors you just make additional sets).
    I've been working (for a long time) on a few variations on these, for even more flexible and organic looks. I expect to publish my results somewhere somehow.

  • @paradachshund
    @paradachshund 29 วันที่ผ่านมา +9

    I'm so impressed by people like you who seem to get so much done in your spare time devving. I'm also a spare time dev and it's such a struggle to get progress done being a busy adult!

  • @AdamtronskyMe
    @AdamtronskyMe 29 วันที่ผ่านมา +6

    It's really interesting watching how it actually works.
    I actually "discovered" this method while creating a cistom tileset for RPG Maker, I was trying to figure out how it worked and came to the conclusion the tiles were divided (More than what is shown) so it can "Build" all the tiles combinations

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

    This is a lifesaver. It’s near impossible to find a good video in tile sets so this is very appreciated

  • @TheAtticus82
    @TheAtticus82 7 วันที่ผ่านมา +1

    Oh my god, you don't know how long I've been looking for a video like this! Thank you so much.
    Just subscribed!

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

    This got me more invested into working on my 2.5D game using pixel-art without the anxiety im having from working on a lot of tiles for it, thank you! And goodluck on your game!!!!

  • @TheWildDeadHero
    @TheWildDeadHero 25 วันที่ผ่านมา +3

    We use tiles and meta tiles all the time in GBA development! Having a handful of 8x8 tiles create a wide variety of 16x16 tiles really saves space and compute time. And layers/transparency really help too.

  • @AlexFigar
    @AlexFigar 29 วันที่ผ่านมา +3

    Perfectly timed video. Was about to draw 47 tiles for an assignment like some kind of chump.

  • @multiapples6215
    @multiapples6215 หลายเดือนก่อน +60

    Neat! The Dual-Grid system actually reminds me a lot of marching squares. Very interesting!

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

      I was thinking that too. It's basically exactly marching squares, except that the lookup table contains bitmaps instead of edge lists. It also leaves out the interpolation step, but interpolation wouldn't do anything here because the original scalar field is binary anyway.
      That does bring up the possibility, though, of having individual tiles be procedurally generated according to up to two line segments, and doing the full marching squares algorithm to generate those line segments in each tile. Then you could have a "strength" for each tile, rather than simply being on or off. Implementing a countour-lines-to-tile generator with a rich looking output would be really involved, of course.
      Edit: Alternatively, instead of having "strength", you could make the actual game logic tile grid higher resolution than the display tile grid, then apply a scaling filter to it to get the field to apply MS algorithm to. So each display tile, for example, could cover a 3x3 grid of game tiles. You scale that down to get a more smoothly varying field to compute the contours of.

    • @feuermurmel
      @feuermurmel 29 วันที่ผ่านมา +4

      That is a good analogy! When I started building tile systems, I came from a background of working with marching squares (I built software to convert implicit surfaces to meshes) so I didn't even occur to me that there would be other possibilities than the "dual grid system" 😅 I considered the ground type to be located at the corners of the tiles and the tiles interpolating/blending between them. This means that I wouldn't consider there to be 2 coordinate systems involved.

    • @chaumas
      @chaumas 29 วันที่ผ่านมา +2

      @@feuermurmel I’m working on a side project using marching cubes and voxels right now, and I keep having to remind myself that the voxels are offset from the cubes as I think through details.
      It would be interesting to build a voxel rendering engine which uses 3D “tiles” and a 3D version of the dual grid system. You’d have to make 256 tiles for that, although you could start with 15 and add special cases when you want to break symmetry.

    • @MadsterV
      @MadsterV 28 วันที่ผ่านมา +1

      ​@@chaumasI've seen it done lately in what they call "Wave Function Collapse". It's built on top of a grid system and they need matching tiles, so they use variations on these ideas. It's perfectly doable in a regular 3D grid with cube tiles. If you introduce tile rotation, you can drastically reduce the number of required tiles (you can do that in 2D as well)

    • @MadsterV
      @MadsterV 28 วันที่ผ่านมา +1

      @@feuermurmel Yes! this kind of tiling is commonly known as "corner tiles" for this same reason.
      You can just do a Bresenham line along your grid using it, although they are not very good at diagonal lines: either it's too coarse or it has too much repetition, depending on scale.
      The "blob" tileset does a tad better since you can spot diagonals within a tile and you can draw them as proper diagonals, but they're more tiles (which makes sense, since now you're accounting for diagonals). You can find 6x8 and 7x7 packings of these (with a tiny bit of repetition), though if you allow for tile rotation (which means the tile is not directional -- no shadows, no vertical hints) you can get away with just 15 of them (no packing though). Your lines will have 45 degree steps instead of 90 deg, which is better but still not great.

  • @CaptainBeebi
    @CaptainBeebi 29 วันที่ผ่านมา +7

    Funnily enough, I made a video on this exact approach back in April for my 3D engine. Since the original bedrock I was working with was a GBA game, I basically just went _"Beep boop"_ and took the tilemap approach of the GBA and earlier consoles used (2x2 metatiles made out of 8x8px tiles)
    With some elbow grease I've since squeezed the entire 3D mesh builder down to ~300 lines of code. You've got me wanting to release the source for my builder now lolol

    • @DsiakMondala
      @DsiakMondala 26 วันที่ผ่านมา

      A man can do anything with some elbow grease! You are very manly indeed

    • @CaptainBeebi
      @CaptainBeebi 25 วันที่ผ่านมา +4

      @@DsiakMondala Wat, I'm not even a guy

  • @_hallowed_
    @_hallowed_ 27 วันที่ผ่านมา +2

    I honestly can't believe I've been drawing all those unneeded tiles all along. Super helpful video!

  • @csaki01
    @csaki01 8 วันที่ผ่านมา

    Finally clicked on this video. Don't think I'll work on anything tile-based any time soon, but if I do, I'll keep this in mind.

  • @Pichuscute
    @Pichuscute 24 วันที่ผ่านมา +3

    Was very confused at the premise of this video for the first couple minutes, until you got to the part explaining why you weren't just doing the type of tileset at 1:45, haha.
    In any case, this is neat.

  • @Chilaxolotl
    @Chilaxolotl 6 วันที่ผ่านมา

    I like the idea of discovering plants and then farming them. You can have different biomes and then have to simulate their native habitat to grow them successfully indoors.

  • @oddpenguin8996
    @oddpenguin8996 24 วันที่ผ่านมา +4

    I absolutely adore that farmer sprite at 2:03

  • @kasiamleczarska9078
    @kasiamleczarska9078 4 วันที่ผ่านมา

    I'm not even a dev nor a programmer but this was an interesting and relaxing watch

  • @CliveAtFive
    @CliveAtFive 4 วันที่ผ่านมา

    Your vids are always super practical, informative AND calming. expert blend!

  • @TheNewton
    @TheNewton 23 วันที่ผ่านมา +1

    high effort no cruft, amazing high level presentation really simplifies understanding tile concepts AND visualizes the drawbacks.

  • @thewoodsi9204
    @thewoodsi9204 15 วันที่ผ่านมา

    Wow! This video really helped me decide how I want to go about tilesets for my games. And I was so pleasantly surprised by how good your games look! I especially love the character design from your newer idea, and how the plants bounce a bit when you place them. It's so dynamic and lively!

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

    amazing, i was having this exact problem implementing fog of war (that i was using tilemaps for so i could have a nice 90s rts style hand drawn fog edges) and came to the exact same solution of offsetting the grid, after a week of pulling my hair out trying a million different approaches.
    then this video drops literally 24 hours after i figured it out and the algorithm recommends it to me. incredible.

  • @luke1235XD
    @luke1235XD 2 วันที่ผ่านมา

    Great video! I've run into problems like this with tilesets before and thought there must be a better way.
    The video editing and presentation is also top notch.

  • @billberg1264
    @billberg1264 22 วันที่ผ่านมา

    The moment the three tile sets popped up on screen, my first thought was "couldn't you write a small program that would generate the second two from the first one?" I'm glad that turned out to be exactly where this was going.

  • @Raye938
    @Raye938 25 วันที่ผ่านมา

    Haven't been following anything you've done, as this is my first time your video has popped up from youtube's 's algorithm, but it has completely derailed my plans for tiles in a very positive way. Thank you!

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

    What a treat to get more of your content! I'm exited to see how I can leverage the dual tile system in the future. Thank you for providing starter code, it's been fun to explore.
    I appreciate that you showcase other creators and supply references. I first saw your amazing water shader on a different channel only to find out that specific creator did not come up with it or reference you in the video. And another one within the last week who claimed they made a BEAUTIFUL ocean when it is exactly your shader. It's so easy to give credit where it is due, especially when you have so graciously provided the code on github!
    Really excited to follow along on your creative endeavors!

  • @OmegaPhlare
    @OmegaPhlare 26 วันที่ผ่านมา

    Thanks for making a video about this. I haven't thought about this problem in many years but I'm glad to now know that there was a great solution for it. It kind of makes me want to design a game with a grid system just so I can use it.

  • @barndone
    @barndone 13 วันที่ผ่านมา

    Awesome video!
    I've started my transition into Godot recently by remaking an old fire emblem-like project and have been wanting to try implementing a dual grid setup for it. This helped a ton!

  • @KingBobXVI
    @KingBobXVI 22 วันที่ผ่านมา

    One of my first game projects, when I was in high school, I made an isomeric game with a large tile based world. I solved this problem using exactly one tile per type with perfect overlapping...
    The bottom two edges of the tile image extended about 1/4 or so down over the next tile, with the pattern background broken up with transparency. They were drawn in order from the bottom of the screen up, left to right, so each tile's "overhang" would just blend itself into the next tile down in a consistent manner. A few tiles, like bricks or other construction, had a property that raised the Z level to avoid the overhang when needed.
    When you have a tile system that supports it, this is a really, really easy way to get seamless blending for any number of tile types. And because the blend still applies between tiles of the same type, having multiple variants of the same type quickly leads to a ton of variation as any two tiles next to each other will create a subtle variation as if you had exponentially more variants (make 4 grass tiles, now you have, effectively, 16 unique variants of tile based on which ones overlap, lol).
    I used this one more time on a square grid (overhang was bottom and right), and it works just as well there too. Honestly, I don't know why I haven't seen it used elsewhere.

  • @Rknife
    @Rknife 27 วันที่ผ่านมา +2

    Yay, I unknowingly found the best option.
    Confidence: 100

  • @HeroOfHyla
    @HeroOfHyla 27 วันที่ผ่านมา +1

    Great video.
    RPG Maker only requires 6 tiles, and then it automatically cuts those up into quarter-tile pieces and recombines them in various ways to generate a 47-piece set for you. It's super convenient. I reversed engineered it years ago and implemented my own version in Java. One of these days maybe I'll try doing it in Godot.

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

    This is SO helpful. I haven't worked much with tile maps, but it was something on my radar as something to get more familiar with. This likely saved me hours of trial, error, and research. Thank you so much!

  • @MikaelIsaksson
    @MikaelIsaksson 26 วันที่ผ่านมา

    Oh, I have been coding for 40 years, and doing gamedev as a hobby most of those years as well as professionally the last couple of years, but I had never heard of this system before. Amazing :)

  • @RobertoMaurizzi
    @RobertoMaurizzi 29 วันที่ผ่านมา

    Perfect explanation of everything tiles-related, plus easy to understand description of how dual-grid works, in 6 minutes and 20 seconds! Thank you! Instant-subscribe!

  • @KosinsStuff
    @KosinsStuff 27 วันที่ผ่านมา

    Game development is its own science, i learned so many cool tricks to make things so much easier

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

    ooo ive watched all of thinmatrixes videos but mustve forgot abt this when i started my own game. very good explanation love your videos as always girl!
    my existing approach for my game i think is quite unique so ill share here. i made two tilemaps, one for a “base” layer and the other as the “main” layer. i made one set of border tiles that i use as a mask so any main layer tiles can border with any base layer tiles. this does limit which tiles can border which, but means you dont have to do make any variants of tiles! and since i only planned to have a few border tiles anyway this worked for me perfectly.

    • @MadsterV
      @MadsterV 28 วันที่ผ่านมา +1

      Neat! I've thought of this for when drawing every single combination would result in an explosion in the tile count. Overdraw is kept in check since it's at most 2 layers. I did a small proof of concept with plain-color tiles and it worked beautifully!

  • @JamieBainbridge
    @JamieBainbridge 26 วันที่ผ่านมา +2

    A game about growing houseplants is considered exciting. I think I've found a new favourite channel :)

  • @Usual_turtle
    @Usual_turtle 9 วันที่ผ่านมา

    This is great. I love the content, and as a game dev, these tips are really useful. Just want to let you know, as of Godot 4.3, TileMaps are deprecated in exchange for multiple TileMapLayer nodes instead. The code is almost the same, except for a few things. Overall, love the channel! Thanks for the great content!

  • @billcc7704
    @billcc7704 28 วันที่ผ่านมา +4

    Another old programmer here, I love coming across Computer Science solutions like this. Great example of using less in a more efficient way. I also enjoy the relative simplicity of the code too. I'm surprised this isn't already a part of Gadot for standard use in 2d sprite games.

  • @jurakarok3343
    @jurakarok3343 22 วันที่ผ่านมา

    I thought this was going to be a D&D map drawing guide. I liked this more than what I was expecting.

  • @beddyboy
    @beddyboy 3 วันที่ผ่านมา +1

    Could listen to this voice whenever.

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

    I'm stunned by how beautiful your games are. I'm a person who rarely comments on videos, but your explanation, passion, and creativity made me do this. Good luck with your game!

  • @elhazthorn918
    @elhazthorn918 29 วันที่ผ่านมา

    This is genuinely fascinating. I had no idea so much thought and theory went into tilesets.

  • @EinSatzMitX
    @EinSatzMitX หลายเดือนก่อน +32

    1:35 this looked REALLY dangerous for a moment

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

    With the 15 piece tile set think painting vertices instead of tile centers (you could also just offset the grid you use for painting, I think). For 47 (blob) tiles it works well to paint the first 16 (which is enough for the top of a wall or a road) and autogenerate the rest (quarter the tile, see the rpg maker autotiling system). Dual grid seems great, but I don't think it is easier than the other methods, my intuition is what corners you want to have rounded is the deciding factor. E.g. for the top of jrpg style walls I would want sharp corners. Also keep in mind that using transparency and layering tiles is an option to reduce tile requirements. It is definitely possible to make autotilesets with a small amount of graphical work. In 3D it is even easier, because you don't have to bake the lighting, can stick meshes into one another or hide bad geometry by sticking geometry on top. E.g. for a wall in 3d you only need a pillar and a wall (or even just a single wall if you use the right shape).

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

    What I find cool about this is that no quarter-tile is redundant. Which means you can implement this as 16 16x16 tiles, or as 64 8x8 tiles, with no changes to the art.

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

      Also this is just marching cubes in 2D.

  • @movidiu1160
    @movidiu1160 22 วันที่ผ่านมา

    Instant subscribe, amazing video! I find most content makers on YT bloat their content, please don't change this format, the plug was short and sweet and left me curious about your projects, the video itself was highly informative, honestly I'm gonna go watch all your content now.

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

    wow this is the no joke the best video ive seen on tiles. all the basic tileset tutorials only covered the 15-piece tileset (and didn't call it that so i had no idea there were more variations lol)

  • @GameJam230
    @GameJam230 20 วันที่ผ่านมา

    Something that can likely be done to improve this as well (assuming you don't want unique connections between different pairs of tiles) would be to change the tilemap configuration from comparing two SPECIFIC types of tiles (like how it compares grass to dirt), to instead simply comparing "this" to "other".
    Then, you draw the two layers of the tiles separately from each-other instead of storing them in the same sprite such that they fit together like a puzzle piece. This would likely be done by using a bitmap to identify the frames for each tile, so if "this" tile overlaps in a way that would require it to draw the frame with index 1011, then the "other" tile will draw in that same location with index 0100, and those indexes will be picked to make them fit together like jigsaw pieces.
    Just like that, you don't need a tile to represent every connection between two different terrains, you just need the 15 frames for grass, 15 frames for dirt, 15 frames for sand, 15 for water, etc. Otherwise adding new terrain types would DRASTICALLY increase the required frames because you would need separate images for grass to water than dirt to water than sand to water, and all other combinations.

  • @jemmyjam_
    @jemmyjam_ 29 วันที่ผ่านมา

    This is for real the most information dense video on tiles I've ever seen! Thanks for this!!

  • @joshlincoln2211
    @joshlincoln2211 29 วันที่ผ่านมา

    This video is incredibly useful! I have just started my game dev journey and tiles (drawing in general) have been very overwhelming. I made my first grass as the 4x4 grid and used the webtyler tool. Thanks for the tips!

  • @ilja615
    @ilja615 23 วันที่ผ่านมา

    wow this is a very nice approach. For my own game, i made it before watching this video, the tiles are 16x16 but the textures are 8x8 and i draw 4 mini-tiles per game tile.

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

    There is only four videos, but it's super impressive on each one of them.

  • @cmyk8964
    @cmyk8964 29 วันที่ผ่านมา +3

    So the main idea is: The 16-pcs set works best when terrain tiles are offset by half a tile

  • @legendsneverdye
    @legendsneverdye 24 วันที่ผ่านมา +20

    0:10 I noticed the faces on the tiles

  • @Bakayaroz
    @Bakayaroz 13 วันที่ผ่านมา

    there’s some much detail that only the creator will see and appreciate

  • @jasonstone8525
    @jasonstone8525 4 วันที่ผ่านมา

    Your work is lovely. I’m excited to give dual grid a try. Always looking for a good solution. And that auto tile set maker looks awesome!

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

    wow this seems like no brainer now that I'm actually seeing it, I can't believe I hadn't seen this technique before, I think I'll be using this but for isometric tiles

  • @indyalx
    @indyalx 27 วันที่ผ่านมา

    Great video, broke down the concept nicely but without overloading us with too much technical details out the gate.

  • @c4h5n2o1
    @c4h5n2o1 25 วันที่ผ่านมา

    in the making-of documentary for the 2019(!!) NES game Micro Mages, the devs talk abt how they overcame a similar conundrum to create the most space-efficient graphics set they could. worth a watch here on TH-cam

  • @benphillips4928
    @benphillips4928 27 วันที่ผ่านมา

    I was thinking about different tile art strategies for my current game project and hadn't chosen one yet, this helps me out a lot!

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

    I adore you channel and the calming, educational yet enetertaining spirit you have. It is inspiring to me as a young aspiring game developer. Thank you for the video. Please keep posting!

  • @arandomhashbrown3756
    @arandomhashbrown3756 15 วันที่ผ่านมา

    First time watcher:
    Wow, amaizing video. It's incredible how much it's going on with tiles on videogames.
    Btw, your channel has a great name

  • @OpinionatedSkink
    @OpinionatedSkink 25 วันที่ผ่านมา

    not a game developer but well explained conceptually and made perfect sense to me. Thank you!

  • @HenryLoenwind
    @HenryLoenwind 25 วันที่ผ่านมา +1

    Another way to handle the coordinate system is to use double-resolution addressing. With this, your world coordinates have double the resolution of your grid. Then, when accessing the world grid, you left shift the coordinate by one, eliminating the lowest bit. When accessing the tile grid, you also left shift but then add the shifted out bit to the coordinate.
    This, obviously, can be combined with the pixel coordinate grid; e.g. for 16-pixel tiles, the lowest 4 bits of the coordinate would be the pixel coordinates within a tile, with the 4th bit the one that gets added to the tile grid when shifting out.

  • @_Chelik_1
    @_Chelik_1 28 วันที่ผ่านมา

    When i hear firs that you make this on godot i think about to remake this system on Unity, but you've already done it. Very thanks!

  • @IntegerOfDoom
    @IntegerOfDoom 27 วันที่ผ่านมา

    I don't think I'll ever need this information but it was interesting.

  • @aleatorioavv2237
    @aleatorioavv2237 27 วันที่ผ่านมา

    Im starting my journey as a game dev, and thats is not only super usefull but also AWESOME, thanks

  • @ghosting3961
    @ghosting3961 21 วันที่ผ่านมา

    i love the artstyle for the game you showed at the end i want to play it

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

    Incredible video, keep uploading these bangers plz 🙏🙏🙏

  • @godskook
    @godskook 26 วันที่ผ่านมา

    You can wrap the logic for transforming between the two grids in helper functions. Most languages will compile helper-functions out of the finished product entirely, so they usually don't have runtime cost.
    Also helps keep that logic consistent in your code since you don't run the risk of making mistakes down the line.

  • @omegawolfbrony
    @omegawolfbrony 24 วันที่ผ่านมา

    This definitely gave me some food for thought. Thanks for directing me to Godot. It seems like a good alternative to Unity and Unreal.

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

    All of your games look absolutely stunning 🤩

  • @OmgItsOliverB
    @OmgItsOliverB 28 วันที่ผ่านมา

    Not super related to the video, but the art style in the new game is absolutely adorable.

  • @Internetzspacezshipz
    @Internetzspacezshipz 28 วันที่ผ่านมา

    This also makes level generation about 10000x easier. No need to worry about which wall is facing what direction, just fill WALL or FLOOR, then do a post process step on all tiles to check their neighbours and solve what their appearance should be that way. Of course, this is computationally expensive, but if you are just doing it when you initially generate your world, it's not a problem!

  • @errelivent
    @errelivent 25 วันที่ผ่านมา

    i have never made a game before but i will take this advice to heart

  • @sacredg7693
    @sacredg7693 15 วันที่ผ่านมา

    the house plant game is genius and i think has the potential to be a success. keep up the good work

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

    You can solve the corner issue of the 16-piece subset by having multiple layers to get the shape you want. The problem is that this forces you to have multiple layers, and overlapping tiles. The dual-grid system is genius!

  • @_inkke
    @_inkke 7 วันที่ผ่านมา +1

    the song that begins at 2:28 (space chillout by penguinmusic) is a great choice btw, sounds so nostalgic of old flash games like william and sly. which feels fitting for small game devs who perhaps grew up with those games and use them as inspiration :]

  • @creserrendelor
    @creserrendelor 26 วันที่ผ่านมา

    GODOT has grown significantly since I first encountered it, and now it's starting to shake my faith in other engines 🤔

  • @MagicGonads
    @MagicGonads 25 วันที่ผ่านมา

    This is the ideal devlog/tutorial structure, thank you! I haven't thought about this before.
    After watching I noticed something cool: not only is it 'dual grid' because of having... two grids... but if you interpret the grids as planar graphs then they actually are 'dual' in the sense of 'dual graph'!
    For planar graphs, a dual graph is one where the faces become vertices (typically their orthocenter), the edges become edges (typically their perpendicular bisector), thus the vertices become faces.
    Noticing this actually means it generalises to different planar graph worlds for generating 'vertex colouring' (what we would call the idea of assigning a number (e.g. a sprite index) to each vertex in the graph- but in the dual graph these assign numbers to faces).
    The question is (outside of square grids) how useful is that for compactly representing the adjacent tiles?

  • @Portponky
    @Portponky 29 วันที่ผ่านมา

    I made a plugin for Godot called Better Terrain that features a big improvement to the autotiling system in the engine. For a long while I've considered implementing a "dual grid" system, though there are a few tricky problems related to implementation that I haven't solved. This video was inspiring, seems like some of the old tricks are still alive today.

    • @jesscodes
      @jesscodes  29 วันที่ผ่านมา +2

      Oooo yess, I know Better Terrain! Such an awesome plugin, it was really helpful to connect all the different types of wall tiles in my game. Thanks so much for making it - truly a lifesaver :D

    • @Portponky
      @Portponky 29 วันที่ผ่านมา

      @@jesscodes oh, glad to hear it helped!

  • @JNelson_
    @JNelson_ 26 วันที่ผ่านมา

    woah the tiles are clean, this kinda reminds me of the matching cubes algorithm but with tiles

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

    this video is marvel, and your channel is amazing, the uniform style of video ux and sound effects creates a feeling that i'm not watching a video but playing a game

  • @TheEmptyHoliness
    @TheEmptyHoliness 27 วันที่ผ่านมา +2

    Really great to see you jumped ship with unity and moved to open source! Looking forward to plant selling game 😁

  • @georgebailey7440
    @georgebailey7440 29 วันที่ผ่านมา

    Never heard of dual-grid autotile, this is pretty cool!

  • @Anitube
    @Anitube 21 วันที่ผ่านมา

    Thanks TH-cam for randomly recommending me this video

  • @terradev00
    @terradev00 25 วันที่ผ่านมา

    I love ur films. Thanks for uploading them on yt. You're really helpful and inspiring.