Game programming...

Programming, for all ages and all languages.
SebasC

Game programming...

Post by SebasC »

Okay me and some friends are working on a game.. okay now comes to stupid question...

what is normally used for NORMAL game programming...

I Was thinking c++ ??
Achilles

Re:Game programming...

Post by Achilles »

I guess that depends on the definition of "normal"... Back in the days when size and speed really mattered, most games were programmed in assembler. After that, people started using HLL's like C or Pascal. Download the source of some older games to see (ROTT source was just released). Games today all seem to be coded in C++. Once programs start to get large, an OO design reduces complexity quite a bit. But when it comes down to it, does it matter what people do/have coded games in? Games can be written in anything. My advice is to stick to what you know, unless all you know is truly the wrong tool for the job. Writing a 3d action game in QBasic might be kind of tough :)
SebasC

Re:Game programming...

Post by SebasC »

Okay well i dont know anything heheheh okay... qbasic but thats waaaaaaay to old and im getting into C++ so thats why.. :P But we wanna make a game that is compareble to a commercial game... not just some simple easy @$$ game... Catch my drift?? :)
Joel (not logged in)

Re:Game programming...

Post by Joel (not logged in) »

If you want to do that in a Windows environment, then you'll need to use a language that can use DirectX. In theory, that should be any language at all (DirectX is based off of COM, which is somewhat language-independent). If you're already learning C++, that's probably as good a language as any to use. Visual Basic I think can also do DirectX.
Joel (not logged in)

Re:Game programming...

Post by Joel (not logged in) »

then again, there are also other options, such as OpenGL.
Tim

Re:Game programming...

Post by Tim »

If you don't need to use 3D graphics then you don't need to use either Direct3D or OpenGL. The GDI functions are enough for most situations.
SebasC

Re:Game programming...

Post by SebasC »

Tim Robinson wrote: If you don't need to use 3D graphics then you don't need to use either Direct3D or OpenGL. The GDI functions are enough for most situations.
Well im gonna use 3d objects and characters en surroundings... and im gonna go with Direct3D... OpenGL can always be implanted afterwards...
Schol-R-LEA

Re:Game programming...

Post by Schol-R-LEA »

While I don't have much advice to give on the subject directly, I can tell you that a jog through this forum's archives will find some real gems (if you look hard enough for them), such as this essay on amateur game development that DF was kind enough to post a link to. I know that both GameDev and Game Tutorials have been mentioned as well.

I don't think it ever comes up here, but in OS Development forum's book list, I gave a link to an online edition of Michael Abrash's Graphics Programming Black Book, which, despite its age (published in 1997, with some of the material dating back to the mid-1980s), remains one of the canonical references on optimizing graphics. Even the now badly out of date material on PC assembly language is well worth reading both as background for later developments, and as an example of how a really great programmer works. His prose is very readable and enjoyable, even when discussing heavily technical subjects, and the sections on 3D theory are still applicable today. While it is sorely in need of update, it is still a real gem. This is a mirror site to the DDJ page that originally released the book online; AFAIK, it is a legally available copy, though IANAL and cannot be certain. I recommend downloading it, all 70+ chapters, as it is a reference you'll want to have on hand.

I will add this, though: take all the small steps you need to get to where you are going, and don't try too much at once. The net is filled with frustrated wannabe game designers who tried to go to fast and made a mess of it. If you don't have any prior programming experience, the learning C++ will, by itself, take several months (see Replies #11, #18 and #32 in this thread, reply #202 in this thread, reply #7 in this thread, and reply #3 in this thread for my advice regarding learning languages). You should take at least as long after that to master basic game design.

I suggest that you practice your game-design skills with the following sequence:
  • 2 player checkers or Go, to practice drawing and redrawing simple sprites on a simple background;
  • 2-player chess, to practice working with different sprites;
  • Tetris;
  • Breakout;
  • Space Invaders;
  • Pac-man;
  • a simple side-scroller like Defender;
  • an overhead scroller like Gauntlet or Sini-Star;
  • a simple leveller like Lode Runner or Donkey Kong;
  • a side-scrolling leveller like Super Mario Bros.;
  • a simple flight sim to begin practicing 3d programming (experiment both 1st and 3rd person-overhead perspectives);
  • back to chess or Go, to work on basic AI techniques;
  • a turn-based strategy game like X-Com;
  • a RT strategy game like C&C or MechCommander;
  • back to the flight sim for a dogfighting game;
and after all that, you should be ready to do some real game design. :)

