Programming Throwdown - 168: Godot

Episode Date: November 20, 2023

Intro topic: What are expectations on developers that have nothing to do with programmingNews/Links:Pushing for a lower dev estimate is like negotiating weather with a Meteorologisthttps://sm...artguess.is/blog/your-estimate-is-less-than-that/Announcing python in excelhttps://techcommunity.microsoft.com/t5/excel-blog/announcing-python-in-excel-combining-the-power-of-python-and-the/ba-p/38934397 Habits of Highly Effective Software Engineershttps://makingsmallercircles.com/articles/7-habits-of-highly-effective-software-engineers/Raspberry pi 5 begins shippinghttps://www.phoronix.com/news/Raspberry-Pi-5-ShippingBook of the ShowPatrick:Harry Potter and the Sorcerer's Stone Illustrated Editionhttps://amzn.to/3St3L35Jason: The Pete and Sebastian Showhttps://podcasts.apple.com/us/podcast/the-pete-and-sebastian-show/id570256898Patreon Plug https://www.patreon.com/programmingthrowdown?ty=hTool of the ShowPatrick: Obsidianobsidian.mdJason:Ink by Inklehttps://github.com/inkle/inkTopic: GodotWhat is a game engine?Graphics, animation, particle effectsTilemapsEntity component systemsPhysicsSoundI/OInput handling (touchscreen, joystick)GDScriptWhy use a game engine?PortabilityAllow for testing individual components of the gameLibraries for ads, in-app-purchasesGodotOpen sourceFocused on 2-D but now many 3-D featuresGreat development environmentAI HeroStarted in phaser (development rut)Moved to Godot, rapid prototyping ★ Support this podcast on Patreon ★

