I miss the days of learning new software before YouTube

I clicked on the “I want to learn how to code a game” button and then just got lost after the whole list of features boasted about with links :rofl:

To understand spoken text, you need to know the language better than you do to understand written text. Especially since it’s much easier to translate an article.

Seeing does not mean understanding. Explanations are needed for understanding.

Because there are three things you can watch endlessly: a fire burning, water flowing, and another person at work. There are no other reasons for the popularity of video lessons.

3 Likes

I dunno, I feel like my conversational French is better than my reading comprehension. But you may be true. All I can say is that is what I was told.

I think that part of the point was they didn’t need to completely understand. They just needed to do. I have run into plenty of programmers in the last decade who can write code but cannot architect their way out of a paper bag.

Perhaps. I hate watching other people do something when I could be doing it. If I am watching a Godot tutorial/lesson, my editor is open and I am doing it myself.

2 Likes

This is SO ME!!!

This is why I can’t stomach playing video games anymore. Especially PvP shooters. I’d rather be developing them.

Even though I was literally raised off the sub-series, watching Plants vs Zombies shooter game videos on YouTube is like pure agony now.

5 Likes

Same, partially because watching a 20 minute video and remembering dozens of different steps is impossible for me, rather than just going through it as I get the instructions

3 Likes

Ahahahaha… I would much rather have a book too… Brackey’s tutorial took me 6 hours to complete :scream: and alot of it was rewinding the tutorial cause I did something wrong and then something weird happened and having to listen to all the concepts again for a certain part.

Then there’s Clear Code’s tutorial, where he explains the core concepts well, but he talks about alot of subconcepts inside and makes mistakes, and cleans up the code in one second, and u forgot one thing and ooohhhh maaaaann… u got to listen to the whole section again. Then I realised there was a 2x faster button on youtube but I still had to listen to alot. At least with a book, the recovery time is faster XD

Anyway, about Programming fundamentals, the way u do things in a game engine vs a web app are different since Godot is actually kinda like a drag and drop meant for easy duplication with an OO concept forced down its throat. My goodness man, creating a CustomClass should be the same as dragging the Scene itself in… in practice however…

Scene inheritance is a very useful thing. There are good reasons why you may want to reproduce an entire scene using the new Node method for example, like a Player class that is changable that has different powers per character. Unfortunately, it kinda feels abit weird where sometimes u forget u have to right click, inherit the scene and save it to the folder.

It has alot of funny quirks, and I’ve officially over engineered my game abit XD.

2 Likes

There are other OO critics out there that may be more to your liking. Casey’s main point is that performance should be considered an important architectural factor and that Martin’s flavor of OO doesn’t care about performance at all. And Martin actually agrees with this. If you never needed to move more than 500 sprites at once, then performance might not be high on your priority list and you may consider what Muratori says to be irrelevant. However his criticism extends far beyond that. He in fact managed to show that “Clean Code” doctrine is bad in respect to other classic architectural “benchmarks”, like scalability for example.

Here’s an epic exchange between Casey and Uncle Bob. It’s a worthy read if you can endure it. As it unfolds, Muratori slowly and methodically dismantles Bob’s doctrine to pieces right in front of his eyes, on a real world example, basically proving that “dirty” enumerant-switching based architecture beats “clean” virtual call class hierarchy in both: cpu-cycles and “programmer-cycles” (Martin’s term)
part 1
part 2
Bob backed off from the discussion in the “agree to disagree” fashion at a point where it became obvious that Muratori is right.

If you can’t be bothered to read, here’s a nice commentary video:

Uncle Bob is a great showman, a convincing communicator and a decent writer, but he’s not that good of a software architect. It’s a dangerous combination as he can easily mislead many people into unknowingly becoming crappy architects themselves.
Needless to mention that due to Bob’s popularity, his design/coding philosophies probably permeated LLMs in a big way, spreading the “damage” even further.

5 Likes

Would agree. I remember his speech on how a church should look like a church with a cross and pews so u know it is one, while that is very convincing he failed to back it up with practical examples.

