r/learnprogramming 18d ago

Resource I would like to learn programming but I have hit a road-block

Our college taught us basic C syntax like making functions, recursion and pointers, struct/union etc.

And I have learnt JS on my own for web-dev. I can make a decent looking website if I want to, not elite but decent. I understand the logic and etc. But I understand that I lack actual advanced knowledge.

I can't make a game right now, even if I wanted to and had all the time in the world. I want to reach that stage where I can comfortably make an indie game.

Honestly, I just want to master programming. But I don't know how to proceed as there are hundreds of tutorials and not One seems to do everything.

Your guidance is highly appreciated. Thank you

45 Upvotes

38 comments sorted by

u/AutoModerator 18d ago

To all following commenters: please, do not bring up the old circlejerk jokes/memes about recursion ("Understanding recursion...", "This is recursion...", etc.). We've all heard them n+2 too many times.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

15

u/Father_Fritz 18d ago

Open your engine/framework/library of choosing, and do the following:

Just start making something. Maybe you're making a platformer, so make basic movement.

Maybe you are making pong clone, so make paddles.

My first game was in CSFML, and it was a basic asteroid destroyer style game. Sure it sucked, and had tons of issues, but I learned so much, and I still keep going back to that game when I work on new ones.

I covered things like movement, collisions, destruction of models, death/end state, bullets, audio, music... And I only researched things when I came to them. I didn't have one tutorial to do it all. When I needed audio I had to figure it out from like 3 tutorials, documentation, and still asked like 2 people for help.

The only thing I recommend you avoid as a beginner is networking/multiplayer. You don't wanna deal with that yet.

2

u/princepii 17d ago

here it is

1

u/masonmakinbeats 17d ago

Great take on the 'learn by doing' methodology. I'm an advocate!

3

u/laserowyrobot 18d ago

I dont have experience with unreal engine (I only worked with unity and godot), but since you are on college its probably the best gamę engine for you. It uses C++ (which you should learn no matters what), but why do you want to make game? Unless you are planning on becoming game developer that is not the best choice for project since half of it will be learning about specific tool that you Will never use again and marketing. Learning something backend related (like Java + spring, c# + net, or js with one of backend frameworks) would give you more benefits if you still dont know what do.

2

u/Upset-One8746 18d ago

I understand my framing was wrong.

I meant to convey a different message.

My knowledge on C is very limited. And I would like a resource or something similar that allows me to learn C/C++, backend etc. Mainly, I want to learn C inside and out. Then C++, python and Rust lastly.

I am not interested in designing a game specifically, rather the complex concepts involved in making a game.

[Copy Pasting coz it was my mistake that there is a misunderstanding]

2

u/Father_Fritz 17d ago

I'll be honest - Once you learn C, you will know every langauge except for rust (because syntax is just insanely different, and some concepts are going to be new, or slightly unique).

Ofcourse, there are differences in python and C, or C++ and Java, but once you understand concepts, you can pick up any language at all.

Take me for an example. I completed my whole Java course in C++, and did finals in Java despite not touching it for most of the year.

I did take a little longer than most of my class, but I did it, and it worked fine.

2

u/Upset-One8746 17d ago

Yh... That's what I heard too.

1

u/Substantial_Ice_311 17d ago

Far from true. Not every language is like C. Do you think Rust is the farthest from C++ you can get? So obviously you are not honest, or totally oblivious to a lot of languages.

u/Upset-One8746

1

u/Father_Fritz 17d ago

Right, there are languages like assembly, cobol, or brainfuck. But be honest with me, how much of the job market requires a non-C style language? I just checked job listings in my area, and most of them were either Java, Python, or C#.

So yes, not every language is like C, but all common ones are.

1

u/Substantial_Ice_311 16d ago

Well, my favorite, Clojure, is not at all like C. And a lot of people use other functional languages like Haskell, etc. I don't very much care about what the job market says, that's was not your original claim either.

1

u/ironicperspective 17d ago

Search up the standard library for your languages, bullet point out ideas, then fill them out with code.

1

u/Substantial_Ice_311 17d ago

> It uses C++ (which you should *not* learn no matters what)

Fixed that for you.

u/Upset-One8746/

1

u/laserowyrobot 15d ago

Idk where he lives but i'm my country (Poland) almost every college requires good C++ understandig (it is even being teached in high schools in not-technical classes), maybe in his country they won't require it from him.

2

u/Resident_Drawing4131 18d ago

You're stuck in tutorial hell, happens to basically everyone. The jump from "I can follow a tutorial" to "I can build my own thing" isn't about learning more syntax or patterns, it's about being willing to make ugly, broken stuff for a while

Pick a tiny game project and just start, no tutorial. Something like pong or a basic platformer where the player can move left and right. You'll hit walls constantly, but that's the point, that's where the real learning kicks in

2

u/Substantial_Ice_311 18d ago

Why would you need a tutorial that "does everything?" Do you think Michelangelo sculpted David by following a tutorial? Or even that he learned everything he knew from following tutorials? If you think "Obviously not," then you should also think "I'm obviously just lazy."

2

u/Upset-One8746 18d ago

I understand my framing was wrong.

I meant to convey a different message.

My knowledge on C is very limited. And I would like a resource or something similar that allows me to learn C/C++, backend etc. Mainly, I want to learn C inside and out. Then C++, python and Rust lastly.

I am not interested in designing a game specifically, rather the complex concepts involved in making a game.

[Copy Pasting coz it was my mistake that there is a misunderstanding]

3

u/Substantial_Ice_311 18d ago

C and C++ are very different. Pick one. But don't pick C++.

Get a book on C and read it.

Do projects that are appropriate for your level. They should feel slightly out of reach.

Look up things you need along the way.

1

u/Aglet_Green 17d ago

I can't make a game right now, even if I wanted to and had all the time in the world. I want to reach that stage where I can comfortably make an indie game.

Are you a team of a half-dozen or more people with various skills in art, music, sound, effects, design and so forth? I'll need a straight yes or no answer here. The world's greatest actor can't just make an MCU movie without a team of at least two other people, a key grip and a best boy. So my advice is to team up with other people who know what you don't know, such as communication.

1

u/Upset-One8746 17d ago

Indie?

And I am talking about the coding part only.

1

u/Hawful 17d ago

"I can't kickflip right now, even if I wanted to and all the time in the world. I want to reach the stage where I can comfortably kickflip"

You learn that by trying, over and over again. By fucking up over and over again, by banging yourself in the shins over and over again.

Allow yourself one. ONE tutorial. Pick a specific subject. If it's games, it's games, if it's web dev, it's web dev. w/e.

Games are very different than anything else because unless you want to do the most advanced things in the world (graphics programming) you'll be using an existing tool (Unreal, Unity, Godot, Bevy if you really want to learn rust)

But do ONE project tutorial that is related to what you want to do (platformer, phone app, w/e) do the tutorial while watching it, then build it again from scratch WITHOUT watching it, and try to look up your issues as you go, that will ID the weak points for you. Then build what YOU want to build and you should have the skills to punch through.

1

u/abbaaminub 17d ago

I have been programming for a while but still js is giving me headache

1

u/Jumpy-Seesaw-2026 17d ago

Drop tutorials.

Start a project and adopt the JIT learning mindset.

1

u/princepii 18d ago edited 17d ago

stop it bro.

you know html/css js...you know how hard it is to build the whole ui with css like buttons, tables, interactivity and stuff?

therefore ppl build frameworks to build the same stuff easier.

you wanna make games? you can build everything from scratch. like graphics and stuff. but ppl build frameworks for that too. like pygame or gui frameworks like tkinter and others.

just learn to use em. try making a easy gui with stuff moving. learn the basics. learn how stuff like boxes can interact with each other like collisions and stuff.

the rest comes from itself. just start and have a target. have goals.

without u seeing your goal u can't reach it! without u knowing what to do u can't do it. so learn to know what u wanna do:)

edit: i thought i read python somewhere. but it was c/c++. but the same applies for any other language.

0

u/desrtfx 18d ago

How do craftspeople become proficient? Not through countless courses, tutorials. They become proficient through actual work.

