The Entrepreneur Forum | Startups | Entrepreneurship | Starting a Business | Motivation | Success

EXECUTION Learning C (Game Programming) Progress Thread

Accelerate wealth. Build a business that pays freedom. Join more than 70,000 entrepreneurs and register for the Fastlane Entrepreneur forum. Remove ads? Join the INSIDERS.

lowtek

Legendary Contributor
EPIC CONTRIBUTOR
FASTLANE INSIDER
Read Millionaire Fastlane
Summit Attendee
Speedway Pass
Oct 3, 2015
2,102
6,845
1,510
39
Phoenix, AZ
Update Thread 1/30/19-2/6/19:
I have been struggling to no end. The lecture series I have been following is starting to go over my head. And I am not doing so well on my first project in C. In more detail below:

1) I watched lecture 5, and 6 of the Stanford lecture series. The professor is going into detail on topics such as linear search and the stack, which are things I probably shouldn't attempt to tackle yet. I wasted a few days trying to understand these lectures, to little success. It's hard for me to take interest, my eyes just glaze over watching this series at this point. I take the L for this one.

2) I decided the best way to learn how to create a proper text adventure was to follow a tutorial, and I found this one which I've about halfway completed. I think text tutorials suit me more than formal lecture series, to be honest. You live and learn. I am going to use what I learn from this tutorial series to actually create a finished project. (hopefully) I am tired of just consuming content instead of creating it.

Plan for next week 2/6/19-2/13/19:
I did not make the progress I desired this week. Not going to sugarcoat it. I think I got too caught up in passive consumption instead of active creation. But I have a short attention span. I like to create things more than just learn about them. I tried this week to just follow tutorial series but quickly became bored. And instead of pivoting I just tried to persevere through it.

I think next week I need to focus 100% on programming. No lecture series. No BS. Just learning and fooling with code. And hopefully I can finish something, however small or insignificant. I am embarrassed how much time I wasted this week. I had some personal issues to resolve and that was part of the problem. Expecting next week to be different, for my sanity if nothing else.

I'm rooting for you.

If you want a project not related to games, check out this one

Learn C • Build Your Own Lisp
 

Don't like ads? Remove them while supporting the forum. Subscribe.

lowtek

Legendary Contributor
EPIC CONTRIBUTOR
FASTLANE INSIDER
Read Millionaire Fastlane
Summit Attendee
Speedway Pass
Oct 3, 2015
2,102
6,845
1,510
39
Phoenix, AZ
I suggest you switch to C++ and start applying the new knowledge building stuff ASAP.

Take a look at this link:

The Definitive C++ Book Guide and List

If you're interested in videogames you'll have to learn even more stuff, like patterns and algorithms for game logic and the different ways game engines and other frameworks make use of the different C++ methods to build games, so it's another layer of stuff to learn.

And this takes time (a lot).

I thought about learning C too, "because it's cool", but at the end of the day finishing projects and prototypes is what will give you the learning experience you need and will teach you proper good coding practices.

Finishing and releasing titles is what you need and what will give you the competitive edge in the business, much more than reading and learning different languages.

Getting your hands dirty is what counts, solving the next problem at hand and then the next one.

I generally agree with you, and switching to C++ isn't a stupid suggestion. My only complaint there is that it's easy to get lost in the complexity of the language. Which C++ are we talking about here? The various iterations are so disjointed that it's easy for a novice to get confused.

IMHO it's easier to learn the fundamentals of programming with a language that isn't so complex that even the people who wrote it don't comprehend it fully.
 

masterneme

Silver Contributor
Read Millionaire Fastlane
I've Read UNSCRIPTED
Speedway Pass
Apr 13, 2015
301
767
290
38
I generally agree with you, and switching to C++ isn't a stupid suggestion. My only complaint there is that it's easy to get lost in the complexity of the language. Which C++ are we talking about here? The various iterations are so disjointed that it's easy for a novice to get confused.

IMHO it's easier to learn the fundamentals of programming with a language that isn't so complex that even the people who wrote it don't comprehend it fully.
Yeah that's definitely a problem.

Maybe starting with something like raylib could be a good option before trying more advanced engines/frameworks.
 

SputnicK