Do you have to go through all these steps? Probably not. Would you end up a better game developer if you did? Almost certainly. The choice in this is yours to make.
Schol-R-LEA

Re:Game programming...

Post by Schol-R-LEA »

Allow me to elaborate on some of what I said above (as if that weren't enough already).

It is prerequisite to games programming that you first learn the language(s) in which the games will be written, and then how to write programs that work using the OS that it is written for. This is obvious, but should not be understated.

I will assume that you are writing programs for Windows XP, and DirectX 8 or higher, as you stated earlier. I will also assume that you mean to use C++, as you stated earlier. I will finally assume that you do not currently know much C++, and that you have never learned any other language before.

So the first step is to learn C++. How long it will take to learn C++ depends on yourself, but unless you are very fast can count on at least 4 to 6 months at least to learn the basics of the language. For a first time programmer, this will be more towards the latter than the former, even assuming a crash course study program.

To learn enough of it to do anything productive in it will take at least another 3 to 6 months. :-\ It should be noted that most Universities offer C++ over two semesters, and even then they rarely dig very deep into the language, but I am assuming that you can learn faster on your own.

Your choice of study material is critical in this; however, since everyone learns differently, a blaknket recommendation of a textbook and references are probably pointless. My own preferences are for The Waite Group's C Primer Plus and C++ Primer Plus as starting text followed by Bruce Eckel's Thinking in C++ for more advanced study, with O'Reilly and Assoc.'s C++ Core Language as a reference. YMMV. I would also mention that the GameTutorials.com web site has tutorials on the basics of C and C++ as well; while they do not constitute a full course of study by themselves, they do serve as good examples of the important concepts.

If you take the time to learn another language first, you will probably save more time in learning C++ than it took to learn the other language. For example, it would generally take less than a month to learn Python (this tutorial does a good job of starting things off; after that, try Thinking in Python as a possible study book), but it would easily cut your time in understanding C++ down by two or more months. Scheme (as taught in this book) takes less than a week to understand well enough to program in, and would save about a month in learning time (it is very different from C++; however it teaches you some very interesting things about programming, and it would mean you could learn Python faster). Assembly language would take perhaps three months using Assembly Language: Step by Step, but reduce the time for understanding C++ by two; if you mean to do some serious 3D rendering, then you'll want to know some assembly programming anyway, so this is highly recommended.

So, my suggestion is to pick up a bit of Scheme quickly, then go through some scripting language like Python or Perl, then, if you can get a copy of AL:SbS, learn the basics of assembly. You'd have spend perhaps 5 months, but you now should be able to learn a useful amount of C++ in three, saving 1-2 months of overall study time, and you'll know four languages, not just one.

Getting a reasonable grasp of general Windows programming will probably take another 3 months, or more.

At this point, you've probably got close to a year of programming under your belt. Good. You will probably spend at least another year at game programming before you can really expect to see results (as described in the early posting), and several more at it to get really good at 3D work. HTH.
Schol-R-LEA

Re:Game programming...

Post by Schol-R-LEA »

Just out of curiosity, I would like to know:
  • how much C++ do you already know, if any?
  • Have you used any other languages to date, and if so, what?
  • How long have you been using computers, and how long have you been programming?
  • How many of your friends would be involved in this project, and how much experience do they have?
  • Are you a student, and if so, what are you studying?
Beyond that, if you need any help or advice, feel free to ask us on this board; it is what we're here for, after all.
SebasC

Re:Game programming...

Post by SebasC »

Schol-R-LEA wrote: Just out of curiosity, I would like to know:
  • how much C++ do you already know, if any?
  • Have you used any other languages to date, and if so, what?
  • How long have you been using computers, and how long have you been programming?
  • How many of your friends would be involved in this project, and how much experience do they have?
  • Are you a student, and if so, what are you studying?
Beyond that, if you need any help or advice, feel free to ask us on this board; it is what we're here for, after all.
Okay i will answer them in the correct order and please dont laugh cause like i said Im totally new at this and if i havent said it now i do! :P

1. I Have None Expierence With C++, Still Looking For Some GOOD Books To Buy. And I Dont Really Care How Long It Will Take For Me To Learn Im Almost 20 Years old So I Still have A Lifetime :)
2. Some Olddddddd!! Languages.. Like Qbasic And Pascal... But Not Much... I never Used To Be Into That Until I Recently Found Out I Wanted To Create A Game :P
3. Ive been into computers since i was 9 years old.. no lies! and programming well i started liking it maybe a year ago but i never did anything with it... maybe to lazy.
4. Well like 4 guys, and well everybody does something else so one a little programming, one goes onto graphics and one for music. I Will MAINLY go for graphics.. i like that a lot more but its also handy if i learn to program stuff just for my own benefit.
5. And im not a student anymore... i quit school a year ago... i did a Information & Communication Technology... But everything i learned in that year was stuff i already knew when i was like 13/14 years old. Dutch Schools Suck!! :P