I stopped watching halfway because it was just a rhetoric, and he also oversimplified issues with code tracing to a lack of structure, sometimes it can be code repetition, or complex logic not properly mapped out or cut into bite-sized pieces, or premature optimization (had a colleague from a hardware background use bit-shifting and masking to check which fields had already been filled in. Really happened, and the junior dev tried to put the blame on me after I added a new check and “changed the number from 8 to 16” when it was a problem with the front end… I would have just have told the frontend dev to send me all the data at once and do the consolidation on his end, and if the guy walked away to go to the toilet while using the UI in the multi step page transiting thing and the session expired, then he could just do it again but I can’t refactor the code without breaking the front end coded by someone else, so one has to keep the peace with his team mates and do a hack in this case)

I remember the Wiki Page example given where u create a page and then an abstract method to do the call and read a file before using sql.

A much simpler method would be to just use a DataAdapter interface where u define a custom data adapter that serves the page that u pass in on class construction like a SQL dataadapter or a fileadapter, where u have a find method by page name. If u want, u can even use Spring to inject or autowire the different dataadapters

This is basically composing, where u got the whole scene inherited but u can swap out or edit some parts inside within certain parameters like this part of the dish must be a meat, but I leave u to decide which meat u choose.

But I should excuse Uncle Bob. It was in the 90s where spring wasn’t invented or mainstream. And the advantage of the extension was u can immediately see what u were calling by the class name

Also, the guy that refactored the tetris code. Bad… he just made his code like a webapp for no reason.

Global Signals exist in a Game Engine for a good reason. Cause scene changes destroy your data persistence u moron! And you cannot easily hook Signals together cause there are moments where u have edge cases where u design complex features like having added to allow selection of character like street fighter for example.

How do u connect your player signals now that it is not in the scene from the start?

Haha I got angry from following some stuff that destroyed my project abit :face_with_hand_over_mouth:

1 Like

I prefer to read. Probably be tomorrow. I had a long day and I’m wiped. Popped them into tabs tho. Thanks for the links.

1 Like

Wow I missed a lot of conversation!

I agree with what many of you are saying on learning more about programming in general. I have a long history with coding, but must of my knowledge is surface level without much theory, structure, and paradigm. So while I can work out most coding tasks with relative ease, it’s not likely to be the most efficient or proper way of doing it.

To put it another way, I’m like someone who’s learned many words in a foreign language but hasn’t spent much time having real conversations with natives of that language.

That’s one of the main differences I observe is that people today want to learn things more quickly, and/or more easily. They avoid trial and error at all costs.

But I appreciate the difference between the pre-/early-internet times, and now. Today, things are more multifarious in application and it can get pretty confusing how you should approach things. There’s also a lot of baggage with ‘efficiency’ or ‘process’; people are concerned not to waste time.

In contrast: 2 decades ago I learned scripting (my professional field is vfx) , and everything was from a single book, where I typed example scripts to the screen and adapted all I learned to use it for myself or for work. At that time, I wasn’t forced to use scripting at work, but I did so on my own initiative because it was interesting and helpful for day-to-day tasks.

What I miss about learning new software in the ‘old days’ was that it wasn’t complicated by the noise we find nowadays. Internet is too noisy, too stressed, and takes itself too seriously.

Also: video tutorials need to be of higher quality to be watchable. Again, more noise than signal, imo.

3 Likes

If you want/need the Godot environment, yes, GDScript is fine. But for purely a programming experience, you might as well do Python.

1 Like

Now Python on Windows is distributed exclusively via MSIX (the M$ installer). The “recommended approach” is to register with the M$ Store. Godot does not yet have such requirements.

1 Like

Although ‘recommended’, it’s isn’t a ‘requirement’ either. Imo, an install procedure on a OS level is not an unsurmountable obstacle in learning a very useful scripting language. But in any case, the MS Store isn’t a requirement (I don’t use MS Store myself), at the moment at any rate.

The traditional executable installer will stop being released with Python 3.16

What is its greatest advantage over GDScript?

Python is useful for creating or editing Blender scripts. GDScript doesn’t cut it for that.

This is only for Blender users. These scripts cannot be ported and used in Godot.

1 Like

I realise that, but learning any other programming language can only be a Good Thing, and doubly so if one has a real application for it, Godot or no Godot.

I was talking about the first language. But I didn’t say it had to be the only one. In this specific case (game development in Godot), C++ can also be very useful.

I installed Python on Windows with chocolatey. Is that no longer possible?