Contributor
Read Millionaire Fastlane
I've Read UNSCRIPTED
Dec 23, 2017
18
24
25
Update week 2/6/19-2/13/19 (WK3):
I took @404profound's advice this week and am now focusing more on "fundamentals" of C. I followed a 4.5 hour tutorial series covering the C language, some of which was review but it also covered a significant amount of material. It was a great beginner guide overall.

I also finished the essential segments (up to segment 9) of the C text adventure series I started last week. This series is extremely complex for such a seemingly simple topic and some of the implementation was outside my grasp. I think it was good practice regardless and I enjoyed following it.

Here is a link to my personal code from the C text adventure series I followed. It is a few hundred lines and demonstrates the basic proof of concept even though most of the locations and items are undefined. I used the online compiler OnlineGDB.

Links:
C Programming Tutorial | Learn C programming | C language
How to program a text adventure in C
Personal code from text adventure series

Plan for next week 2/13/19-2/20/19:
I want to focus this week on consistency more than anything. @Rabby made a very good point that programming requires daily practice, and this week (just like last week) I put it off until a couple days before my next update was due. I plan on spending at least 45 minutes every morning on programming next week so that it doesn't get put off and disregarded. In the long-term making this a habit will yield greater dividends than more intense but inconsistent methodology in the moment.

In terms of results, I will continue to learn and strive to master fundamentals of C. I will follow some more tutorial series but also attempt to practice more of what I have learned. I don't like going three weeks without displaying tenable projects of my own, so next week expect something of that nature, even if it is only as simple game simulator (such as Tic-Tac-Toe.) I saw a thread the other day on this forum stressing the importance of "showing" instead of just "telling" and I'm afraid I doing too little of the former and too much of the latter. Hope I can improve in this regard.
 
Last edited:
D

Deleted50669

Guest
Update week 2/6/19-2/13/19 (WK3):
I took @404profound's advice this week and am now focusing more on "fundamentals" of C. I followed a 4.5 hour tutorial series covering the C language, some of which was review but it also covered a significant amount of material. It was a great beginner guide overall.

I also finished the essential segments (up to segment 9) of the C text adventure series I started last week. This series is extremely complex for such a seemingly simple topic and some of the implementation was outside my grasp. I think it was good practice regardless and I enjoyed following it.

Here is a link to my personal code from the C text adventure series I followed. It is a few hundred lines and demonstrates the basic proof of concept even though most of the locations and items are undefined. I used the online compiler OnlineGDB.

Links:
C Programming Tutorial | Learn C programming | C language
How to program a text adventure in C
Personal code from text adventure series

Plan for next week 2/13/19-2/20/19:
I want to focus this week on consistency more than anything. @Rabby made a very good point that programming requires daily practice, and this week (just like last week) I put it off until a couple days before my next update was due. I plan on spending at least 45 minutes every morning on programming next week so that it doesn't get put off and disregarded. In the long-term making this a habit will yield greater dividends than more intense but inconsistent methodology in the moment.

In terms of results, I will continue to learn and strive to master fundamentals of C. I will follow some more tutorial series but also attempt to practice more of what I have learned. I don't like going three weeks without displaying tenable projects of my own, so next week expect something of that nature, even if it is only as simple game simulator (such as Tic-Tac-Toe.) I saw a thread the other day on this forum stressing the importance of "showing" instead of just "telling" and I'm afraid I doing too little of the former and too much of the latter. Hope I can improve in this regard.
Great job with the progress!

Now that you see the rigor involved to learn C, what are your thoughts? Do you see yourself going down this path, which requires patience and serious time investment, or is your priority making money in the short-term? This is a non-trivial question, because which one you commit to will likely determine if you should fully invest in C. You obviously realize how involved low-level programming is now, so I'm curious if you still have the same strategy.

- Cheers
 

daru

Bronze Contributor
Read Millionaire Fastlane
I've Read UNSCRIPTED
Speedway Pass
Feb 11, 2017
166
283
176
Earth
Hey, couldn't access your code. Put it on Github or Bitbucket perhaps?
 

AfterWind

Bronze Contributor
Read Millionaire Fastlane
I've Read UNSCRIPTED
Speedway Pass
Jul 23, 2017
76
159
144
24
Romania
Here is a 3D game engine I created in C using OpenGL and standard stuff that is used for a game engine with the goal to learn as much as possible regarding game programming. I also have a lot of C tutorial videos that explain how to do certain operations while helping you understand the why behind it. Feel free to PM if you're interested (don't want to spam here) or have any specific question.

