Sign in to follow this  
Followers 0
Lama43

Where to start to program a game

25 posts in this topic

Hello, first post here.
Let me introduce myself, I'm a 15 years old teen who lives in Italy and has the ambition to make a game.

Now, i know that i need to use a programming language, but I'm not sure at all which one. I've had some experience with Squirrel and Pawn mainly in scripting for SA-MP and IV-MP, from which i believe i learned a lot. I developed a few complex functions and also made a small programme that would tell me the number of multiplies needed to reach a certain number with exponential growth ran by the server, but that was pretty easy.

In any case, that was about 2 years ago but now I'd like to start programming again, I've already got a few ideas for games but I simply don't know where to start. My objective is a common 3D computer game, maybe with online support, but I understand that i need to have some experience in 2D game development first.

So, some bullet points to make answering to me easier:

-What language suits my needs best?
-What do I need to make the graphics part of the game?
-Is there any good tutorial that gives info on every step of game development?

I hope this is a friendly community, I'm just a wandering soul wishing to find my path :)
0

Share this post


Link to post
Share on other sites
Since you did some programming already even if it was just some scripting. I recommend you skip things like game maker and rpgmaker or similar. I think you are ready to learn a language.

You have 2 choises:

-Game oriented language
-General purpose language

If you choose first you can easily dive in game development. They are usually easy to learn and to use. Also they have everything you need to make simple/comlex games. But they do lack in performance and some advanced tehniques such as good 3d graphics,portability,third party libraries,ussualy have poor multhithreading support or don't have it at all. All in all when you mature past good 2d games you will simply want to skip this one. It is the best for learning but sooner or later you will leave it behind.

If you choose a general purpose language it wont be so easy. Main reason is that you have to learn the language first before even attempting to make a game.Even WHEN you learn it you usually have to choose and learn a game library/engine to use in making your game. There is a lot of work to do just to get anything started. However when you DO learn all those things and learn it well. You will find yourself capable of using amazingly powerfull tools and you will have great freedom on what you can do with your game. They give the best control to you on what you want to make the downside is usually YOU have to make it.

The choise is yours. I will give you some examples of general purpose languages:

C - great starter. Everything you learn will be useful when advancing to the next step. (see below)

C++ - Industry standard and with good reason. Very powerful,fast,full of features. Amazingly well supported,BIG communities,Countless tutorials,books,A lot of third party useful libraries,etc.. Downside IT IS ARGUABLY THE HARDEST THING TO LEARN (to a professional level) but worth it.

C# - Great one. Somewhat easy to learn. Very nice standard library,Very nice modern features,reasonably fast well supported and somewhat elegant to some people.

Java - Also a great one. Very feature rich standard library. Easy to learn and use. Runs on a lot of hardware. Great for mobile development and/or web development. its on;y somewhat good for 3d though. A good example would be Minecraft (it was done in Java)


Python,Fortran,Delphi(free pascal),...

List goes on and on...
1

Share this post


Link to post
Share on other sites
[quote name='Sh@dowm@ncer' timestamp='1337425686' post='4941401']
Since you did some programming already even if it was just some scripting. I recommend you skip things like game maker and rpgmaker or similar. I think you are ready to learn a language.

You have 2 choises:

-Game oriented language
-General purpose language

If you choose first you can easily dive in game development. They are usually easy to learn and to use. Also they have everything you need to make simple/comlex games. But they do lack in performance and some advanced tehniques such as good 3d graphics,portability,third party libraries,ussualy have poor multhithreading support or don't have it at all. All in all when you mature past good 2d games you will simply want to skip this one. It is the best for learning but sooner or later you will leave it behind.

If you choose a general purpose language it wont be so easy. Main reason is that you have to learn the language first before even attempting to make a game.Even WHEN you learn it you usually have to choose and learn a game library/engine to use in making your game. There is a lot of work to do just to get anything started. However when you DO learn all those things and learn it well. You will find yourself capable of using amazingly powerfull tools and you will have great freedom on what you can do with your game. They give the best control to you on what you want to make the downside is usually YOU have to make it.

The choise is yours. I will give you some examples of general purpose languages:

C - great starter. Everything you learn will be useful when advancing to the next step. (see below)

C++ - Industry standard and with good reason. Very powerful,fast,full of features. Amazingly well supported,BIG communities,Countless tutorials,books,A lot of third party useful libraries,etc.. Downside IT IS ARGUABLY THE HARDEST THING TO LEARN (to a professional level) but worth it.

C# - Great one. Somewhat easy to learn. Very nice standard library,Very nice modern features,reasonably fast well supported and somewhat elegant to some people.

Java - Also a great one. Very feature rich standard library. Easy to learn and use. Runs on a lot of hardware. Great for mobile development and/or web development. its on;y somewhat good for 3d though. A good example would be Minecraft (it was done in Java)


Python,Fortran,Delphi(free pascal),...

List goes on and on...
[/quote]

Thank you for your answer, I suppose i'll stick to C++. Is there any good guide for it that you recommend to me? Also, is there any uncompiled game code that allows me to analyze the structure, libraries and so on? I find that the best way to understand a language is to analyze, experiment with it, coupled with a good manual of course [img]http://public.gamedev.net//public/style_emoticons/default/biggrin.png[/img] Edited by Lama43
0

Share this post


Link to post
Share on other sites
I would highly recommend Mike Dawson's 'Beginning C++ through Game Programming'
0

Share this post


Link to post
Share on other sites
First off, learning C is not a great starter language, and learning C to learn C++ is like learning Dutch to learn German. Sure, it may help your understanding, but what a terrible waste of time and resources. C is a very domain specific language these days and for most people is of little relevance. For new C++ programmers, they should be encouraged to stay the hell away from C and instead learn idiomatic C++.


Second, C++ is a horrible first language, period. Don't believe me, [url="http://www.gamefromscratch.com/post/2012/05/18/This-is-why-I-say-CPP-isn%E2%80%99t-a-beginner-friendly-language.aspx"]read this scenario[/url] and be completely honest with yourself, "could you have found the problem?". That's because C++ is rife with this kind of crap and you will be dealing with it from day 1! People say it's stuff like memory management that make C++ difficult, but it's not, not really... it's stuff like this. The horrible linker, the lets support every single bloody edge case even if nobody is ever going to use them mindset, the piss poor standard libraries, the fact its actually 4 languages smashed together, the weight of a thousand legacy mistakes. All of those negatives may eventually be a positive ( except the linker, which just sucks ), but to someone starting out they all work together to make C++ a terrible terrible starting language.


EDIT: Never actually answered the question:

[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][size=4][left][background=rgb(250, 251, 252)]-What language suits my needs best? [/background][/left][/size][/font][/color][color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][size=4][left][background=rgb(250, 251, 252)]There are many languages that fit your needs, but a lot of it come down to personal tastes. For example, Python is a highly regarded started language and is a good recommendation, but I personally don't like it. That doesn't make it a bad fit for you, but it does for me. Generally the big 4 recommendations are Java, C#, Python and (ugh) C++. [url="http://www.gamefromscratch.com/post/2011/08/04/I-want-to-be-a-game-developer.aspx"]This guide[/url] goes into a heck of a lot more detail than I can here and was written to basically answer this question. Beyond that guides recommendations, JavaScript/HTML5, Flash and LUA are also quite common and appropriate to a beginner.[/background][/left][/size][/font][/color]

[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][size=4][left][background=rgb(250, 251, 252)]-What do I need to make the graphics part of the game?[/background][/left][/size][/font][/color]
A graphics library in most cases. Although Java and C# have graphics routines built in, they are horrifically slow. That guide link has recommended 2D graphic libraries for each language, but it all comes down to which language/platform you decide to go with.

[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][size=4][left][background=rgb(250, 251, 252)]-Is there any good tutorial that gives info on every step of game development?[/background][/left][/size][/font][/color]
Yes, tons, and loads of books too. Need to pick a language and platform first though. Edited by Serapth
2

Share this post


Link to post
Share on other sites
Well all open source games put their entire code on the internet. So you can start there. Also while it is good to learn from web tutorials (there are a lot of good ones) there is nothing like a good book that you can put on your desk and read from while you learn. You can chose from basic C++ stuff books, to game design , graphics library books, game physics books,... Start small. Really small. Like a simple text console question game. Then move to 2d static graphics simple games,then 2d animated games,...3D can be hard really hard.

For C++ there are some nice libraries for games:

SDL - Simple elegant easy to learn has some books on it, a lot of tutorials , a lot of games use it,..
SFML - Simple well designed powerful easy to learn.
GLUT/OpenGL - Ranging from very simple to extremely comlex. Good start to 3d programming. Easier than DirectX and very cross platform. (Very good books/tutorials)
DirectX - Only for Xbox and windows. Great game library in general. Has all you need for sound,3d graphics,networking,... (Very good books/tutorials)

As for engines i can't really say. Since i usually only use libraries (write simple engines from scratch).
0

Share this post


Link to post
Share on other sites
[quote name='Serapth' timestamp='1337431887' post='4941421']
First off, learning C is not a great starter language, and learning C to learn C++ is like learning Dutch to learn German. Sure, it may help your understanding, but what a terrible waste of time and resources. C is a very domain specific language these days and for most people is of little relevance. For new C++ programmers, they should be encouraged to stay the hell away from C and instead learn idiomatic C++.


Second, C++ is a horrible first language, period. Don't believe me, [url="http://www.gamefromscratch.com/post/2012/05/18/This-is-why-I-say-CPP-isn%E2%80%99t-a-beginner-friendly-language.aspx"]read this scenario[/url] and be completely honest with yourself, "could you have found the problem?". That's because C++ is rife with this kind of crap and you will be dealing with it from day 1! People say it's stuff like memory management that make C++ difficult, but it's not, not really... it's stuff like this. The horrible linker, the lets support every single bloody edge case even if nobody is ever going to use them mindset, the piss poor standard libraries, the fact its actually 4 languages smashed together, the weight of a thousand legacy mistakes. All of those negatives may eventually be a positive ( except the linker, which just sucks ), but to someone starting out they all work together to make C++ a terrible terrible starting language.
[/quote]

I told him not to bother with a graphics library until he learns the language. And for that almost all IDE's that are out there thay are all set for the go to do such stuff. No linking problems, no library incompatibilities, no stupid stuff like that. By the time he learns the language. He should be reasnoably competent to understand what a library is ,what is a dll, what do the warnings mean. And most importantly he should know HOW to ask the right questions on the internet to solve his problems. There is nothing wrong with that. A person that doesn't know this basic stuff SHOULD not dive in to use third party libraries or yes i do agree hes in a world of pain. So yes C++ CAN be a begginers language. But C++ with a third party library is definetly not.
0

Share this post


Link to post
Share on other sites
[quote name='Sh@dowm@ncer' timestamp='1337432922' post='4941425']
[quote name='Serapth' timestamp='1337431887' post='4941421']
First off, learning C is not a great starter language, and learning C to learn C++ is like learning Dutch to learn German. Sure, it may help your understanding, but what a terrible waste of time and resources. C is a very domain specific language these days and for most people is of little relevance. For new C++ programmers, they should be encouraged to stay the hell away from C and instead learn idiomatic C++.


Second, C++ is a horrible first language, period. Don't believe me, [url="http://www.gamefromscratch.com/post/2012/05/18/This-is-why-I-say-CPP-isn%E2%80%99t-a-beginner-friendly-language.aspx"]read this scenario[/url] and be completely honest with yourself, "could you have found the problem?". That's because C++ is rife with this kind of crap and you will be dealing with it from day 1! People say it's stuff like memory management that make C++ difficult, but it's not, not really... it's stuff like this. The horrible linker, the lets support every single bloody edge case even if nobody is ever going to use them mindset, the piss poor standard libraries, the fact its actually 4 languages smashed together, the weight of a thousand legacy mistakes. All of those negatives may eventually be a positive ( except the linker, which just sucks ), but to someone starting out they all work together to make C++ a terrible terrible starting language.
[/quote]

I told him not to bother with a graphics library until he learns the language. And for that almost all IDE's that are out there thay are all set for the go to do such stuff. No linking problems, no library incompatibilities, no stupid stuff like that. By the time he learns the language. He should be reasnoably competent to understand what a library is ,what is a dll, what do the warnings mean. And most importantly he should know HOW to ask the right questions on the internet to solve his problems. There is nothing wrong with that. A person that doesn't know this basic stuff SHOULD not dive in to use third party libraries or yes i do agree hes in a world of pain. So yes C++ CAN be a begginers language. But C++ with a third party library is definetly not.
[/quote]

Did you read the scenario in the link I provided? It was using Visual Studio, which probably has the easiest to configure linking settings, and it still was a massive failure. An IDE does not shelter you from the linker, not in the slightest. In fact, it adds "Yet another thing you have to learn" to the long list of things you already need to learn.

Again, to your example of asking the right questions... the error in the scenario I provided was "Unhandled exception at 0xBlahblahblah in Pang.exe 0XC0000005: Access violation reading location 0xBlhabblahba". Good luck asking for help on that problem on the internet. At best someone *might* be able to tell you it's a linker problem, maybe. Especially when the IDE says "THIS IS THE LINE WHERE THE ERROR OCCURRED", which is exceedingly misleading. Simply put,this is one of those problems you would have to puzzle out on your own and I don't think a new developer has a hope in hell of figuring this out.

As to using C++ without libraries... good luck with that. The standard libraries are crap in their scope and probably the single biggest strength of C++ IS the third library support. You take that part out and frankly there are even less reasons to use C++.


Also, don't get me wrong, C++ *CAN* be a beginner language. It just can't ever be a good one.
0

Share this post


Link to post
Share on other sites
You know what i agree. I never started big either. I tried learning C++ and fell to just C. Then mastered it and suddenly C++ and Java was a breeze. Yes the standard library is really really bad. If anything you cant really make games with it. I tend to avoid it completely. I only use C library for File input/output and that's it.

But i do not understand why would you bash C. Yes it is outdated. Yes it is not really object oriented (C++ also isn't really). But it is very easy, very well supported,very useful and it makes learning C++,C#,Java much much easier later. Where almost everything that you learned will be used with almost the exact same synthax in these languages.
Functions become methods,Structures become Classes,Bit operators remain,...

The only problem i see is that some people get too much into C and start programming Java as they would C. They will make bad OO decisions and so forth. But most people that i know are very flexible and is easy to them to change the design of their code and approach to problems.
0

Share this post


Link to post
Share on other sites
[quote name='Sh@dowm@ncer' timestamp='1337435277' post='4941432']
But i do not understand why would you bash C.
[/quote]

I didn't bash C, I said it was a domain specific language and learning C to learn C++ was a waste of your time.

C for games is a pretty poor fit though for a number of reasons. The community is quite small now, and C as is represented in C++ is a 28 year old language. C has evolved massively since then, but the user base has dwindled. Many game libraries are moving to C++ only. As well, C++ came to be because of the inability ( arguable I know ) of C to scale to large projects; this fact hasn't changed.

As to the direct reasons why C is a fairly poor beginners language, again the standard libraries are downright anemic even compared to C++! Then we get into the matter of safety. I've not much followed the evolution of C as a language so I don't know if they've fixed the myriad of exploitable language features, but that was a major downside the last time I used C.

I agree that learning a language in advance of C++ will make the task easier, but there are better choices than C.
1

Share this post


Link to post
Share on other sites
Hmm, i read that article and probably it's better if i learn C# instead. I've never particularly liked the way C++ is scripted either. From what i know C# is much more similar to Squirrel than C++ and also as i understand XNA is a great way of starting up. Thanks for the advices guys, now i know where to begin programming at least. Edited by Lama43
1

Share this post


Link to post
Share on other sites
[quote name='Lama43' timestamp='1337419682' post='4941387']-What language suits my needs best?[/quote]

It's hard to say. I mean, you didn't really provide a set of needs.

You stated that you're a beginner, so you're probably looking for a modern language with a rich set of libraries, a relatively large community, and a wealth of instructional resources.

If that's the case, I think you should look into [url="http://www.python.org/"]Python[/url].

[quote]-What do I need to make the graphics part of the game?[/quote]

You can create your assets with [url="http://www.blender.org/"]Blender[/url].

[quote]-Is there any good tutorial that gives info on every step of game development?[/quote]

Actually, there is: [url="http://www.gamedev.net/topic/625003-video-tutorials-blender-game-engine/"]http://www.gamedev.n...er-game-engine/[/url]


My thoughts on C vs C++:

It's perfectly possible to make good games using either. There are valid arguments that could be made against C, but I think it's worth remembering that "OOP" is just a paradigm, which one could follow in any language.
0

Share this post


Link to post
Share on other sites
[quote name='Serapth' timestamp='1337431887' post='4941421']
learning C is not a great starter language
[/quote]

Totally disagree with this, C was my first language and learning the hard stuff first makes every language after that so much easier (especially since you understand what's going on beneath the syntax)
0

Share this post


Link to post
Share on other sites
[quote name='Rybo5001' timestamp='1337947348' post='4943203']
[quote name='Serapth' timestamp='1337431887' post='4941421']
learning C is not a great starter language
[/quote]

Totally disagree with this, C was my first language and learning the hard stuff first makes every language after that so much easier (especially since you understand what's going on beneath the syntax)
[/quote]


This is one of those baffling pieces of logic I see recurrent among ( pro and prospective ) game developers. Think about this for a moment, with every other topic you can imagine for which formal instruction exists... do you EVER start off hard to make the easier stuff later seem easier?

No, you don't. You start learning math by learning your numbers and sums and progress from there. You don't start with calculus! When learning to cook, you don't start with a souffle. If you pick up a chiltons manual to fix your car, does it start off with engineering an engine? Do interns start with open heart surgery? You don't learn English by reading great literary works, you start with the basics, like Mr Muggs goes to School and Red Shoe, Blue Shoe, Green Shoe, MooShoo.


This whole meme of starting with the hard stuff to make the easy stuff easier is so patently wrong in 99.999999% of endeavers, what exactly makes computer science so unique as to buck the trend.

Here's a hint. Nothing.

Starting hard is just a bad way to waste your time. Don't get me wrong, you can do it, it's just certainly not a productive way to go about things, as millennia of teaching experience has already taught us.

Now, you could argue if C is hard or not, but that's a completely different conversation.
1

Share this post


Link to post
Share on other sites
[quote name='Serapth' timestamp='1337968878' post='4943299']
This is one of those baffling pieces of logic I see recurrent among ( pro and prospective ) game developers. Think about this for a moment, with every other topic you can imagine for which formal instruction exists... do you EVER start off hard to make the easier stuff later seem easier?

No, you don't. You start learning math by learning your numbers and sums and progress from there. You don't start with calculus! When learning to cook, you don't start with a souffle. If you pick up a chiltons manual to fix your car, does it start off with engineering an engine? Do interns start with open heart surgery? You don't learn English by reading great literary works, you start with the basics, like Mr Muggs goes to School and Red Shoe, Blue Shoe, Green Shoe, MooShoo.


This whole meme of starting with the hard stuff to make the easy stuff easier is so patently wrong in 99.999999% of endeavers, what exactly makes computer science so unique as to buck the trend.

Here's a hint. Nothing.

Starting hard is just a bad way to waste your time. Don't get me wrong, you can do it, it's just certainly not a productive way to go about things, as millennia of teaching experience has already taught us.

Now, you could argue if C is hard or not, but that's a completely different conversation.
[/quote]

None of those analogies really work for coding, though. Nearly all of those things directly build on what you had to learn before. A programming analogy for the examples you gave would be learning multithreading before you learned loops.

No one is saying start by learning the hardest parts of C, but if, while you are learning the basics of programming, you are able to pick up on some of the things that make C/C++ harder to learn, then it is very useful. There are advantages to going both ways, but for many people, starting with the more complicated language is the easiest method. It was for me.

It takes a little longer to feel like you have good control over the language you start with, but it makes it easier to pick up other languages later (I've never met anyone who thought going from C++ to Java was harder than going from Java to C++). It's really a personal preference, which depends greatly on someone's learning style. Not everyone learns the same way.
0

Share this post


Link to post
Share on other sites
The examples are hyperbolic I agree to that, but the gestalt is exactly the same. I am speaking only to the line "learning the hard stuff first makes every language after that so much easier"
or your later comment of
"
[left][background=rgb(250, 251, 252)]starting with the more complicated language is the easiest method".[/background][/left]



This is simply not true. It is all a matter of perception, and frankly self deception. There is nothing so specifically special about programming, compared to so many other skills you learn in life, although people really like to believe there is.

Here is the reality of it ( to use your example of ), going from C++ to Java *seems* easier, as you have already learned the majority of the difficult aspects in what is a traditionally more difficult language. That you had a hard time learning didn't magically make this process quicker, in fact quite the opposite. Again, I am not making the claim that C++ is harder than Java, that is subjective/personal and subject for a different thread that has been argued ad nauseum.

However, if your personal experiences are with X, which was a difficult subject to master, then you learn Y with much greater ease, you are going to conclude that you succeeded in learning Y faster because of the lack of difficulty you encountered while learning X. This is where the fallacy comes in. The first thing you learn, on almost any subject, is almost always going to be the most difficult part, while each successive topic is going to be progressively easier to learn, even if the domain itself is considered more difficult. This is why it takes months to years to master an initial programming langauge, while often takes weeks or even days to master a new language. Intentionally looking to start with the difficult bits is doing you no favor!


Again, I am not getting into the nitty gritty langauge debate over if C ( or C++, Java, or whatever else ) is or is not a hard language to learn with, that is not the crux of this argument. Learning in reverse order of (personal) difficultly, is an exceptionally bad way to go about learning, as is evidenced by the way pretty much ever single subject in every single topic is currently taught.


You are right, all people learn differently. This is why I am not getting into the whole conversation of if C is or isnt difficult to learn, I have my opinion on that topc, and a great deal of it is subjective. ( Ironically too, my stated objectopn to learning C first has nothing to do with difficulty, as is clear if you scroll up ). However, until you have learned a subject yourself you really can't make a judgement call on the difficulty of learning something, so we make societal judgements on relative difficulty. They may not apply to everyone, but they do apply to the majority.


Simply put, if you are trying to learn to program and are finding say C++ exceptionally difficult, and you tried say Python and found the process much easier, continuing to learn in C++ "because it will make learning in the future easier", is overwhelmingly WRONG.



/EDIT: Editor is borked, no matter what I try, I cant reformat that one extra newline at the top after the quote. Edited by Serapth
0

Share this post


Link to post
Share on other sites
Finally the argument that "I learned it this way and I turned out fine", is about as meaningful as proving your magical tiger protection stone works because you haven't been attacked by tigers. I KNOW the way I learned wasn't ideal, but I still ended up learning how to program quite well. I am never going to suggest the way I learned to other people simply because it worked for me, nor am I going to conclude it was the ideal way because it was successful.


There is certainly no argument that everyone learns differently. But I do not think you will find an educator alive that doesn't believe learning ( in any subject ) is best done with a progressive difficulty curve. Edited by Serapth
0

Share this post


Link to post
Share on other sites
To get your assets, I would recommend making pixelart in mspaint.

Btw Java can be only 1.1 time slower than other languages on average, and it depends on the situation.

There are many Java tutorials on TheNewBoston.org, although they also 15 videos on C, 73 videos on C++, and 200 videos on C#.
0

Share this post


Link to post
Share on other sites
I don't know if this has already been suggested, but...

You can always go with WebGL + Javascript, using the Three.js engine. This is a great choice, because it is platform independent, and has a great deal of abstractions, which you can use, but you don't have to (in this context, you can think of abstractions as pieces of code that do the hard math, shading and so on for you, so you can concentrate on what you're doing). WebGL has direct access to the GPU, so these games wont have any problems running, and the best part: most browsers (Chrome, Firefox, Safari, Opera, etc) have native support for WebGL! This means no plugins, it's already in there!

WebGL is pretty similar to OpenGL, and it uses the same shader language (GLSL). If you were to only use WebGL, you would have to write shaders yourself, but Three.js does a lot of the work for you. This is not to say that you can't write them on your own, you can. (Shaders are basically pieces of code which are compiled on the fly and sent to the GPU to tell it how something should look.)

Here are some resources for you:

[url="http://gdd11-webgl.appspot.com/#1"]Intro to WebGL and Three.js[/url] (presentation)
[url="https://github.com/mrdoob/three.js/"]Three.js GitHub page[/url] (GitHub is a page where coding projects are hosted, just download the Three.js, I think it's in the build/ directory)
[url="http://www.html5rocks.com/en/"]HTML5 Rocks[/url] (a great page for learning HTML5)
[url="http://learningthreejs.com/"]Learning Three.js[/url] (a great Three.js blog, many cool examples)


In case you don't really want to jump straight to the 3D stuff, check out the <canvas> element.
0

Share this post


Link to post
Share on other sites
I don't want to get into this too much, as it is a little off topic, but I don't disagree with the general ideas you put forward in your post, Serapth, but you again seem to be missing how "learning a programming language" is different from many types of learning (partially because learning a programming language is learning multiple things: programming concepts, concepts specific to the language, and syntax).

I will definitely give you that if your goal is to program something 'real' or 'substantive' quicker, then learning other languages is probably a better idea than learning C/C++. A lot of that is because there are generally (not always) fewer "concepts" to learn before you get into that.

I want to preface the rest of this by saying that I'm not talking about everyone in the next few paragraphs, just some people (who learn in certain ways).

However, if your initial goal is just 'learning to program' (and you don't mind waiting longer to make a substantive program, which is a personal decision) then C++ is NOT a terrible first language. It's not the best for everyone, it may not even be the best for most people, but it's definitely not terrible. You STILL are learning progressively. You don't start out with the hard parts of C++. It is not really any more difficult to code very basic programs (the type you program when just starting out) in C++ than any other language (or at least the difference in difficulty is negligible). If you are just going through learning concepts and building on them, then C++ works just as well as any other language for that (at least for a while). C++ also makes it easier than many languages (again, not all) to learn a variety of programming styles.

The reason I (and many others) say that it's easier to go from C++ to Java/C#/etc. than the other way around is NOT just because I learned C++ first. It's not even because I've seen other people going both ways and everyone I've seen who went to C++ first had an easier time switching languages than those who went the other way (as that is anecdotal and I realize that it could have just been that the people who learn programming easier happened to pick C++ first). The reason I (and many others) say that it's easier to go from C++ to the other languages is because there are (again, generally) fewer concepts that you have to pick up on to program in those languages (which is why, I believe, many others recommend going to, say, Java as a first language), so you are MOSTLY learning syntax. If you can program well in C++, then you have to learn less to program in Java than if you go the other way. Yes, there are some concepts/methods to learn, but it generally takes less time to learn those concepts you need for Java than those you need for C++.

As long as you are learning progressively (starting from the basics and moving on), MOST languages are decent starter languages. You just have to pick the one that fits your goals more closely (such as how quickly you want to program something substantive vs. how deep you want to get into how things work "below the language" before you program something substantive). The error you pointed out earlier is NOT something someone just starting out should run into (if they are starting with beginning concepts as they should), so it is NOT something to worry about when picking your first language.

Again, a little off topic, so I'm done posting about it, I just wanted to clarify what I was talking about and that I completely agree with you that you should start simple when learning new things, I just disagree on whether or not it's possible to start simple with C++.

It's like actual (non-programming) languages. Most are fairly easy to learn when you are just learning very basic grammar and counting. Some are just going to make you learn more things before you get to the point that you could write a book in that language.
1

Share this post


Link to post
Share on other sites
[quote name='Serapth' timestamp='1337968878' post='4943299']
Now, you could argue if C is hard or not, but that's a completely different conversation.
[/quote]

Not to get too far off topic but I would argue learning C first isn't harder, it's more a case of understanding how things work on a low-level before using them on a high-level.

To continue your analogies, I wouldn't learn how to make a cake until I'd learnt about eggs and how they must be cracked first. If I understand the ingredients, my recipe is much more refined.
0

Share this post


Link to post
Share on other sites
Somebody please tell me which languages are the best for learners (first time game developers) , maybe small game or large game doesn't matter but want a language that can be used to develop from small games like angry birds to big games of mmorpg type like Ragnarök , rune scape ,world of Warcraft etc.
please do help me as i am interested in developing games and i do know basic programming in C and am trying to learn C++ ,C# for the above purpose.
i am planning of developing the games in India (my home country) because of low labor costs.
can you please give me an estimate for runescape type game how much money is needed for every aspect of developing like servers, softwares , how much hours of developing , what are the per hour rates for developers in Europe , U.S. and also the currency.

i do have some concepts in mind though but am thinking of developing small games (coding wise) and then go for the big ones !!!
0

Share this post


Link to post
Share on other sites
[quote name='Serapth' timestamp='1337431887' post='4941421']

For new C++ programmers, they should be encouraged to stay the hell away from C and instead learn idiomatic C++.

Second, C++ is a horrible first language, period. Don't believe me, [url="http://www.gamefromscratch.com/post/2012/05/18/This-is-why-I-say-CPP-isn%E2%80%99t-a-beginner-friendly-language.aspx"]read this scenario[/url] and be completely honest with yourself, "could you have found the problem?". That's because C++ is rife with this kind of crap and you will be dealing with it from day 1! People say it's stuff like memory management that make C++ difficult, but it's not, not really... it's stuff like this. The horrible linker, the lets support every single bloody edge case even if nobody is ever going to use them mindset, the piss poor standard libraries, the fact its actually 4 languages smashed together, the weight of a thousand legacy mistakes. All of those negatives may eventually be a positive ( except the linker, which just sucks ), but to someone starting out they all work together to make C++ a terrible terrible starting language.
[left][/quote][/left]

C++ was my starting language and same with a number of people I know. It isn't really difficult. And it seems to me that this is more of a rant against a language. Shouldn't really scare someone from using a language like that. I'd say take some time to check out C++ till an intermediate level is reached and see if it's the right language or not. I mean, it IS an industry standard. Almost every Game Dev related degrees in colleges are also starting with C++. Yeah C++ can be difficult, but every language have war stories. When I started with C++, in about 4 months I ended up making an Assassin's Creed version of Pong using Direct2D with animated sprites, FMOD implementation, etc. Plenty of people get through C++ as their first language and the results are very positive. Also, understanding C++ makes using C a LOT easier. Implementing C functions in a C++ program gets some nice results with the wide variety of libraries and methods. I think using it as a starter language depends on two main things: 1) how much time you have and 2) why you want to make games. Since you're 15, I'm guessing other than high school, you have plenty of free time. So maybe learn another language first, then go to C++. With enough dedication you could probably be at least Intermediate at programming before you even hit 18! And why do you want to make games? Do you want to do is as a small hobby? I've found that Java or ActionScript(Flash) are good for just making a few quick and fun games. Or maybe you want to turn this into a career? In that case consider where your dreams take you. Mine took me to the multi-platform development. In that case, I went straight to C++ (then C#, then Java, but Java was just for fun). But maybe you don't want to focus ONLY on making games for PC/PS3/360/Wii, maybe you just want PC, well then you have a much larger choice (I enjoy C#, but I'm also a lover of Object Oriented Programming), but you could make flash games or web games (Java,ActionScript,HTML5, etc) or downloadable games(C++,C#,etc).

Or hey, you got some scripting under your belt at a young age, that's really impressive! I'd say be a boss and make an OS strictly for gaming using assembly language! lol.
0

Share this post


Link to post
Share on other sites
[quote name='thugthrasher' timestamp='1338050180' post='4943508']
... SNIP ...
Again, a little off topic, so I'm done posting about it, I just wanted to clarify what I was talking about and that I completely agree with you that you should start simple when learning new things, I just disagree on whether or not it's possible to start simple with C++.
... SNIP ...
[/quote]

Since you are done, not much point in replying to you in detail. C++ really doesn't start simply, that's the catch. Right off the hop, you need to understand the compiler, the linker and the preprocessor, just to make a simple Hello World. From there the complexity level ramps up extremely quickly compared to other languages, especially once you start dealing with external libraries or hell, even once you start breaking your code into multiple files a common tripping point for new C++ developers. I won't even get into UI programming, where C++ takes a complete and utter dump. ( Or you use Qt, which essentially involves learning yet another language! ). This isn't even getting into the fact that C++ itself is a mashup of a number of languages, all of which are different... hell, the C++ templating language is turing complete!!!! So, yeah, the code requirements of a trivial "Hello World" application might be simple and approachable, but it ends shortly thereafter, once the new developer realizes just how terrible the standard libraries are. So, you may be able to start simply in C++, but you will stay simple only while creating the most trivial of applications. Again, I am not arguing that you *can't* start with C++, I'm just saying its not a particularly good idea.


[quote name='Pratik' timestamp='1338128132' post='4943713']
Somebody please tell me which languages are the best for learners (first time game developers)
[/quote]

[url="http://www.gamefromscratch.com/post/2011/08/04/I-want-to-be-a-game-developer.aspx"]Read this.[/url] On top of that for smaller 2D style games, add HTML5, LUA/Love/Moai, ActionScript and Cocos2D to the list of viable languages. ,

[quote]
maybe small game or large game doesn't matter but want a language that can be used to develop from small games like angry birds to big games of mmorpg type like Ragnarök , rune scape ,world of Warcraft etc.
[/quote]
Programming language selection is the least of your concerns in this regard, and chances are in almost any of those games you would use multiple programming languages. Hell, Mozilla [url="http://www.gamefromscratch.com/post/2012/03/29/I-want-to-make-an-MMO-Now-what.aspx"]released the sourcecode[/url] to a simple HTML/Javascript MMO recently.

[quote]
please do help me as i am interested in developing games and i do know basic programming in C and am trying to learn C++ ,C# for the above purpose.
[/quote]
Read the link I gave you, the next part is up to you.

[quote]
can you please give me an estimate for runescape type game how much money is needed for every aspect of developing like servers, softwares , how much hours of developing , what are the per hour rates for developers in Europe , U.S. and also the currency.
[/quote]

Yes, I suppose I could. I won't, and I doubt anyone else will either. First off, such numbers would be meaningless, second, such a task would take an insane amount of time. You can get costing details [url="http://www.gdmag.com/"]from GDMag post mortems[/url], expect the most basic MMO to cost you > .5M, with the typical being in the 3-20M range and something like Old Republic more like the 80M mark.

[quote]
i do have some concepts in mind though but am thinking of developing small games (coding wise) and then go for the big ones !!!
[/quote]

Do exactly that, start small.
[quote name='kbenderoth89' timestamp='1338258714' post='4944219']C++ was my starting language and same with a number of people I know. It isn't really difficult. And it seems to me that this is more of a rant against a language. Shouldn't really scare someone from using a language like that. I'd say take some time to check out C++ till an intermediate level is reached and see if it's the right language or not. I mean, it IS an industry standard. Almost every Game Dev related degrees in colleges are also starting with C++. Yeah C++ can be difficult, but every language have war stories. When I started with C++, in about 4 months I ended up making an Assassin's Creed version of Pong using Direct2D with animated sprites, FMOD implementation, etc. Plenty of people get through C++ as their first language and the results are very positive. Also, understanding C++ makes using C a LOT easier. Implementing C functions in a C++ program gets some nice results with the wide variety of libraries and methods. I think using it as a starter language depends on two main things: 1) how much time you have and 2) why you want to make games. Since you're 15, I'm guessing other than high school, you have plenty of free time. So maybe learn another language first, then go to C++. With enough dedication you could probably be at least Intermediate at programming before you even hit 18! And why do you want to make games? Do you want to do is as a small hobby? I've found that Java or ActionScript(Flash) are good for just making a few quick and fun games. Or maybe you want to turn this into a career? In that case consider where your dreams take you. Mine took me to the multi-platform development. In that case, I went straight to C++ (then C#, then Java, but Java was just for fun). But maybe you don't want to focus ONLY on making games for PC/PS3/360/Wii, maybe you just want PC, well then you have a much larger choice (I enjoy C#, but I'm also a lover of Object Oriented Programming), but you could make flash games or web games (Java,ActionScript,HTML5, etc) or downloadable games(C++,C#,etc).

Or hey, you got some scripting under your belt at a young age, that's really impressive! I'd say be a boss and make an OS strictly for gaming using assembly language! lol.
[/quote]

First off, I would recommend you use paragraphs more when quoting someone, I could have sworn you called me 15 the first few times I read that! [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]

I think I covered why I disagree with you in this post and in previous ones. I will leave you with an analogy though that perfectly sums up my view of C++ and beginners.

Do you golf? I do and I am remarkably meh at it. I don't embarrass myself, but I am no Tiger Woods( now, or before he started to suck); considering I am drunk more often than not while playing, I am pretty content with my skill level.

I went shopping for new clubs a couple years back as my skills improved, and picking out golf clubs is remarkably similar to picking out programming languages. I went with a set of Ping 'blade' style clubs. You know why? That's the club the pro's use! Wanna know what it did for my game? Destroyed it, absolutely and completely! I added about 10 strokes to my game over all, a gigantic step backwards. Why is that? Well in order to take advantage of blades, you need to hit the ball EXACTLY right. What does this get you in the end? If you swing perfectly, probably another 10-15% yards in distance and the potential to put a bit more spin on your ball. See, I can certainly still finish a round of golf with these clubs, but it sure aint as pretty as if I used the "right" clubs. They certainly have their place in a golfers bag, but they sure as hell do not belong in a beginners bag! Now I suppose I could have started from day one using blades, and this would save me the learning curve later on down the road. Yet by then I would have probably quit the game in frustration, or would take a hell of a lot longer to get good at it. For the record, not all pro's use blades...


Coincidentally I started with Assembly in an age where people looked down their noses at anyone that started with C as too high level, which was as stupid in that day as it is now. My High School CS course taught PASCAL and I turned up my nose at it at the time, as I already knew C. I guess some lessons you need to learn in your own time... Edited by Serapth
0

Share this post


Link to post
Share on other sites
[quote name='Serapth' timestamp='1337968878' post='4943299']
[quote name='Rybo5001' timestamp='1337947348' post='4943203']
[quote name='Serapth' timestamp='1337431887' post='4941421']
learning C is not a great starter language
[/quote]

Totally disagree with this, C was my first language and learning the hard stuff first makes every language after that so much easier (especially since you understand what's going on beneath the syntax)
[/quote]


This is one of those baffling pieces of logic I see recurrent among ( pro and prospective ) game developers. Think about this for a moment, with every other topic you can imagine for which formal instruction exists... do you EVER start off hard to make the easier stuff later seem easier?

No, you don't. You start learning math by learning your numbers and sums and progress from there. You don't start with calculus! When learning to cook, you don't start with a souffle. If you pick up a chiltons manual to fix your car, does it start off with engineering an engine? Do interns start with open heart surgery? You don't learn English by reading great literary works, you start with the basics, like Mr Muggs goes to School and Red Shoe, Blue Shoe, Green Shoe, MooShoo.


This whole meme of starting with the hard stuff to make the easy stuff easier is so patently wrong in 99.999999% of endeavers, what exactly makes computer science so unique as to buck the trend.

Here's a hint. Nothing.

Starting hard is just a bad way to waste your time. Don't get me wrong, you can do it, it's just certainly not a productive way to go about things, as millennia of teaching experience has already taught us.

Now, you could argue if C is hard or not, but that's a completely different conversation.
[/quote]

I agree whole-heartedly. I started with VBasic, for a little while, and was like "this is slow, I bet I'll get great much faster by going with C++!". I took a beating. For a beginner, something like Python, or VB, or a scripting language is great, because printing something to the screen. Is print "hello, world". You don't sit there and scratch your head trying to figure out what the cryptic method calls are, and what an include statement is. It's possible to do it. I probably could have. However I'm glad I stepped back from that and went to Python for a while. With the little time I initially spent with C++, I felt like I was backpedaling the entire time, just so I could glimpse the top of the mountain.
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0