3
\$\begingroup\$

I felt like I had gained a decent grasp on core coding concepts (variables, if statements, loops) and I familiarized myself with Godot, so I wanted to start making small games to learn more by actually putting the core concepts into practice.

I started making a small arcade style beat 'em up that's just 1 simple level with a boss at the end. I coded the movement and the idle and run animations and it was all good, but then I started to primarily rely on ChatGPT to teach me how to implement more features like simple attacking and enemy hurt boxes.

What I would do is ask it something like "I want to implement attacking, can you teach me how and explain to me what the code does?" and at the start it was cool because it would just straight up write me code for attacking and teach me the types of nodes I needed to use.

I still made sure that I actually understood what I was writing, but as time went on I started encountering a ton of problems. The code that ChatGPT would write me looked correct logically but it rarely worked as intended in Godot. It would always do something unexpected and wrong. I would try my best to explain to ChatGPT and made sure it actually understood what I wanted, but the logic would always have some kind of bug.

Then I would spend hours debugging the issue with ChatGPT. It knew how to write logical code for one feature, but it never worked as intended when put in with the other features.

I posted here about my coding issues twice and multiple people told me that my coding logic is strange and looked cluttered.

So I started realizing that using ChatGPT as a primary tool was a mistake. I could've just searched "how to implement attacks in Godot" on YouTube and I could've found a straightforward and simpler method for it. ChatGPT gave me strange and complex methods that never worked right.

Don't get me wrong, I know the coding basics, and I want to learn more by actually applying the things I learn in small basic games instead of just entering analysis hell where I would watch like 36 hours of tutorials and then never apply anything.

I just need to revamp my strategy and only use ChatGPT as more of a side tool for small logical issues and not having it build the whole game for me.

I'm going to watch more tutorials on YouTube for the specific things I'm gonna implement, but what other strategies can I use to overcome these problems?

\$\endgroup\$
5
  • 4
    \$\begingroup\$ It helps to keep in mind that GPT could be thought of as T9 on steroids. It can mash up things that look good together, but it doesn't know what are they and if they make sense together or not. \$\endgroup\$
    – Kromster
    Commented Feb 21 at 10:54
  • 1
    \$\begingroup\$ I think a good tutorial should cover the basics as well as the rights and wrongs of following certain principes, so personally, I recommend watching a tutorial series about creating a specific game genre. But don't try to "binge" them too much, as that can feel too overwhelming. \$\endgroup\$
    – Steven
    Commented Feb 21 at 11:19
  • 2
    \$\begingroup\$ Although AI coding is generally not great, have you tried Microsoft Copilot? I personally think it's quite underrated, the reason being ChatGPT has no access to the internet and is trained on old data, whereas Copilot can actually research whatever you ask and explain it in detail. It's also based on GPT 4 so its using a more recent model for free. \$\endgroup\$
    – Pow
    Commented Feb 21 at 13:01
  • 1
    \$\begingroup\$ Not worthy of an answer, but the Godotneers channel on YouTube has some brilliant tutorials to help you actually understand what you're doing with Godot and GDScript. \$\endgroup\$ Commented Feb 21 at 18:45
  • 1
    \$\begingroup\$ Sounds like you're doing great! Just set a smaller goal for yourself so you don't get stressed out by it. Try to do a "dumb," simple game that's fully within your ability before trying to do something huge. \$\endgroup\$
    – jpaugh
    Commented Feb 22 at 3:40

2 Answers 2

9
\$\begingroup\$

Practice, practice and again, practice. There is no shortcut as you found out with chatGPT. But instead of watching a lot of Youtube tutorials, you should try to implement the one you are watching, step by step.

While there are a lot and good tutorials out there, I would pick a series of multiple smaller episodes. The problem with a tutorial that covers a single aspect might produce the same problem you have right now with chatGPT. You managed to get a single piece working but it might not fit into the rest of your code. By picking a series of tutorials, they build on top of the other parts and you can be sure you have a working something at the end.

Instead of just watching the whole thing, break it down.

  • Give the episode a watch first, don't try to copy anything at all. Just watch it.
  • Try to reimplement it as good as you can first. If you are stuck, compare it with the video.
  • Repeat step 2 until you can do it without the help of the video.
  • Try to apply it to other things. Not everything will be possible to transfer, but even thinking about where else the knowledge could be used will help.
  • Write down the topic once you feel confident about it and retry it after a week or two again. A single line instruction like character controller, jump controller, audio system, etc on the paper and just make that single part.

