Help! I'm trying to make a game.

Started by
44 comments, last by Dragonsoulj 11 years, 8 months ago
If you're still learning how to construct programs effectively (or haven't even gotten there yet), then don't worry about the math background yet. You have some time before you're at a point where your programs are complex enough that the math would make a big impact.

As for the language discussion, I strongly recommend C# over C++. You can look through my posting history for an abundance of arguments why.
Advertisement

Is it true that you need to know REAL MATH cause I always wanted to build a game, but now I know I have to wait.


You don't have to wait, there is never a reason to wait. There may be reasons to spend time learning the basics but never to wait, Waiting doesn't get anyone anywhere.
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!

Is it true that you need to know REAL MATH cause I always wanted to build a game, but now I know I have to wait.


Actually knowing the math will most likely make it a lot easier for you to handle a specific problem or find the solution to it much quicker, but that doesn't mean you can't make a game without knowing.

For me, it has always been logical thinking (one can argue it's the same, but hear me out). Before I started programming, the last time I applied math was about 7 or 8 years ago, needless to say that my math was rusty and compared to what people made me believe, under the "required" level of 3D programming, this was true in some way, but I still managed to do my thing by simply taking pen and paper.

Lay out the problem you have and what you want to achieve. Scribble it down and make it a puzzle for yourself. Simple example:

Basic movement and let it stop at a certain point:
Draw 2 points on the paper; one point representing your player and the other one representing your destination. Now imagine moving towards that point, what's happening? You move the player in a certain direction and if it reaches its destination, you stop moving.

Without even using math directly, you already made the program in your head by thinking logically. This is a very basic and simple example, but you can use it in a lot of situations by just making clear to yourself where you are and where you want to be.

Also remember, practice makes perfect. Don't think you will know everything by heart by doing it once or twice, keep programming, keep challenging yourself, try to understand what is going on and what you are doing. And most important of all, do not give up!

Good luck! :)
If your goal is to make a game as fast as possible, as your original post says, you might want to think about using an engine or library. They're tools to assit you with finishing games fast, instead of writing everything yourself from scratch. Once you pick your tool, you'll see what languages it supports. For example, my personal favorite, Leadwerks, supports C, C++ and Lua. Knowing C# wouldn't really benefit you if you wanted to use it. Some engines only use their own custom scripting language. So I'd look into that first and go from there.

@Kripis One thing you will learn is that when people are giving you advice, you may not like it, but you don't just go call them a dick. I wasn't insulting you, I was just telling you that you aren't the first kid to think like you do and talk about it on this site. And no, you DO NOT know real math, or real computer science for that matter, both of which you need for game dev. I'm not saying give up and wait ten years and get some game development "degree" (which IMHO aren't a good choice. at all), but you do have quite a lot to learn, and by the time you learn it (I'd say a year of dedicated studying with minimal distractions, if you are really smart) you might even decide you don't "love" developing games, because the funnest part of developing isn't working on it, its seeing your finished work. And no, there are not a lot of people who can work on something as trivial as a computer game for a long amount of time. Just enjoy being a kid, and all that entails. Even if you did learn all the things, the time it takes for you to make something would almost ensure that you don't have friends, good grades, or happy guardians. I'm not saying be one of those idiotic mongrels that passes for a "good kid" these days, but still, quaternions, matrix transforms, frustum culling, entropy, data encoding, BSD sockets, function handles, random number generators, Mersenne primes, and a bazillion other topics might be a bit out of your reach now until you learn more. And no, you don't have to learn at the same pace as your educational institution. You can learn on your own, in probably a year. But like I said earlier, you have to be very SMART (not like Derpy Hooves), and dedicated to more than just making some game, you have to be dedicated to PROGRAMMING.
Well I don't like people stereotyping me thats all.
What you're asking is essentially the same as asking if english or french is the best language to use to say "Hello" so someone. "Allo" might be 1 letter shorter than "hello", but that doesn't mean that french is better (even at saying hello). This is where context and abstractions come into play. One judges a given language based on complexity/processing, ease of learning/understanding and how fast you're able to read, speak and write something with it. In those regards, C++ and C# are so similar that it doesn't really matter too much which you learn - especially since you'll eventually know both of them eventually.