I Hope i answered your questions with this :)
failrate

Re:Game programming...

Post by failrate »

There is nothing wrong with writing a program in PASCAL or QBASIC. I've even seen some full releases done in Visual BASIC that could have been commercial releases if they had improved the animation.

In my case, I only really use scripting languages, either with a fully developed studio (like AGIStudio) or with nice, simplified cross-platform libraries (like Java and Python). Of course, my games aren't intended to be performance-based. Quite the opposite. I intend for my games to be playable even on legacy machines.

So, if you're not making an ultra-fast first person shooter, you don't need to program in C or C++. Also, you should take a look at Abuse, a side-scroller game (And a really, really badass one, at that!), which was written in Lisp, basically, because the guys at crackdotcom wanted to prove they could write a fast, robust game in such an obscure language.
Schol-R-LEA

Re:Game programming...

Post by Schol-R-LEA »

Really? I'll have to go check it out.

'Obscure'? sigh Only to those who insist that Dennis Ritchie created the computing world in seven days. ::)

I seem to recall that the original MDK was also written partially in Common Lisp. And I think that my opinions about Scheme are pretty well known...

OTOH, you can't go wrong with learning C++, as long as you take the time to learn it well. Too many programmers jump the gun and try to tackle complex goals before they have developed their skills sufficiently to meet the objectives. I am speaking from experience: when I was starting out, I took a C++ programming position that, in retrospect, I was nowhere near qualified to handle, and the whole job quickly became a disaster. What should have been 2 weeks work was still struggling along after two months, at which point they pulled the plug on the project (there were other problems in that job not related to that, some of which led me to leave the firm a short time later, but that particular project failed largely due to my own overconfidence and inexperience). If you do get into that sort of situation, however (and it happens to most programmers eventually), step back from the problem, consider it a learning experience and move on; the worst thing you can do is dwell on failure (again, this is personal history talking). HTH.
Andrew_Baker

Re:Game programming...

Post by Andrew_Baker »

Personal Experience: Have a thorough outline of the elements you will need to include in your game before you even begin coding. This will be necessary if you want to have any real progress.


Because if you go in without a "bible" for your project, you will be screwed.
SebasC

Re:Game programming...

Post by SebasC »

Andrew_Baker wrote: Personal Experience: Have a thorough outline of the elements you will need to include in your game before you even begin coding. This will be necessary if you want to have any real progress.


Because if you go in without a "bible" for your project, you will be screwed.
You're Absolutly Right :) Cause you cant make a game without any ideas etc etc. :) Very smart :) But i already had that in mind :P hehehe but the question i asked in the beginning was just i case we ever get to the programming part hehehe :)
Post Reply