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.
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.
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 😊
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.
@@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 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!
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 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
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.
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 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'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
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.
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!!!!
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.
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!
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
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 :)
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.
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!!!
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.
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!
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!
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.
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!
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!
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).
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!
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.
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.
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!
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!
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.
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.
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.
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!
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.
0:45 Well that's lame, I thought this was a video about optimization, I thought you were saying "Draw fewer tiles" as in having the game engine render fewer tiles, I expected quad tree optimizations! However, I think I know what you're saying already, that's quite a creative idea!
@@neonmidnights So, what you're trying to say is that grouping insults with compliments does not counteract the insults? Brilliant! Here, I fixed it "Well that's lame, in a nice way, I thought this was a video about nice optimizations, and you were saying 'Draw fewer tiles' as in having the nice game engine render nicer tiles, I expected nice tree optimizations! However, I think I know what kind of level of niceness we're talking here, that's quite a nice idea! This nicer." I even included the exact phrase "This nicer." right at the end just like you said! How'd I do? On a more serious note, you're right! In retrospect that may have been a bit insulting... Sorry!
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!
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.
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.
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 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!
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)
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.
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.
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!
Thank you so much for this. In the coming months, this will save me from 500% more work than would’ve been needed or even having to solve the problem a different way while already in the thick of it lmao
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!
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!
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 :)
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
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 🤯
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!
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 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.
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.
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
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.
@@GikamesShadowso it is an heck. As it safes time
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 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.
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 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
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.
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 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 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
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
This is a lifesaver. It’s near impossible to find a good video in tile sets so this is very appreciated
I don't even develop games anymore, but love when people come up with slick and efficient solutions
Perfectly timed video. Was about to draw 47 tiles for an assignment like some kind of chump.
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.
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!!!!
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 honestly can't believe I've been drawing all those unneeded tiles all along. Super helpful video!
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.
A game about growing houseplants is considered exciting. I think I've found a new favourite channel :)
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!
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!!!
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 :)
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.
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!!!
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.
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!
Yay, I unknowingly found the best option.
Confidence: 100
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!
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.
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!
I am literally A SECOND into your video and I exclaimed "OH THAT'S A CUTE GAME!"
Your artstyle is ADORABLE!!
I absolutely adore that farmer sprite at 2:03
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!
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).
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 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!
I would really love to see how you get such nice variations on your grass texture. Great video. :)
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.
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.
Your pixel art is so beautiful, wow! Artwork like yours inspires me to keep getting better!
1:35 this looked REALLY dangerous for a moment
🤨
Hail
o/
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!
Incredible video, keep uploading these bangers plz 🙏🙏🙏
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!
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.
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.
0:10 I noticed the faces on the tiles
high effort no cruft, amazing high level presentation really simplifies understanding tile concepts AND visualizes the drawbacks.
Not a game dev, but loved this video
Absolutely hyped to see your games published someday, the art style is incredible, I can't express how pretty those trees are
So the main idea is: The 16-pcs set works best when terrain tiles are offset by half a tile
This was a great explanation of an elegant solution to an age-old problem, great video!
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.
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!
1:34 sis was so close to do something terrible 💀
The pixel art character from the new project got me hyped. Thanks for the insights on tilemaps as well!
WHO LET HER COOK 🗣️🔥🔥🔥
Me
not sure if this is supposed to be mean
Gordon Ramsay himself 💅🔥🔥🔥
@@pezvonpez its a compliment bro
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!
your the best
y'rour'e*
The color pallets look nostalgic, I like it. The new game ideea looks cozy and soothing. Keep it up.I’ll buy 🙂
4:03 I puked at that smile
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.
0:45 Well that's lame, I thought this was a video about optimization, I thought you were saying "Draw fewer tiles" as in having the game engine render fewer tiles, I expected quad tree optimizations! However, I think I know what you're saying already, that's quite a creative idea!
You probably could've phrased this nicer, right?
@@neonmidnights So, what you're trying to say is that grouping insults with compliments does not counteract the insults? Brilliant! Here, I fixed it "Well that's lame, in a nice way, I thought this was a video about nice optimizations, and you were saying 'Draw fewer tiles' as in having the nice game engine render nicer tiles, I expected nice tree optimizations! However, I think I know what kind of level of niceness we're talking here, that's quite a nice idea! This nicer." I even included the exact phrase "This nicer." right at the end just like you said! How'd I do? On a more serious note, you're right! In retrospect that may have been a bit insulting... Sorry!
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!
intro literally ends 2:29
It’s not unreasonable to establish the competing options before presenting the new idea. You need a longer attention span.
Tik Tok ah attention span
Hello? We needed all that context what are you talking abt
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.
This is genuinely fascinating. I had no idea so much thought and theory went into tilesets.
Your games have a cozy wholesomeness that I just absolutely adore
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.
You have a lot of patience to be game devving, and teaching on UA-cam with all the editing. Good for you
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 is for real the most information dense video on tiles I've ever seen! Thanks for this!!
Your vids are always super practical, informative AND calming. expert blend!
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!
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)
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.
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.
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!
I love this logically and elegantly solves the problem.
Thank you so much for this. In the coming months, this will save me from 500% more work than would’ve been needed or even having to solve the problem a different way while already in the thick of it lmao
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!
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!
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 :)
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
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 🤯
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!
Jess, once again you bring true inspiration on the table. thank you!
I thought this was going to be a D&D map drawing guide. I liked this more than what I was expecting.
All of your games look absolutely stunning 🤩
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 like your art style and your game looks very smooth/fluid. Very inviting.
Collecting house plants? What a perfect little game I didn't know I needed ;w; !!!
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.
These videos are great, thanks for making them, and also great to see a fellow game coder from Australia!