I don't know what to do..

You can skip the tale from "{" to "}" if you want but i think it will give you a better understanding of my problem.

{
I have hard time deciding what to do. I started learning C++ at the end of the last year. So far i have finished only one beginners book. My classes took place every Friday after school and were only hour and a half long. I felt like i wasn't learning much so i decided to start actually doing something. I thought about making a Minecraft mod, but that requires Java instead of C++. After many hours lost on a language i knew nothing about i manged to make items and crafting recipes. I got bored with the whole idea and for a little while i was doing nothing(mostly because of school, but still i consider my self as a lazy-ass). I finished the tutorials i was watching on Youtube about C++ and the book. Before i went to a camp 2 weeks ago i decided to start doing a mod for a games like Skyrim or Garry's mod or even Starbound when i get back. Since Garry's mod needed Lua to mod and i didn't know it, i was willing to start learning it, but before that i saw Starbound mods and how a lot of people were making them. So again i started learning how to make a mod for Starbound...yesterday. I spent good 7-8 hours understanding what is the game's structure and how to make new items for the game without overwriting the existing ones. But all that was in a language called JSON and also there is Lua for making the animation for weapons and such. But yet there were even more languages that i didn't know. I wasn't willing to give up, but another thought came to mind, Game Engines. I hear them all the time but i never really knew what they were. So after asking stupid questions for about hour and a half in a steam discussion, i got the idea what it is. Someone sent me a link showing me that most game engines are programmed with C++. Other guy mentioned that i should use Source SDK in order to understand how game engines worked. I saw Source was made by Valve for games like Half Life and the programming language was C++. But there were no new guides on how to code in Source. There are instructions by Valve, but they are not very detailed and they require more knowledge on C++ that i don't have. In a new discussion someone suggested some people who show you how to use Hammer in Source SDK to make maps with little programming involved.
}

And now finally let's get to the main point. If i dedicate my time learning C++, will it pay of at the end? Will i understand how a game made in C++ work by looking at the files or i'll have to study it? Am i going to be able to code in game engines? I don't expect to do miracles just by knowing the language, but at least to some degree have an idea what to do when i look at the program.

Right now it's a mess in my head. I don't understand how everything works and where ever i go(in forums) to ask and understand, more and more programs, languages,developers kits, OpenGL, Visual Studios, things like compiling, debugging, IDE are being mentioned and i start looking for them,but even more are mentioned. It's like an endless cycle trying to learn what everything is and where is it used and it's driving me insane!

...

For now my plan is to learn C++ with a faster rate while i try to work with Source SDK(starting with mapping(a job for a designer,with little programming involved)) in order to get better idea of how a game is made and hopefully to help me in the future in some way.

At this point i am desperate. If someone can answer my questions and tell me what to do that would be really helpful. I turned 16 not long ago and i have only 3 years till i graduate and let's make them 2 because the last year probably won't give me any free time, but i'll make sure to use it as much as possible. I am willing to give up most of my time now into programming. So if someone more experienced than me can answer me if it's going to pay of and some examples how , please do so..
Last edited on
One thing you have to learn about programming is that you can't do it all and that you have to finish one thing before moving on the next. You may start one project like you mentioned and suddenly you hear about something else and your attention is drawn to that thing; the temptation is to immediately go and try to "figure out" how this new thing works. Then when you can't figure it out, you are stuck because 100% of you is trying to finish this new thing so that you can go back to the thing you were doing before that, but you can't figure it out so now you are stuck. And I think that is the stage you are in right now.

