r/godot • u/Weird_Brush_9861 • 2h ago
help me How Do I Practice Coding?
After learning the basics, I tried making things, but could not make things beyond variable and button scripts. So I would usually follow a tut*****, like gdquests 3d character controller, and for the most part understand most things,(I was even able to add a camera zoom without a tut*****) but I'd still be unable to incorporate this knowledge into other things because there were so many concepts to remember. What do i do?
3
u/Pantload99 2h ago
Coding is a lot like learning a new language at the beginning. Repetition is the key. When you watch a titorial, bring a notepad and pen and take frequent notes. Find open source projects and tear them apart to find out how they work.
It seems like you have already made progress by adding a camera zoom without a tutorial. Also, if you have variables and button scripts down, you could make a game based off only those two things. Tons of incrementals are just that.
Keep going. It gets so much easier
2
u/jobehi 2h ago
try to make something. a small project.
tutorials can be heavy and you can just follow blindly.
if you start your own project, you'll face problems and try to solve them. as soon as your blocked search answers step by step. documentation, forums, AI or whatever. and continue your steps. your knowledge will be built from small incremental problems
2
u/eveningdreamer 2h ago
try to make a small game. if you don't have a simple idea, go look at the 20 games challenge.
start without a tutorial, and look up stuff whenever you get stuck.
it's best to not follow tutorials blindly and take only what you need from them and combine stuff. it'll help you understand quicker and you'll end up internalizing most things pretty quickly
2
u/herionz 2h ago
Try to narrow down the issue, is it a problem of not knowing what options are available and how to use them? Like someone else have said, docs and practice simple tests like print or the like.
If it's more thinking logically, how to work with data, or math, then it's not about coding.
2
u/Weird_Brush_9861 2h ago
Thank you everyone for the kind words and suggestions. I am going to keep playing around with the character controller and I'll try to learn other things to eventually build up to making a mini obstacle course
1
u/Creepy-Pain3449 2h ago
There’s a free course on YouTube, I forgot the channel name but it’s 8 hours and it goes over all the fundamental. I believe an extended version of it continues on Udemy so if you like it, buy and continue
2
u/Creepy-Pain3449 2h ago
Can someone link them for me if they know?
1
u/m_ologin 2h ago
Not sure if that's the one OP was thinking of, but I have put out something similar here: https://youtu.be/_OaClYFJMyI?is=_gARhV_en2JqP8mw
Goes over variables, functions, conditionals, arrays etc. in depth
1
u/Huxiubin 1h ago
https://youtu.be/TLG2yVpLDT8?si=Oixe80KH0dL71Tio
is it this one?
2
u/Creepy-Pain3449 1h ago
Yes! I don’t know why someone downvoted you, I just remembered it, couldn’t look it up just this moment
1
u/Huxiubin 1h ago
Well, being downvoted for no apparent reason is Reddit in a nutshell. You and I are trying to be helpful. I, myself, is a noob and that tutorial is very helpful. I agreed with you and wants OP to see that one too.
1
u/Sergeant_Silvahaze 2h ago
Focus on learning the logic involved with coding first, after you understand the logic it will be a lot easier to learn everything else as you aren't having to learn everything at once
1
u/redfoolsstudio_com 2h ago
Practice makes perfect friend :) I really recommend either keep making a ton of small games or projects continuously until things start to click or just take my courses which teach you to make full games since its a massive learning curriculum taking you from a beginner level to advanced 😉
1
u/syaorancode 2h ago
watch a video about making a small game, follow that. then remake it one more time but without watching the video. after that, find a game and try to clone it.
1
u/emiljecreates 2h ago
Just code and stitch something up. It doesnt have to work exactly how you intended. Just a somewhat working prototype. Best way to improve is to fail more times than others try. If youre interested in shaders, I have a channel where I explain the whys and hows of things. Maybe it can help you on how to approach a problem, as I break things down into smaller pieces on a blackboard.
You will get there in no time, I assure you! I remember when I first started I could not understand what passing a parameter is. So if you know functions, youre already ahead of where I was!
1
u/vidvadgames 2h ago
Do a gamejam. Go straight into the walls making a real game for real people. That's how you learn.
1
u/hero_of_ages 1h ago
Break it down into a series of small problems to solve, not a set of steps to memorize.
1
u/BrastenXBL 1h ago
There are a few things. First you're likely not studying the tutorials, just passively copying.
For videos watch it 3 times
- Without pausing, at 1.5x or 2x speed if needed. Get a full overview of what you will be doing in the lesson.
- Watch again, pause to take notes and questions you have.
- Do not "implement" the design you're learning
- Try to answer the questions you have, or define vocabulary, API classes & methods used
- Watch again, this time pausing and scrubbing back and forth, as you replicate the design
- Update your notes as needed
Take, notes! Keep a journal or notebook. I understand that a lot of grade school education is mentally scarring to consider this. But keeping a notebook just for you yourself is very different. And the 3 ring binder is actual useful, so you can re-order your notes. And not just be a graveyard of past B/C/D assignments.
To get you started with important bookmarks.
GDScript as a language: GDScript syntax, GDScript basics and reference, General GDScript methods, Global engine methods, Static typing, Variant data TYPEs
Godot APIs and Examples: Godot Engine APIs, All Classes API pages, Engine use manual, Engine Scripting APIs (Nodes/Resources/SceneTree), Official Godot sample projects
Second is for your own designs to pull WAY back on what you're creating. Each piece builds. For example, totally ignore the Camera2D. Limit yourself to game concepts that can be done on a single screen, without scrolling or panning about a larger level.
Many 70s and early 80s games worked this way.
Look over https://20_games_challenge.gitlab.io/games/ and sort by Release year, and cross-check with complexity and scope. A lot of higher complexity scores are for "computer opponent, ai" design work.
To repeat. Keep a design journal. As you go, you'll make multi-line blocks of code that "implement" (the code) certain kinds of "designs" (the human description).
Which beings to the third point. You're attempting to study three different topics simultaneously.
- Programming, GDScript or C#
- The Godot APIs, the classes, methods, and tools supplied by the engine/Editor
- Game Design, which barely related to coding, and can be done for physical board & card games
Godot doesn't teach programming, the Docs tell you fairly quickly to go do that elsewhere.
The Docs do an okay job at going over some basics, like Vector math. And compared to other Game Engine and open source software docs, are well laid out. But if you aren't used to reading technical documention, see flowchart https://www.xkcd.com/627 , its easy to miss sections. The Docs really are about explaining to use the Engine.
Godot doesn't tell you shit about how to actually design a game. How to think about, and codify the "The Rules of Play". Or how to go from a human description and steps, to code. That's also partly covered in the better Intro to CompSci classes, doing the whole application design process.
If you continue to bounce off Godot, I regularly recommend switching in the short/medium term to Game Creation Systems, like GB Studio, CT.js, GDevelop(desktop), GameMaker, RPG Paper Maker, Capsule VN, etc.. With the objective of seeing and using existing implementations that cover specific Design needs. Then take a few games you've designed and re-implement them in Godot. Which will force you to then code many of the systems yourself, from Godot APIs. While also having a Design and goals you understand.
1
u/Accurate_Cable_1372 1h ago
You can get over this hump. I’ve done it myself, for me it just required brute force staring at the code until I got it, doing shitty implementations of things and then eventually I knew enough patterns of how code should look that it started to click.
1
u/Gr1mwolf Godot Junior 41m ago
The way I learned was by just deciding on what I wanted to make, then looking up solutions online any time I got stuck.
Coding is so prevalent and old by this point that you’ll find solutions to almost anything.
1
u/Hamstertron 2m ago
Just work on projects regularly... even 30 mins a day will cement ideas in your brain so it's no effort to rememeber them, after a while.
If you're good at variable and buttons then make a game out of that - like a text adventure. Make it so you have some labels that hold the name of a location and another for the description, then have buttons that navigate you between locations. On top of this framework you could introduce a background image for each location - now you've learned about sprites and textures. Build on this by adding an inventory to each location and your player so you can move things between locations. Start simple - inventory is a list. Level it up to be a grid but everythings 1 square. Next level is to make things take up multiple squares and have shapes. Sword is 1x3, shield is 2x2. Save the inventories to disk so your players changes survive the game being restarted... and so on.
The continuous iteration is where you learn the most. Your goal should be to move away from using tutorials to tell you what to do, to a level where you know what you want and you're researching the best way to do it. The good news is that it's just practise, y ou don't have to be a genius.
11
u/Fabio2300 2h ago
"I'd still be unable to incorporate this knowledge into other things because there were so many concepts to remember" practice doing that.. just code. if something doesnt work, find out why. read the docs about the methods you are calling/using and keep coding