It's a great idea to start with a basic text adventure game. Work on that, get it to a semi-finished product while also understanding C and continue challenging yourself. Step it up to a 2D game then a 3D game. Whether it's a 2D game or 3D game that you'll be working with you will have to understand the basics behind game engine if you want to focus and grow the community of a few games in the future.

There is great money (and success) to be made in the game development industry but it takes a ton of patience and hard work, as most things here. (some examples of great games that required exemplary : Factorio or Path of Exile in which the amount of thought that was put into them is insane, not just in the game itself but the community too and it shows).
 

SputnicK

Contributor
Read Millionaire Fastlane
I've Read UNSCRIPTED
Dec 23, 2017
18
24
25
Great job with the progress!

Now that you see the rigor involved to learn C, what are your thoughts? Do you see yourself going down this path, which requires patience and serious time investment, or is your priority making money in the short-term? This is a non-trivial question, because which one you commit to will likely determine if you should fully invest in C. You obviously realize how involved low-level programming is now, so I'm curious if you still have the same strategy. I enjoy it even though it is more tedious and involved than higher-level languages such as Python or C#.

- Cheers
I am not interested in making money any time in the near future. My main objective is to increase my competence and ability in making games. I think if I spend a significant period of time creating in pure C the foundations will transfer over nicely to C# in Unity 2D. Then I will think about ways to monetize what I have learned. In the meantime I think C is a great language and there is much more I can learn from it.

Hey, couldn't access your code. Put it on Github or Bitbucket perhaps?
I believe I have fixed the problem. I linked it using the "share" link this time, which I hope is different. If it doesn't work this time I will upload it to Github.

Here is a 3D game engine I created in C using OpenGL and standard stuff that is used for a game engine with the goal to learn as much as possible regarding game programming. I also have a lot of C tutorial videos that explain how to do certain operations while helping you understand the why behind it. Feel free to PM if you're interested (don't want to spam here) or have any specific question.

It's a great idea to start with a basic text adventure game. Work on that, get it to a semi-finished product while also understanding C and continue challenging yourself. Step it up to a 2D game then a 3D game. Whether it's a 2D game or 3D game that you'll be working with you will have to understand the basics behind game engine if you want to focus and grow the community of a few games in the future.

There is great money (and success) to be made in the game development industry but it takes a ton of patience and hard work, as most things here. (some examples of great games that required exemplary : Factorio or Path of Exile in which the amount of thought that was put into them is insane, not just in the game itself but the community too and it shows).

That is incredible dude! I can't believe you created an entire 3D engine in C. I love that you did it just to improve at game programming. That is the legit method, actually mastering fundamentals and learning game engines properly. May I ask what library you recommend for 2D? I assume you recommend OpenGL for 3D. I am interested in your process: how did you get to your current level of proficiency? I think based off your results are a great role model.

I have PM'd you on the tutorial series.
 

AfterWind

Bronze Contributor
Read Millionaire Fastlane
I've Read UNSCRIPTED
Speedway Pass
Jul 23, 2017
76
159
144
24
Romania
That is incredible dude! I can't believe you created an entire 3D engine in C. I love that you did it just to improve at game programming. That is the legit method, actually mastering fundamentals and learning game engines properly. May I ask what library you recommend for 2D? I assume you recommend OpenGL for 3D. I am interested in your process: how did you get to your current level of proficiency? I think based off your results are a great role model.

I have PM'd you on the tutorial series.

I am barely passable as an intermediate in game programming but I do know a decent amount about how 3D game engines work. The 3D engine is a Minecraft clone that can't even load .obj models. It's just a prototype that never got finished.

