On coping with failure
A good friend of mine pointed out (rightfully) that Iâd been doing a whole lot of talking about the game I want to make, and doing things kinda-sorta adjacent to it like working out details and the visual presentation (Iâll write about that in a later post), but not a whole lot of actually learning the engine. So I decided to really buckle down and give Godot a try.
After all, you canât make a game with nothing but a design document - you need practical experience. And since I had next to no experience actually using the engine as opposed to watching videos, it was time to build that experience.
So I watched more of GDQuestâs Getting Started With Godot in 2021 playlist, most notably up to the âHow to use Godotâs signalsâ video. I figured that was about all I needed to do some really basic playing around.
On the one hand, I was correct - on the other hand, I wasnât ready for something like 3 hours of banging my head against a wall trying to get extremely basic things to work. (Given my prior experience with learning coding that was more or less exactly this, youâd think I would know better by now.)
Letâs backtrack a bit. Godot games, as far as I understand them, are largely composed of three things:
Scenes
Nodes
Signals
Nodes are your simplest building blocks. Scenes are a bit of a misnomer, because theyâre more like... a container for nodes. If a scene is a toolbox, then nodes are the tools inside.
Despite the name âsceneâ, they are not related to scenery (I mean, they can be, but not inherently). A scene can be practically anything - so for example, a player character, an enemy, a stat bar, or, yes, your gameâs scenery.
A good example is the protagonist of your game. Your Mario or your Link. They are a âsceneâ, as odd as that sounds. So, this scene might have a sprite node (your characterâs appearance), a collision node (the hitbox), an audio node (sound that plays when you jump or get hurt), etc.
Again, itâs basically a box of parts - any components that a player character needs to function. The scene itself is a mere container and a label. Anything in your game that has a few interlocking parts, even if itâs simple? Probably a scene.
So once weâve made our player characterâs scene, what do we do with that? Well, the neat thing about scenes is that once you make a scene, you can drag them into *other* scenes. If you have an overworld scene, you can drag your player character scene in, then some enemy scenes, and an item scene... et cetera. In other words, you design various parts of your game, then put them all together in a bigger scene.
And you can use as many instances of a single scene as you want. Want 4 goombas? Drag the goomba scene in 4 times. And if your Goomba turns out to have a bug in its behavior, fixing the original Goomba scene will automatically fix it for all 4 of those Goombas.
Another neat thing is that scenes can act like nodes. In other words, you can take simple parts, create a slightly more complex object, then put it inside of a bigger object. Maybe you make an Oil Pan scene and an Engine Block scene and you add those together to make an Engine scene. Which then becomes part of your Car scene, which also has four Tire scenes, and a Wheel scene, which in itself is in a Garage scene... et cetera.
Thereâs no end to this nesting. You can go as simple or as complex as you want with it. Itâs all made in the service of making parts of your game easier to design, reuse, and debug.
For example, you could make a base Animal scene for behavior you know you want all animals to have (like walking, eating, drinking water). Then you make a Cow scene with the Animal scene in it, but now you add some features unique to cows. And a Goat scene that does the same with features unique to goats, a Horse scene, etc. You didnât have to program in those basic features for each animal because you created that âpartâ and reused it.
But itâs kind of overwhelming. And the terminology, to be frank, kind of sucks. âSceneâ is just a really unnecessarily confusing term. I think itâd be much easier if you called nodes âattributesâ and scenes âobjectsâ or something, but Iâm sure those words are taken by other game engines so itâd get confusing? I donât know.
It takes a bit of getting used to. And to be honest, itâs part of why I bounced off Godot a few times. But I feel a bit more comfortable with it now.
So! Signals. Signals are how your scenes (and the nodes within) *talk* to each other. In other words, if we were making Super Mario in Godot, and Mario jumps on a goomba, how do we have Marioâs scene talk to the Goombaâs scene?
The Mario scene has a hitbox node. It detects collision, checks if itâs from the bottom (so Mario jumping on something instead of running into it), and sends out a signal. It says, hey whatever I jumped on, you should probably die now? And the Goomba scene receives that and is like, âYeah manâ and deletes itself. Itâs also received by the sound node that plays a fun little noise. Itâs ALSO received by the score scene, which increases score, and sends a signal to the UI scene, which is supposed to update every time the score changes.
Or maybe you jumped on spikes instead. So the hitbox node would need to check if it was an enemy you jumped on, or spikes. And if itâs spikes, itâd have to send a message to Marioâs health node to make him either lose his mushroom or die, and that would send a message to the sound node, saying âplay either this sound or that soundâ. Et cetera.
Once you wrap your head around it all, itâs not too bad. But there are problems like... picking the wrong node for something, because you donât know what to choose. Or something not working and you donât know why. Or having to redo an entire thing because you were stupid and didnât set it up right.
Or... maybe you went about it in a really inefficient way just because you didnât think about it right in the first place, because programming and ANY software development means learning to think about things in the most efficient ways.
These are normal steps. Theyâre all part of learning. You canât really sidestep them unless youâre watching tutorials that teach you off the bat the most efficient ways to do things, but even then, youâre going to need to go off script and make your own mistakes if you want to make games beyond Babyâs First Unity Platformer.
And God, itâs normal, but it can be really irritating when it takes you three hours to do something that feels like it shouldâve taken - and will, in the future - only 30 minutes.
For a bit of an odd segue...
Iâve been learning Japanese on and off for a while, and though I canât say Iâm any level of âgoodâ at it, Iâm often struck by the parallels between natural language and programming languages.
Thereâs often this impulse, especially if youâre a newbie, to translate a sentence or sentiment 1:1 into the language youâre learning. A few months ago I was looking up how to say âhello from Americaâ in Japanese, as kind of a friendly âhi, sorry my Japanese sucks ass, Iâm a dumbass Americanâ sentiment. Itâs a common enough sentiment you hear enough times from other overseas folks that I assumed it was fairly universal - greetings from France, and whatnot. I didnât really think anything of it.
But Google pretty immediately told me that yes, while you can say ăąăĄăȘă«ăăăăă«ăĄăŻ (very literally, âhello from Americaâ), it will always sound artificial and translated because it simply is not a phrase that exists in Japanese. It sounds very normal to a native English speaker, and certainly, the meaning would get across, but it comes across as odd.
Itâs sort of like if I said to you, âNot like weâre riding on a rabbitâs backâ. From context, youâd probably be able to glean that I meant âWeâre not in a hurryâ, but it would sound very strange, because that is an idiom that only exists in Finnish, not in English. (Sorry to any Finns if ei tĂ€ssĂ€ jĂ€niksen selĂ€ssĂ€ olla isnât a common phrase or something, I got that off Reddit.)
In other words, itâs not enough to know how to say every individual word in another language. Itâs also about learning the right way to do things. Youâre not trying to be a dictionary that translates every word 1:1. Youâre trying to learn to think in another language, and abandon your preconceived notions.
You arenât supposed to think of an English sentence and translate it. Youâre supposed to think of a sentiment, a concept, one without language, and in your target language, express that in a way that is natural - as you would in your native tongue.
Programming, and developing in an engine, feels a lot like that.
Programming is not just learning what an if/else loop and a function is. Itâs learning to properly consider concepts from the very start, so that you can write them out as efficiently as possible. You have to learn how to break down broader ideas and translate them into code, or code-and-nodes-and-scenes-and-signals-or-whatever.
You have to fundamentally change the way you think about problems. You cannot look at it in the way youâre used to. You have to view it entirely through the lens of whatever tool youâre using. And, using that, you have to figure out the best, most efficient solution for the problem.
And then do that like, 200 times.
And, of course, you canât learn the most efficient ways until you bang your head against the less efficient ways, and learn why those ways suck, and what ways work for you.
So, then, to the crux of this post: Itâs honestly humiliating. And overwhelming. And I took a break for like a fucking week. My first real attempt at working with Godot, and it demoralized me so much that I stopped for a week.
(Pictured: This took me hours, and only one of the buttons works.)
I have trouble with stumbling blocks where if I run into a significant impediment, I get very demoralized and stop. Itâs derailed projects for me more times than I can count. I think a lot of ADHD people can probably relate. But the problem is - when you get used to only doing things that donât involve a lot of failure and risk, it really limits your opportunities.
I just wanted to admit that, like, this is fucking hard, I guess. And itâs okay for it to be hard. Itâs okay to be struggling to learn something no matter how old you are. But that Iâm not going to give up, either. I made this blog for a reason - to stay accountable.
I am tired of leaving behind a string of failures.
Iâm going to go back to watching tutorials, and see if I canât get a little more insight into what the best way to handle certain things is (like lowering and incrementing stats). Then Iâll come back, and Iâll take another crack at it. And weâll see what I can do.
And I will probably bang my head against the wall for another 3 hours, and accomplish far less than Iâd hoped in that amount of time.
But I will have learned something. Hopefully.

















