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.
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
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.
@viralshark but I don't like looking at that kind of stuff on UA-cam! And any suspicious activities I do are Done on another browser (Tor), under different accounts with separate email addresses using SimpleLogin...
Don't forget to clean your watch and search histories on UA-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.
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 😊
@@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.
@@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?
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!
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.
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.
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.
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!
"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!
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 UA-cam recommended this to me. Thanks again! Subscribed.
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 UA-cam to find a solution to a problem. Great job, keep up your good work and best wishes for your games! :)
Brevity is the soul of good writing, imo. Even artistic, flowery writing that some might consider "droning" can express many elements like theme, atmosphere, environment, characterization, etc. My personal go-to's are Cormac McCarthy for flowery writing that isn't needless (among many other praises). Frank Herbert truncates complex concepts and dialogues into a workable narrative and a subtle meta-narrative. The latter being quite odd because I've seen Herbert's writing described as bad, when it is a long-time journalist's (when journalism was a real mainstream profession) try at a fictional narrative. It'd be nice to see a push for short and effective communication in education and workplaces rather than bloat. "Show, don't tell" is oft uttered as a rule in essay writing, a hallmark of American Ed., when it's more applicable to visual media and brief environmental descriptions. Essay writing is meant to communicate a thesis, "Show, don't tell" obfuscates the point of an essay more than it enhances it. Formal office communications are incredibly bogged down in the optics of respectability and less focused on actual respectability, clarity, and any semblance of efficiency. There are so many bloat articles that are a mere repetition of what AP and other big media outlets have said that offer nothing new to the subject. UA-cam Essays/presentations are incredibly accessible. I'm delighted to see so many creators making well-written, concise, and digestible material. The entertainment factors do not crowd the subject matter unduly and subject diversity is such a wide range. God bless em
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!
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
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
It's interesting how simulation concepts in video games are so applicable to improving practical applications and modeling for unrelated professional fields.
A creator, especially a developer, lives and breathes by side projects. They're as important as regular sleep. They prevent burnout and let you try out new ideas and techniques without uprooting the primary project.
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.
That little snippet of your game looks way more appealing than most games in that style, and it looks like a genuine contender in the Stardew-like space.
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!!!!
Really simple and elegant solution, right when you mentioned the first system I had thought of doing something like offsetting, but I loved the explanation on exactly how to do it, especially implementing it with code and giving examples!
Thank you for sharing this alternative approach! I managed to add it to my game with some custom code and OMG it makes the farming etc feel SO SO much nicer!! (Plus the tilesets become super quick to make in comparison! - 15 tiles and one seamless pattern vs days spent matching across multiple join points and trying to finesse the textures) This has honestly made my game demo feel achievable before the end of the year now, thank you!!!
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.
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.
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!
I love watching or reading for things like this that show how people think to find such solutions in any field. Human ingenuity is an amazing thing. And this was an amazing video explaining such a topic. Great work, you got a new sub.
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.
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.
@@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.
@@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)
@@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.
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.
You are wonderful. THANK YOU!! After spending the last week figuring out tile shaders the hard way, I am so happy to see how you have employed them and that the shader code you shared is so similar to what I came up with. Your work is absolutely beautiful, and I look forward to seeing the cozy houseplant farmer game on Steam (or elsewhere) someday! Keep up the good work!
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!
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.
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
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.
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.
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!
That was great! I just recently started working with TileMapLayer for a totally unrelated technical experiment, so seeing the two grid system and what you're doing with it blew my mind 🤯
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.
I'm currently developing a game that uses Tiles for its environment, and videos like this are ones I look for before I get to the Programming phase. Good work!
Offsetting the grid was my immediate thought when you explained the downside of the first method. One downside that remains is that interactions between the tile layers become more difficult. For example you might want tiles with ice to be slippery, or an object to only be placeable on certain tiles, and with this system you'd have to apply those properties to each quadrant instead of to the whole tile.
Just started trying godot out and this will help A LOT with my tile setup. It also helps a lot that it programmatically does this rather than me needing to place everything perfectly all the time. Gonna see if i can get procedural gen to work with this system. Should be pretty easy.... i hope. Best of luck on your games! both are looking so good with their own character!
Besides how helpful it is to learn about the dual-grid system, I just have to say your trees look so good in your game! I have been trying to get down a similar look using a watercolor palette and this is super inspiring!
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!
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!
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.
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.
Your new game looks very promising 😮 I'm new to Godot myself. I've used it for less than a year. I don't like how the tile system works. I think your dual grid system is a wonderful trick! That tool you posted is awesome, too. I just bookmarked it. Thank you for creating this helpful video and the open source demos.
Another thank you for putting so much thought into this video that it comes off as just a clearly explained tutorial. You deserve more views for this level of work!
I independently came up with the same solution for our game. It works great. I called the two grids the "render tilemap" and the "gameplay tilemap". You can also reduce more combos by having layers.
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!
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.
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
New to the channel and I'm NOT a game dev, but I found this to be an insightful peek behind the curtain. Thank you for sharing! Also, Interscape and your new game idea look really, really neat. Can't want to play them one day :)
I wanna say the Tiled Corner-based tileset is *similar* to this. You draw in the corners you want active, and your tilemap builds around that. But it does mean that the visual centers are usually offset by half a tile. Still, really useful stuff!
5:58 is so real I don't ever do tiling stuff because of how obnoxious it is, so I really like what you shared in this! May have to give it a (ugly) try.
Former GameBoy Color and GameBoy Advance artist here. This is super interesting and I would have loved to try this out back in 2002-ish when I was in the midst of it.
This was super interesting! :D Thank you for sharing this. It really gives me a new perspective when thinking of making 2D games. I'm definitely subscribing, and I look forward to future devlogs on how your game is coming along! :) Cheers!
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!
This is a really neat technique to use for tilesets. I've seen this before when working with minecraft optifine resource packs, especially with connecting blocks and block overlays the 16 tile method is much more useful when splaying things over large areas that will usually made to be uniform mostly
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.
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)
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.
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 :)
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.
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.
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.
Constraints forces them to innovate.
2 grids take up way more than say 1 uh. i saw another showing pixel icons etc which explains this.
@@boinesTake up more of… what? This video is about workflow optimization and reducing the amount of work you have to do.
@@boines wtf are you sayihng
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
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.
And don't forget all the overly sexual recommendations like what I have been suffering through...
@@le9038 its because youve clicked on some of them 😂
@viralshark but I don't like looking at that kind of stuff on UA-cam! And any suspicious activities I do are Done on another browser (Tor), under different accounts with separate email addresses using SimpleLogin...
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
Don't forget to clean your watch and search histories on UA-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.
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 😊
Diamond shape!
Honestly I dont care.
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!
You...don't look that...old.🤔
@@RogerioSilva-v1q Looking younger than most mode 13h games.
nice work bro
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 😔
What do you mean? Why does it shake you?
@@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.
@@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?
@@sylvan4042 okay tank you got explaining. Wasn't quite understanding your first comment.
@@MarsterMikkeldiscipline, set goals?
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!
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.
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.
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.
Bonus points for open source engine example!
suggesting where to get more detailed information is something all tutorials should do, too many people acting like gospel
Couldn't agree more.
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!
yayaya nice promotion of your game. Keep making videos showing your impossibly impeccable everything, instead of game dev.
DevDuck is here !why I didn't notice it later .
"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!
I spent soo many hours creating 47 tiles for each terrain and finding ways to simplify it. This video just saved me a ton of time.
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 UA-cam recommended this to me. Thanks again! Subscribed.
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 UA-cam to find a solution to a problem. Great job, keep up your good work and best wishes for your games! :)
Brevity is the soul of good writing, imo. Even artistic, flowery writing that some might consider "droning" can express many elements like theme, atmosphere, environment, characterization, etc.
My personal go-to's are Cormac McCarthy for flowery writing that isn't needless (among many other praises). Frank Herbert truncates complex concepts and dialogues into a workable narrative and a subtle meta-narrative.
The latter being quite odd because I've seen Herbert's writing described as bad, when it is a long-time journalist's (when journalism was a real mainstream profession) try at a fictional narrative.
It'd be nice to see a push for short and effective communication in education and workplaces rather than bloat. "Show, don't tell" is oft uttered as a rule in essay writing, a hallmark of American Ed., when it's more applicable to visual media and brief environmental descriptions. Essay writing is meant to communicate a thesis, "Show, don't tell" obfuscates the point of an essay more than it enhances it. Formal office communications are incredibly bogged down in the optics of respectability and less focused on actual respectability, clarity, and any semblance of efficiency. There are so many bloat articles that are a mere repetition of what AP and other big media outlets have said that offer nothing new to the subject.
UA-cam Essays/presentations are incredibly accessible. I'm delighted to see so many creators making well-written, concise, and digestible material. The entertainment factors do not crowd the subject matter unduly and subject diversity is such a wide range. God bless em
I don't even develop games anymore, but love when people come up with slick and efficient solutions
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!
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
Perfectly timed video. Was about to draw 47 tiles for an assignment like some kind of chump.
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
This is a lifesaver. It’s near impossible to find a good video in tile sets so this is very appreciated
Game development is its own science, i learned so many cool tricks to make things so much easier
It's interesting how simulation concepts in video games are so applicable to improving practical applications and modeling for unrelated professional fields.
A creator, especially a developer, lives and breathes by side projects. They're as important as regular sleep. They prevent burnout and let you try out new ideas and techniques without uprooting the primary project.
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.
I honestly can't believe I've been drawing all those unneeded tiles all along. Super helpful video!
I feel like a caveman that was just given a fanta and experienced something they were not meant to.
What is Fanta?
It's a soda drink like mountain dew
@@Me_Cavemanorange soda
sprite but with flavor
Coke but for 1939 special Germany
That little snippet of your game looks way more appealing than most games in that style, and it looks like a genuine contender in the Stardew-like space.
high effort no cruft, amazing high level presentation really simplifies understanding tile concepts AND visualizes the drawbacks.
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!!!!
Really simple and elegant solution, right when you mentioned the first system I had thought of doing something like offsetting, but I loved the explanation on exactly how to do it, especially implementing it with code and giving examples!
I absolutely adore that farmer sprite at 2:03
The current small project is so cute, I hope you keep doing it 🥺
Thank you for sharing this alternative approach! I managed to add it to my game with some custom code and OMG it makes the farming etc feel SO SO much nicer!! (Plus the tilesets become super quick to make in comparison! - 15 tiles and one seamless pattern vs days spent matching across multiple join points and trying to finesse the textures)
This has honestly made my game demo feel achievable before the end of the year now, thank you!!!
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.
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.
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.
I thought this was going to be a D&D map drawing guide. I liked this more than what I was expecting.
This is genuinely fascinating. I had no idea so much thought and theory went into tilesets.
I am literally A SECOND into your video and I exclaimed "OH THAT'S A CUTE GAME!"
Your artstyle is ADORABLE!!
I'm not even a dev nor a programmer but this was an interesting and relaxing watch
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!
I love watching or reading for things like this that show how people think to find such solutions in any field. Human ingenuity is an amazing thing.
And this was an amazing video explaining such a topic.
Great work, you got a new sub.
Neat! The Dual-Grid system actually reminds me a lot of marching squares. Very interesting!
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.
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.
@@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.
@@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)
@@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.
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.
You are wonderful. THANK YOU!! After spending the last week figuring out tile shaders the hard way, I am so happy to see how you have employed them and that the shader code you shared is so similar to what I came up with. Your work is absolutely beautiful, and I look forward to seeing the cozy houseplant farmer game on Steam (or elsewhere) someday! Keep up the good work!
UA-cam recommended your video so I checked it out. I know nothing about game design so this was pretty interesting. Good luck on your new game!
Yay, I unknowingly found the best option.
Confidence: 100
The color pallets look nostalgic, I like it. The new game ideea looks cozy and soothing. Keep it up.I’ll buy 🙂
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!
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.
A game about growing houseplants is considered exciting. I think I've found a new favourite channel :)
Could listen to this voice whenever.
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
A man can do anything with some elbow grease! You are very manly indeed
@@DsiakMondala Wat, I'm not even a guy
Yes please!!!
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.
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.
Jess, once again you bring true inspiration on the table. thank you!
Oh my god, you don't know how long I've been looking for a video like this! Thank you so much.
Just subscribed!
This was a great explanation of an elegant solution to an age-old problem, great video!
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!
That was great! I just recently started working with TileMapLayer for a totally unrelated technical experiment, so seeing the two grid system and what you're doing with it blew my mind 🤯
Your vids are always super practical, informative AND calming. expert blend!
All of your games look absolutely stunning 🤩
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.
I'm currently developing a game that uses Tiles for its environment, and videos like this are ones I look for before I get to the Programming phase.
Good work!
Offsetting the grid was my immediate thought when you explained the downside of the first method. One downside that remains is that interactions between the tile layers become more difficult. For example you might want tiles with ice to be slippery, or an object to only be placeable on certain tiles, and with this system you'd have to apply those properties to each quadrant instead of to the whole tile.
Just started trying godot out and this will help A LOT with my tile setup. It also helps a lot that it programmatically does this rather than me needing to place everything perfectly all the time. Gonna see if i can get procedural gen to work with this system. Should be pretty easy.... i hope. Best of luck on your games! both are looking so good with their own character!
Besides how helpful it is to learn about the dual-grid system, I just have to say your trees look so good in your game! I have been trying to get down a similar look using a watercolor palette and this is super inspiring!
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!
The pixel art character from the new project got me hyped. Thanks for the insights on tilemaps as well!
it makes me happy when people use the correct word for fewer vs less
I love this logically and elegantly solves the problem.
That new game has such a charming artstyle. Kind of jealous.
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!
You have a lot of patience to be game devving, and teaching on UA-cam with all the editing. Good for you
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.
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.
Your new game looks very promising 😮 I'm new to Godot myself. I've used it for less than a year. I don't like how the tile system works. I think your dual grid system is a wonderful trick! That tool you posted is awesome, too. I just bookmarked it. Thank you for creating this helpful video and the open source demos.
Your pixel art is so beautiful, wow! Artwork like yours inspires me to keep getting better!
"I'm shifting to a new project, I think it has a smaller scope" - Ah yes, very relatable. Great video, very informative!
Another thank you for putting so much thought into this video that it comes off as just a clearly explained tutorial. You deserve more views for this level of work!
I independently came up with the same solution for our game. It works great. I called the two grids the "render tilemap" and the "gameplay tilemap". You can also reduce more combos by having layers.
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!
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!
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.
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
@@jesscodes oh, glad to hear it helped!
New to the channel and I'm NOT a game dev, but I found this to be an insightful peek behind the curtain. Thank you for sharing! Also, Interscape and your new game idea look really, really neat. Can't want to play them one day :)
So happy I stumbled upon this channel! This will make things A LOT easier 😅
I wanna say the Tiled Corner-based tileset is *similar* to this. You draw in the corners you want active, and your tilemap builds around that. But it does mean that the visual centers are usually offset by half a tile. Still, really useful stuff!
5:58 is so real
I don't ever do tiling stuff because of how obnoxious it is, so I really like what you shared in this! May have to give it a (ugly) try.
I would really love to see how you get such nice variations on your grass texture. Great video. :)
Absolutely hyped to see your games published someday, the art style is incredible, I can't express how pretty those trees are
Former GameBoy Color and GameBoy Advance artist here. This is super interesting and I would have loved to try this out back in 2002-ish when I was in the midst of it.
This was super interesting! :D Thank you for sharing this. It really gives me a new perspective when thinking of making 2D games. I'm definitely subscribing, and I look forward to future devlogs on how your game is coming along! :) Cheers!
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!
I was think about this today and your video just pops up. Thanks 😉
This is a really neat technique to use for tilesets.
I've seen this before when working with minecraft optifine resource packs, especially with connecting blocks and block overlays
the 16 tile method is much more useful when splaying things over large areas that will usually made to be uniform mostly
though I prefer the dual grid system more now since it's so handy
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.
Your games have a cozy wholesomeness that I just absolutely adore
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)
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.
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 :)
This is for real the most information dense video on tiles I've ever seen! Thanks for this!!
I like your art style and your game looks very smooth/fluid. Very inviting.
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.
Also this is just marching cubes in 2D.
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.