My advice is to take it one step at a time, when you start a project, keep doing it until you have mastered it before moving on to a new project. You are still young and many more programming languages will be invented and some left behind before you actually start writing software (I'm assuming you are going for software engineering). Make use of what you have now and get good at it because by doing that, you will be better than most of your peers who have never been involved in open source projects; Not just in writing code but in knowing where to start when faced with starting a big project.
Last edited on
Will i understand how a game made in C++ work by looking at the files or i'll have to study it?
Generally speaking, without documentation, using a game engine is generally intractable.
"What language is this using?"
"What format do I put the assets in?"
"Do the files need a special organization?"

Am i going to be able to code in game engines?
A language is just a language. Will you be able to discuss biology with a German biologist after you learn to speak German? No, but it's a step in the right direction.

Game development tools, and in fact all tools centered around a particular activity, are all made with an implicit knowledge base common to everyone normally engaged in that activity. That's why there are things things that even the most detailed documentation doesn't explain, and it's the difference between documentation and a tutorial.

Right now it's a mess in my head. I don't understand how everything works and where ever i go(in forums) to ask and understand, more and more programs, languages,developers kits, OpenGL, Visual Studios, things like compiling, debugging, IDE are being mentioned and i start looking for them,but even more are mentioned. It's like an endless cycle trying to learn what everything is and where is it used and it's driving me insane!
I think your problem in this regard is that you don't have a goal, so you're just scrambling with a variety of diverse technologies, futilely trying to make sense of it all. Or rather, your goal of "game development" is too broad and vague.
I would suggest something more concrete like "I want to make an Arkanoid clone using modern technologies". Something simple that you'll be able to finished in one, two weeks tops, and will show you the basics of how those technologies work.

i have only 3 years till i graduate
Why? Does your collar explodes when you graduate?

To answer your overall question, C++ is probably not the language you need right now.
That's true, i do not have a goal right now. Of course the ultimate goal is becoming a game developer and i have only a vague idea of how that works. Now i am scrambling with a variety of diverse technologies, trying to make sense of it all, but i can't.

I will look into the idea of making a Arkanoid clone and set this as my first goal.

To answer your overall question, C++ is probably not the language you need right now.

Well there is nothing else i really want to learn and if not now, when?. If the most used language in programming is C++, whats the point in learning let's say Java. In school i think we will be studying Java after we finish with Flash, but as a main language i don't see why i should give up on C++.

"Does your collar explodes when you graduate?"

Well no, but after i graduate i would like to go to college to learn advanced programming and i am pretty sure that requires knowing C++ on a much higher level than mine as well as other diverse technologies. If you happen to know what is required and/or what do you actually learn in college please let me know.

Thank you for responding.
Last edited on
Smac89
Thank you for the advice :). I will make use of what i have now. But when i said i have little experience and have finished one beginners book i mean i have barely any experience. All i know is Arrays, Char, Strings, Loops(while,for) and little tiny bit from working with files and other function. I got a new beginners book that basically starts of from where the other one ended(even though there are from different publishers), but i am far from making projects let alone open source projects(whatever those are). Thank you again!
guteyuro
If i may ask. What was your issue?
Last edited on
Programming != language. There are more levels.

What you want to do. For example, show top 10 scores.

How to do it. What algorithm to use, how to store data in memory, and how much calculation/memory each option requires. One could read all scores to a list, sort the list descending, and then take the 10 from the start. Logically simple, but perhaps not the most efficient.
This is the most important part. All the thinking and ideas focus on this.

How to do that with a particular language. Now you would need to know the syntax, but if you know more than one language you can pick the most suitable for the job. Write a C++ program or just type:
sort -n -r scores.txt | head -10

Language is just a set of rules (although some are larger sets than others).

Even within a language, do you have to do everything the hard way? Perhaps someone else has already invented this wheel so that you can follow idioms and use libraries/"engines" of the language? For example, the C++ syntax has character arrays, but there are easier ways to manipulate text.
C++ is not really important in game development. It's really important in game engine development, but that's a very specific and highly technical area of game development. Most people prefer to focus either on game design or on game engines, because the two areas don't overlap very much. An engine developer has to know how to design the engine in a way that facilitates game development (e.g. by not making C++ the language game developers will use), and a developer has to know how to design a game within the limitations of the available technology. That's pretty much it.

If the most used language in programming is C++, whats the point in learning let's say Java.
Well, C++'s status as "the most used language" is at least debatable, but that aside, there's no point in learning any language if you don't actually need it for anything. It might be not just the most used, but the best language ever, and it would still not make sense to learn it if it doesn't let you communicate with the thing you want to communicate with. In this case, the game engine.

Well no, but after i graduate i would like to go to college to learn advanced programming and i am pretty sure that requires knowing C++ on a much higher level than mine as well as other diverse technologies.
If you need to know anything at the time you're sitting down for your very first class, it's probably a bad school.
For the purposes of higher education, I do recommend learning a wide variety of languages. See ESR's recommendation on this subject: http://www.catb.org/esr/faqs/hacker-howto.html#skills1
My own list is:
Unmanaged camp: C or C++. Preferably the latter, IMO.
Managed camp: Java or C#. Preferably both, since they're two ways of approaching the same problem.
Functional camp: Haskell or Lisp (either one). Haskell is better organized than Lisp, as it only has two or three different implementations. Both support idioms that the other one doesn't. Haskell has infinite lists, static typing, and static polymorphism; while Lisp has hygienic macros, dynamic typing, and dynamic polymorphism.
Scripted camp: Lua is big in game development, since it has one of the fastest implementations of any scripting language (luajit). Python is very useful for automation of certain tasks. I'd really like to list another alternative, because Python is one of my least favorite languages.
If you're going to learn programming, you need to learn the concepts: program flow, data structures, algorithms. You will find these concepts common to all languages, even though the syntax varies by language.