After learning a few programming languages I quickly jumped to creating some simple 2D games (flappy bird, chess etc). I challenged myself in the final year of high school to create a Tetris (in C# with the now deprecated XNA framework) clone (whereas a simple tic-tac-toe would've been enough). That was quite a learning experience on how to build simple 2D games.

Entering university my interest shifted to 3D and low level programming. I thought they were an amazing pair. After lots of struggle with trying to create a 3D engine using C++, OpenGL and some tutorials on Youtube, before my last year of uni, I was fed up with how much I didn't understand about both C and C++. Since there was too much to learn about C++ and was the main cause of my stagnation, I challenged myself again, "develop a game engine in C".

And boy, was that a learning experience. Not only did that force me to learn concepts in C and OpenGL that I never knew I will ever fully comprehend but understand the usefulness of features in other languages (like exceptions, OOP and function overriding) that I was taking for granted.

Bottom line is, I didn't do anything special. As many of the forum members will tell you: challenge yourself (with achievable goals) and focus, focus, focus (learn 1-2 things at a time).

I hope this post didn't come out as me bragging. Many of my colleagues were asking "How did I learn all that?" and I feel like this story of mine answers it.
 

masterneme

Silver Contributor
Read Millionaire Fastlane
I've Read UNSCRIPTED
Speedway Pass
Apr 13, 2015
301
767
290
38
I am not interested in making money any time in the near future. My main objective is to increase my competence and ability in making games. I think if I spend a significant period of time creating in pure C the foundations will transfer over nicely to C# in Unity 2D. Then I will think about ways to monetize what I have learned. In the meantime I think C is a great language and there is much more I can learn from it.
I don't want to sound like a dick but if your objective is to work with Unity and 2D why don't you just start doing that? Your foundations come from the experience of making games AKA producing.

I thought you wanted to learn C/C++ because you wanted to use UE4, CryEngine or make your own stuff with C++ and OpenGL/Vulkan but if it's about games, learning a language that you won't be using is extra time you won't be spending learning game logic, the whole MonoBehaviour API and how the Unity Engine and its Editor works with its own strengths, weaknesses and quirks.

And not only that, Unity Technologies just started implementing ECS and is expected to see an increase in focus to Data Oriented Design instead of Object Oriented which means that if you get used to OOP you'll have to relearn the new paradigm and it will take you even more time than starting right now with their examples and documentation.

For 2D they're going big with ECS and Project Tiny because small sized 2D apps are a potential source for HUGE profits with interactive ads and social embbeded games.

So I insist that if you start producing right now you'll learn everything you need.

And if you really like 2D I suggest you take a look at the Godot Engine, they're about to release a new version and you can code with C#. It also is an OOP engine in which you organize your objects through Scenes containing Nodes with Tree based hierarchy.

You'll make a better use of your time by getting your hands dirty making a 2D platformer or a 2D ARPG, participating in game jams and sharing your work with people to get feedback.

I think you're glamourizing game design a bit too much and let me tell you what other successful professionals in the industry say all the time:

Game development is all smoke and mirrors, if a dirty looking hack gives you the functonality you want and it doesn't break the stability of the game use it, because at the end of the day the product and the experience a player gets from it (AKA providing value) is all that matters.

Edit: This thread might be relevant: NOTABLE! - What if you already know enough?
 
Last edited:

SputnicK

Contributor
Read Millionaire Fastlane
I've Read UNSCRIPTED
Dec 23, 2017
18
24
25
Before I get into the update for this week I want to respond to the comments:
I am barely passable as an intermediate in game programming but I do know a decent amount about how 3D game engines work. The 3D engine is a Minecraft clone that can't even load .obj models. It's just a prototype that never got finished.

After learning a few programming languages I quickly jumped to creating some simple 2D games (flappy bird, chess etc). I challenged myself in the final year of high school to create a Tetris (in C# with the now deprecated XNA framework) clone (whereas a simple tic-tac-toe would've been enough). That was quite a learning experience on how to build simple 2D games.

Entering university my interest shifted to 3D and low level programming. I thought they were an amazing pair. After lots of struggle with trying to create a 3D engine using C++, OpenGL and some tutorials on Youtube, before my last year of uni, I was fed up with how much I didn't understand about both C and C++. Since there was too much to learn about C++ and was the main cause of my stagnation, I challenged myself again, "develop a game engine in C".

And boy, was that a learning experience. Not only did that force me to learn concepts in C and OpenGL that I never knew I will ever fully comprehend but understand the usefulness of features in other languages (like exceptions, OOP and function overriding) that I was taking for granted.

Bottom line is, I didn't do anything special. As many of the forum members will tell you: challenge yourself (with achievable goals) and focus, focus, focus (learn 1-2 things at a time).

I hope this post didn't come out as me bragging. Many of my colleagues were asking "How did I learn all that?" and I feel like this story of mine answers it.
That's quite an impressive journey! It absolutely does not sound like bragging by the way, just describing your path to where you are now. It seems to me that understanding how things work is a huge motivator for you and I really respect that kind of mindset.

When it comes to your advice to set achievable goals and focus on learning one or two things at a time, that is absolutely something I could improve on. It's really easy to get caught up in "shiny object syndrome" and never commit to one path. That's why I chose pure C, and why I want to stick with it.

I received your PM on the series, plan to go through as much as I can next week. Thanks for sharing man, you've been immensely helpful to me and I won't soon forget it.

I don't want to sound like a dick but if your objective is to work with Unity and 2D why don't you just start doing that? Your foundations come from the experience of making games AKA producing.

I thought you wanted to learn C/C++ because you wanted to use UE4, CryEngine or make your own stuff with C++ and OpenGL/Vulkan but if it's about games, learning a language that you won't be using is extra time you won't be spending learning game logic, the whole MonoBehaviour API and how the Unity Engine and its Editor works with its own strengths, weaknesses and quirks.

And not only that, Unity Technologies just started implementing ECS and is expected to see an increase in focus to Data Oriented Design instead of Object Oriented which means that if you get used to OOP you'll have to relearn the new paradigm and it will take you even more time than starting right now with their examples and documentation.

For 2D they're going big with ECS and Project Tiny because small sized 2D apps are a potential source for HUGE profits with interactive ads and social embbeded games.

So I insist that if you start producing right now you'll learn everything you need.

And if you really like 2D I suggest you take a look at the Godot Engine, they're about to release a new version and you can code with C#. It also is an OOP engine in which you organize your objects through Scenes containing Nodes with Tree based hierarchy.

You'll make a better use of your time by getting your hands dirty making a 2D platformer or a 2D ARPG, participating in game jams and sharing your work with people to get feedback.

I think you're glamourizing game design a bit too much and let me tell you what other successful professionals in the industry say all the time:

Game development is all smoke and mirrors, if a dirty looking hack gives you the functonality you want and it doesn't break the stability of the game use it, because at the end of the day the product and the experience a player gets from it (AKA providing value) is all that matters.

Edit: This thread might be relevant: NOTABLE! - What if you already know enough?
I understand exactly what you are saying here, you raise good points on why I should I transition directly to Unity 2D. I suppose one thing I should have clarified is that I do not know for certain what my long-term ambitions are in the moment. I created this thread because I'd rather start and stumble along then never start at all. Heck, my goals section in my introduction reads more like a rant then something I could aim for and achieve. So your objections are valid: I need to define why exactly I'm doing this and how I plan to achieve it. If I get caught up in the idiosyncrasies of C when I plan to transition to a game engine anyway, I can see how it appears I am romanticizing the process of game design. I do believe however that some of the other users here (namely @lowtek) have offered a solid line of reasoning on why learning low-level languages will pay dividends in the long-run, especially as I am uncertain where this journey will take me a few months to a year from now.

I wonder if I could not continue learning C (following tutorials and working on small to medium projects) and spend the rest of my time learning Unity 2D. Perhaps I will come to learn that game engines really are superior in every way, in which I would transition entirely into that domain. Again, I am chiefly interested in mastering fundamentals so that my foundations are strong enough to scale into larger and more ambitious projects. I will try to come back next week with an Unity project to show off as well. And of course look into ECS and the other technologies you mentioned. I respect your feedback and appreciate it. :)



And now to the progress update for WK4:
Update thread 2/13/19-2/20/19 (WK4):
I have less to show this time, unfortunately, in part because I been doing some reflection on what my ambitions are. There was a quote in another user's bio: "Be better by .0025% than you were yesterday and good things will happen." This is a great life philosophy.

I need to clarify something I have neglected to mention: I am living with my parents while I attend community college (I am doing a "2+2" college program where I do two years of community college and two years of university for my degree) and my father recently took a job opportunity in a different state. I learned this early enough in the year to refund classes for my Spring semester, and now I'm helping them move and thus am in a transition stage right now. The good news is that there will be more time to devote to my projects but the bad news is that in the short term there will be a week or two I will have less to contribute to this thread. Just a heads up! With that said, here is my what I accomplished:

I finally wrote a program in C, an ASCII Tic-Tac-Toe game using functions, arrays, decision trees, ect. It certainly could be developed further, with AI or perhaps an GUI interface. I tried to make the code as modular as possible, its 95 lines in all.

I also watched over half of this 2HR video on methodology of programming in C called "How I program in C." The dude has some fascinating practices like basically building his own debugger from scratch and I enjoyed watching him explain it even if much of this methodology is less implementable in my current stage.

I have been ghosting TFF for far too many hours this week. Not an accomplishment. Just a fact. :happy:

Plan 2/20/19-2/27/19:
The two things I am focusing on: learning and executing on C knowledge and beginning my journey into exploring Unity 2D. I firmly believe I can learn both at once. I have specific goals devoted to both of them below:
1. Go through as many videos as possible of @AfterWind's tutorial series on C.
2. Work on a second small project in C (most likely a File I/O program)
3. Spend a few hours fooling around with the Unity editor, follow a tutorial AND
4. Create my own small game in Unity and release it, (if things go as planned)
5. Spend all time not doing these things unplugged from electronics and my PC
 

Don't like ads? Remove them while supporting the forum. Subscribe.

Last edited:

masterneme

Silver Contributor
Read Millionaire Fastlane
I've Read UNSCRIPTED
Speedway Pass
Apr 13, 2015
301
767
290
38
OK. I thank you for taking my post as I intended, just as a way to make you think about your decissions in a different way and more deeply.

Some people believe that when I make suggestions I'm too direct or even aggressive, I tend to forget that those people are not fastlaners but you never know how the other person will perceive what I say even here because text can't deliver the full tone of the communication.

If you still want to go the C route I suggest you invest most of your time playing with vector math and how to implement collisions between shapes. That's experience that will really transfer over when you start doing stuff with other engines.

Good luck, making games is amazing but it also is one of the most competitive industries around.
 

SputnicK

Contributor
Read Millionaire Fastlane
I've Read UNSCRIPTED
Dec 23, 2017
18
24
25
Update Thread 2/20-2/27/19:
I'm trying a new format: Less text and more content. Here is what I accomplished this week:
  • I watched 5 videos of AfterWind's tutorial series on C. This series is high quality and makes things much easier to understand, highly recommend it.
  • I followed this tutorial on File I/O. No project this week where I've implemented it.
  • I followed this Unity tutorial on how to create Pong in Unity 2D.
  • I created a small proof-of-concept game in Unity 2D in which the player clicks on doors which opens to new rooms with more doors. Different endings based on the door selected.

Plan for 2/27/19-3/6/19:
I am helping my family with packing and moving for these next few weeks so I can't promise any updates for a while. I am considering fasting from electronics entirely for a time in which case I will not keep up with this thread. I do plan to come back to this thread at some point (hopefully in the near future), and present more concrete requirements and goals.

Thanks to everyone who has contributed feedback thus far.
 

Sponsored Offers

Introducing MJ's Personal Unscripted Network, Join Now for FREE!
Text from today... Muhammad Ali said, "I hated every minute of training", but followed with...
  • Sticky
MARKETPLACE NEW: The Best School for Going Fastlane (Now open for summer enrollment)
With 300+ students, the method and/or main sources of traffic don't saturate? Seems web design...
MARKETPLACE Fox Web School "Legend" Group Coaching Program 2021
Hi - I sent out some emails with the updates but I'll PM you now also, thanks. The issue is...
MARKETPLACE Not sure how to start? This free book will teach you how to build a successful web design business
Hi Fox. Starting the book and got through the introduction. Had a conversation with Andy Black...
  • Sticky
MARKETPLACE You Are One Call Away From Living Your Dream Life - LightHouse’s Accountability Program ⚡
Chris is super sharp and is aware of many facets of entrepreneurship and can help get your...

Learn Fastlane Business Skills & Get Profitable Within 30 Days...

Get Started Now

Don't like ads? Remove them while supporting the forum. Subscribe.

New Topics

Fastlane Insiders

View the forum AD FREE.
Private, unindexed content
Detailed process/execution threads
Ideas needing execution, more!

Join Fastlane Insiders.

Top Bottom