This approach masterfully balances modular flexibility with performance optimization through disciplined data structures. It is a practical blueprint for turning complex procedural generation into a scalable and efficient workflow.
Inmersión profunda
Prerrequisito
- No hay datos disponibles.
Próximos pasos
- No hay datos disponibles.
Inmersión profunda
Tilesets and Custom Levels on MOONSHIRE MONDAY!Añadido:
All right, looks like we're ready to go.
Welcome back everyone to yet another Moonshshire Monday. Very happy to be here and very happy to be uh working on some more Moonshshire stuff. So, I have up a tile set that we'll be taking a look at today. Um, this is one that's not in the Steam demo yet, but it's going to be one that is uh it's been in the video, so you'll probably recognize some of it, but I'm seeing a lot of folks in chat already. I'm seeing Bayon and explanation and Mariah Wolf Gellimations Groonis, thank you so much for being here. I really appreciate that. Well, Tigipa, I appreciate all the support. I know that gate. Yeah, I mean like I uh I think I showed it in lots of different videos.
Future 34 and Chem. Uh what I'm going to be showing today is some of the updates that I made to the level editor or the level, you know, organization system.
And visually it doesn't really look that much different, but I I kind of changed how these platforms are generated. And we're like in a big blank room, you know, you can jump up on these higher platforms. And the the big thing that I was working on is these connection points because you can see that sometimes or if you look through some of my streams, some of these like junctions, these corner tiles, all of the way that these tiles are generated is completely, excuse me, is completely through code. It reads one of these JSON files. Like the the map that we're in right now is this meadow.json JSON and all these blocks it spans like this spans one X column or one X row and four Y columns uh or vice versa. Sorry, I got the terminology confused but you you know what I mean is is this is defining all the different sections of land that goes into the actual map. And this is what it ends up looking like is um what I made is just like a big bunch of strips of land where they junction off into peninsulas. And uh it took a lot of work to get this working where because I have this other section over over there. I want to make sure I make the jump.
Yeah. Oh no, I fell. Okay, I'm going to try and make that jump. But I I have another section of land masses over here. No music. Oh, you're right. I forgot to turn that on. Uh there we go. Thank you for pointing that out. I'm for I'm sorry for forgetting to turn that on.
Uh this was another special one where it's just like one single tile of peninsula.
It was um it it took so much trial and error to get this working just because like like I was saying, it's able to convert this JSON file, which is just a bunch of XY spans for different elevations and stuff. like zspan 2 tells us how tall the section is and it's able to convert that all into the first it's the collider sizes so it's able to determine this b this these green boxes basically match the dimensions of what's defined in the JSON and then the hard part is converting these green boxes into the tile sets it has to actually build up the cliff side wall and then build up the surface grassy portion. And that's another thing. Excuse me, my throat's really scratchy today. That's another thing is that before I had the tile set kind of combined. I wonder if I can show that.
Give me a second while I pull up some of these old tiles because it's gonna be it's gonna be nice to see like how they looked before compared to how it looks now.
So, here is an example. Okay, here it is. Here it is. Is that the tile set looked like this for the elevation and stuff and functionally this worked okay. This was fine. But what became problematic is like scaling things out. And what I'll show you is what I changed it to. I changed it to where there is now a cliff tile set and there's now a grass tile set.
This grass tile set sits directly on top of the cliff's tile set. So it combines them. And the reason why I wanted to do this is because now I'm able to like mix and match different tile sets. I could have like a section of cliff tile sets that use the the same grass surface, but maybe it looks different. And actually, I have that over here. Uh here, look, I have these like craggy cliffs. And it's perfectly possible for me to have a different cliff tile set that uses the same section of grass and it's using this more craggy variant.
So, the goal with uh this one looks a little bit different, too.
So, I I think that these tiles were made by an artist named Beaowolf, different from our mod wolf. And I'm trying to remember. I think the original variant was a purchased asset, but then I made so many edits to it now at at this point. And it's like a it's a group effort where it was originally purchased and then I commissioned someone to make it more moonshy and then now I've been making my own adjustments to make it like mesh with the code system. You know, next video could be about showing the level editor. That is actually the plan. Yeah, I I want to make another dev log just like the previous one. And uh I want it to be about the I want Sorry, I'm sorry for stuttering so much. I want it to be about the level editor. I think that'd be really good.
But before I can really do that, I have to iron out all these issues because there's some, you know, craziness. How am I today? Thank you for asking. I'm doing pretty good. My throat's scratchy.
I keep uh stuttering and I keep kind of not landing my delivery quite right, but overall I'm doing pretty good. The predict is crazy. Oh, yeah.
Let's see. So, I wanted to show how you can like jump across these. Whoa, that is so tricky. But if you get the timing right, you can do you can do like a whoop. Oh no, you you can like jump across both of them. I'm going to try it again. I I was having a lot of fun with this map last night where I was just like trying to jump between the different platforms cuz this is like a parkour game now.
Oh, I can I can I I can definitely make it. If if I don't do a a flip jump on the second one, I can make it.
I can do it. I can do it. I can do it.
Yeah. Okay, that's awesome. Now I remember. Oh, shoot. Ah, it's so easy to fall off. It's like kind of slippery.
And also, my jump isn't high enough to get up on this second platform.
Ah, man. Okay. Well, now I'm going to move on to the next thing that I wanted to talk about, which is stacking. I think he's having more fun doing parkour. The game is a lot more fun now that you can parkour. That's for sure.
The next thing I worked on is this other map type where you have a stack.
We have elevation on elevation. Now, this is something that I haven't shown at all in any video or any stream because I just hadn't have it I didn't get it working yet.
Here we have an example of a big a big section of like land at the bottom. You jump up onto it and there's more elevation on top. And this does still work. You can jump up on here.
Functionally, it's working pretty good.
But there is a problem that I was struggling with for like a couple hours last night. I was trying to fix this is that you see how the Y sort looks really good. How I I can walk down to this edge and my player covers up these tiles. But when I flip around to the other side, these tiles cover me up because I'm underneath of it, right? And when I jump up on here, now I'm on top, too.
And same with this one up here, but when I walk up to this edge, ooh, the Y sword's broken for these tiles. That's not good. That's not good. I can jump up on here and it's fixed, but the moment I fall back down, like I like fall through. So, there's an issue with the rendering and it's going to add coyote time.
That's not a bad idea. I could do that.
I need to figure out what's causing this issue. And I I've been trying I I've I've already sunk a couple hours into trying to figure this out and I keep screwing it up because the whole system is so fragile. It's so fragile. When you make one change to the algorithm for this uh sorting, it can kind of break everything else. Will you remake all the old true levels? Yeah, everything's going to be remade.
Can't you just use elevation to store it? That's what I'm trying to do. But something something's getting screwed up in the uh in the old pipeline because this is still a really complex system, right? Cuz we have all of these tiles on the ground level that need to be y sorted along with the player needs to be y sorted along with these tiles need to be wise sorted. It it's it's uh just something about the position handling is not quite right.
Do you make each tile have different code? Not exactly because uh that the first iteration of this whole level system. I did do that, but that is a big performance cost when every single tile has its own logic running cuz cuz you could have you could have a map with thousands of tiles. So every loop you have thousands of like logic things going on. It's it's that would be too much.
and it was too much. If I had even a even a moderately sized map, it just started to chug. So, it doesn't assign like logic to every individual tile.
What it does is it figures out chunks.
It figures out chunks of tiles that have the exact same behavior. So, the algorithm likely selects all of these tiles that I'm standing on. all of these because the Y sort for these tiles down here is going to be the exact same. So, it groups all of these. This is like a 100 tiles that I'm standing on. It groups all 100 of these tiles together.
And it might even group all of these up here, which brings us up to like a thousand. I don't know how many tiles it is. Maybe not a thousand, but it groups all those together. So rather than separating it out into a whole bunch of different logical loops, it's able to group them and then um it's much more efficient that way.
Will the game be out? Yeah, I'm not quite sure yet. The the the better question is when will the next demo update be out? Because that's the main challenge. That's the main thing that I want to do is get this version of the game out so that people can like jump around and play with it. But I need to get all of these like fundamental things working first. The level editor kind of needs to be ready for people to try it out because I can't make levels that are good until things optimization. Exactly.
Until things are optimized. So I think you get the idea. Can you just use normal Y sorting but add the level lev levation value? That's what I'm trying to do. What I'm saying, Mr. banana is it's easier said than done. Is that I feel like I'm implementing it correctly, but when I run it, it's not working as expected. And that's just a consequence of coding is that sometimes you have to fight the code and sometimes you have to figure out some little detail that's screwing it up. Uh and that's what's happening here is that I think I have all the logic correct. I don't know what's causing this to this this particular strip to behave differently.
than this strip because that's what that's this is this is the weird part, right? Is that it works down here but it doesn't work up here. And it's these are very similar structures, right? They look like it's the same sort of stuff. So that's why it's challenging because it's able to work down here, but up here the the scenario somehow changes. there's some offset values like you're saying the the Z elevation value value sort of screws things up in terms of the like math involved with sorting and rendering everything. So, uh we're on the same page. I think that what you're saying is true. It's just implementing it is not the is not as easy as just like explaining it. Explaining logic is is a hard step in developing software. planning things out but then executing it can be hard in itself because the here but we can take a look at at the at the code for this. I have a specific full file called Y sort and it's a this is this is actually not that long of a file honestly 500 lines roughly but we have all of these different conditions acquire merged copy entry. So these are just these are like utility functions. Actually a lot of it happens in render as well.
Render has become crazy complicated.
This file uh actually this is I think that a lot of it has been offset to y sort. So render is pretty approachable as well.
But when we start to consider all like these are all the graphics files. All of these files here, each of these work together in order to render every single frame. So every single frame, if the game's running at 60 frames per second, 60 times per second, all of these files are working together to figure out, okay, how is this frame going to look?
How is this frame going to look? This frame, this frame, this frame. It's constantly like running all that logic together. And I'm pretty sure the issue that we're discussing is happening in Y sort or possibly in level to tile. There's a lot of tile classify clusters. It could be in cluster because uh the clustering logic could be setting it to the wrong elevation somewhere. It it's just it could be lots of different things. How do you optimize that? Yeah, the way that you optimize it is is kind of with the clustering logic. So clusters is it the whole idea behind the clustering is that I was saying how if every single tile was running a y sort independently we have like a thousand tiles here I don't know how many maybe like 500 tiles that we see on screen right now if all 500 of those tiles was running each of these individual graphics like things on them it would be very costly.
So cluster combines those tiles together into clusters and then it runs each of these graphical commands on each cluster. So it is still like expensive to run all this, but rather than running those graphical commands on 500 tiles, it's running it on more like a dozen clusters. And that's much more performance, especially when we get up to tens of thousands of tiles in one map. I don't know if I'd be able to pull that off, but managing a thousand clusters is more is is better than 10,000 tiles.
Also, hopefully you guys can't hear any of the noise outside. It is raining. And hopefully the thunder doesn't pick up too loud.
Has lots of scripts. Very complex. Yes, it is very complex. Uh, the way that I try to make it work is to organize it by module or by core functionality.
And that's what each of these folders here are. Under code, we have all of the different folders.
And like level and level two, these these are duplicates. I'm reworking the level system right now. This is what the previous one that I've been showing on stream and in my videos. And now I'm I'm kind of rewriting it a little bit more cleanly. But the way it works is that all this engine code the these files collaborate together pretty closely like the hitboxes use the collision which uses the physics which uses raycast uh which uses the update loop and so on. So all of these files interact closely. So keeping them combined into this engine folder concept you know I think that helps out a lot. And it's the same with effects. It's the same with the data cuz there's a lot of save data. A lot of things that get managed in memory or get saved to files.
These these Lua files here manage all that data and and they work together to pull that off pretty nicely.
The cluster play with collision or chest sprites. I think that it is for the collisions as well. Well, I I would imagine that it kind of probably does it for both because I'm It might be doing it for both. It might be doing it for both. So, if we go back to this map because this one's more complex. We can see more of these colliders and each cluster generates the um slabs. So, I I think that you're right that it is using it at the moment for both the slabs and the tiles. The reason I'm hesitant about that is that I I remember some very hypersp specific scenarios where the tiles do kind of break like like for example up here is it is possible that like these tiles up here are behaving in a different way than the cluster than the tile down here. It is possible that these are clustered off. Happy moonshair Monday. How do you ever manage optimization using Lua code? Do you ever worry about stuff like the garbage collector? That's an awesome question.
And and in general, the garbage collector has done a pretty good job in general for me, but I do have to worry about anything that I manage because let's pull up. I'm going to use the old level code because I I know that more recently. Level well, not more recently, but I worked with this for more time.
This level has a lot of data attached to it like self.m map full path properties and all of these properties for the level which is just like the stuff that you see in the environment. All this stuff gets saved into this into this level object. It's kind of small. I'm going to make it bigger. So this level object object has all of these properties for managing the data involved with the environment. And when you change between levels, for example, if I'm playing the game and I'm in this map and then I suddenly transition to this map, there's a lot of data management that I manually have to do myself to transition the map like this because you can see it got rid of all of the slabs. It got rid of I say slabs. It got rid of all of the colliders. It got rid of all the previous tiles and started us started us from scratch. Also, that song that just played, I might remove it cuz it's kind of obnoxious. This song, on the other hand, is the opposite of obnoxious.
Do your enemies act like voids? Voids.
Bodies. Like if one enemy close move forward, he move forward. Uh, so the only example of that I have is if I go into mob and then I create a slime that follows the player.
Yep. Oh, it's not going to work with level two. A dang it. The path finding is broken. I'm sorry. He's not going to jump up here because I'm in the middle of this uh reconstruction work.
But the the way they do it is they have like a radius of how close they need to get to their destination. And if they're not close enough, then they like figure out they do a ray cast to figure out what what direction to take. And normally they're able to jump up on ledges, but since I'm like reconstructing all this stuff, he's kind of confused.
Man, I'm sorry. My nose is itchy and my throat's kind of scratchy. I'm sorry about that. There can be probabilities that when switching maps, the player can spawn inside those colliders. Uh, I don't know what you mean by that. Did I do all the drawings?
I didn't do all of them. I did a lot of them, but um, like these tiles here were made by an artist named Beaolf. I made the slime, although I did kind of base it off of a paid asset pack. So, I buy a lot of asset packs. I commission a lot of artists to help with stuff. Tris Pixels worked on a lot of these and um, Ellie worked on a lot of these, too.
A inside the tiles. I still don't really know what you mean. Um, inside the map colliders.
When switching map, the player can spawn inside those colliders. Oh, you're saying that like Okay, I see what you're saying is that this collider up here, this this wall is here and like like that like like that and I can like go up into it and then and then change maps.
Like if I stand right here, you can see it like pushes me out.
Uh or if I stand here, it pushed me out.
Let's see if I can find a better example of that.
Right. Right here. Oh, like that really pushed me out. So, that's just that's a benefit honestly of the physics system.
So, this is box 2D at work. All of these green boxes you see are are based off of box 2D physics system. Uh what's up, Wilson? Thank you for stopping in. This physics system has a really nice benefit where if the colliders overlap when they shouldn't, it pushes them out. So that's how when I swip swap to this map, this big slab at the bottom actively pushes my collider out of it. And um so it works that way. What will I do for level transitions? I think I have an ex I can't I've crashed the game. Transitions are broken right now because I'm still working on the levels. But what I'm going to do for level transitions is you walk out of bounds and then it transitions you to the next map. that's in the sequence. And I can probably show that.
Uh there we go. It's thundering like crazy.
And we got the moonsh or not the moon, the uh deltarin music.
Oh, it's broken. It doesn't know what the map is.
Thought the player would be stuck inside the maps. I think that if you weren't using a physics engine that's fleshed out like Box 2D is, you would have that problem. Uh that is a benefit of using Box 2D. Box 2D is a heavy system of physics.
It is heavy. If you're using Box 2D in your game, that's kind of overkill for a lot of scenarios because um it it takes a lot of processing power to have all these colliders on screen. And if you don't need it, then you shouldn't use it. But one of the benefits of using a heavy system like this is that it can handle a lot of those complex um you know scenarios. I just had my first game jam with three other people and they weren't that good except one other guy.
How should I start making game without dependencies on other people? That's I mean you kind of answered your own question is that the most reliable way to make your own games is to be capable of doing it all yourself. I I'm capable of doing it all myself but would I notice something that I could use help with? For example, with more of the complex sprites, I can do some of the simple sprites like the player, but some of the more complex sprites, like some of these, some of these tile sets are uh made by commissioned artists or paid it.io artists, it's good to collaborate in those cases.
So, that that's generally what I recommend is just doing what I do where you make your own games, you're in charge, you're the leader, everything falls back to you, and you do everything. And when you find something that you literally cannot do, that's when you work with someone to fill in the gaps. But like that that's generally a challenge of working on a team is that people are going to have different levels of experience and they're going to be like they're going to be invested at different levels, too. Uh some people are going to care a lot and some people are not going to care. It's like it's like school, you know, when when you're in like high school and you work in group projects, there are just some kids that do not care about their grades. And so, they're not going to they're not going to care. They're they're not going to try. They they don't they don't they don't worry about it whatsoever. And so, it sucks to be paired up with them because now you have to work and they don't have to. Yeah. I mostly develop my own games alone. Yeah. I I I think that that's the most reliable way to do it.
But um we kind of talked about this last week a little bit too where you're talking about being partners or being in a partnership or like a small team that that is a if it works then it's going to work out great but when it doesn't work it becomes really challenging. Me and the other guy are still in high school so uh are the other ones I I understand that as fellow game dev some of the code in this is honestly genius. Thank you. I I think that it took it just took a lot of time and iteration to get to this point because even though I keep like restarting the different code files and cleaning it up, each iteration gets better. I'm not wasting my time by like ditching the old code, I feel like I'm building it up over time and improving with each which each with each attempt.
Sorry, I'm stuttering so much today. I apologize for that.
So, let's see. What else should I mention? Oh, I didn't make it. I really want to get good at doing that.
I I'm really excited for this game to like have speedrun levels or parkour levels. Like, e even uh Minecraft has parkour events or speedrunning challenges and I think those are really fun. Even though Minecraft was not really built for that, the engine is just it's just good. It feels good to run around in it.
What I think about AI and game development, I think it's fine as long as uh in general, the way I see it is the players care about quality. They want to play good games. And AI gives you the opportunity to be lazy. Do not be lazy. Do not produce lazy games. Do not get lazy with your production. and rely on AI. But if you can use AI to improve your product, to make things better, to make your code better, to make it more reliable, to bug fix and to have things, you know, just more smooth in development. I'm I'm supportive of that. I think that's great. Um, and then, you know, I I don't use it for any art. I don't use it for any like music or anything like that. If someone did, I think that would be fine as long as it looks good. But I understand why that's controversial. That that's that's we're in a awkward transitional phase. I I I don't know how to feel about, you know, it it feels awkward when a creative concept like art or music is being infringed on by AI that that that feels bad. But at the same time, can can we just say like are we just going to say nope, we're not going to use AI at all anymore? Like I I think we're already past that point. I think that the industry already is using it. We have that um thing where Larry was using it for their concept art, for concept art.
Even if they're using it for concept art, imagine how they're if they're using it for like textures or like very mundane models or for testing the code or for deploying things or for dude there's it's probably so deeply integrated into their systems if they're using it for concept art. Uh so I I I think that we're past the point of like Dude, I don't know. I But we we can definitely agree that there's some concerns to be had with it.
from now when I was playing. Yeah, I love this. I love this the music from this chapter. I think it's awesome. Uh this is great to see. I I got an idea.
Sorry. Uh of your stuff and helping me out with concept as 2D top down as well.
Thank you for what you do. Awesome. I'm happy to hear that. Uh I was super excited about gamedev. I thought I was better than all the kids my age. I decided to quit sadly. Don't quit. You don't need to quit. The the the the only way that you won't become a good game developer is if you quit cuz I I'll go ahead and pull it I I I know I talk about it a lot, but I had a game development YouTube channel from when I was a kid, when I was 12 years old. If you go to YouTube and you search for game maker crab, give me one second while I pull it up.
Uh I I don't like having my recommended stuff and subscriptions come up, but there's this YouTube channel, Game Maker Crab, on YouTube, and this this is me.
This is from when I was a a a young kid.
Uh you can see like 16 years ago, it says.
So I was 12 years old when when I made this first video. And the stuff that I was making in these videos was really bad.
This is what it looked like is that I just ripped a bunch of Zelda sprites and I I put them in Game Maker and made them walk around.
Good luck.
Oh, heck yeah. Rebirththing by Skillet.
The Last Night by Skillet. That's so cool, dude. That was when I was in my Christian Rock phase. That's sick.
Skillet. Oh, yeah, dude.
Uh, if there's something you can't get right, please comment and I'll help.
Yeah, it I don't I don't think the skillet music is in there anymore because this this was back in the day uh 2009 when you could just put music into your YouTube videos and it was awesome.
It was amazing. You could just like play Skillet in your in your uh Game Maker tutorials and everyone loved it. But no, advertisements had to come along and ruin all that. Well, no. It's more that it's more that people have ownership of their of their creative property. I think that's probably a good thing. It's I think it's a good thing in general that you can't just take someone else's music and play it.
Um I I'm just It says 13 hours ago for the current stream. Like this is the stream that's going on right now.
Anyway, I was just checking out your demo IK. you know about the glitch near the initial walk if you come in front of a cliff and your feet show through a cliff. I I the the that initial demo has a lot of issues and the code base that like we're looking at right now all of this code that I'm going to be working on for the next version. It's entirely different. It it's basically a completely different rewrite of everything. And I think that some of the bugs that are in the demo currently probably are not really relevant anymore. But also I like you come in front of a cliff and your feet show through the cliff. That that sounds pretty minor if I'm being honest. I I'd say the most urgent bug in the demo is when you pick up the fan, it cra like you you get soft locked. It doesn't crash the game, it soft locks. I think that the soft locked fan is is the the worst bug in the game.
Okay. But anyway, uh what the reason why I showed my old uh YouTube channel is because that was 16 years ago. And the games that I was making back when I was back when I was 12, 16 years ago, they they were not good. They were ugly and they were bad. And I didn't have there was no AI at the time. I was just I was just dragging dropping the things into Game Maker. And you can just do that, too. Just do that. just pretend like AI doesn't exist and and use Game Maker or use whatever you want. It it literally doesn't matter. Use any game engine.
They're all they're all good at making games.
Uh Game Maker at 12 is so impressive, bro. Thank you. Yeah, I think so, too.
The the the story behind that is I was a fan of uh Nintendo Power magazine and there was an ad for a book for Game Maker and I got my dad to buy it. I was in fourth grade. It was either fourth or fifth grade. I know that for sure.
Adele, hi, welcome in. Is Game Maker paid to publish games? Uh, to publish games, probably. I Well, let's pull it up. Let's pull it up. Uh, I I don't normally like making specific recommendations for game engines because they're all good.
They're all good. And start making games. Let's see.
Where did we show Uh, maybe it shows here.
Where does it have the price?
Game maker price.
Yes. Export license pricing. There we go. Have I ever made the I played the Carlson demo? No, I've never heard of that.
So, you can export to desktop for free.
Dude, that's awesome.
You can export to mobile for free.
Oh, wait, wait. Why does it say in Why do they both say include the same thing?
What's the best way to animate the character, assuming you have a sprite sheet? Uh, I mean, it's just that it's just animating the character. So, I use a sprite for animating everything. And, uh, a sprite's helpful because it has the frame system.
The problem would be the non-commercial license. Yeah, it sounds like when you use the free version of Game Maker, you're not supposed to sell it for money. And here is my recommendation.
Do not sell your games for money when it's your first, second, third, fourth, or fifth game. I've probably made 20 games in my lifetime. And the number of games that I've sold for money where I would need a commercial license to do so is exactly zero.
It is 100% zero. And I've been doing this my whole life. I I I'm still not at the point where I'm charging money for it. So, if you have an interest in game development, do not get hung up on this aspect of it. If you because here's the thing. If you end up wanting to sell a game for money, spending $99 to do so is the least of your concerns. This is nothing. You have so many more costs involved with selling a game for money as a business than 99 software cost. This is the smallest amount of cost you can anticipate when you're selling something as a business and paying taxes. Oh my gosh. This is the smallest amount that you can possibly imagine. So, I wouldn't worry about that aspect of it. I would just use the free version of whatever game engine you want to use. they are going to be fine until you get to the point where you become a business. And if you become a business and like you actually form an LLC and you have like a website and everything's registered and all the payment and paperwork is taken care of, you have uh the licenses for all your other software and all your other like cuz cuz this is just like this professional license. This is just for Game Maker. Imagine all the other professional licenses you have to get as a as a company. Um there's more than just this. So, and just because I don't even have the money to pay that. If you do finish your game, even if it's somehow your first, then you can then buy the license. As far as I know, yeah, as far as I know, yeah, you can just wait until you finish it. It's the same with Unity. Um, don't take my word for that. That's just that's the impression that I get because uh it says free to use. It is free to use Game Maker. You can use Game Maker as much as you want, it seems. It just says non-commercial license. You you have to read up on the details on what that actually means. Um here we can actually let's let's do it. Uh this is the free runtime license.
This license has no cost. Uh last for the durations of your account. You can export to all of these platforms. That's that's so awesome.
Uh and you can do commercial license for dot or GX games which is like the um that's probably runs through yo yo-yo games or something like that.
Don't see Toby Fox or Concerned G concerned ape and get fully inspired.
Your first game will mostly fail. Yeah, exactly. It's like if you actually want to succeed at game development, you should expect your first game to not be successful. It's the same if you were practicing music. Like if you picked up a new instrument and you played a song, like the first song that you play is not going to be good. Or if you were a songwriter, the first song that you write as a songwriter is probably not going to be very good. I hate to tell you. So, don't be so hung up on the idea that you wrote a song and then like it didn't become a huge hit. First of all, how many songs do you have to write before you can get a hit on the radio?
Takes a long time. Um, it's the same with this stuff. Someone starting fresh, do you recommend streaming, making videos to document the process and growth? In my opinion, because that that is a good question because it's it's finding that balance. Uh, doing YouTube videos has helped me a lot because it's it's helped me gain an audience.
That's that's a big aspect of it. But I will also say that spending time making videos means that you're spending time not working on games. And in general, if you want to be a good game developer, you have to spend as much time as possible working on your games. If you stop making games to work on a video, because a video takes a long time to make. If you want to make a good video, takes a long time. Especially if you're new to game making, or if you're new to game making, it takes a long time to make games. And if you're new to video editing, it takes a long time to make a video. So that they're both two separate skills. And if your goal is to like build a channel like mine where it requires both, then then yeah, you do have to do both. But if you do both, it means that both are going to be slowpaced growth. That's another reason why I I bring up my old YouTube channel from 16 years ago. Uh the videos that I made back then were horrible. They were made by a 12-year-old who didn't know anything about video editing. And even if you're an adult who never did video editing, you you'll do better than a 12-year-old could do, but it still takes a lot of videos before you kind of get into the the rhythm, the feel of producing a video from start to finish.
It's not easy. It's not easy at all. Uh so, if you want to develop videos, you have to accept that it's going to slow down your game making process because all that time that you spend working on videos is just time not spent working on the game and improving your game making skills. So, I I think they're both really valuable skills. I I I love being a jack of all trades. Uh I think it's it's really valuable for me being able to put together my own videos and produce everything from start to finish myself. I love that. But like I said, I haven't sold any games for money. I haven't like I was just talking about how I I I've never needed anything beyond this free license because I've never charged money for anything.
So you you that that should demonstrate for you how slow paced this is is that 16 years and I still haven't charged money for it. Well, maybe you don't want to follow my advice and maybe you want to take a faster path and maybe it'll work out. I don't know. But I do know that I have absolutely no regrets myself. the way that I played out my own skill set and and built up my skills over time, uh it's it's exactly what I would recommend to everyone is that I I like if you were 20 years old right now and you had no experience, I would tell you plan to release a commercial game by your 30th birthday, that's what I think your goal should be. You should spend the first couple years of your 20s making small, simple games. you should make the next few years uh making games that are more complex, maybe dabble in 3D. Still not charging money for these, but you're building an audience. Maybe if you want to produce videos on top of that too during those 10 years. But then once you reach like age 28, now we can start thinking, okay, I I I've got eight years of experience under my belt. I've been making videos this whole time. I have I have a lot of experience now. I I feel like I I got a feel for what it takes to make a full-fledged commercial game. And it's still going to be modest. It's still going to be small scale and achievable, but that's what I think would actually be reasonable for someone to achieve gamedev success.
So that that's that but that that's that's a hard pill to swallow. It's hard to accept for someone to accept that their dream game will take 10 years to make as opposed to one year.
Um what would you say about making a custom game engine for fun or to make games with? It just depends on what your goals are cuz like uh I love that I made a custom, you know, engine, custom engine is debatable. It's love 2D framework, but all the engine functionality feels very custom at this point. And again, I personally have no regrets with doing that, but I wouldn't say it's an efficient route to getting a game completed because I I have a feeling that everyone in the audience has different goals.
in terms of what they want to accomplish with games.
And some people do just want to dabble.
They just want to experiment with engines and create their own things and share it with their friends or make videos about it all for the sake of like experimenting and exploring tech. And I think that's awesome. I think people should do that. But if you do that, you have to accept that getting a full finished game published and sold is not really that it doesn't align with that goal.
Uh so just make sure that you have your priorities straight. I think it's awesome to experiment with engines and understand on an engine level how things are working because I love that stuff.
It it gives it it enables you to figure out deep problems or make fundamental tweaks to the like physics for example my the way my physics works in my game is very customized like box 2D doesn't have a Z-axis but in my game it does and that's only possible with a firm understanding and firm integration with like the physics engine.
So really, I think a lot of people out there, there's the goal of I want to make a game. I don't care what the game is. I just want to make it. And if that's your goal, make sure your game is small scale like Pong and make that.
Some people out there are like, I want to make my dream game. And I think that's still fine to have that goal, but you have to be realistic with it. A dream game will not come in the first couple years of you making games. It I it won't even come in the first 10 years of making games, if you ask me. I'm 16 years in and I'm still I'm still working on that part. Pong mentioned, yep, Pong mentioned, always mentioned, is to do game de game dev full-time. Income is blended from YouTube, streaming, Patreon, and Patreon, and game sales. I don't expect this to happen for a few years minimum because I have a day job.
Um, personally, like that, that's that's an awesome goal. And the fact that you have a day job is fantastic. My recommendation is to keep the day job and build up that business side of things, the income stream while you have the day job and only quit when it is consistently paying your bills. And if you do that, you totally can do that.
Um, YouTube as an income stream can totally work as long as you treat it like a business. Like personally, I don't treat my YouTube channel like a business very much. My channel isn't monetized very much and um it doesn't make very much money. Like I I couldn't pay my rent with YouTube income, for example. Uh I think right now I I showed it on stream last week, actually. I make $300 per month from YouTube. It's less than that, actually. And my rent for my one-bedroom apartment is $1,200.
So my YouTube channel, which I would say is a pretty successful YouTube channel, makes $300 and it doesn't even cover half of my rent. JJK, welcome in. Stress are always two hours long. Yep. They go until um noon CT normally.
So, what I'm getting at is if I wanted to make YouTube more realistic as for paying the bills, I would have to put effort into it to do so. It's it's more than just posting videos because like um my most recent devlog video, it it's doing really really well, but it it didn't make enough money to offset the cost of producing that video. It took a lot of time. 150k subs. Yes, I'm so proud.
Thank you. YouTube is going to sell your game, though. Yes, you're right. That you're right.
That that's kind of that's kind of the intention behind it is is that I'm I'm making all of my content free. The demo is free, my videos are free, my tutorials are free. I guess the Udemy the Udemy courses are are paid, but it's like um it's like a loss leader. It's like a business that has something in their store for really cheap or that's free and it gets people into the door.
They get this free thing or like coupons. People have a bunch of coupons that get free stuff and then they go to the store with all these free coupons, but then they end up buying a bunch of other stuff while they're there. And I and I would say that's it's Costco hot dogs. Exactly. It's exactly what it is is that like all of my content and my my game right now is free and and and um streams are free. I I I'm not really and and I don't have uh sponsors. That's the other thing is a lot of YouTube channels have sponsors and that's how they become actually monetizable is that if I posted one video a month and I had a really strong sponsor in it, that could be enough to pay the bills. But that takes effort and and and that also takes um there's a cost to doing a sponsor. You know, inserting a sponsor into my video is is like there's a cost to doing that.
A YouTube channel can definitely be a way to pay the bills. It's my full-time job, but it definitely takes a lot of time. Probably as much as a day job every day, I would imagine. So, I would imagine so. JJK. Yeah, it's cool to hear from you cuz yeah, you're the one that's actually doing it. So, my YouTube channel is not really paying my bills.
I'm paying my bills through other income streams. YouTube is more of just like a communication factor. It's a way to get my work out there. And if I were to treat like a business, I could, but it would change what my videos were like.
It would change the sponsors. It would change the ads. It it a lot of things would have to change. And I would have to put a lot more time into that aspect of the business of YouTube. And and that's not something that I really want to invest time into. I kind of want to invest my time into game development.
And someone earlier was talking about how their goal was to be a game developer full-time as and like as your full-time income. And that's where I'm like, I personally don't want that. Like that that's not a goal that I personally have. I I don't really want game development to become a business. That the business of art doesn't feel it it doesn't feel like a fun part of it to me. I just want to make games that are fun and good. I want to make the best game possible and I like making videos about it. I like sharing my stuff, but if I had to make money on top of that too from all these things, that would make that would that would be kind of a bummer. That would kind of sour the experience, I think. And also, uh it would add a lot of stress to the whole thing. Like like now I if I had bills to pay that I I wouldn't if I had to use YouTube income to pay the bills. Well, now I can't spend the month working on the game. Now I have to spend the month working on a really good video and I it has to perform well. Otherwise, like the income's not going to be there and and now I have this extra stressor in my life. And and it's like if that's what you want to do, that's fine. But again, you have to you have to acknowledge that if your full-time job is YouTube, that means you're not going to be working on gamedev as much. If your full-time job is is selling games, selling games is your job. Making games is less of your job. That that's that's what I'm getting at is if you want selling games to be your job as an indie game developer.
That's a that's a big that's a big task compared to making games. Like anyone can make games. You should just make games. That's that's that's my recommendation for most people.
While you're doing it would definitely help your game. Uh business doing YouTube is for the marketing is great.
Yeah, I think so too. Uh, turning your hobby into your job is always complicated. Making Minecraft videos used to be my hobby, now it's my job.
But it doesn't feel the same. I'm not sure how to explain it. I know what you mean. Uh, it's the same with musicians is that I I I grew up around musicians.
I was in band and and I performed with lots of people. I know a lot of musicians and I know a lot of musicians that went all the way. They got the degree in music or they they they are full-time musicians now and they do still like music, but they treat it differently than before. Before it was strictly I'm playing music for fun. I'm playing the songs that I want to play.
I'm recording music that I like. I'm recording my own stuff. I'm performing in the things that I want to perform in.
But when you're a professional, it's not really like that anymore. Now you take gigs. Now you play music that other people want to hear. Now you make music that pays the bills. There there's a business incentive with your performances. and and and personally I wouldn't I wouldn't enjoy that aspect of it. I I I feel like it would sour the whole music experience for me. Uh so and like uh I I do gigs sometimes still like I used to for a long time play in the orchestras for community theater shows, community theater shows. And it those paid money, but I never really I never really cared about the paycheck.
But there were some people in the in the orchestra with me that really really did care about the paycheck. They desperately needed that money in order to pay their bills. And and I get that that that would be that'd be stressful.
What what I'm getting at is uh when we're talking about a career, when we're talking about full-time day-to-day, is it worth like saying I'm a full-time game developer if it means that you're actually spending a lot of your time not developing games or you're compromising on other aspects of your life? Um, the important thing is just to enjoy the journey in general. Yeah. But yeah, I I I I don't know that that's that's why I'm I'm always a little hesitant when I hear full-time gamedev is that that can mean a lot of different things. Like if you're working as a game developer at a company, that that's pretty solid. You're getting a paycheck that's regular. Um, but if you're a full-time indie dev, that that's that to me is just saying I'm a full-time software salesperson. I'm I'm a business person who sells software and um getting the product created is part of it, but getting it sold for money so that you can pay your bills is the bigger part of it. And that's the part that I personally don't like very much. Um asking people for money, I'm very uncomfortable with that. I think it's more fun to let people use my product.
Like like Challat for example, the the chat software above my head, I had the option to charge money for it. You know, there are apps on Steam. I'm going to go ahead and pull it up on Steam. Uh, someone asked what instrument I played.
I played bass. That was my main instrument, but I also play now I just play guitar. Guitar is my main thing now. I played uh saxophone in high school as well. What was I going to look up? I was going to look up um Sheep Chat. Yeah, Sheep Chat.
Sheep Chat is this is an app that I used for my chat overlay for a long time and they charge $10 for the app. Perfectly reasonable. They have every right to.
But personally, I I think it's it's better just to have the app available for free.
And like people aren't using it yet. I have I have not been uh sharing the app.
I haven't been telling people about it.
Um but the app is called Challat if anyone's interested. It's free. It's free and open source and over time it's going to be improved more and more. But I I I really think that for YouTube streaming it's it's like the best option possible.
And I I've I've I've told people about how I release this for free, how I put all this time making a free app and they're like, "Well, how are you going to pay your bill? How are you how are you monetizing it?" And I'm just thinking, I don't I don't really want to monetize it. If I ever decide to distribute, I'll use it. Awesome. Cool.
Thank you.
when when you when you feel the need to monetize your art and I and calling calling this art is totally a stretch but let's say that you were a musician or an artist or a developer game developer has the jam built in. Yeah. Uh the jam feature is something that I made myself for chall that's why when you say jam it doesn't do anything in the YouTube chat chat. It's not something that YouTube supports. It's not that's not a feature that they have at all. Uh it's just something that Challat has.
This is just a labor of love. It literally is. Well, it more than a labor of love. This is a labor of something that I needed. It's that I needed a chat overlay that was good. Um, and there wasn't one. I showed cheap chat. I showed sheep chat a second ago and sheep chat is fine. It gets the job done, but I did run into technical issues with it regularly. And also the latency was not very good because it used like the cloud commands to to render the or sorry I I think it used cloud APIs in order to receive the the chat messages. So it wasn't as responsive as as my chat thing is.
So I I made the app for myself mainly and since I made it for myself I didn't really feel any need to charge money for it. I just made it a passion fees where money can't. I think you're right. That's a good way of phrasing that. Just like the last moonshshire Monday when you said you would like to make your own physics logic open source because windfield is not being supported. Yeah, exactly. Is what and that's that's another thing is I I use open-source software a lot. I'm a big big fan of using it and over time I've become a big fan of contributing to it, of uh posting lots of repos on GitHub. I'll go ahead and pull that up.
I know that y'all are probably sick of me pulling up my GitHub page, but I'm just so proud of I'm just so proud of GitHub. I love I love GitHub.
But GitHub, you have all your public repos and you can see all of your contributions. This past uh couple weeks, I haven't been doing too much on GitHub. I've been mostly doing art related stuff. Beginner on G develop can please give me some tips. My my my biggest tip is to start with some very very simple tutorials to get a feel for what the engine is like, but then after that jump into your own simple game, something really really easy like Pong and code it all by yourself without tutorials. It's going to be hard. It's going to be really challenging. You're going to have to look some stuff up, but overcoming that challenge is how you learn. I don't think it has to be like that. I used to make websites as a hobby. Now I make websites as a hobby and for a company whose projects do not inspire me. It doesn't have to ruin the experience. You're right. There there there's always a spectrum with this stuff. There's there's always going to be a solid middle ground that you can land at that's going to be the best case. Um, like like for me, for I think that I think that I'm a really good example of that. How my passion is in game development and like I showed my YouTube channel. I was making games since I was 12 years old. And it would have been very easy for me to just say, I want to be a game developer. I'm going to get a I'm going to get a degree in game development and that's it. That's my passion. I'm just going to do that.
But I didn't. Instead, I got a degree in computer science and I became a programmer. Um, even though I cared more about games, I I did see that software in general, that programming just like as a as a discipline was used everywhere, not just game companies. And that having a job, you're doing a job. And coding on the job is a step towards game development.
It's close. And in fact, it's perfectly reasonable for a computer science person to go get a job at a game development company. In fact, I bet a lot of them do. I don't think that you need a game development degree to work at a game development company. I bet most of them don't. I think that a lot of people have specialized disciplines, and that specialized discipline is what gets them in the door. I I I I'm really uh a little hesitant to normally hear about game development degrees just because it it's it's so specific. It's so specific.
It it just it just cuts out so many companies. You could be a programmer.
You could be a a graphic designer. You could be uh a business person that works at a game company.
And then if the game company thing doesn't work out, you can work at some other company. Uh because I don't know if you've heard the games industry, like all the companies that hire game developers, they're not doing super hot. It you hear about layoffs pretty regularly. And if I was a young person deciding on a career, I would take a look at all those layoffs and the number of open positions and the how competitive it is and I would think to myself, I wonder if there's something tangential, not exactly game development, but something that can still scratch that creative itch while still providing me a solid, comfortable, consistent, good career. Um because I I I also always say this too is that even though like it doesn't cost money to work on your game, when you're an adult and you have bills to pay and you have bills to pay, it does cost money because let's say that you are an adult and you have your own apartment like mine. I have a one-bedroom apartment and it costs $1,200 per month.
It's ridiculous. So you have to make $1,200 at least every single month just just to get by.
And if your job, like if there's a layoff or your job is undermploying you, like you're only getting 20 hours for example, or uh some something falls through and the the career side of things is a little bit shaky and your income isn't covering all of your expenses fully.
Now, you have to think to yourself, okay, I have $1,200 in rent that I need to get by the end of the month, and I can't rely on the job side of things. My career is not not cutting it. So, what do I do? You have to think to yourself, am I going to spend and let's say you have a free Saturday. Do you spend that free Saturday working on the game, your game, or do you spend that free Saturday working a parttime working a part-time job somewhere and actually getting a paycheck? Uh, you could go work somewhere for money and then you can pay your bills. That's that that's the scary reality that I want to get people aware of is that when you're out on your own and you and you don't have someone paying your bills for you, then it's really stressful when money is tight. It is so stressful that you won't really be able to focus on anything else. And that that's why like the the the business side of things scares me. I I I I don't really like that aspect. I wouldn't want to rely on my creative side to pay all the bills. So much Pokemon. I know I'm a big fan of the Pokemon soundtracks.
Honestly, I think that the Pokemon songs is the most used section or like the most used genre of games. There's there's so many of them. And actually, I I just added a couple more uh cuz I added some Popia songs. Hey, what's up?
Uh welcome in purely Ian.
Welcome in. Just working on some Well, I was working on a lot of different things, but I got sidetracked talking about lots of different things. CS degree is more general, but way more applicable to other domains. My experiences in webdev made me understand game logic for easier. I could focus on the concept rather than syntax language.
Yeah, in in g sorry I'm starting I'm stuttering a lot. Uh in general I'm totally with you is that like I also worked as a web developer with my my c my CS degree and I'm totally with you that programming in general gives you skills that carry over to other programming disciplines. So even though I wasn't coding games, I did code lots of stuff that could be applied to games.
And that experience is super valuable.
I'm sorry, I got I'm getting sidetracked playing with the do website coding.
Yeah, I um when I was at Microsoft, I was a web developer. Uh what are the green lines? The green lines are the I'm sorry for not even explaining that. The green lines are the physics colliders.
So, you'll see that when you walk into the wall, it stops you. But at the same time, when I go up, I can walk through I can walk through these walls. When I jump Well, you have to jump high enough. There we go. And that's how that works. And actually there there's I don't know if I ever showed the fields. So the way that these slabs work, I call them slabs that you walk on.
There's fields, too. This this is how it actually works, is there's the pink box and the green box. The green box is the solid wall that will stop you if you walk into it. And the pink box is the walkable surface that you can land on and walk around on. And you'll see that that the moment I walk out of the pink zone is when I get pushed out.
So that that's how these slabs work. And even these ones up here, there's like an offset system.
And that's why there's like a gap here.
Like I can walk behind these slabs, but as soon as I walk into it, stops me.
Planning on mobile version for Moonshshire. I I plan to try. That that's what I keep saying is I plan to try because publishing on mobile is exceptionally difficult way harder than desktop. How do things render with love?
Do you just use build and function to render things or do you have to make your own renderers and do you have a separate renderer for all those debug lines? The answer is separate renderer. So I have my own render.la that collects all the different things and uses this ysort algorithm. So this is all where it's it's like collecting all of the different sprites that get rendered, all the different tiles and then in this file it takes all those assets and it figures out how things get sorted.
So it is highly customized how it gets rendered and then the debug happens uh on top of that as well.
Uh actually I think that the way this works is debug show colliders is a flag that's accessed by the other modules like slab.
And then choke. No.
Uh no.
I guess I can just look up where this is happening.
Huh?
Why is it only happening this file?
Oh, no. That's That's still confusing to me.
Am I not searching?
Why would that happen?
I'm trying to figure out why I can't find any examples of debug. Colliders.
Certainly that's what it's using.
Well, let's just go to the slab and draw draw colliders.
Let's see where this is being called.
Oh, it happens in debug.
Ew, I don't like this.
Uh, or maybe I do. Maybe I do like this, actually. Do I like this or do I not like this? What I actually I I forgot that I moved all this stuff into debug that Lua. This is probably better to have it here. What I thought is I thought that the draw colliders logic. I thought that it happened within the slab. That's why I was searching this file for that. But it actually happens here. It just says if show colliders then okay it it calls it from here. That makes sense.
That makes sense.
Yeah. So, you could draw colliders without worrying about the debug flag.
So, that that does make sense. You make moonshine Monday about composing music for the game. I could do I could do one for that. I I think I showed music a couple times on stream.
Uh, it belongs in debug easier to exclude for production. Yeah, I I think that it is better here. Um, but for the there is a case to be made for having it in here. Let's say that the debug drawing was highly specific between each object. Like let's say that these the green lines and the pink lines and like the players collider. Let's say that the debug shape and the way that it rendered was very different between each class. If that was the case, then I do think that having it separated would make more sense. But in this case, everything is just it's it's either a rectangle or a polygon. It's super basic. Everything's so consistent that it it does make more sense to have it shared in debug.
Uh music might be tough if you have to talk all the time in the stream. Yeah, it would be tough. It would be more demonstrating like what I use. It would be demonstrating like Omnisphere. Uh I use this synth called Omnisphere and it's my favorite thing on the planet, but it's so expensive and I don't really recommend it because it's so expensive.
I'm just a student studying CS and I'm even doing a part-time job as a way to write a restaurant. Awesome. I'm just into game type. Any tips for me? you're doing exactly what you should be doing.
Um, I love that you're working part-time at a restaurant because I don't get the opportunity to talk about that very often. Um, when I was in high school and college, I worked at Dairy Queen and that job was one of the most important steps for me having a good solid career because I learned so much just like adult skills, working on the job, responsibility, and also it was fun. So, I I think that first of all, you're doing awesome like working while in school. Uh, that's great. And then you're into gamedev. My advice is just to start making games. You're already studying CS. That's awesome. You'll realize very quickly that the stuff that they teach you in computer science school doesn't help you make games at all. Like, it doesn't really teach you how any of the stuff that I'm showing on screen works, even a little bit. It shows you how to read code. It shows you how to um algorithm algorithmically solve problems, but it doesn't actually teach you the endto-end steps of making a game. That's on you. You're going to have to do that. Um and honestly, I feel kind of the same way about game development school, too. I I I've never been super Well, I'm I'm not going to speak on that, but in general, what I mean is computer science or school in general, all these projects are kind of in a vacuum. They're designed to be solved, but when you're on the job, the problems that you solve are not designed to be solved. They are hard, difficult problems. And it's important to kind of build up those skills over time. So that when I say tips for you is to get started, just start making a game. Just start making one. And it's still going to be hard. Even though you have some CS experience, it's going to be really hard to kind of like wrap your head around coding to make things happen in a game environment.
uh follow some tutorials to get a feel for what the like engine is like, whatever you choose to use. But I always recommend branching off and just trying your own thing, trying to make your own game. Something easy, something like Pong is like the fourth time I mentioned that this stream, but uh that is a really really good thing to work on just because you'll overcome so many challenges trying to make your own game like that. I finally finished my asteroids clone. Took I more about coding than the three colleges I took in uni. That makes sense. That's awesome.
Congrats on finishing your asteroids clone. Uh that takes a lot of experience to do that because you have like the rotational values and you're having bullets like move across the screen at an angle. You have instances of objects.
I assume that you could work on class structures and maybe there's a camera and score and you have the background.
You have a UI. If you wanted to save data, you could save like high scores to a save file and reload that. The math was fun. Cool. That that that that's one of my favorite parts, too.
And all that stuff that I just described, that's just for Asteroids.
Asteroids is such a simple game. And even that is heavily complex. Asteroids game.
I I wish that there was a better, more consistent way for me to pull up like image examples of these, but Asteroids is like a top- down space game where you play as a triangle and there's these asteroid like shapes moving around the screen and they wrap around too. But this is an awesome game to get some practice with because there there's so much that goes into this.
But someone earlier was asking like uh tips for someone new to gamedev. Even this, I think, is a little bit too complex for someone who's new to gamedev, cuz it it it requires more stuff than something like Pong even.
I've also tried making Space Invaders using Rayb. Nice. Cool. I love seeing the progress. Thank you, Willow Mir Studios. Willamir Studios, thank you for stopping in.
The hardest part for me was organizing the entities and figuring how these saucers work. Nice. I mean, and what's cool is that now that you figured that out, you'll probably be able to reapply that same information in your next game.
I think that that's the whole point is that by making these the the getting it working in Asteroids is the goal, but the end goal really is that you'll be able to utilize these skills in a better game into a more fullyfledged full game.
Hopefully less spaghetti code next game.
That's what it takes. It takes a lot of practice. I I was talking about how my game has tons of spaghetti code and I keep like rewriting it. Super super common. Have I ever created games without using object-oriented programming? Yes, all of my Game Maker games.
When we say object-oriented, that means that the data is organized in a way where things are parented.
You implement code here and then this object receives that same code because they're linked.
And when with Game Maker, there are ways to parent your objects.
There are ways to do that, but I did not. So, like when I made this Zelda fan game, all of these objects were basically Okay, let me let me take a step back because this is still kind of object-oriented.
For example, you can see all the trees.
Each of these trees is an object instance of the tree. Um, or like these pots. There's a pot instance over here and a pot instance over here or the statue statue instance. Um or whatever else. There's probably going to be like enemies in this room. And that is a good first step that is object-oriented to like spawn instances of an object.
But where I failed to properly make it object-oriented is when you have the objects linked. It's when you see like that skeleton there behaved similar to other skeletons or like maybe in this dungeon we'll see other enemies. What I'm saying is that all of the skeletons are the same class, but that class is entirely separated from like all of the Deku scrub classes or all of what other Zelda enemies are there? All the Moblin classes. Uh so instead of having an enemy class that all of the other enemies were parented from, you I I mistakenly just had the baseline. I just had every class separated and that probably still qualifies as object-oriented, but it's not really achieving the goal of having things like that. That's that skeleton guy there was an entirely these these Zoras in the river. Those enemies, everything is just customcoded from the ground up, but each type is the same.
You know, meditable scare me. Yeah, they kind of scare me too if I'm being honest. The point about school problems designed to be solved and work problems with no solutions yet is a really good point.
Yeah, it is. Is that when you're on the job and someone's paying you a salary, if the problem was easy to solve, it would just be solved. Um is it's going to it's going to be hard really tough challenges and like sometimes you can look up online like Stack Overflow or someone solved something similar, but it is normally something that is uh you're working on something new. I learned a lot of using Pygame with Python. Would you recommend Lou as an alternative?
I've tried C++ before and I can't get the hang of it.
Lua and Python are pretty similar. They are pretty similar. They they both have a similar structure and the syntax is similar. Uh the way you run them is similar.
So if your goal is to find a language that's more comfortable, then sure. But I don't think Lua offers that many advantages over Python. Like if you already know Python, you can just keep using Python. Um, if you want to use Love 2D, then you can switch over to using Lua and Love 2D. Or if there's something specific you need to use Lua for, like maybe a Roblox game or um there's there's lots of L scripting in games or or in lots of things in general, then that makes sense. But I I don't really think that you'll get much benefit.
Uh, another thing is you also don't need to make it that big of a deal. Uh I should encourage you that if you know Python, you already will be really really really comfortable using Lua. The languages are so similar um that you will have to spend time understanding the quirks. There are some differences like Lua isn't object-oriented like Python is. So you have to you have to figure out some of these slight syntax changes and organizational differences. But I don't think that you should be too dissuade uh dis uh discouraged by different language new language. I think that when you are a programmer you will eventually become language agnostic.
When I interviewed at Microsoft I interviewed using Java. Like all of the interview questions were using Java and I had to code on a whiteboard using Java. But they don't use Java at Microsoft at all. They use C. They use the theNtnet stack. So why would they interview me in Java? And the reason why is because they asked me what what language do you want to interview in?
And I said I've been practicing with Java. And they said okay. And that's it.
because they all is that when you're working on stuff, it doesn't matter what language it is that they all achieve basically the same sort of stuff. I started almost 6 years ago. That that sounds about right. I I kind of have a hard time spec specifying exactly when I started because, you know, it's debatable. Um, but even this Zelda fan game is is similar. I took a lot of the concepts that I learned from implementing this Zelda fan game. I learned so much from making this. And and by the way, this fan game is super ambitious. This is not something that I would recommend a newcomer to work on.
I've used C# withnet environment to make a video game model game. Yeah, makes sense. Uh I have a tutorial on that as well. I'm mentoring a CS college interm right now and finding out that the program they're in does not cover troubleshooting/debugging in any meaningful way. Troubleshooting and debugging. Yeah, it would be it's it's nice to have those features, but at the same time like what language is this? I I use Lua. All of my code and all my engine code is in Lua.
They they should do a better job of teaching debugging and troubleshooting because there are programs where you can like stop the code midexecution and then step through line by line, line by line, excuse me, to see the values of everything. Cuz like in in my streams, a lot of the times I show myself doing like print statements like this. And this is how cavemen would debug their programs is they would do print statements and you would say like camera snap to 1802 240 director initialize like like these print statements are nice but these days we have technology we we have debuggers and we have troubleshooting like step through code where you can stop midexecution and step by step execute line by line. It's amazing. And you can like see the values of all of these different values like camera snap to 180 240. It shouldn't be necessary for me to print that out because it should be better. It should be some kind of debug tool where I can just see the value at all time. It'd be nice if there was something like that.
We had to run debugger code in our C and assembly code step by step. Real pain to set up, but very useful. That's awesome.
That's cool to hear. Uh that that's some that's some true caveman uh behavior.
I I love hearing about the the classic ways that software was developed because um by the time I entered the workforce, which was 2017, things were pretty modernized by that point. Electrical engineering class. Wow, that's cool.
That's really interesting. Uh my first experience with programming was Minecraft command blocks. And surprisingly, a lot carries over to actual programming. I'm with you. You would be surprised.
Um, even Game Maker.
So, this game here was made with Game Maker. And Game Maker is like a drag and drop program. So, if I go up to videos and go over here, the way Game Maker works is you like drag these different commands over into like a coding window. It's not really a coding window. It's just like a logical flow.
And this is obviously very different from coding, but like look, if lives are larger than max lives, that's just like that's just like what a code that's what code would say. That looks really similar to Lua code right there.
If then I love drag and drop as a kid. I was so scared of GML. I used Game Maker for probably five or eight years or something like that and I did not write a single line of GML. I just used the drag and drop actions completely and I loved it. I loved it. And then when I was in high school, I took a programming class and I'm like, "Okay, now that I'm taking a big boy programming class, I'm going to go ahead and switch over to trying to learn uh an actual programming language rather than drag and drop." But then I realized this isn't that much different. Like dragging and dropping these modules is not that much different than writing a line of code that does exactly this. It's the It really is so similar.
Uh, dumping vars is a valid start, but step debugging and learning how to read documentation issue cues for third-party code is incredibly valuable and not obvious. You're right. It's not obvious because it's different from uh IDE to IDE. It's different from software project to software project. Even if it's a Visual Studio project, if it's like a web project versus a game project versus like engine code or um embedded software, all that stuff gets really different in terms of how it gets debugged, you know.
I used Scratch for 10 years and it helped so much. Nice. That's cool. I never used Scratch, but I I taught Snap at a high school in Washington. Do I code daily? Yes, I code every single day without exception. Um I guess may maybe there's some exceptions, but yeah, it's just part of my routine. I talked a lot about how people talk about motivation, like I don't feel motivated. I can't I can't get motivated to work on my game.
Um and I don't have that problem because uh I am disciplined. The trick is you just work on your game every day. If you have a busy schedule, which most people do, just say, "I'm going to work for 30 minutes every day on my game." And that doesn't rely on motivation at all. That relies on discipline. It takes discipline to organize your schedule in a way where you work on a game for 30 minutes every day. And 30 minutes doesn't sound like a lot, but that is that is a lot. Um, right now I'm trying to play guitar for 30 minutes every day.
And that's hard. That takes discipline to sit down and practice something when you don't really want to because I'm I'm trying to practice my scales and get better at um like picking. I'm I'm I'm pretty good at strumming, but I'm not good at picking. And like all this time I was just like I'm not going to worry about playing my scales or picking. I don't need to practice that stuff. But but now I'm at the point where I I want to. And I still don't Well, I I don't want to is the thing. I don't want to practice, but I want to be good. So I need to practice. and it requires discipline because I don't want to practice. That's that's what it is.
Um, I've never used Game Maker. I'm mostly making my games using Love and Mono Game. Cool. Well, I mean, that's cool to hear. I'm a big fan of those, too. Uh, that that's what I'm most familiar with with these days. I'm most familiar with making games in a framework like this where it's like mostly code- based. I I've kind of changed away from using full-blown engines, but I do love um engines like Game Maker because it's just so approachable. It's so organized and they solved a lot of the tricky problems to getting started.
I'm currently learning making games 2Ds in Java. I'm sorry I'm having a hard time reading today. I'm I'm stuttering bad without an engine because I think I can learn more how games really work.
That's awesome. And I bet that you will learn how games really work by implementing that sort of stuff. Um, the big benefit of something like Love2D or Lib GDX if you're using Java, any sort of framework is that they solve the fundamental problems for you.
Such as right now we can see that the player sprite is being rendered on screen in a window like in an operating system window. This is love 2D. This is the framework at play. The the framework is interacting with the operating system to get this window created. It's interacting with the operating system to read my input. That's how I'm able to like use the arrow keys to move around.
And the framework love 2D is handling the graphics processing. It's the one taking my image. I gave it this image and it the framework is handling like the the rendering process of putting it in the window because it's handling the operating system window. It's handling the input. It's handling the mouse, you know, that stuff too. And it's handling all the graphics.
And that's the value of a framework is that a game developer might not really want to spend time doing those things. They might want to spend more time creating characters, creating levels, uh making game mechanics, doing things that are more game design, game development. But the engine that it runs on is still very important. It's just the question is, do I want to use a pre-built engine that someone fixed up and dedicates themselves to fixing up? Because that's the thing is that my like my custom engine, if there's bugs in the future, I got to fix it. And if you're using Unity or GDAU, if there's bugs in it, someone else is going to fix it. Especially if it's a popular engine like GDO or Unity.
Is it Monday? Oh, yeah, it is. I could try to make a game engine like Game Maker GDO or default to learn how those engines work. I I mean that would be cool. Essentially, I think all it comes down to is that like Game Maker, the drag and drop system is that it's just a a window with these blocks and stuff that you can move around. And under the hood, I imagine that it's just converting all those blocks into written code that looks exactly like this. Not exactly, you know, but I I imagine that those blocks that you drag and drop actually do get converted into written code. But is Java really bad for games?
I know that C, for example, would be better, but Java can't be that bad. Or is it just because C# has Unity and Java just frameworks?
No. There's this big fixation with developers and software people on languages and engines and what's best.
What does better even mean?
Uh, Java is not necessarily better or worse than C. You could argue one way or the other. C# has some benefits. You could argue that C# is better, but programming languages, it's like real world languages. Is English better than Spanish? No. They're just different languages. You could argue though that English is a valuable language to learn because of how widely used it is. And it's the same with Java and C. Neither one of them. Like you could argue C# is better because it's like more modernized. But they're both fine. They both can make good games. But there is an argument to be made by how widely used it is. C# is more used in game development because of the big player engines, but Java can definitely be used.
Uh, I've used Java with lib GDX and it works fine for me, but I decided to monogame C with C# because of personal preference. Everything comes down to personal preference. Um, if you like Java, make games with Java. There's there are no rules. People make games with Java all the time.
My my rule of thumb is if there exists a game that was made with a language, with an engine, with a framework, if there exists a good game made with it, then that's the that's all the proof you need. You can make a game with it. These questions of like what's best, it's all subjective because the best engine is the one that you like using the most. If I if I if I told you right now, no, you have to use Unreal Engine, you have to.
There's no other option. you have to, then you would say, "Okay, well, he said I have to." And then you would download it and you'd use it. And maybe you wouldn't like it. Maybe it wouldn't run well on your computer. Maybe you don't like the uh way that I don't know the workflow, the pipeline. Maybe you don't like C++. Maybe you don't like the uh blueprints is what they call it.
Maybe you don't like how bloated the exports are.
There's so many reasons why you would choose not to use Unreal Engine, but yet you could make an argument for why it's the best because visually it looks really good. But if you don't like using it, you're not going to make any games with it. If I told you that Game Maker is the best, like we we I was just showing you those videos of of Game Maker. I like to say that Game Maker is really good for beginners or for for really anyone. But if you don't like using it, don't use it. If you don't like using Game Maker, you're not going to make any games with Game Maker because you're only going to make games if you enjoy it. I was talking earlier about how it this is this is a marathon.
I've been making games for 16 years.
Over 16 years. That's just when my first video was posted was 16 years ago. It takes a long time to build up these skills.
The language and framework that you like the most. Yeah. If if you don't like what you're working with, you're going to burn out. You don't want to burn out.
It's hard to do game development for 10 years.
So, do everything that you can to make it easier. Have I tried Phaser? Yes, I have. I actually made a Phaser game. Is it? Oh, I wonder if it's posted somewhere.
I'm going to see if I can find it.
Where in the world would it be?
I don't know how I would find it. I'm going to see if I can find it and I'm going to post it to my website because it would be so cool to to to like show Yeah. Yeah. I made a Phaser game. Go play it right now. So, for people who don't know, Faser is a web game framework based on JavaScript. Phaser game engine.
And Phaser seems like it is really powerful.
It can do awesome things. There's cool games made with it. The reason I personally wouldn't really The reason I like again personal preference, I personally don't like JavaScript very much. So, I personally wouldn't enjoy using Phaser, but Faser is widely supported. It's been around for a long time. It's really It's really good. It's open source, I think. Yeah, it's open source. So, there's tons of amazing benefits of using Phaser.
And but just for me personally, I don't really like JavaScript, so I don't use it. I I can make I can make web games using Love 2D. What's my website called?
I have a few. Uh you can go to challet.com or challicade.com. I'd say go to challade.com. That's probably my best one. It's very simple.
Chalocade.com.
And this is probably where I would post the the phaser game if I get it working.
But what what Phaser is is it's a web game maker. So it allows you to make games that run in your browser and all the games are built using like JavaScript and but the thing is like there are other engines out there that can make web games. You can you can use Unity to make web games. The web player works.
Um, if you go to necrosone.com, this is an example of my Necrosone game and it's running in a web browser. So, even though Love toD isn't really a web framework, you can export it to web if you know how to.
Um, happy Monday. Logged in late. Well, thank you for being here. I appreciate that. Listen at 2x playback speed. got get caught up. Well, that's super kind of you to do that. Thank you for being here, Rick. I I appreciate that. You want to try out Construct? I've heard good things about Construct. Uh check out what's his name?
There there's a YouTuber that I'm a big fan of and his name is is uh Construct.
What? What's his name? What's his name?
Who's the um Who's the YouTuber who has like a pixel monkey as his icon? What's his name?
What's his name?
Um I'm a big fan of his videos, but for some reason his name's slipping my mind.
I'm so sorry. I'm so sorry for forgetting your name. No, not Code Monkey. Code Monkey posts like daily or like really uh frequent videos. Game Endeavor is not the one I'm thinking of either.
I'm going to think about it. Ah, so embarrassing that I can't think of what his name is. Uh, I actually put his name in a script.
Forgot his name, too. Ah, give me give me one second. I I need to I need I need to pull it up. It's been like a year since I pulled up his channel, so I can't quite remember what the name was, but I talked about it in I talked about his channel in one of my videos. I didn't release. So, I can probably find it there.
Oh man, I'm so sad. I don't think I can find it.
What a bummer.
Give me one more second. I I'm Vimlark.
It's Vimark. Thank you, Buffalo Jake.
Buffalo Jake found it. It's Vimlark.
Thank you. Thank you. Thank you. Oh my gosh. I I I feel so bad for forgetting his name because I love his channel and he makes really good games. But he uses Construct.
He uses Construct and um he he showed in some of his videos how he live streams.
He live streams his development and then it's so cool. He's able to like post his updates live to a web page and then the people watching his stream were able to play his changes in real time. It's amazing. So, um yeah, thank you for finding that. Um I'm I'm a big fan of his channel.
So, I I would check out some of his videos because um he demonstrated it in some of his like I'm going to actually check see if I can find it.
Um, this this is the video I'm remembering.
This is the video I'm remembering. I'm uh but in this in this video he goes through his process of making this game end to end but in in parts of it I want to see if he shows the editor. Oh no this is this is Photoshop.
Yeah. Here here he's showing a stream and he was like he had a QR code. Look that look how cool that is. He had a QR code up on his screen up on his stream and then people were able to scan the code and then play the build. Isn't that awesome? That's so cool. Your channel is my favorite and most watched channel when it comes to game development.
Awesome. Thank you, Ander. That's that's so nice of you to say.
Uh Wyvern on YouTube, how's it going?
Thank you for stopping in. Just uh showing off this video from Vimlark. I'm a very big fan of his channel and and the reason I wanted to show this video is because of that that QR code thing.
how uh Construct has these cool features and that that QR code thing I thought was super super neat.
So anyway, shout out to him, Mark. I know that he watched I think that he watched my videos because he followed me on TikTok at least.
Okay, we got 20 minutes.
Uh, the existence of pirate software implies the existence of navy hardware.
It kind of does. You're right.
Now, what I want to work on is the tile sets because earlier I was showing the cliff and grass tile sets. Looks like Limbar streams on Twitch now. I think he always did and that was just like a video of his stream.
I think most people stream on Twitch if I'm being honest. I I think I'm I'm more of an outlier choosing to stream on YouTube, but I like streaming on YouTube. I think it's awesome. I like that the VODs go straight onto my channel under the live tab. I think that's awesome. And it feeds my VODs into the algorithm. That's awesome, too.
The ads generated are good. And I think that being able to rewind your streams is really good. I don't know if you can do that on Twitch yet. So, there's lots of cool features like that, but Twitch has some benefits, too. I like the culture on Twitch. I like the the chat culture, I should specify. I like that the chats uh have a lot of like silliness and lots of emotes and and crazy stuff happening. I think that part's nice. I think the donation culture is better on Twitch. Uh, and I I I still I stream on Twitch every Monday as well. So, if you want to watch my Twitch stream, I'm going to be streaming in uh at 700 p.m. Central. That's in a little over 7 hours. So, if you want to stop by Challicade Twitch, I'll be there in 7 hours or, you know, 7 hours and 20 minutes.
How does your custom level level editor use those tile maps to make levels?
Yeah, that that's that's the big big question is that it it takes first first before anything else.
It figures out where is the ground level at and the green lines that you see that's the ground level. So the first step that it does to generate these tile sets to generate these tiles is it takes the map information the meadow.json and takes all of these block datas these block objects and it converts them into like the shape the green box shapes. So once we have the green box shapes that's when it builds up like the cliff side. The clip side always attaches into the green box and it and extends upwards.
And every one of these blocks has a zpan. This decides how tall it is. So all of these are two except for this one. This one's one.
And that decides how tall it is. So this span is a block one tall, which means I can jump on it. This one is two. And I can't jump on it cuz it's too tall.
You can rewind on Twitch, but that only when you are subbed. Wow. Okay, I guess that's uh an interesting feature.
So once the green boxes are created, that's when it goes through that process of like building it up incrementally.
First it starts with the cliff side tiles because it's set up in two layers.
You have the cliffside tiles on one layer. It draws these tiles first. Then it goes through and figures out where do these tile goes? Where do these tiles go? Man, I'm sorry for stuttering so much. And then it fills in all these.
It looks more like bushes than grass.
Yes, when it's like this, but you have to remember that this is the cap of the cliff.
In the context of the cliff, it does look like grass. I don't think it looks like a bush at all because it's like spread out over the surface. It's like a surface.
How will you handle being behind the cliffs? It's already done. And check it out.
So that's all handled using the Y sort algorithm. Uh need to head out. Happy moonshine Monday. Thank you for stopping in Buffalo Jake. Appreciate that.
So the way it handles this is all through y sort craziness. It clusters the tiles and then it y sorts them using this big y sort algorithm. It's very very complicated and it's still not working properly. I was showing earlier in the stream how there's a scenario that I've been working on last night where you have them stacked. Here we have an example of a big baseline set of blocks and up here we have a stacked version. It's it's an it's a slab on a slab and it works. You can jump up onto it and functionally it works. So, it's going to be really feasible to build out full levels with varying elevations that stack on top of each other. It all blends together nicely. It's going to be good. But, like I was saying, this is heavily complex the way that it works like this. How my character covers up these tiles when I stand here. When I stand here, my player covers up these tiles. But when I walk up here, now the tiles are covering up my player.
It's using that Y sort based on positioning. And when I jump up here again, it's back to me covering up these. I jump up on top. Players covering up the tiles again. Still good.
But down here, it's broken. Down here, it's broken. So, these tiles are supposed to be covering up the player through the Yord algorithm, but it's not. Something's getting broken along the way.
It's very annoying. So, I'm trying to figure out why would these tiles down here on the base level properly vi sorting, but up here suddenly it's not.
So that's that's that's why it's been kind of bugging me. I I I worked a couple hours on this last night and couldn't figure it out. Uh in fact, like I I was working so much on it, I made so many changes that the whole thing kind of broke and I had to revert back to the state. So it's going to be a lot of trial and error. Uh really a lot of this stuff has been trial and error trying to like make a change and see if it properly renders all of these these tiles cuz cuz the way that I made all this work was I had this map where I had all these junctions, these intersections and these peninsulas, the the different sizes and the different dimensions. And as I was developing the algorithm, I would just like walk through the whole level and I would see, okay, this section looks good. All these tiles look fine. And I would say, oh, here's one.
And then like right here there would be a broken tile or like it it wouldn't be filled in right or maybe the tile was rendering here. It was like one tile too far to the right.
It was just so many crazy scenarios where I would have to pinpoint down to the exact tile marker.
What scenario caused it to render here as opposed to here, for example?
Something like that.
It it was a a hard process to figure out. Uh, do you think our good buddy Claude is just hanging back rolling his AI eyes at you just waiting to give you the answer? Genuinely, yes. In many cases, he is. Um, because the algorithm that goes into building up these tile sets is heavily complex where I was able to get the baseline started and then filling in the gaps to debug the complicated like tile by tile cases. It did tend to go like that where I would articulate exactly what case actually I can I can articulate this better. The way that these tile sets are organized if I go to tile set here in level two is you have a tile set pattern. And we have the cap pattern and the wall pattern. This is referring to the cap.
This is the cap. It's the cap of the cliff. And this is the wall of the cliff. And I was talking about earlier how I plan to have this mix and matchable, how you can have different cliff sides with different caps. So this is the wall of the cliff and this is the cap of the cliff. And here is where we define the IDs for each tile. Here we see like row one cap northwest cap north cap northeast. And when we go to the image that's it's talking about these three tiles. cap northwest, cap northeast, or sorry, cap north, cap northeast. And I that that's that's how this is organized is it goes through like a grid giving a named definition for every single tile in the structure.
And some of these are very complex such as cap VO northwest northeast. I I'll actually take a step back here. We have cap V O N E. This means cap veering out northeast. So I get a little bit cute with my V variable name. So I came up with a shortand VO means veer out and XC means X. X stands for uh filler. Filler uh converging. Uh X is filler. That's why over here we have cap X. X means it's the filler color. Cap X is this tile right here.
So when you have X O or sorry, it was XC, that means you have X converging, that's what the these are. You have the filler X converging into a direction, converging southoutheast. That's why this tile is um X C N E XC oh sorry SEO E it's not ne and and that's how the the name definitions is given to all of the patterns and like I was saying I can swap out this grass tile set with like a snow one or a rocky one as long as it follows this same organizational structure it's going to be able to use these same IDs and it's going to be able to generate the tile sets in game regardless of what the sprite sheet actually looks like.
And the reason why I brought this up is because these IDs, how they have some sort of meaning behind them is a big factor on how I was able to debug all this. Because as I would like navigate around the map and I would find broken tiles, I would be able to identify this tile here. Uh it's kind of hard to see.
And actually, let me let me turn on the cells. Here's the cell grid.
This is how I would debug the the level generator is I would I would just go through and I would find I would say oh I see that cell 87 at a two apex slab is not rendering correctly. It would it would be like it would show this this tile here, but it would be rendered here. And I would be like, okay, well, it's it's an off by one horizontal error. And and then I would have to figure out where exactly is the code placing it here and why is it doing one over or um sometimes it would be choosing the wrong tile where and actually I I can show this. Let's say that I swapped these where I say southwest and southeast. So now they're mapped improperly.
Check it out. It's putting this it's putting those tiles in the wrong spot.
And and this is kind of what it was like when I was debugging is that I would go through I would make a I would make a tiny change to the algorithm and I would go through and I would try to find broken tiles that look like this. And I would and then then I would have to go into the algorithm figure out okay why did it choose XC southwest instead of choosing XC southeast and that's that's how all this got debugged. It was so annoying.
Uh does Lua offer a function to read JSON files? No. I had to use an external library for that. Is a chunk system. the the chunk system is meant to be for performance because notice how there's a Y sort how I I walk behind these tiles and and these tiles are covering up the player, but when I walk down here now it's not. A better example is this is like you see how the grass is covering up the player here. It's covering up the axe, but I walk down here and it's not covering up the axe.
It's using Y sword. And it would be very expensive to do y sort on every individual tile. If every single one of these was performing its own logic, that would be very expensive and it would start to chug. So instead, it figures out which tiles have the same effective y sort, which tiles will be placed in the same render order as other tiles, and it groups them by that. And when it has those groups, it's able to do the y sorting a lot more efficiently. um without needing to, you know, perform this logic on every single tile. That would just be too much.
It's pretty funny that Lua doesn't have native JSON support. As far as I know, it doesn't. But let's verify that.
Does Lua have native JSON support or is it only through uh external libraries?
Okay, by the way, I've got into into the habit of writing through like this, like drive through. I really like it.
It says, "No, Lua does not have native JSON supporting a standard library. This is a design choice consistent with Louis philosophy of keeping the base language as minimal and lightweight as possible and it gives some samples.
That makes sense. So no, as as expected it does it does not. So the way that I read JSON is I have this JSON.la file.
Um this might actually be I think that I custom made this myself a long time ago. I don't remember making it.
Um, Lua is very small source project. It relies on external libraries. Yeah, it does seem like that's the big benefit is that everything is so small scale. Lua itself as like uh the interpreter or if you if you package Lua altogether, it is megabytes big. It is small. That that's like why my game on Steam is small. It's like 100 megabytes. It's very small because Lua itself as a runtime is small which allows love 2D to be small which allows my game to be small. Most of the size comes from like the sound the the wave file. Well, have I been using wave files? I think I got rid of all the wave files and changed them to like augs.
I guess I don't mind using external libraries to read JSON files. uh in general if you're using Lua if you're using Love 2D or whatever anything any framework uh I use libraries a lot and and I was talking earlier in the in the stream about how much I enjoy open source code how helpful it is for me like anime for example I've been using this file for like 10 years how long has this been out 2011 that's crazy I have been using this for 10 years because I started using love tod when I was in college which would have been 2016 So that that sounds about right. You inspire me to work my on my game. Awesome. That's cool to hear. Let me inspire you further.
Don't wait for inspiration. Get into a habit of working on your game every single day. Even if it's only for a little bit. That's how you actually make progress. Because if you wait for inspiration, that inspiration, that motivation, it's going to go away. I don't feel inspired. I don't feel motivated every day. Many days I do, but some of them I don't. But I still get work done on those days where I don't.
Well, libraries are used for reading JSON files. It's just that JSON.la file that I made myself that it this might this might be based off of one of the public ones, but I definitely added a lot of my own custom code to it.
Uh, rescue squad by child in chat getting ready for work. Thank you for stopping in. Appreciate that. We got about five more minutes left of chat. I think that for the remaining time I'm going you've been replaying Hollow Knight. Nice. Nice. I'm a big fan of Hollow Knight.
Uh, has anyone played Silk Song? I'm interested to hear what people's opinions on Silkong is. Um, especially if you played Hollow Knight.
In the Pico8 world, people are restoring to JSON-like strings for game data. They loop over and explode them back into op objects. Interesting. Well, I mean, that is kind of what this is, is that the reason why JSON is nice is that it's it's consistent. is that it follows a very strong format and that makes it consistent to parse and that makes it it makes it consistent to translate this into Lua data and then back from Lua data into this because you can always pretty reliably expect what it's going to look like.
Uh love silk song. I enjoyed it even more than I I understand that. Uh old school geek lunch on me today. Happy McDonald's moonshshire Monday. Thank you so much Rick Carlson. Uh, the old school geek himself. Thank you. I really appreciate that.
Silk song might be my fave. Uh, MV next to Animal Well. MV MV Metroid Vania. Sorry, that took me a second. Yeah, there are many, many aspects of Silk Song that I love. And uh, when Silkong came out, I I played it right away and I I talked on stream a little bit how I was frustrated that it was too punishing. I'm I'm not mad that it's too hard. I'm mad that it's too punishing and you have to rerun a lot of the same routes. You have to grind for the scrap because you use tool currency and uh I spent a lot of time doing really mundane just running back and forth through the same areas and I got bored at many parts of the game because of that. So, I think the game would be near perfect if that aspect of the game was improved where like instead of being sent all the way back to the last bench at every at every boss grow Exactly.
Like I I was so irritated. It's just such a long run back.
Um I I I love hard bosses. I love learning the mechanics and getting good, but I don't like having to spend time getting back to it. Uh, check every single wall as a reminder. That That's another one. Um, is I got frustrated that there's so many uh like crumbling walls. You have a pretty strong incentive to literally smack every single wall in the game. And I think that's kind of damaging to the gameplay because when I enter a room or when I go through a hallway, I don't just go through the hallway. I stop and I smack every inch of every wall because it's hard to see v like you can't just rely on your on the visuals to see when there's a crumbling wall.
Reminds me of old text b text textbased net hack. Interesting. Yeah, I see what you mean.
Nightmare King Grim is perfect. Yes, totally. I love that fight. Uh, in fact, like I actually I should go back and and and and do that because uh Hollow Knight was one of the first like really hard get good games that I've ever played and I wasn't able to beat Grim. But I do remember that it was awesome that you fight him, you die, you run straight back in and you fight him again.
I love that. But on the flip side, when there's when you when there's no stakes, that does kind of decrease the tension.
Like when you're fighting Gro, if that is his name, Gro the great uh in bile water and you're fighting him and you know that if you die, there's a big punishment for it. You have to spend a full like five minutes getting all the way back to where you just were. It's a huge pain. Sometimes it might be more than 5 minutes. It was so annoying. So those high stakes kind of add to the tension.
Same with the um act one main boss. That one took a lot of attempts and it took a lot of runbacks through that exact same area. And on one hand, that's annoying. Uh that Jack Septai will make an animated R-rated Blform movie. I did hear about that. I I'm I'm eager to see how that turns out because I'm in general, I'm a really big fan of indie anything. indie music, indie films, indie games. I love when independent people create something and the idea that like a YouTuber is making something their own on their own and is going to be putting out into the world.
I love that. The Markiplier movie, I didn't see the Markiplier movie, but I want to cuz I love the idea of an independent person competing against like the big Hollywood companies. Like this is this is the thing. I was talking earlier about the business of games, how games is a business and how I don't like I don't I wouldn't want to rely on game development for income because I don't like the business side of art. And it's the same with movies. movies kind of feel kind of corporate sometimes because they're made by multi-million dollar production studios and they're funded like to such an astronomical level that it it doesn't really feel very relatable but when you think about Markiplier's movie or sure Jack Jack Septai's animated movie these are coming from independents uh assuming that Jack Septai is funing it himself.
Uh, another famous independent movie, the probably the most profitable one is Passion of the Christ, which is the the the Christian uh the movie about Jesus.
It was made by Oh, what's this guy's name? Who's the guy that made Passion of the Christ? Who made Passion of the Christ? The was made by Mel Gibson. So, so the story behind that movie is that he was having trouble getting funding from like the Hollywood publishing companies and eventually he's just like, "Screw it. I'm gonna do it myself. I'm gonna do it myself.
And he funded it himself. And that movie was wildly successful. And I find stories like that to be very inspiring.
I'm sure that there's a lot more drama that went into that that went into that that film than just the the money side.
But I love hearing about independent projects. I love seeing success in the independent space. That's what inspires me is hearing about that stuff. I love it.
But yep, on that on that note, I think I'm going to call it quits for the day.
It was a very good stream. Thank you so much everyone for being here. It was a a great session. Got a lot of stuff talked about. Um, hello person that I watch from time to time. Thank you. Thank you for being here, Nart. But I will be back next week for yet another moonshot Monday. Thank you, Baron, Restless Night, Rick Carlson, Space Ray Gun, Adele, Ender, uh, Nart, Tiga. Thank you so much for being here. And I will be back next week for another moonshshire Monday. Future ye uh tried. Thank you so much. And I will be back next week. Bye everyone.
Videos Relacionados
VALORANT's Latest 'Exclusive' Tier Bundle is Rough...
KangaValorant
17K views•2026-05-28
Flight Attendant Mocks Poor Looking Black Woman — Mid Air Announcement Exposes Her Real Power
SkyboundStories-b4r
184 views•2026-05-28
I FIXED My Friend’s Blown Turbo RX-8… Then Sold It
Cameron-RX8
134 views•2026-05-28
NewsWatch 12 at 5: Top Stories
NewsWatch12
1K views•2026-05-28
Simon Jordan & Danny Murphy deliver PREDICTIONS for Arsenal's Champions League FINAL with PSG
talkSPORTArsenal
6K views•2026-05-28
Botting is OUT OF CONTROL in Classic WoW (Again)...
SolheimGaming
108 views•2026-05-28
The "AI Job Apocalypse" is CANCELLED!
WesRoth
9K views•2026-05-28
STREET FIGHTER 6 - INGRID Story Walkthrough @ 4K 60ᶠᵖˢ ✔
RajmanGamingHD
12K views•2026-05-28