Once you learn those concepts, you will find learning a particular language to be just a matter of learning the syntax of that language. Trying to learn a language without knowing the underlying concepts I listed will be an exercise in futility.

Over more years that I care to admit, I worked professionally in Fortran, Cobol, Assembler (various machines), C, C++, Java, and proprietary languages. The syntax changes, but the underlying concepts don't.
Well no, but after i graduate i would like to go to college to learn advanced programming and i am pretty sure that requires knowing C++ on a much higher level than mine as well as other diverse technologies

Heh, so young and naive.
To helios
So basically using game engines doesn't require programming(and if it does, maybe just a little), but rather the making of one does. Game engines are programs for developers/designers to use in order to make a game. Am i understanding this correctly.

If you need to know anything at the time you're sitting down for your very first class, it's probably a bad school.

Yes, but if let's say they mention for example "loops" i should know or at least have and idea what that is right?

Thank you for the share link. I will make sure to check it out.

To AbstractionAnon
Yes, when i was learning Flash at school(for the 2 months were) i noticed that the concepts was the same. Only difference was the name of the commands and a little bit of the structure.

To helios and AbstractionAnon
How do you come across so many languages? Do you learn them at school or collage? Come to think of it i have been using a little bit of HTML and Flash(which my teacher said it is like Java) aside from C++. The thing is, at school we only get a vague idea how they work. I try my best and i manage to understand them and get good grades, but i feel like we don't do enough.
So basically using game engines doesn't require programming(and if it does, maybe just a little)
I never said anything even remotely like that.

Game engines are programs for developers/designers to use in order to make a game. Am i understanding this correctly.
It's the program that executes the game code. Game developers "use" the engine in the same sense a programmer might "use" a library or a language.

Yes, but if let's say they mention for example "loops" i should know or at least have and idea what that is right?
It won't hurt if you do, but you shouldn't have to know it.
If it was med school, should you be expected to know beforehand how to diagnose chickenpox?
To helios
What does a "game developer" do exactly?

What does "program executes the game code" mean?

C++ is not really important in game development. It's really important in game engine development, but that's a very specific and highly technical area of game development. Most people prefer to focus either on game design or on game engines, because the two areas don't overlap very much.

What is the job of someone who focuses on game engines? From what i can tell it is different than game engine development.
What does a "game developer" do exactly

I suggest you actually go to some game company websites and check out their career section. You can read about various job titles and what the responsibilties are. Game developer is a pretty broad term.

Doing this will answer a lot of your questions.
What does a "game developer" do exactly?
A game developer may be involved in any number of several tasks:
* Overall game design: high level gameplay elements (an RPG has different gameplay than a shooter), art direction (i.e. making the game look and sound good), technical direction (how to make the most of technology).
* Game scripting: includes actual coding of the gameplay rules (how much damage a weapon does, how the controls respond, etc.), scripting of in-game events (a bad guy spawning behind you when you open a certain door, characters talking to one another, etc.), and coding of UI elements.
* Asset creation.
* Whatever else I can't think of right now.

What does "program executes the game code" mean?
A game engine is essentially an interpreter/VM. The game itself is the program that the engine executes.

What is the job of someone who focuses on game engines? From what i can tell it is different than game engine development.
Nope. That is it. A game engine developer works in game engine development.
To ResidentBiscuit
Thank you for the information. I looked some up to and got a better idea of how that works.

To helios
Thank you for the information as well. Now it makes more sense. But..

So is it like the game engine executes the game the same way when you are done with a code you click "Build and Run"(or at least that's what the command is called in Code Blocks) to test your program?
More or less. A build process may or may not be involved, depending on the specifics of the engine.
Well, thanks a lot. You really helped me. I think i'll stop here for now with
"trying to make sense of it all". I have my first goals for now and i'll try to work on them. Once again thanks for everything :)
guteyuro
If i may ask. What was your issue?

There was no issue. "guteyuro" was a spambot, posting bland, generic comments that could apply to any thread, with spam in its profile.
Last edited on
Topic archived. No new replies allowed.