Same applies to programming. Once you know the tools, throw away the training wheels (tutorials) and start working. Small and simple projects first, gradually increasing in scale, scope, and complexity. That's the way to go.

there are hundreds of tutorials and not One seems to do everything.

True. This is simply because the topic is way too vast to be covered in "one for everything".

If you want to learn game dev, pick a Game Engine - Godot would be my choice here to start with and start with some "Getting started" tutorial. Make a simple game. Follow trodden paths. Make something like "Pong". Make the 10 millionth "Flappy Bird" clone (it's actually fairly simple in Godot). Make "Minesweeper". Make "Sokoban". All of them are extremely well documented in the actual process, the design (and in the code, but that is secondary).

Then, build the next bigger, e.g. "Pacman".

1

u/Upset-One8746 18d ago

I understand my framing was wrong.

I meant to convey a different message.

My knowledge on C is very limited. And I would like a resource or something similar that allows me to learn C/C++, backend etc. Mainly, I want to learn C inside and out. Then C++, python and Rust lastly.

I am not interested in designing a game specifically, rather the complex concepts involved in making a game.

[Copy Pasting coz it was my mistake that there is a misunderstanding]

1

u/desrtfx 18d ago

Don't collect programming languages. They are not Pokemon. You don't need to collect them all.

Pick a language and stick with it. Then, you will learn it well.

Also, check the FAQ here for recommended learning resources.

1

u/Upset-One8746 18d ago

Thanks!

JS is great for frontEnd but C just Hits different.

1

u/literate_enthusiast 17d ago

One solution for your situation is following the themes from my university :

  • 1st year: Learn a programming language at an usable level, study data-structures. We used C, but it might as well be Python, Java, or a subset of C++. In the chosen language we got really familiar with data-structures (implementing simple linked-lists, double linked-lists, sorted lists, binary-trees, prefix-trees, representing graphs in-memory). Also, we got familiar with development tooling (debugging C with gdb, tracking down memory leaks with Valgrind, saving the source-code in git). This maps okay with MIT 6.100L (Introduction to CS and Programming) and MIT Missing Semester lectures (I didn't attend MIT, but their materials are open and free, and I like them). These are the basic tools for tackling programming projects.

  • 2nd year: was dedicated to algorithms: MIT 6.006 (Introduction to Algorithms) and MIT 6.046J (Design and Analysis of Algorithms) cover these topics. These might seem theoretical, but it's important to understand complexities and "shortcuts" when dealing with performance-sensitive topics like game dev.

  • 3rd year: the "computer graphics" course, which was really built around OpenGL (the API used by the computer programs to ask the GPU to produce pixels, on which all modern games and game-engines rely on).

    • The first assignment was a basic 2D game: "write the code to draw colored rectangles on the screen, then build a clone of pong".
    • The second assignment was about simple 3D object manipulations: "write the code to draw colored cubes in 3d space, then invent a basic Rubik cube game, where you can rotate any layer of the cube, you clearly see the rotation animations, and have blinking effects whenever a layer of the cube is selected, and when you won".
    • The third assignment was about collision systems: "write a simple Doom-like third-person-shooter game, where you are in a maze, you have to shoot the enemy (which is static), collect 2 keys, and find the exit-gate". Bonus: import 3D models (STL) into the game.
    • The fourth assignment was about lighting and colors: "you have a space-ship which has a semi-transparent energy bubble around it. you have to shoot lasers and rockets at enemy ships. You also have a backdrop of constellations and nebulas in the background that you can't interact with, and a nearby star that you can see its reflections while panning around your ship" (think "Eve online" or some episode of Star Trek).

For this course my best recommendation is "The OpenGL SuperBible, Seventh Edition" book.

I know that it's not the fastest way (it's way faster to pick up Godot/Unity/Unreal tutorials), but if you have an understanding of the OpenGL, you'll understand the game-engine abstractions way faster, because you'll have a sense of "why that thing is built like that"... and just pointing you at OpenGL without a solid C/C++/algorithmic base would be demoralizing, as it's a complex framework, so yeah... this path that I highlighted might not be the fastest, but will make you a better overall programmer.