Transcript
Discussion (0)
Starting point is 00:00:00 programming throwdown episode 168 good oh take it away patrick welcome everyone uh starting with a bit of a uh a rant is that i don't know man it's so negative i have something to rant about we have a cup a pair of rants oh okay is there a word for that you know there's like a flock of geese is there a word for a gaggle of rants okay all right going to buy right so one of the things that has been like a recurring theme and it feels like it's getting worse now i guess like to set the context if this is your uh first first episode with us you maybe you don't know but i'm i don't know how you would call the like role of software i do so maybe it's particular to the kinds of software i do but it's it's been persistent so it's some combination of embedded application engineering maybe web is a bit better
Starting point is 00:01:09 i don't know um but maybe back end is pretty similar and that is the number of things you're expected to know how to do on a computer that really don't have anything to do with programming but you're just like you're supposed to know how to take care of it like just random things not just the kind of slightly strange things like you need to know how to set up your computer like plug in the keyboard and mouse and you know monitor not admittedly these things aren't hard and most of us know how to do them but like this isn't really related to programming like you could not know how to swap hard drives on your computer install new ram but occasionally someone the other day had a hard drive you know crap out and and so the it person just like sent them a new hard drive in the
Starting point is 00:01:49 internal mail and like here installed a new hard drive or whatever now people i mean that is not common okay i mean weird right but like you wouldn't be also surprised that a programmer was expected to know like how to install their own hard drive like because it's i guess it's part of my rant it's just par for the course weird for you know the company or whatever but just you know not that but like you know dealing with errors in your operating system um you know finagling issues about network connectivity uh even if you don't develop a software that has anything to do with you know sockets and you know ip connections and just any of that stuff, you're still expected to know how to debug that at some some level and kind of figure it out. And then also things about just like setting up your develop environment, right?
Starting point is 00:02:33 Like having your ID ID set up properly and getting all of the compilers working and all of that. There's no just like, sit down and here's a text box. And your sort of expectation is to just, you know, type in the program and i guess that's true with a lot of jobs there's like lots of extra stuff you need to know um but but it gets really esoteric so i develop in c++ which is especially bad so just the amount of like how to get your systems libraries installed correctly so they can be accessed but the same is true python even when using pip or virtual environment or whatever like you still have issues with like conflicting packages and package managers
Starting point is 00:03:11 and linux stuff so it's not sufficient to just you know most people would know windows or mac os but probably need to know linux you know and how to debug various issues when you mess something up in one of your paths and you know how to have your profile set up and so anyways my rant is just becoming like there's some stuff for like fixing this and virtual development environments but they're not here yet and i guess i would say they can't come soon enough yeah i mean a couple of things there one we have this wiki page for it's called landing your first pull request and it's a freaking enormous like there's just like an insane amount of things you have to do um we have a github bot that actually merges
Starting point is 00:03:53 all the pull requests like you don't actually merge them yourself and so yeah you have to like you know run all the unit tests and then run lint, and there's a billion different kinds of Lint. There's MyPy, and then there's Flake, which both, I guess, check different things. They're not totally overlapping. And then there's all these other things. As you said, there's the pip dependencies, making sure that's all okay.
Starting point is 00:04:21 And then to your point, do this wacky thing where everything runs in a Docker container. Like you actually can't run anything on your own computer because as you said, you don't have any of the libraries or anything. So, so everything has to run inside this Docker container, which is kind of painful. If you need to use GDB, you know, or any type of debugger, you have to do this remote GDB or you TCP into your own computer. It's just weird.
Starting point is 00:04:51 But yeah, I mean, it's like a huge laundry list of stuff. And none of it has anything to do with the code that you wrote. That entire document, you could just be adding a semicolon and you have to go through that whole thing. The other part of it is, I think in general, just stepping back a bit, there's just enormous cognitive overhead that there wasn't before. I was thinking about travel agents and how you'd have a travel agent kind of book everything for you and find the right flight and all of that um now travel agents are even before our time really i mean i actually never used one but um but now you know you have to do all that yourself and and you know the search and retrieval is really good so that you know normal normies normal people like us could do it at all but um but still it's like
Starting point is 00:05:46 cognitive overhead that you didn't have before and uh you know i think the same thing with the bank and you have an issue with your amazon package or something it's just there's an extraordinary amount of cognitive overhead and i think as a programmer it also just seems to keep increasing the amount of things that you have to do i was watching some movie the other day i don't even remember what movie it was and it was just one of the funny standout things was the person wanted to fly somewhere so they drove to the airport to go inside the airport to book a ticket they weren't flying they just like went to the airport for the purpose of like talking to a booking agent and booking a ticket and it was like oh i yeah i guess that makes sense
Starting point is 00:06:23 like people did that like that you know or like you said you phoned up someone or phoned up uh yeah you know and i think that happened to me the other day we were trying to book something online it was having a glitch and we had to like talk to a person and like do it verbally and they were reciting back to us like the various times and it was just like oh man this is yeah in some ways it's lots better but as you pointed out like the number of tyranny of choice i guess like the number of things right from and the number and it just like everything becomes an analytical decision and yeah it's yeah i mean to riffing off your point you know i i i've never had a company send me a hard drive or anything like that but i did
Starting point is 00:07:00 have a hardware failure um uh yesterday it was really weird i was on my computer and this is my personal computer um and then all of a sudden like steam was updating some game in the background and i was i was coding something up um i was actually working on which we should talk about at some point. But I was bringing that back. And all of a sudden, like, I look and I see, oh, Steam is updating some game. And it's been updating for almost the entire day. Uh-oh. And basically, you know, it's like a ton of triage.
Starting point is 00:07:37 What I found out was my hard drive was only reading and writing at 800 kilobytes a second. And I was immediately yeah i was thinking oh man i'm gonna lose this hard drive you know and i just bought it and it has all my stuff on it and you know i started getting kind of nervous um but then i was like you know the i ran all the smart tests and diagnostics everything everything came back fine it's just nothing would actually finish like scanning the drive i thought maybe i needed to free up space but i didn't um and it turns out the sata cable was bad it went bad oh and i've basically been using the same sata cables for probably 15 years or something just because i keep you know when i get new ones they just go in a box and i just already have the other one plugged in a drive and i change it i'm not changing the drive and the seda cable at the same time really ever um so yeah i just swapped out the seda cable but it was
Starting point is 00:08:35 definitely it kind of scared me and to your point like like you know i don't know like we have to fix these things ourselves i don't really know like who i would even i don't know like we have to fix these things ourselves i don't really know like who i would even i don't think geek squad will come and go look at this homebrew machine that's i mean they will but they'll also do 100 other things you didn't want yeah that's right i'll never like five copies of norton antivirus or something uh yeah the other one i'll drop just here for anyone who runs into it hdmi cables are not all the same so over the years if you're still using a really old hdmi cable it may not be able to like support the proper bandwidth if you're trying to like you know do 4k blu-rays or something it's just something i was unaware of but really i didn't know that yeah wow how do you know is it is it printed on the cable or anything
Starting point is 00:09:21 that's a great question to try it you just buy the one that has the bandwidth you want and use it. Well, you know, that's the advantage of us being our own geek squad is like, you know, if something doesn't work, you know, we can order a cable and it's only eight bucks. And it's like still a tiny fraction of the cost of getting someone to come to your house. So like if you order the cable cable it's wrong it's like well i have an upgraded cable now and i can keep debugging and then you end up with the uh the box of cables that every geek has in the closet which is just i have it and actually folks at home you know we stopped doing video because uh we felt like we had to you know get all prettied up and
Starting point is 00:10:02 everything so we stopped doing that but but folks at home can't see the giant box of cables that patrick can see in the background um oh another thing that happened to me last week so i went through a period where i was ordering a ton of stuff from aliexpress and these these like straight from china things and uh slowly slowly it's like come to be just a terrible investment. And this is really the capstone on it. I have a Raspberry Pi 4. And I bought this thing that could control multiple servos because every year my Halloween scare bot just gets more and more extreme. And so it's at the point now where I needed something to control a bunch of servos. So there's this little I2C module communicates over I2C controls a bunch of servos. And the way it works is you connect the I2C pins to the Raspberry Pi, you connect
Starting point is 00:10:56 the 3.3 volts to the Raspberry Pi, and that powers the board and sends all the signals. And then separately in the servo controller, you connect like a power supply, right? To power these servos. Because servos use way more electricity than the whole Raspberry Pi, right? So even one of them probably does. So I set it all up. It looks all correct.
Starting point is 00:11:22 One thing that was kind of a tip-off was my power supply was saying it was plugged in when it wasn't that should have been a tip-off that something bad was going to happen so but but being an idiot i i plugged it in anyways and smoke started coming out of the raspberry pi and the raspberry pi got completely nuked um the the the sd card burnt my finger when i popped it out and uh i was so so mad you know first i was thought what did i do and i'm looking at everything and it looks fine and then you know i get the multimeter and it turns out this is shorted and it's just a bad component that i that i got you know as cheap as possible trying to save i i saved two dollars off what it would cost on amazon and i fried like 120 bucks worth of equipment
Starting point is 00:12:17 um and i was so freaking mad unbelievably mad. But what can you do, man? I just had to throw the raspberry pie in the garbage and get another one and move on. Yeah, I guess there's a tip there too, just for people who want to play with that kind of stuff. Well, first of all, there's a high potential the stuff you would have bought at Amazon would have been exactly the same,
Starting point is 00:12:38 just like pre-labeled. But the second thing is do not plug things you get like that for the first time into your computer usb port for for basically the same reason so if you have some usb powered device or whatever you get off like get uh what do you i don't know what you call that like the one that like a wall wart or something else like a splitter uh no like uh don't like even if it needs data right like you need to like like a thumb drive or whatever right so a thumb drive could have a short the same way but if you at least plug it into something that
Starting point is 00:13:09 isn't going to like an old computer or something that isn't like your nice computer because if you have a short in it but you know like usb drives are just a little different but i'm thinking like one of these dev boards or something you soldered up and you accidentally you know solder across it plug it into something that will basically like you're okay losing rather than your computer computer one because yeah the same thing can happen and then you'll fry your usb port or even your motherboard it's bad days yep yep and this is the this is the second time something like this has happened to me and and uh the first time was my fault first First time was totally my fault. This time is not my fault, but, but the one telltale sign is if things have power that shouldn't, that was sort of the common denominator. It's like this, this thing is not yet plugged in
Starting point is 00:13:56 the wall and the light is on and I'm getting a voltage reading on it. That's all you're only supposed to get when it's plugged into the wall like that right there if you ever see something on that shouldn't be on um yeah i told the story years ago but in my first project i did it on a metal bench and uh shorted everything i mean that was incredibly dumb but but you know the sign there was you know that the lights were still on and i hadn't plugged it in yet so that's the thing to look for free power yeah i mean i thought that i had a scarabot and a perpetual energy machine what i actually had was just accurate smoke yeah all right is it time for our news of the show let's do it what's your news all right so my first one well i guess these are mostly links
Starting point is 00:14:44 i don't think we have any news i guess i have a little bit of news so my first one is a blog uh this is smartguess.is um anyways and it's talking about software estimates which are notoriously very difficult i i don't even think it's a junior senior thing i think it's just very difficult i'm thankful that i'm not in a high stakes software negotiating like dev estimate thing because i just i can't imagine but they were kind of making analogy that it's like negotiating with a meteorologist um there's some caveats i immediately sort of got the content i like read it to make sure you know like but just reading that it was one of those ones like just reading
Starting point is 00:15:19 the headline was enough for me to derive like lots of value and smile from it then the person is talking about accurately so like if you you're keeping all the bounds the same like keeping the requirements the same and all of this like the estimate is the estimate to ask the estimate to be lower is is is just like making the you know just making your stuff come late or you know becoming a problem and no one fusses when you come in too low they only fuss if you come in too high so there's always this pressure to come in faster and shorter um and you know that's that's just kind of, it's kind of silly. I know you could change the requirements, you can split things up, you could reassign new people or
Starting point is 00:15:53 more people. I mean, those things are, they're all possible. But in general, yeah, like the estimate is the estimate for the, you know, kind of statement of work. And so trying to negotiate with it just doesn't work. But you know as i've as i've become more and more of a person you know trying to work with others i i will say i do find that sometimes people give me very very low estimates and i tried to tell them in general don't don't and someone in someone was reading some commentary about about this this post as well this one was pointing out correctly that uh programmers naively think they're going to have like their high output like peak output for how long would it take to
Starting point is 00:16:31 solve this problem at peak output but then we forget is how much of the day are you actually at peak output you know are you have to go to meetings you're getting interrupted you're helping code review other people's stuff so there's this balance between like yeah focused time it's this amount of hours but you're not going to have all focused time and additionally you kind of often need to estimate calendar time and your calendar time you know you have a lot less than you think yeah i mean the thing where i'm really struggling here right now is is is this idea that that folks are much more like people really overestimate how fungible, I don't know if that's the right word,
Starting point is 00:17:08 but like, so for example, you talked about doing embedding and web and all of that. Very few people have that union of skills. And so if there's somebody who really knows embedded DSP and you're behind schedule on the website, you'll hear folks say, oh, just add this person to the website to get it done faster. And then it just never works out well because it's just for so many reasons.
Starting point is 00:17:41 I mean, one, the person doesn't want to build a website. They want to keep doing their DSP work. Two, it's like that person has to now get trained in that other skill, which takes time. And it might be a good thing to do, but it's definitely not going to accelerate the schedule. And so I think this is like a problem of we're in this sort of in-between phase where everyone's still called a software engineer at a lot of companies. But I feel like that will probably change if it hasn't already. But yeah, that's another problem. It's like, we have eight people. Just put all eight people on this thing and it'll get done.
Starting point is 00:18:17 It's like, well, it doesn't really work that way. My news story is announcing python in excel so you know we are predictors of the future patrick we're basically we're basically amazing so we talked about excel months ago two or three months ago and talked about how it would uh be awesome if you could do python or these other things in excel sure enough microsoft they must have been listening to Programming Throwdown. They announced Python in Excel. And actually, Guido is the first place I heard it from. He posted about it on Twitter, but it had also been on the news and everything.
Starting point is 00:19:00 And it's pretty awesome. I think the way it works is it spins up and sort of like a ephemeral virtual environment to execute this is a great way to get um you know python in the hands of millions and millions of people who up until now probably never even heard about it and i guess the reverse for people who know how to do python to not be frustrated with i don't understand how to get this excel function to do what i want yeah that's true it's true if you need to you know do like some real advanced stat stuff you need sci-pi but you know you don't have any easy way to get an excel i wonder you know all those companies that do kind of excel python like there's one i think it's called xbb but there's these uh excel you know python bindings
Starting point is 00:20:06 that they sell commercially those people are probably not happy with this news but i mean i think for the overall uh community it's a huge win if you've not watched it i just i was watching it the other day because i was trying to do something with pivot tables don't ask anyways uh there's a there's a i i don't know what to say famous there's a classic so joel spolsky i think he used to be at microsoft originally founded fog creek software like i feel like a few years ago i don't hear that much about him anymore but i feel like he was one of the sort of uh he had a big blog it was at joel joel on software i think yeah that's right joel yeah and he would he was like one like pushing for like developer productivity
Starting point is 00:20:43 and like you know getting nice chairs and more monitors and like you he was like one like pushing for like developer productivity and like you know getting nice chairs and more monitors and like you know basically like treat your engineers you know kind of nice at a time when uh maybe that wasn't as common or i don't say wasn't uh it happens more now than it used to uh and i feel like he was one of the the people that pushed for that anyways he has a youtube video you can kind of search it you suck at excel and uh he sort of shows that actually like you can do a lot with Excel, like pivot tables, or almost, there's some VC people who say this is like, every so often, you know, I forget what the cadence is, that basically, someone shows up with a startup that is basically could be solved with just a pivot table in Excel.
Starting point is 00:21:20 And so, you know, most people underestimate just how much you can do uh with just pasting all your data and and you know running the functions on it yeah totally totally um so yeah folks definitely check that out and uh report back if you're using it let us know how you're using it yeah i want to see i guess i saw i need it needs to be eminently googleable when i want to solve something someone to put like here here's the Python here. Yeah. Here's the like 80% solution. Yeah,
Starting point is 00:21:49 that's right. There's been a lot of discord in our discord. So, uh, folks have been very active in discord, which is really cool. So, you know,
Starting point is 00:21:57 generally we always say email us, emails, emails, but, but, uh, you can also go on the discord and there's a whole community of people there, which is pretty neat.
Starting point is 00:22:06 We're not discourse, there's discourse on Discord. Oh, you're right. Discord would be like disagreement, right? Oh no. There's harmony in Discord. My next article is Seven Habits of Highly Effective Software Engineers. This is at the blog, makings dot com uh and this is oh i don't i don't know it's one of those kind
Starting point is 00:22:32 of like classic corporate things if you ever like if you're if you had a big company and they offer like sort of self-betterment training you'll get the seven habits of highly effective people and it's things you know i don't know whenever take these, I feel like it's things you kind of know, they're just like putting a catchy name on it. So like, you know, highly effective people always look for win-win solutions. So don't compromise, you know, you look for win-win ways for, you know, what the person you're trying to reach agreement with makes them better and it makes you better. So it's just kind of like things that I feel are, I don't know, a little a little obvious but you know they're helpful to have a framework and and maybe maybe they're you know good anyways so this person has seven habits of highly effective software engineers presumably riffing on that
Starting point is 00:23:12 same same thing um i i don't know that i read them or not but but go read them you know the first one is like actively prototype new ideas and that one really you know sort of resonates with me is uh i feel in general it is difficult but people sort of are unwilling to just commit to trying kind of like the hard bit well first identifying the hard bit is not easy but trying to like find some like core hard bit and like just write a little bit of code and convince yourself that your approach works or that and like maybe you throw it away maybe you don't but like tell yourself you you know kind of will throw it away you're not trying to get it right and then you're going to do it again but also you know try to bound it try to make it small and so i feel like this is one of those uh you know things that that people can miss out so he
Starting point is 00:23:57 has sort of you know documentation about code reviews just getting stuff done so um i feel like go read that i won't i won't read you all seven i guess that's a spoiler then then i'll steal traffic so i won't uh so go so go read that that post yeah i mean the one that really resonates to me right off the bat is a quick and timely code reviews i remember when i um was engineer i would get so unbelievably frustrated when you know people would sit on a code review for weeks um that would just grind my gears more than anything else and you know i i think the reason why it happens is at least i don't know i don't know if you're like this patrick you might be more
Starting point is 00:24:38 methodical but i go through bursts where there will be like two three weeks where i will just put an unbelievable amount of energy into whatever work thing i'm doing and then i'll have a couple of weeks where you know i honestly like won't work really that hard and it averages out you know so it works out well but i'm very bursty worker and so when i'm in that you know burst and someone just doesn't review a code well that basically cuts all that energy short like it's kind of wasted and then you know by the time they review it now i'm like not that interested in it anymore and so it's just you what you end up with is not making any progress because of that right um so so that's one thing to recognize is like when you're reviewing that
Starting point is 00:25:23 person just wrote that they're probably like really into it and so you might not be into it but you have to at least pretend like you're into it for the code review yeah i think the the bursty thing is part of it i think it works for the code reviewers too like i think i you know try to communicate to people like schedule time you know at the end of the day or you know before you start your work or just like something when you're out of focus to go do the code review so that you know like you said other people aren't kind of blocked and then we also try to establish cultural things like how long is it like you can start requiring if no one reviews your code within you know two days you know you can start pinging people and be like hey someone review my code um but don't start pinging
Starting point is 00:26:03 them you know like 30 minutes after you send it in and be like, Hey, because, you know, people are focused, they're doing stuff or they're at lunch or whatever. Like, you know, that, you know, you gotta have reasonable, I guess on both sides. Um, but yeah, try to sort of get to them. And then also, you know, make sure that the team's culture like moves towards the ability to do code reviews. So not giant, not giant you know 10 000 line changes that weren't communicated and are like deeply impactful to infrastructure those discussions should be settled beforehand it is a pet peeve of mine that people try to sort of settle team strategy decisions in code review it's just it's not good that's not the right place to do it
Starting point is 00:26:41 yeah i mean one thing that took me many years to learn i think i've said on the show before but it's worth repeating is get get really good at interactive get rebasing and resetting and all of that because you know i would you know and this is part of the bursty thing you know i would end up with like a 10,000 line code review. And, you know, I didn't know that there was a way that I could break that apart. You know, a simple way other than like a really painful thing where I was just, I don't know, copying and pasting from github.com or something. Like I just didn't have the technical fortitude to understand like, okay, here's some interactive way where i can break this change into like 20 different changes and test each one in isolation so yeah if you find yourself submitting huge peer reviews don't do that but like but but not just don't do that like learn the techniques and the technology where you could break that down um all right my next one is raspberry pi 5 begin shipping
Starting point is 00:27:49 um so i uh yeah i have a raspberry pi 5 on back order i have always done this uh ever since actually i probably learned about raspberry pi from you patrick i feel like you're the only person who would uh who i'd have the raspberry pie connection with but um but ever since i got onto raspberry pie i've been ordering them when they came out um and you know it takes forever to get to you but it's the base price you know that raspberry pie offers you're not getting upcharged by anybody um so mine's coming sometime in december um that's what they say but uh yeah i ordered it apparently it's way stronger than the four uh in terms of compute um so that'll be kind of interesting i don't know what i'm going to do with it yet but uh yeah that's tbd we'll have to figure it out i feel like it's been a little i was mentioning to to the jason
Starting point is 00:28:46 earlier when before when i saw that he you know had this up i feel like it's been so sad to me that the raspberry pies went from like a really low barrier entry into you know some embedded stuff to scares and hard to find and it used to be like that when they would first come out but then they would just be you know pretty ubiquitous but the supply chain thing they just never really sort of hit there there's like this combination i haven't looked at i think it's a combination of things but um you know it it's it's sort of unfortunate that it's a little less accessible you can't just go on amazon and get a reasonably priced one these days um this is you know become very difficult there's lots of cool things people have been doing and like you mentioned jason like hooking up to the i squared c ports is something
Starting point is 00:29:28 a lot of people if you you know go on news articles or even myself replace them with just getting older like used enterprise mini pcs which are probably more powerful and they can run windows and stuff but they don't have all that library for hardware interactivity. So the embedded stuff is is not really workable there. If you just need something to be a NAS. Well, you can probably do pretty, pretty good for yourself not using a Raspberry Pi. But for all those hardware embedded projects, like it's really it's really the best sort of easy introduction to that. And it's just, yeah, I'm excited.
Starting point is 00:30:02 The Raspberry Pi, I hope they sort of figure out the shortage. There's some stuff floating around, too, with these new RISC-V boards or RISC-V. I don't know actually how you say it, but. I think it's five. Yeah. Is it five? Okay. RISC-V boards and stuff too.
Starting point is 00:30:14 So I'm hopeful there'll be more of this like medium embedded space where it's running an OS, you know, like Linux, but still has this like really nice hardware, I2C, SPI connect a little monitor to it i think that's a it's a great space yeah totally you know one thing i'm surprised is that unlike um arduino which is just full of uh aftermarket you know version like you can get an elegoo arduino uno or like there's a million different companies that are making just following the spec in the case ofduino uno or like there's a million different companies that are making just following the spec in the case of raspberry pi there's there's really nobody who there's there's no company producing raspberry pi at least that i know of uh you know much cheaper i mean i think it's the soc so the the arduino used a pretty ubiquitous chip for its processor it was like a i think a pick
Starting point is 00:31:06 um anyways made by microchip or whatever so it was like a very like common piece but i think the raspberry pi the like processor which is part of why it was so cheap whatever is this sort of they did all the integration work but it was a basically relatively hard to get piece and they managed to negotiate like a good price for it or whatever which is the actual processor that it's running and so i don't i haven't looked at the five yet but i kind of assume it's the same thing it's like uh economies of scale and it's like not a ubiquitous piece and so the combination makes a little hard to to duplicate yeah that makes sense i do also have an intel knuck which is your mini pc and that's running my nas and all
Starting point is 00:31:46 of that and that is amazing i actually i had some issue where it wouldn't detect my hard drive every now and then um i updated the bios just as a hail mary before buying another one and just saying we're done but actually updating the bios fixed it so uh it was a hail mary pass that actually got a touchdown i guess did you try swapping the sata cables no that would be oh my gosh i broke two sata cables uh this one though the hard drive just plugs right into the knuck so i think okay um but uh but uh um yeah actually a lot of uh weird really esoteric hardware issues lately that seems to be the october trend for me but yeah many pcs are amazing highly recommend them uh really fun they're so cheap now intel was selling them half off for the uh amazon prime day i don't know what they are now but uh prices are very reasonable
Starting point is 00:32:47 there's also you mentioned aliexpress before i have seen an uptick in the number of like i don't know we call them like like smaller brands they're just brands you would never recognize selling kind of like old intel atom um chips or even celerons or um those kinds of things in that sort of mini pc form factor or even fanless not really again competing for like the hardware embedded stuff which raspberry pi is again if you want to do any of that definitely go raspberry pi or arduino um but yeah for that sort of like nas like home networking kind of stuff yeah there's there's some pretty cool cool options now and like ones that are like usbc powered and
Starting point is 00:33:25 oh wow you know so yeah pretty cool that's super neat um all right time for book of the show what's your book patrick oh man you did the good intro and i cut it okay all right my book of the show is is an old one but i've been i've been going back through it uh you know my kids are getting old now whatever so so we've been going through the which is harry potter and the sorcerer's stone but the illustrated edition at some point one of our family members picked this up which is a nice big book like not thick like you know the harry potter books are thick but this is like wide like tall and wide which is just a nice form factor and it has just beautiful illustrations in it uh and so i feel like it's just it's just one of those things you know everyone begs to to be able to see the page instead of instead of just uh just reading it
Starting point is 00:34:08 so i've been really really enjoying that maybe it's a bit of a cop-out but uh that's what i have reading time's been a little limited so i'm going way in the way back machine to pull up this one uh but but yeah it doesn't ever recommend it if you if you weren't aware that they have illustrated editions or if you have you know i guess that that's a there's an xkcd comic about that like how many people are born each year thus if you say like you know what seven eight nine before you can kind of start getting kids into harry potter like there's you know millions of kids who sort of coming into it so if you have one of those in your life wow your own kid or you know somebody you know anyways looking for a gift idea shout out to this or if you've never read the series yourself i mean i don't think everyone
Starting point is 00:34:49 on earth has read maybe nearly but not everyone so if you've not read it before this is a great way to to get into that very cool yeah i haven't read the illustrated edition of this but i've read the illustrated edition of uh terry pratchett by the color of magic and uh yeah i'd also read the original color of magic yeah the illustrated edition is amazing it's similar what you said it's a huge it's a very like wide tall book and uh has a lot of beautiful illustrations it's a lot of fun my book of the show is actually a show of the show. It's the Pete and Sebastian show, which is another podcast. You know, there's been so much negativity. And I mean, I know this is almost becoming itself a stereotype, but there's just so much negativity on the news that I just
Starting point is 00:35:41 felt like I needed, you know, something I basically needed something funny, some comedy, something positive and funny, and where I knew that they weren't going to talk about the news. So if you don't want to hear about the news, you should listen to Programming Throwdown. But after you've heard Programming Throwdown, if you still don't want to hear about the news, you should listen to the Pete and Sebastian show.
Starting point is 00:36:04 Those guys are hilarious. They're right around our age. So, you know, they don't really I don't know if that matters that much. But, you know, some of the references, you know, are of our era. So that part of it is kind of nice, too. But, you know, they're really funny. They riff on each other pretty well. And, you know, it's just like some nice banter
Starting point is 00:36:25 to listen what kind of show is it it's basically uh it's it's just a comedy show so what they'll do is they'll show up with three or four topics so for example in the last episode i saw one of the topic was basically vermin uh getting into their. So like raccoons getting into their backyard and things like that. And the way they deal with it and the pest control guy and how does someone get into that career? And just, it's hilarious. I was just dying laughing.
Starting point is 00:36:58 They also, you know, they're comedians. They have a very infectious laugh. I think that's almost par for the course to be a comedian. It's, yeah, it's a riot highly recommend it um there's there's a bunch of really good comedy podcasts uh i'm sure i didn't stumble on them on patreon but only after you subscribe to our patreon so go to patreon.com slash programming throwdown and please sponsor us support us we really do appreciate it we take that money and ultimately put it to getting more folks to learn about programming. And we're going to take some of it, whatever we have left over, and use it for gifts on the
Starting point is 00:37:52 Christmas raffle, which is something we do every year. And it's coming up in a couple of months. So we try and give all of it back to the community, or we do give all of it back to the community in some way, shape, or form. And we try and use it as best we can to get more folks into programming and we really appreciate your support on that i'm going to try to do it jason style it is time for tool of the show that's amazing what's your tool to show patrick uh my tool to show is Obsidian, which is you can find at obsidian.md. This is, I guess you'd call it a note taking app, but it's sort of there's a collection of these. I think there's one called Notion.
Starting point is 00:38:34 There's Obsidian. And they have phone apps, but also desktop apps. And it's sort of your ability to sort of take notes for yourself, but not just a singular note, multiple notes, but also provide links between them, categorize them and just sort of like organize your sort of thoughts. We've talked about I think I've talked about Google Keep before Google Keep works pretty well, too. But this one is a little bit better for sort of hierarchy and interlinking. And then there's a bunch of, you know, sort of community provided plugins. They do not, they do sell a way to
Starting point is 00:39:12 synchronize across your devices, but you can also provide your own synchronization. And the nice thing about Obsidian is it's all just text files. So each note is a file and each file is a markdown text file. So that's sort of its strength. And I guess maybe a little bit its weakness. So rather than a lot of companies will do a proprietary database, or even like a SQLite database, a little harder here, if you know, the company shuts down, it's not open source, at least I don't think it's open source. But if the company shuts down, you just have like a directory of text files. So it'd be very straightforward for you to recover that to import it into something else. I know it just feels like if you're going to get invested in something that you're, you know, wanting to use, I feel like it's a really nice take on it.
Starting point is 00:40:00 And I'm having something I've been trying to sort of follow a lot of techniques have built up around sort of this organization uh like life operating system and like there's like a lot of these but i and i've been trying to sort of get into it people point out it becomes a trap where you like start trying to like get over organized and making notes itself becomes like a hobby as opposed to just facilitating your thing so i don don't know. I find it very intriguing. I feel like I have this constant to-do list that is in my head and getting more organized is one of those things. So I've been trying out this Obsidian on my phone and then on my desktop as well as a
Starting point is 00:40:38 way to sort of take notes about what I'm doing, provide like topics, but also link to other notes. And so I've been enjoying it check it out obsidian at obsidian.md very cool yeah so i just looked it up obsidian is not open source but um but you were saying you could sync it like with google drive or something yeah so like i i use an iphone so i am able to use icloud and just like the directory and there's some there's some warnings to be sure like you got to be a little careful but i for instance would can't think of an example where i would be editing on my phone and my desktop at the same time
Starting point is 00:41:13 this is only for me so the you know sort of synchronization should be pretty straightforward um they do offer like a a sort of uh it not very expensive, a monthly fee if you want to sort of support the developer, but also enable like proper, you know, full featured syncing, which can work. But again, the thing I like is just that you can see it. You can just open it with notepad or whatever VI pointed at the, you know, folder and you can totally see all of your markdown. Yeah, that is awesome.
Starting point is 00:41:43 That is really cool. I was using, oh, i was using oh i was using workflowy for a while um but uh but yeah like kind of like what you said you know i found myself spending more time writing things in workflowy i ended up switching to uh when i got this remarkable i ended up switching to just writing everything on the tablet. But yeah, I do think having the right note-taking app is really important. It kind of reduces that cognitive load we were just talking about.
Starting point is 00:42:11 Because once you write it down, it doesn't have to be in your head anymore, as long as you're willing to look at it every now and then. My tool of the show is Ink by Inkle. So I've talked about... Actually, I think, know i've talked about actually i think patrick you talked about the 80 the 80 days or maybe i've always been the one anyways uh inkle is this company that makes a bunch of interactive fiction books there's i think it's called 80 days around the
Starting point is 00:42:39 world oh okay um and then there's overboard which is by the same company and a bunch of folks so they released their i don't want to say engine but they're they're basically system for creating these text-based games and it has like a nice markup and everything um they open sourced it and um it's a scripting language is what they call it um it has a has like a nice template style where you can kind of uh you know mad lib different things into it um and the reason this came up was i guess people have been porting it to other game engines so they recently ported it to unreal i think someone's working on a port to godot or getting it to compile with godot um but yeah i thought that was pretty neat um it looks really fun if you want to create a
Starting point is 00:43:31 you know an interactive game similar to the ones that ankle has made um definitely check it out i think it's a really neat tool oh very cool all right something else getting pushed into my queue. Okay. It goes on your obsidian. Yeah. Hang on. I'm going to write it down. I'm going to link. All right. I think with that, it is time to talk about our topic of the show, which is Godot. Yeah, Patrick. So you haven't tried Godot yet, right? No, I haven't. I've kind of watched the tutorials read the stuff I'm familiar with the the system been tracking it for for quite a while but it
Starting point is 00:44:11 yeah writing a game in Godot is like again one of those things in my queue I haven't managed to pop it out just yet yeah I mean my experience with Godot was um you know I had this ai hero game i talked about on earlier episode and originally that was written in phaser which was a javascript um library and phaser i guess phaser is technically a game engine but um the thing about phaser is you know it basically gives you all the libraries like here's a graphics library here's a physics library but you still have to kind of code all the game up yourself and where i got stuck was on the sort of way to be an efficient game development you know engineer like for example imagine if you had a bug at the boss of your game and the only way you could fix the bug is by playing through the entire game,
Starting point is 00:45:08 getting to the boss and then trying to recreate the bug. Well, it'd be super frustrating, right? It'd take you hours and hours to encounter the bug and all of that. Now that's a pretty extreme example. But if you break that down, you can kind of end up in a situation where it's really time consuming and difficult to debug anything.
Starting point is 00:45:29 And actually, even more than debugging, you really have to, a friend put it really nicely, find the fun. When you first make a game, unless you're just re-skinning another game and keeping the mechanics identical, when you create a game originally it's it's not very fun at least none of the ones i made were very fun and um for ai hero you know the original concept of the game was where where you would sort of bring your own shapes like it's like oh i need a circle here oh i need a line here i need a curve here and and you'd sort of draw from this toolbox of shapes and um that ended up not being very fun because you know if you got it wrong it was really frustrating or like often the more complex
Starting point is 00:46:16 shape like a curve could do anything a line could do right so you just always pick the curve and it got to this point where it yeah it wasn't very fun and um i couldn't really iterate quicker quickly because of what we just talked about and so i got stuck and so i put it down um when i ported it to godot you know obviously it still wasn't fun because i just straight ported it to godot exactly as it was but i could um you know and we'll talk about this when we talk about godot but i could go into specific parts of the puzzle and just play that part in isolation or just look at a certain curve in isolation and play around with it and eventually that was what allowed me to find the fun in that game um so so that was my experience with godot and overall i'm a i'm a big
Starting point is 00:47:07 fan i think game engines and maybe it sort of changed today but i think like this example like you're saying jason there's nothing that could have like you're a capable programmer you could have uh coded all of this yourself right so the things we're going to talk about that are like the components of a game engine it's it's really like a almost like a menu and many game engines are pretty flexible and that they like let you order stuff off the menu but you can also kind of like sub in your own thing and i think some people get into any you kind of see uh post mortems or whatever get into their own like i'm just going to build my own game engine or i'm building something so different or so off nominally like the expected path that i'm going to start by building my game engine and they just never finish building the game engine and you just sort of get into this you know sort of thing and i think like you know it is it's like programming language
Starting point is 00:48:01 choice in a way which is that you know probably there are many ways to solve it and for every person in every situation it's just going to be you know going to pick one and and hope for the best but i think like starting with that basic game loop right where uh unlike most applications at least that i write you know they sort of start they do some processing and then they end that's not how a game works. A game doesn't, I mean, I guess at some high level, you exit the game, but you get into this loop, right? And so just setting up the loop and forcing, like you were saying, to get into the process of rapidly testing and getting to the part where you have a sort of working prototype
Starting point is 00:48:38 somewhat as quickly as possible also helps with the motivation. And I think that gets underestimated that like having something that's a demoable and you know playable and sort of excites you helps you stick with it yeah you're totally right um i mean think about like some of the really iconic games um and uh i'm going to sort of date myself here but like super mario 3 for example on nintendo there was one level where you got this boot and the boot would let you walk over spikes you could jump really high you could like step on things and and kill them that you know you couldn't without the boot it just radically
Starting point is 00:49:17 changed the game and and there was only one level where you had the boot and that level was kind of designed around the boot um you know there's just a lot of spikes that you wouldn't be able to survive otherwise and stuff like that um and so yeah i mean you know the game developers and designers you know they had an idea and they tested that idea and they built a whole level around that idea and then when you fast forward to modern mario games you know i play uh what is it called the one on the switch where four people could play and only one person needs to win is oh yeah that's right super mario 3d um what i find when i play these games is basically almost every level kind of has some kind of trick to it or something kind of unique
Starting point is 00:50:06 like one level will have you know platforms that flip over when you jump on them another level will have you know something else and so and so you have to be able to test all these concepts uh independently and very quickly and game engines are really really good at doing that i don't i think we talked about unity briefly before but since then i've read the masters of doom uh which i think we had at a book a show before which is basically how john romero and john carmack uh kind of started their game studio and how they sort of evolved it and you know i think one of the things through through that that that sort of impacted me is the sort of separation of concerns,
Starting point is 00:50:46 I guess you'll call it, which is John Romero just had this ability to create levels and interesting mechanics, like you were saying. And John Carmack would focus, I hope I'm getting this right. I think I'm getting it right. John Carmack is like very specifically
Starting point is 00:50:58 on like at the time, the limited hardware, right? And sort of saying, how do I optimize rendering a 3d scene so think about like wolfenstein 3d or eventually doom like how do i get the levels encoded textured blitted onto the screen so that you know john carmack can kind of push the engine and and sort of work the fun and i think you know talking about you know we're talking about good dough here and tries to give you that same separation of concern. Like you focus on the half of creating with the tools, like Jason is saying,
Starting point is 00:51:29 the mechanics and the interesting bits is the part that they're, they're not really going to be able to provide you that you got to, you got to bring that yourself. Yeah. And you're getting to what you were saying earlier, just circling back to that, you know, I go to a lot of video game development meetups. Like if you're in austin and you're at one of these you probably run into me at some point and um a lot of the time i see people
Starting point is 00:51:51 who have a really interesting game engine um but then there's there's no fun it's not there's no fun there so for example i saw one recently where it was like minecraft uh you know the engine was like minecraft where it's all voxels um but you had a grappling hook kind of like spider-man's web web fingers right so you could swing around the level and then you also had these rockets that could just blow big craters in the level and with the two of of them, you could actually, you know, dig tunnels or dig up from the ground. And it, it was like a joy to swing around the levels and put holes in the ground, but it was, it was just an engine, right? Like there was, there was no fun there. And, um, and I think that, you know, it might be better to have, let's say, built that in Godot, even if you're getting five frames per second or something.
Starting point is 00:52:52 But you could figure out what the fun is. What can I add to this game to make it really fun? And then if you have to rewrite it, it's fine, because at that point you've done the rapid prototyping and you've sort of found the fun, and now you just have to recode it it's probably better to do that and end up with two copies of your game than to start building your own engine so maybe maybe that's a good segue where at least i'll force it is uh like what what gig game engine is and then specifically godot's kind of version i think talking generically we already mentioned i already mentioned the the sort of loop the sort of execution loop and in that you're going to have stages and one of those stages is going to be input handling which yes everyone could write
Starting point is 00:53:32 themselves but you really don't want to which is how do you handle keyboard input multiple keys pressed down at the same time mouse input clicks and you know all of that kind of like input handling as well as like just some of the stuff that, you know, hey, you want to make a menu on the screen, we talked about, I think it was last time, right about desktop UIs. And we were, we were alluding to game UIs, but you really don't want to write a windowing system or a menu system, you know, from from scratch. And so they're going to bring that kind of stuff as well. Yeah, totally, totally. And they're going to do it in a way that is cross-platform.
Starting point is 00:54:09 So in my case, when I use the JavaScript game engine, they had a way of running it on the phone. And this is a little bit beyond me, so I'm not going to try and explain how that works. But then when I switched to Godot, that was one of the things that I really wanted to make sure. Because although I was playtesting and developing on my computer, my intent was for almost everybody to play this on their phone. And so similar to if you're doing Raspberry Pi or Arduino stuff, you have to kind of cross-compile, right? And you have to make whatever you're doing work in that other architecture.
Starting point is 00:54:50 And there could be all sorts of little nits there. And so Godot has this nice way of saying, okay, you can use your mouse on your computer or you can use the touchscreen on your phone. And they sort of like have one api that can kind of handle all of that i didn't even think about that so yeah i guess we've been dodging the the big one though which is also just the actual kind of rendering engine which i think is what all probably most people think about first as the thing they don't want
Starting point is 00:55:21 to go solve themselves um no one wants to write directly in open gl although you can um and now i guess that story again to your your cross-platform and portability is is probably a bit of a different story with direct x and open gl and shaders and you know so they're going to provide that ability to push 3d or 2d assets which would be like sprites particle effects models that you load or sprite sheets if you're if you're doing sort of sprites and push those through and then handling things like rigging and animation and they're going to have sort of file formats worked out and even in the case of like editors for that stuff as well so so not just oh i'm in a script file like you know writing all this stuff by hand which may work but how would you join with someone else who wants to contribute to your game
Starting point is 00:56:10 and say hey listen like why don't you handle tweaking the run animation um and you know here's the editor and here's the keyframes and you know allow you to figure out that kind of stuff yeah totally i mean i honestly to this day i have no idea how how the hardware you know graphics acceleration stuff uh works on android or ios i don't know if they both use the same thing or if there's two different ones and godot had to write everything twice um i mean the godot system or unity or any of these is is handling all of that for you so So you run it on your computer, which it could even be OpenGL or DirectX. I don't know that either because Godot is handling all of that.
Starting point is 00:56:51 And then when you run it on the phone, it just works and they've done their best to make sure you get exactly the same experience on all these different devices, which is actually really remarkable if you think about it. Another piece of this is the editor the editor is extremely important um you know phaser and these other game engines they don't they don't have a
Starting point is 00:57:14 development environment they're a set of libraries and you're meant to write your game in them but but you know godot comes with a editor the editor is also written in Godot, which is kind of interesting. It shows that it actually works for something. But the editor is beautiful. And you drag and drop different sprites or sounds, and it'll do positional audio and all of that. And then you can also do... So the editor gives you scenes so for example you know one of my scenes
Starting point is 00:57:50 in my game is the main menu and there's a bunch of little boxes like hit boxes that you could click on for the different options of the menu and all of that but then they have a recursive the scenes are recursive so you can actually for example um you know each level of my game had a scene for each line so your point of the game is you're drawing these lines to kind of uh uh separate different groups of dots. And each line is a sub-scene. And so you can actually drill into the line scene and you can manipulate a single line. And when you click the button, it should grow a little bit to like acknowledge
Starting point is 00:58:36 that you've tapped the button and everything. And you can test all of that in isolation very, very quickly. And then when you are comfortable then you can spiral back out and test the larger scene um there's some things you'll have to contend with so for example you know if you're testing the line scene by itself then you've never loaded a level and so if you you know like one of the issues I ran into was when I'm testing the line scene, I would drag the line and then it would crash because it would see, oh, did the player solve the level with the, where the line is now?
Starting point is 00:59:12 And there is no level. So you have to deal with that. But what you get in exchange is the ability to test each of these different components. And I found that to be really the thing that got the game across the finish line so other things that that i think time with editor are you know as jason's already mentioning with the scenes but often uh many games have levels um and for levels you need some sort of map or you know yeah sort of environment and so having the ability to do that is something i i remember i guess that was like unreal tournament or something way back in
Starting point is 00:59:51 the day came with or no it was half-life i remember had an editor and you could download the editor and you could like make your own oh yeah levels it's called like hammer or something i don't remember i'll have to look it up now but you know people started shipping that hey listen like anyone can kind of create their own own level here uh and you know it's just a way of defining it but again this is something that sort of i guess i overused the python thing batteries included that when you want to go build a level here's a way to allow others to build levels for your game um so if you're you know building a logic puzzler or jason was just member uh mentioning uh the inkle stuff and sort of like hey they built a robust way for even others to reuse their approach and so so being able to kind of have the level editing and sort of either 2d
Starting point is 01:00:38 or 3d sort of be be included as a as another a good separation of concerns to allow other people to build out those pieces while you're focusing on maybe some of the mechanics yeah totally it was valves hammer editor and uh i remember uh playing with that too that was a blast another one i played a lot with was um the starcraft editor starcraft one had this amazing editor um and you could actually take the maps you made and play them with your friends on battle.net and they would download the map from you and they joined the the game and everything um but uh um but yeah you know there is nothing more demotivating than like you know you edit a json file and then it takes like three minutes
Starting point is 01:01:27 to compile and then you join you know you start the game you have to click new game you have to choose your character you do all that you have to like skip to the right level and then oh the json file was wrong the level is like unplayable and you have to do the whole thing over again right and so um yeah when people say they're going to build their own game engine i think a lot of them the level's like unplayable and you have to do the whole thing over again. Right. And so, um, yeah, when people say they're going to build their own game engine, I think a lot of them think about, you know,
Starting point is 01:01:50 what, what, what do I want the engine to do? Uh, uh, you know, to, to like to render or to play,
Starting point is 01:01:57 like, what does, what do I want the engine to do for the player? That's usually what people think about, but what you really need to think about is what can the engine do for me to make me as a developer you know 100x more productive especially if you're a solo or a small group or you're doing a one of these game jams or you only have three days you really need the editor to do so much for you the i think i just make like put two and two together maybe i'm wrong i'll have i'd have to
Starting point is 01:02:25 look i think there's been like a uh uprising a resurgence uh increase in people doing procedural games um in part well we should talk about that we have that perpetually on our list um but something like wave wave function collapse uh and other uh perlin noise and these kinds of things for doing procedural generation. You mentioned Minecraft, right? Kind of famously does this, but other even more elaborate games as well, trying to sort of do every game is unique, you know, or a little different, but there's rules that are obeyed to make sure it's sort of still playable. And I think some of that, not all of it, of course, very fun game mechanic, right? And sort of almost adds that infinite replayability if you
Starting point is 01:03:04 can make it fun, but also gets you out of having to build levels right so i think there's this temptation to for some of those games to say well i don't have to sit down and design a fun level like i'm just going to work on an algorithm and if it's not fun the person will just regenerate you know the world or we'll just do something again and it's you know i i think can be not not always but i think it can start to be a little bit of a, of a crutch because someone just saying like, Hey, it's kind of more fun to work on an algorithm to make levels than to actually sit down and make levels. If you're sort of a programmer by, by trade or by inclination, um, some of that sort of artistic
Starting point is 01:03:40 crafting and designing the, the sort of perfect one. And I think that's interesting. We were talking about, I think I mentioned last episode or two episodes ago about Factorio, but interesting. I was thinking about this. There's another game, Satisfactory, which is sort of similar to Factorio. And interestingly in Satisfactory, the game, the map is actually static. So they have one map and they've sort of over time, they want to add new features. And so they have to like tell you, hey, when we do this upgrade, this portion of the map warning, like if you're building something elaborate here, you won't really be able to upgrade because this portion is going to change.
Starting point is 01:04:14 Like we want to change this portion of the map versus something like, you know, Victoria, whatever, like you're playing on your seed, you're playing on your specific incarnation. So stuff can be added but you wouldn't really see it unless you regenerated so the same like minecraft and minecraft added a new biome right like you wouldn't see that new biome unless you sort of regenerated uh and so there's this interesting dichotomy between like a static map and uh you know designed and uh procedurally generated one yeah totally i think that there's this, it's another one of these traps,
Starting point is 01:04:47 kind of like building your own engine. But there's this trap where you think that, oh, I'm going to make a sandbox, I think is what they're called. I'm going to make a sandbox game where I'm just going to throw a bunch of mechanics together. And that way I get to do all the fun stuff
Starting point is 01:05:04 without having to do things i think is not very fun like designing levels or having very scripted situations right and and actually it's really really really hard to make a sandbox game um there's a few of them um they've gotten kind of a cult following um you know i mean other than minecraft i mean minecraft is is kind of like the michael jordan or the beatles or whatever it's kind of like its own entity right but if you take away minecraft you know the sandbox games like like x4 for example or um gary's um gary's mod's a good one um you know a lot of them you know they're just very hard to pull off and so i would suggest to folks who are making their first game um you know make something
Starting point is 01:05:54 that has like pretty well defined levels where you can just reduce the the scope it turns out making things more complex is very easy but making things fun uh is like for example in mario you know what i at least what i think we're getting into sort of like uh really subjective territory here but i think what's fun about mario is that you have all these very simple systems like the goomba is very simple the little like fireball that spins you know the what do you call that thing you know i'm talking about the wall of fire that no it's not a ball oh the rotating arm of fire yeah yeah the rotating arm of fireballs so so all of these things all the speed runners are really mad at us right now yeah i know we're gonna get email there's gonna be discord and discord over this. Um, is, you know,
Starting point is 01:06:45 in isolation, they're trivial, right? In isolation, they're trivial to overcome, but it's when you compose them in different ways that it becomes really interesting. And, uh, um, and so, you know, start with something really simple. Uh, everyone says this, I'm not inventing something new here, but, but start with something simple that's very scripted and then work your way up by adding more and more complex systems. And again, like a library, I mean, a tool chain like Godot
Starting point is 01:07:17 is really important for that. I don't know why we're on subjective game dev advice. Having never built a game, I would say I think one of the things too, but, but I guess cross cross pollinating from other stuff is don't set out to build your dream game first. I mean, that does work. There are stories. You can Google them about people who like their very first game was successful and amazing
Starting point is 01:07:36 or whatever. But I think much more common, like set your sights on something like attainable. You can, you can, you can kind of iterate on the the dream game the fantasy game the one day i'm going to build this but for now you know sort of just execute on on you know sort of what what's in your in your scope to finish and get sort of the reps in of you know start to end and actually sort of doesn't have to be amazing or you don't have to you don't have to send it to anyone but just like complete and playable uh and you know have a beginning and a middle and an end and jason mentioned game jams,
Starting point is 01:08:05 but this is my like secret thing. It's like one day I'm going to sign up for a game jam. He's going to force me to do this. Like it's time bound. We need to do it, Patrick. Oh, no, we need to do it. We got to take like three days off work
Starting point is 01:08:15 when there's a game jam and make a game. All right. I got to do practice before that. But all right. The line is drawn. Trying to get back onto Godot. Physics, we didn't talk about as well this is another one where maybe people either think it's too easy or too hard but uh having a physics
Starting point is 01:08:30 engine and not worrying about all the things that that come with it collision detection you know right gravity adding you know parameters that you can script to other functions or actions or superpowers like jason mentioned know, having a boot that turns off the spikes, right? Like you want to code all that logic with a, you know, spaghetti function, look, like, yeah, you could do that. You know, or you could let a system that sort of has all those things, you know, handle it for you. Yeah, I mean, another thing that's really complicated is, you know, look at Mario, for example for example you know certain things are affected by physics like uh like the mushroom falling off the edge of a ledge or something right um but then you
Starting point is 01:09:12 know there's certain things where you just need a lot more control like if mario is controlled by a physics engine it would be just too unreliable and uh you know obviously speed runners would be really upset it's like oh you know my computer you know skipped a frame and mario couldn't make that jump or something but but then also like you know it would just be too complicated for for beginner players to really understand you know so so so you need mario where when you jump he has an extremely fixed trajectory uh he could even change trajectory in midair and things that are like physically unplausible um but then you need you know mushrooms and barrels and stuff that are just normal physics things and so you know godot has uh I'm not going to get the terminology right, but it basically
Starting point is 01:10:05 has a concept for, I think they call it a static dynamic body or something. I don't remember. Anyways, but there's a concept for like, here's a thing that I want to exist in my physics universe, but I'm going to be controlling it directly. And you'd use that for something like a player. I think it's called a kinematic body. And then they have dynamic bodies so you could just use little circles you know to represent the mushrooms and the barrels and everything um and they they handle like what happens when one type of body bounces
Starting point is 01:10:35 off another one because that's another issue is like you know what if you have like total control over mario let's say there's something like a barrel and mario pushes the barrel against the wall you know what happens is that barrel gets squeezed and then explode you know like you see in physics engines i go flying or does mario stop moving like there's all this complexity and uh the game engine you know will really help you navigate all of that talking about barrels and pushing in this i think um also and you can correct me if i'm wrong but i was telling jace is one of those things who pops up with discord uh not in our discord just in general which is entity component systems uh like one of those game development philosophies so i think good joe jason mentioned
Starting point is 01:11:22 scenes and the sort of hierarchy um but i think good dough famously does not sort of natively push the entity component system uh which is one way of handling what we're talking about which is hey you have all these things moving around you have enemies and you have you know rotating fire flame arms and swords and pickups and all of these things need to be sort of tracked inventories and what's in your backpack and you and all of these things need to be sort of tracked inventories and what's in your backpack and you know all of these things you know need to be handled rendered updated every frame and so it becomes a a place to sort of you know be be rigorous in how you're going to not handle each specific object uniquely but handle sort of all objects collectively in a in
Starting point is 01:12:03 a common way and have a common sort of thing. And so the entity component system approach, oh, I'm going to see if I can get this right. So entities are roughly sort of IDs into the world. So rather than everything being a pointer, you give everything a unique ID so that the system can refer to other IDs and do things like garbage collection off frame
Starting point is 01:12:22 or phasing them out or changing them between levels. And so entities are, and then the component is sort of like the thing in the sort of inheritance hierarchy. It's like, it is an object, it has properties and attributes that you can add, and they can be common across like this is a, this is a barrel. Do you want barrels to be destroyable or not? So does it have a destroyable attribute or it's not is it squishy or non is it rigid or not rigid i guess there we go uh and then the system is the yeah the thing that runs it right it hooks up all of the calls that need to be routed between each other and does the updates and sort of flows everything through um and it's a a way of modeling um this that the other places take i think there's some sort of extensions to Godot that will allow you to implement this.
Starting point is 01:13:08 It's not a game engine unique thing. You could develop other code that uses the same kind of logic. But this is just one of the things some game engines use. And then Godot uses a sort of hierarchy instead through sort of inheritance to show some of this and sort of a more i think am i am i sort of on the right track yeah no you're nailing it yeah yeah okay good uh but this is one of those trade-offs that your game engine i think it's a little bit you know i described like
Starting point is 01:13:33 a menu but it's sort of like it may bring its own approach it doesn't prevent you from using something different and really going in in in sort of the ecs the entity component system, but it's sort of out of the box. It's not going to kind of do all that piping for you. And this is one of those people will go a pine for long blog posts about the pros or cons of such an approach. Yeah, I mean, one thing where I tried to make a game a long time ago, just in C++ from scratch,
Starting point is 01:14:07 I tried to write my own game engine, it was not um but to be fair it was a text base is like one of these rogue type games where i didn't need a lot of graphics but um one of the things that really tripped me up back then was circular references you know like if i if i have a sword then like the person has the sword, the sword's attached to the person. And just like what, how do you break that reference elegantly? Like, for example, what if you have a sword that is like a, you know, like a magical sword that disappears after 10 seconds? Like it's part of a spell, right? And like as you're swinging the sword the 10 seconds are up you know like there's weird things like that where like oh you know the sword disappeared but now like you know you'd already committed to swinging the sword so you get these weird effects
Starting point is 01:14:56 right um and you know one thing godot does it has this like a type of queuing system where you queue an object to be freed but it kind of keeps it around for a little bit longer just to make sure that you don't have this this uh uh sort of uh so it's a form of deadlock in a way sort of deadlock issue um and and that fixed uh a variety of issues i had especially when i was changing levels in AI hero and I was trying to like tear everything down. Um, you know, with Godot, it just kind of like took care of all of that for me, but I know in past projects, you know, I've had a bunch of issues where even Mame Hub, Mame Hub crashes on exit and I still don't know how to fix it. So, so, um, you know, it kind of alleviates all of those those issues for you of
Starting point is 01:15:45 dealing with you know c++ pointer nastiness um speaking of c++ we haven't said so godot programming languages do you you want to take the alternative yeah um good good call man um so yeah so godot uses something called gd script uh have you seen this patrick yes yeah it's it's very similar to python um there's just a few tiny differences but uh um but yeah i found it very approachable in the beginning um i didn't want to have to learn another language to be honest so i thought let me try godot with the c sharp there is a she they call it godot mono um but that was just plagued with issues i mean it was brand new when i was trying it out this was godot 3 and um it's just i just had so many technical issues I was like let me you know there's not that much code in AI hero let me just learn try out this Godot script and I'm so glad I
Starting point is 01:16:53 did I mean it took almost no time to learn um you know there's just a few like really subtle differences like I think you know in Python you use enumerate when you want to get a uh um so if you want to get like if you want to uh do a for loop over a list of objects but you also need the index so you need the object and its index at the same time in python you do like 4x in enumerate my list right i think good oh it's something different but it's like these kind of really minor things um and in exchange like you know it was such a better developer experience um now i think the c-sharp is getting much more mature i think you can also do stuff uh in c++ as well so i think c++ c-sharp gd script those are kind of the the core ones and then i think they're you know like in general bindings for other stuff, if you if
Starting point is 01:17:47 you kind of want to, but you sort of start to leave the I know there's like some core functionality, you want to kind of stay in if you if you don't know that you need to specifically do something or you're on a, you know, quest, you want to say stay in kind of one of those. So the other thing that we alluded to, like I mentioned, when we were talking about entity component systems or the sort of plugins but i think another thing a game engine gets you is again this like core functionality being there and and offering stuff is you can go get other libraries to do things for you so we've talked about that when we talked about unity and they have sort of the marketplace as always like you
Starting point is 01:18:22 know paid and free sort of extensions. Godot has something similar. So there's things that you can go grab and just add in that you really wouldn't want to do from scratch. So you want to show ads, what kind of ads you want to show, you know, like little banner ads or like, you're going to get all of that for you. Or, you know, please, I don't even want to go down, never had to do it myself. But like, you want to offer unlocks or you know in-app purchases or do a please don't freemium game that has micro transactions like you really want to code up all
Starting point is 01:18:50 that stuff by yourself like no so yeah i mean talking to all these different services because you have to talk to the google service for android and the ios service for apple so you're not you you will have to at least code it twice and it's probably going to be very painful godot just handles it what is the in-app equivalent for pc is there one i i don't actually know like is there a dlc right this is okay so like you would just like steam app or through like i don't know like how would okay yeah it's a good so you know i yeah okay there's two types of microtransactions right there's there's dlc and then there's kind of like buying you know uh i guess like cosmetic stuff or
Starting point is 01:19:33 or buying like advancement in the game right um that second one yeah i really don't know what your options are for pc but the first one would definitely be dlc like you could say you know like polytopia is a good example where uh you have to buy the different races you know to play them and and it kind of like unlocks a bit more of the game um and in steam you just make each race a dlc and buy it through there good though when it was early was a lot of tutorials and stuff for platformers and sort of like you know i guess basic phone games you know the sort of casual casual games i guess like 2d stuff but i think and i think that was what you were describing sort of sort of your game to be to ai here is this sort of like but yeah but recently they've added they've been working
Starting point is 01:20:20 pretty hard to become more fully featured as like a 3d game engine as well yeah i mean i don't have any experience with it uh but uh or unity that matter for i haven't done a lot of 3d uh stuff in a long time but um but yeah i think you know godot is trying to be really you know feature complete with unity and unreal and those alternatives, which is great. I wouldn't, my personal advice, I wouldn't start with a 3D game. There are, you know, people will say there's advantages. Like if you have a 3D mesh, it doesn't have to look as detailed as a 2D sprite. Like you could basically get away with a lot more on the art side. I't know i'm a little skeptical of that to be honest i feel like you could have pretty low quality art even in 2d if you have a solid uh game hook um so yeah i would definitely start with with 2d but good dough you know think about good does you if you do eventually
Starting point is 01:21:19 want to get a career in gaming or you do you know you have a vision for a 3d game you want to build yourself up to it you know you could do the whole thing you could build yourself up in godot and know that it'll it'll support your 3d game that you want to build um getting back to your component system something that really struck me that took a while for me to get used to is there's no like main function you know like there's no entry point so the way it works is you attach functions to individual entities so like i attach this function to like uh let's just use mario as an example so you'd actually attach code to a goomba and that code would say like every tick you know move left until i hit a wall then move right and you would like actually just attach that code to the goomba and it just floats
Starting point is 01:22:11 in isolation and you could attach that same code to the turtle uh you could even say in that code like 90 of it's the same but you could even have a clause saying like, if turtle, then like, uh, let Mario turn me into like from a living turtle to a shell or whatever. Um, but, uh, so, so you can do some peering and stuff, but it's not like a traditional program where you start with main and then you set up some things and then you have a for loop that loops through all your characters. Like there's none of that like you're writing like little tiny snippets of code and you're relying on the engine to systematize all of that um that was something that took a ton of getting used to and writing
Starting point is 01:22:56 code that was not garbage uh in that way was actually took a lot of practice um uh but uh but i also once i got used to it i really enjoyed it i like the fact that you know i could just like create a new thing give it some code and it could just live in the in the existing universe um that part of it was really exciting well being the uh one of the two of us that have actually written a game in godot all right you gotta give it a rating yeah so you know i've tried unity um you know i've tried phaser and a bunch of these i definitely give godot an a plus i really loved it um i didn't make any money off my game my game's totally free there's no in-app purchase or anything but if i did i would give all that money to godot they deserve it um so the godot gets a hundred percent
Starting point is 01:23:50 of the proceeds from a hundred percent of zero philanthropist to jason such a philanthropist um i was really really impressed honestly i think if you're getting started this is unquestionably the way to go. You know, I think that Godot is open source, totally open source. You can fork it. You can make changes to it. I mean, all of that. We didn't talk about that.
Starting point is 01:24:16 That's not the reason I would use it. I actually think it is much simpler. Unity is very, very complicated. And, you know, there's definitely advantages to that. But I think if you're starting out, Godot is just such a beautiful, very simple experience. In the same way as Next.js, it is very opinionated. As I said, there's no main function, you know, for your global data. You know, you have to do it using this like special global object. And in the beginning, I was a little frustrated with all of the sort of the opinionated nature of it.
Starting point is 01:24:58 But once, you know, at the end of it, when I launched my game, at that point, I had totally come to understand why they had made those design decisions. So I definitely think Godot is a great place to get started. There's a really solid community. And you never have to worry about licensing issues or any of that. Even if your game isn't a huge hit know it's still a lot of red tape to have to jump through uh getting the professional unity account or i don't even know what it is oh you know with godot it's like when my game was ready you know i just shipped it so uh so yeah i'd
Starting point is 01:25:37 highly recommend it um there's one thing oh there's uh godot 3 and god 4. I jumped on the Godot 4 bandwagon a little bit too early, and it was in rough shape. You actually can't go back. If you go to 4, you can't go back to 3 unless you, you know, you can with source control, obviously, but you lose whatever progress you've made in 4. But at this point, I think 4 is mature enough that folks can go straight
Starting point is 01:26:06 to good to four and uh and it's uh it's been a lot of fun awesome well you know you mentioned earlier but you know shout out to the shout out to the patreon sticking with us and all our supporters and people listening to us i this is a great episode uh game development we always talk about that it's like one of those first things that everyone and all our supporters and people listening to us. This is a great episode. Game development, we always talk about that. It's like one of those first things that everyone always attempts to get in. And so it's a great gateway. I was going to say drug, that sounds bad.
Starting point is 01:26:34 Gateway, just gateway. The great gateway to programming. The great gateway. That's a hard thing to say, great gateway. Great gateway, yep. The great Gatsby. So yeah, it's,
Starting point is 01:26:47 it's awesome. Thanks. Yeah. As Patrick said, thanks so much for our patrons. We're going to do the giveaway. So if you've ever wanted to be a programming throwdown patron, now is a great time.
Starting point is 01:26:57 You could theoretically make money where you could be a patron for a dollar, get a prize and then punch out. You know, we'll, we won't. We won't hold it against you. I will say, actually, I feel a little bit bad. I said this is private, so it's not actually incriminating anyone. Someone did do something interesting. Elect to become a patron, send me a message saying they should be on our show, and then cancel their patronage before we even got one dollar.
Starting point is 01:27:27 I thought that was clever, but I didn't respond. I felt like that was maybe beyond the pale. But being a patron, you know, giving us one buck and then winning a T-shirt, I think, is totally above water. I'm totally quoted. Unethical life pro tips right here. Patrick is shaking his head. I'm out, man. I'm totally cool with it. Unethical life pro tips right here. Patrick is shaking his hand. I'm not, man. I'm not.
Starting point is 01:27:47 All right. Well, hey, it's a pleasure to come record the show with Patrick for you all. We have a great time and we will catch you all on the next one. music by eric barn dollar programming throwdown is distributed under a creative commons attribution share alike 2.0 license you're free to share copy, transmit the work, to remix, adapt the work, but you must provide attribution to Patrick and I, and share alike in kind.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.