A game usually is just an accumulation of the basic building blocks that are repeated over and over again. By making sure you have the basics down, when you make the game yourself, you just need to pick the correct ones.

Another helpful advice is to start small. Finishing a full game as a beginner is a very hard. It is advised to not make your dream game as the first game (not even after you finished a few even). There are a few games that are simple and incorperate the essentials of what makes a game. They are as well a good fit to try out new engines in how well you can make them.

What are good games to "earn your wings" with?

Quoting DMGregory (to keep comments for the future)

"Combat is a tar pit" is a mantra among some game developers, because what feels effortless to the player takes a huge amount of interacting features and fine tuning to make it feel good. Practicing the skills in simpler combinations like a Breakout or Space Invaders clone can be a good way to reduce the up-front complexity and see early successes to keep motivating you on your learning journey, rather getting stuck in development hell on a game that's a bit too ambitious. You can always work up from those tiny prototypes

\$\endgroup\$
2
  • 2
    \$\begingroup\$ Yup, I think a beat em up, no matter how small, is too much for a first project. It's easier to be motivated to start another project if you finish your first one. :) \$\endgroup\$
    – Almo
    Commented Feb 21 at 15:40
  • 3
    \$\begingroup\$ Also, work on trying to break stuff. Once you've made a game, try to find creative ways to break it. That's invaluable experience, since the last thing you want is to bring in playtesters and have them find some gamebreaking bug five minutes in, because that's a waste of both your time and theirs. \$\endgroup\$ Commented Feb 21 at 21:01
1
\$\begingroup\$

Learning techniques have a floor and a ceiling. That is how much you need to know to start using them (the floor), and how much you can learn just using them (the ceiling). ChatGPT - and other large language models - has both a low floor and low ceiling.

Of course, you can follow tutorials, and you can ask questions.

Since we are talking about Godot, I want to point out that there is a short curated list of tutorials on the official documentation: Tutorials and resources. And yes, you are going to hit a ceiling with them too.

In general - not just with ChatGPT - it is easier to write code than to fix the code. For example, if you were to ask here or in stackoverflow, you might get code snippets written for you... If you copy and paste without understanding them, the moment you need to fix a bug involving them - or modify them because they no longer match your requirements - you are going to run into trouble.

Thus, reading and understanding is important. In fact, there is a lot to learn if you go to open source projects and start reading. Howevever, that has a higher floor.

You can also improve your understanding by experimenting. Take working code and make changes, see what happens, learn from that.


I strongly advise you to develop system analysis skills. That is, breaking your problems into smaller problems. Try thinking about the system you want to build in terms of smaller components interacting, and also try thinking about the path that information takes inside the system so you can break it into steps.

So your project gets broken down. Either into steps or into components, or both. And each one of those you can break further down. Eventually it gets to the size of writing a function, which is broken into lines of code.

It is a way of thinking and you get there with practice.


Of course, I agree with the advice of starting small.

If the project is too big you might not even know how to begin to break it down. However I want to add a few things:

  • You don't need to have a full view of your project to begin.
  • You might fail to complete a project and still learn.
  • Having the motivation and grit to see the project to the end is big factor to its completion.

If a project is too big, complex, or hard, it might be daunting and make you feel frustrated. If a project is too small, simple, or easy, you might find it boring.

Since you are not starting but you have done some learning already... You need to figure out a project that is right for you, so you can stay motivated doing it. A good floor, and a good ceiling, for where you are.

You don't know what project to pick? It is by feeling. Do you feel motivated to do it? Do you feel you have a good grasp about how to go about it? Good, try it. Even if the project you pick is not the absolute best choice, or if you do not complete it, you would learn. And you might even have code to reuse in later projects. It is not wasted time.

And, of course, that is just one step in your journey. We are breaking the project of learning game development into smaller steps: projects. And we do not have a full grasp of the whole process, in fact we can argue that we never finish learning... Yet, that shouldn't stop you.

In this answer, if you read between the lines, there is also a lesson about game desing, difficulty curves, and target audience.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged .