Sign in to follow this  

Game development, how to start and climb the stairs of success

This topic is 3856 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Note: This is for beginners I am not a guru. I have just one year experience in game programming. But this is enough to tell you one or two things. First of all, when I began, I immediately wanted to program the sims 3. But then I understood that you must aim lower, and then higher and higher. I think the best way to begin game programming is to learn a BASIC language, so you can make simple text and graphical games. After that, you must learn C++. Then OpenGL, which is easier that DirectX. After all these, you shall start using a game engine, like chrystal space or Irrlicht, which are free. And, most important, DON'T GIVE UP

Share this post


Link to post
Share on other sites
I agree with you mostly, except at the end.
If I had to say the easiest graphical api to use would be XNA but that is in C#, which I also think should be looked at before C++. Helps you get into the OOP, bit easier to program, and when you want the tightly coded performance (lets not start an argument though) then you can move onto C++.

Just my opinion though! Have a good one!

Share this post


Link to post
Share on other sites
Quote:
Original post by dada222
After that, you must learn C++.


This might cause an argument, but AFAIK it is true in a professionnal game programming context. You might want to learn another language before going on to C++. I found flash's actionscript to be useful even if it's an interpreted language. It helped me going to C++ (but C# might have helped me more).

Quote:
Original post by dada222
Then OpenGL, which is easier that DirectX. After all these, you shall start using a game engine, like chrystal space or Irrlicht, which are free.


I'm not sure about this... The purpose of using en engine is to simplify the creation of graphics/games by not programming directly with Direct3D or OpenGL. Using an engine will, in most cases, be easier than going the OpenGL/Direct3D route immediately. However, those APIs will be very useful to know about after some time to understand how things get done at a lower level.

Quote:
Original post by dada222
And, most important, DON'T GIVE UP


I think we can all agree on that ;)

Share this post


Link to post
Share on other sites
Quote:
Original post by dada222
Well, i had done some c# before but I had to use classes all the time! It gives you much less freedom


Now THIS is really going to cause an argument! lol

Share this post


Link to post
Share on other sites
Damn didn't knew procedural programming was still used in game development ;) Isn't it the opposite, classes gives you more freedom and makes it easier for you to code because you don't have to rewrite everything you already written twice ? Well i'm not a C coder so I "might" be wrong.

Share this post


Link to post
Share on other sites
Quote:

Well, i had done some c# before but I had to use classes all the time! It gives you much less freedom

No it doesn't, you can still write procedural code in C# (using static classes construct fake namespaces), and besides, "classes" don't limit you in any way. You're too focused on the implementation detail; a trait often developed by C++-only or highly C++-focused programmers.

Learning C++ is entirely unnecessary, unless you are going to be a professional game developer. However, if you're a beginner, you're not going to be a professional game developer and you will (in most cases) still have four years of college ahead of you before you can even begin to consider being a professional. Consequently, you should focus on a language that will help teach you the fundamentals of software design and development without bogging you down in implementation-specific cruft.

Although at the end of the day it is important to simply choose a language and learn it, and not switch around, C++ is still a very, very poor choice for an early language. Python or C# are much better choices. C++ is much easier to pick up as a third or fourth language, after which you will hopefully have a better understand of what is a general programming concept or paradigm and what constitutes language-specific implementation detail or idioms.

Share this post


Link to post
Share on other sites
I've been programming games as a hobby for something like 14 years and finally got a job a few months ago. here is the rough sequence of languages (and APIs) I used over the years:

1) GW Basic - it was all I had back then on my 8086
2) Quick Basic - hell of a lot easier then GW, one of my favorates.
3) C - Godly of god languages. I still use it today.
3.1) Win32 API

4) Blitz Basic/Blitz Basic 3D - This is an amazing language to learn graphical programming (2d and 3d) using very easy syntax. If you want to seriously make a prety good looking game but don't know much C/C++/C#/XNA then this is the language to get. This language taught me a lot about 3D game programming's basics and object control. Dark Basic is also very good from what I hear but I've never used it personally.

5) C++ - God's language made even more godly! I wouldn't have a job if I didn't know this language. Nuff said.
5.1) OpenGL
5.2) OpenAL
5.4) DevIL
5.3) SDL

6) C# - Solely for TOOLS, not for game dev. I am a low level guy so I haven't used this language yet for serious game design. I might in the future though just for fun to see how it fairs. (btw, I do like C# as an OOP language 100000x more then JAVA).

------------------------------------
now for the part where I get flamed
------------------------------------

JAVA is horrid. STAY AWAY FROM IT FOR ANYTHING GAME RELATED!

hope this helped,
-Linolium

Share this post


Link to post
Share on other sites
Quote:

now for the part where I get flamed

I'm more inclined to flame you for your zealous reverence of C and C++, personally. They have their uses, but the power you attribute to them suggests you need to branch out a lot more (and a lot more extensively).

Try some functional languages.

Share this post


Link to post
Share on other sites
Quote:
Original post by Trillian
Quote:
Original post by dada222
After that, you must learn C++.


This might cause an argument, but AFAIK it is true in a professionnal game programming context. You might want to learn another language before going on to C++. I found flash's actionscript to be useful even if it's an interpreted language. It helped me going to C++ (but C# might have helped me more).


This isn't quite true anymore, Flash9 (Actionscript 3.0) has a JIT compiler making it alot faster than the older flash versions.

Share this post


Link to post
Share on other sites
Quote:
Originally posted by jpetrieYou're too focused on the implementation detail; a trait often developed by C++-only or highly C++-focused programmers.


Yes, you are right probably. I am a C++ ADDICT.

Quote:
Originally posted by Trillian I'm not sure about this... The purpose of using en engine is to simplify the creation of graphics/games by not programming directly with Direct3D or OpenGL. Using an engine will, in most cases, be easier than going the OpenGL/Direct3D route immediately. However, those APIs will be very useful to know about after some time to understand how things get done at a lower level.


You said it yourself, it isn't necessary to learn OpenGL or Direct3D, but it gives you a better understanding of how things work.


Share this post


Link to post
Share on other sites
Quote:
Original post by dada222
After that, you must learn C++.
Why?

C++ is all well and good if you're going to be going for a job in the industry some time this year or if you're aleady comfortable with using it, but I fail to see how it can possibly be thought of as a 'must' if neither of those apply to you.

Quote:
Then OpenGL, which is easier that DirectX.
Not neccesarily easier, but different. Different people have different learning styles and your experience with the APIs will not neccesarily be the same as someone else's.


Quote:
DON'T GIVE UP
Good advice.


Quote:
Original post by nicknailers
Isn't it the opposite, classes gives you more freedom and makes it easier for you to code because you don't have to rewrite everything you already written twice?
It's perfectly possible to write proceedural code that is modular and reusable. You also shouldn't make the mistake of thinking OOP is just about classes; they can be a big part of it, but just using the class keyword certainly doesn't make your code good OOP design, nor are all problems best expressed in an OO way.

Share this post


Link to post
Share on other sites
Quote:
Original post by dada222
After that, you must learn C++.

Misleading, there are other alternatives out there, and they're not evil like C++.
Quote:
Original post by Linolium
5) C++ - God's language made even more godly!

Now that's just plain silly. It's the ruler of professional game programming by inertia from stealing C's crowd, not on it's own merits. Not that C++ isn't better than C, but that's like saying choking to death is better than choking to death while your privates are on fire IMO. Not that Java isn't worse, but C++'s mishmash of obtusely convoluted feature crosstalk is downright sickening, it's metaprogramming facilities are nonexistent except for the happy accidents of templates and macros that were never meant for metaprogramming in the first place, and every other paragraph of the C++ standard is saying that, yet again, anything so much as looking in such-and-such's general direction is in fact invoking undefined behavior.

Quote:
Washu on standard defined behavior in C++ on #gamedev (on irc.afternet.org):

Washu: You are more likely to find undefined behavior in a C++ program than to not.
xFFFF0000: But that is just like saying that you are more likely to find bugs in a C++ program than not.
Washu: Both of which are true, xFFFF0000.
Washu: In other words, its the same as saying: "You're going to fuck up, guaranteed!"


Quote:
6) C# - Solely for TOOLS, not for game dev.

I'll assume you're talking about your own experience with C#, since it has been successfully used for the commercial game Arena Wars.

Share this post


Link to post
Share on other sites
Well I had little experience in programming when I started C++, but it isn't so difficult.
Anyway, why is it so bad to get a little tired learning it? After this, you can make whatever game you like (sort of)...

Share this post


Link to post
Share on other sites
Quote:

Well I had little experience in programming when I started C++, but it isn't so difficult.

You probably don't even realize how little you actually know about the language. Check out Washu's test, in his journal.

Quote:

Anyway, why is it so bad to get a little tired learning it? After this, you can make whatever game you like (sort of)...

You can make whatever game you like in any other language; its your ability as a programmer that limits you, not the language. Knowing that, why would you choose a language is proven to be littered with legacy cruft and undefined behavior, that makes it a monumental effort to get a remotely nontrivial program up and running compared to any other modern language?

There are reasons to use C++, but you haven't struck upon any of them yet, you're arguments are all made out of ignorance of the field. Not that there is anything wrong with that -- you're just inexperienced.

Share this post


Link to post
Share on other sites
Quote:

I have just one year experience in game programming. But this is enough to tell you one or two things.


No it's not. You're a beginner, with limited knowledge and experience, and you can't teach beginners. I have more experience and I can't teach beginners either. It's dangerous. Nobody put you in this immensely hard position(teaching), so why you want to put yourself? Your job now is learning, not teaching. Do it well.

Share this post


Link to post
Share on other sites
Quote:
Original post by jpetrie
There are reasons to use C++, but you haven't struck upon any of them yet, you're arguments are all made out of ignorance of the field. Not that there is anything wrong with that -- you're just inexperienced.


I am going to take a stab at this, is it fine control of memory allocation, the 'god knows how many years' of legacy code/libraries that we use and most of the industry knows C or C++ to some degree?

I am just glad that the higher level languages are being used more and more in the today's games for gameplay logic and high level behaviour. I have just recently picked up Python after programming in C++ for so long and I am just finding it stupidly quick to get something up and running compared to my past projects in C++.

Share this post


Link to post
Share on other sites
Ah, summertime. The time when the teens have too much time to kill and think they should spread their non-existant knowledge with the rest of us. You're not alone.

You joined yesterday. Since then, most of your posts have been to either tell everyone to use Irrlicht (I'm assuming that it's the only engine you've had much experience with, so you assume it's the best) or promoting software piracy.

This isn't meant to be a flame, I'm sure your intentions are good, but I don't think you have the experience to be giving solid advice yet. You should be asking questions, not giving half-assed answers to them. You certainly shouldn't be answering questions that you don't know the answer to yourself.

I know how you feel, I was the same way at one time. I was learning something new, I was excited and wanted everybody else to have that same excitement. I tried to teach one of my friends C++ right after learning how to write a basic class. My cockyness, combined with my inability to teach something I didn't know, possibly turned him off of learning game development forever. Not a good way to spread your excitement, huh? Welcome to GameDev, we hope you'll become a valuable contributor. Now shut up and learn something! [grin]

Share this post


Link to post
Share on other sites
Quote:

I am going to take a stab at this, is it fine control of memory allocation, the 'god knows how many years' of legacy code/libraries that we use and most of the industry knows C or C++ to some degree?

Legacy code and lack of knowledge are correct reasons (most people aren't familiar enough with C# to be able to write well-performing code, because they'd rely on C++-isms and that leads to poorly-performing C# code in many cases -- thus the wealth of bad benchmarks).

However, the memory allocation issue is not quite as important as people would have you believe. It can be handled gracefully if you know what you're doing and don't try to code like you're still in C++; and even if that fails, there are solutions available to the underlying CLR implementation for a platform.

Which brings us to the other reason that C# is not yet viable for widespread professional use in the games industry: lack of deployability to consoles.

Once those issues get addressed in a few years, however -- and there are plenty of potential, viable, excellent ways they could be addressed (but that is a subject for another thread) -- C# or perhaps something like it will ultimately start edging out C++. But we're talking years here -- probably another five to ten.

But C# itself is perfectly viable for game development. It's not really the viability of the language for actually producing programs that holds it back, right now, it's a bunch of other issues. Indie and hobby and amateur developers can use C# to great effect. Probably greater effect than they could C++ for the equivalent effort.

Share this post


Link to post
Share on other sites
Quote:
Original post by dada222
But I just describe the way I did started...


Yup. That's exactly what you did. Described the way you started. Up to the smallest details. But you got to admit it's a bit funny when you instruct others to do exactly the same: "Learn BASIC, then you must learn C++, then OpenGL and not DX because it's easier,then Irrlicht or CrystalSpace...",etc,etc

Share this post


Link to post
Share on other sites
C/C++ is pretty cool. I knew people were gonna have problems with the statement telling newbs to learn it specifically though. I started out learning C then moved on to C++ and havn't done much of anything else except a little action script. When I first started trying to learn C it was a little tough but after doinga fair amount of programming with C things became easier moving on to C++. I've used C# very little so I can't say anything about it but it seems that many people like it. Is C++ dying off in the pro field? If so that makes me think way back to when I was first learning it from a book that said something along the lines of how it will never die, haha.

Share this post


Link to post
Share on other sites

This topic is 3856 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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