Being 13 years old, you actually have a major advantage over people like myself - time. You'll probably end up knowing 10+ languages, whereas I probably only got time for half. When you start doing programming professionally, you will most likely learn both C++ and C#, because when you've learned 1 language, it's much easier to learn a second one. Most serious programmers end up knowing maybe 7+ different languages, in addition to knowing mountain climbing, karate, economics, driving a car or whatever. You don't have to worry about not having the time to learn more than one thing. It depends on your focus.

But, regardless of how many languages you know, that's not as important as learning the methodology of programming. Programming science, essentially. How to approach any given problem, make it readable to other people (or yourself), figure out a solution algorithm (recipe) and only then comes the actual language itself with which you solve the problem.


Here's what I would do, if I were you:

1. Figure out which language is more interesting, by getting an introduction to both. (Youtube is your friend.)
2. Simply choose that language. If you can't make up your mind, then just flip a coin and go with what the coin says. If you cannot decide, then neither choice will be that bad anyways.


Good luck and have fun. smile.png

- Awl you're base are belong me! -

- I don't know, I'm just a noob -

@Kripis I'm not stereotyping you. I don't even know you, so I can assume you act at least similarly to other kids I encounter on the internet or on TF2.

C dominates the world of linear procedural computing, which won't advance. The future lies in MASSIVE parallelism.

I heard somewhere (dunno if that is true), that the boy who programmed the first prince of persia game was 14 at the time. And I have acquaintances who programmed algorithm for integer division on calculator in junior school (10 year old). So in my book, he being 13 is not the issue here.

@Kripis I'm not stereotyping you. I don't even know you, so I can assume you act at least similarly to other kids I encounter on the internet or on TF2.


That is pretty much the definition of stereotyping :D
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
First off, I applaud your willingness to teach yourself; a skill I am very happy I learned, and learned early...

Secondly, I'm not going to say you're too young, and you don't know this, or that, because like everyone else here, I don't know you, but I do know that you're making a good 'first' step. I always find it funny how people talk about coding requiring math skills, because in the 25+ years I've been doing it, it's been such a minor part, I felt the math schooling was mostly wasted (in the sense that I don't use it... Learning anything is useful : ).

As for myself, I also started around your age. I taught myself Basic initially, then picked up a C++ book, consumed it cover to cover, and later was able to afford a compiler (Turbo C++ for DOS), and put it to use : ) So I come from a standpoint of, 'I did it, you can too', as to the always-too-common 'I didn't do it, so you likely can't'. So again, I learned C++ 25 years ago, and in my day job, I use C++... It's possible it'll become 'outdated' by the time you're done with school, but it's unlikely, so that's a point in C++'s favor.

However, C++ is fugly... The syntax is fine, and has been adopted just about everywhere else, minus some minor things, like class vs method/variable layouts, but it's an old language, and it shows... Many of the libraries people use, including Windows API's, STL, etc, are all inconsistent, which includes naming conventions. So that's a point in C++'s 'unfavor' heh. Newer languages are more consistent, both in usage (In nearly every newer language, every object is a class, and is always allocated), and in API's. This may seem moot to some of you, and it is to me, but to someone learning for the first time, consistency is great. Even when I learned iOS stuff a few years ago, I was amazed at how clean Objective C was.

As for C#, I glanced at it when it was new, and that was about it, but as a newer language, it's more consistent, and has a lot of MS Backing.

As for Java, Ewww... : )

So in short, it looks like I'll suggest C++, as it's what I use, and it's awesome... But really, my suggestion is simple; learn them all : ) And start with something new. If it was an option, I would say Objective C or Java, because right now is still a really good time to get involved in mobile development... If you're sticking to a PC, I suggest C#, just because it'll be easier to learn, and while you won't have as much... freedom (C++ is still more direct, and C# is mostly Windows based), you can move to the others as needed.

I'll end with a (butchered) quote from one of the few people I worked with that I also respected. 'A Computer Scientist is a problem solver; the language is just a tool'... In other words, someone earlier put it pretty succinctly, but basically, you're learning to solve problems with computer science methodologies; those are the skills that last. The language you use is just the way you do it.

-Alamar

This topic is closed to new replies.

Advertisement