# road to making a game?

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

## Recommended Posts

well to put it bluntly I like almost every person on this forum wants to make a game( or another application). My main problem is I dont know what I would need to learn. I am currently learning c++ and nobody is going to stop me there but after the basics i dont know where to go. If i could get DirectX to work on my computer i would want to learn that too along with the needed win32 programming. I am no fool in thinking this will be easy and as it is I know it will take a long time but i would like to know which direction i should go. This is what i want to do if it helps. -learn c++ to a fine degree -make a 2D sidescrolling (megaman like)game that has -one player story line -dialogue -cartoon like graphics -multiple enemys -menus -boss fights -can be transitioned into a zelda like world when outside of a dungeon(the old zelda style no 3D) -decent run time speed -scrolling background in dungeon -(maybe once im good enough at C++ to be made into a handheld game for most likely the psp) -I have no illusions about the amount of time it will take to learn all this (maybe 2-3 years)but I would like someone to give me a list of things i need to learn and maybe some book recomendations. My path and ideas may change but knowing were i need to go for my current idea would help a whole lot. If you can help me please post and i thank you ahead of time oh and again i am sticking to C++ no matter how much easier python or C# is!!! edit: yes i know i have to start with small games. sorry if you guys found that fault. [Edited by - steveworks on May 6, 2008 2:33:52 PM]

##### Share on other sites
Stick with C++ if you like it, but I would not suggest starting out with DirectX.
Allegro or SDL would probably be better choices, whereas I consider Allegro the "easier" of the two.

Your list looks good, but I would suggest adding a few things at the top (after learning C++). A tetris game, a space shooter, tic-tac-toe, a remake of an old game you've played and/or a tilebased games (simplifies collision detection). Also, make small "tests" and mini-games just to try new things out. And do not start huge projects in the beginning, make small and fun games.

##### Share on other sites
2-3 years is highly optimistic. The C++ favoritism is foolish (to say the least).

As for books:

C++ Standard Library by Josuttis
Design Patterns by Gamma et al.

##### Share on other sites
oh i know that i would have to make games other that this one to practice. as they say start small.

oh and so what if im foolish this is who i am. ive been told that before and i have blown everyones expectations away in other things. so i am proud to be foolish. (who knows maybe someday i will learn something else.)

##### Share on other sites
If you can blow away everyone's expectations taking the hard route, just think what you could accomplish without one hand tied behind your back...

##### Share on other sites
If your interested, there's a free two-volume book in the 3rd link in my sig that teaches C++ fairly in-depth. The second volume also has thorough coverage of STL and a chapter that introduces design patterns. If you're still a beginner, the free book in the 2nd link might be easier to follow.

After you feel more comfortable with C++, probably the easiest thing to do would be to learn SDL and make a pong clone, then a tetris clone (which is harder), then a space shooter and only then a side-scroller. Making these simpler games first will give you a lot of practice and experience.

There are some nice SDL tutorials here. Unfortunately they teach some bad programming practices (considering that you're using C++ and not C), but they still contain a lot of useful information. Besides, if you spend enough time learning C++ you will be able to identify some of those bad practices and correct them.

BTW, why doesn't DirectX work on your computer?

##### Share on other sites
i know i could probably find this out somewhere else but, what the heck is SDL?

just a basic description would be nice and thanks for the liks Gage64

##### Share on other sites
It's foolish to sticking with just one language from another one. Why just C++ if I may ask?

What about Java, Python, Ruby, BASIC, C#?

Also I'd like to recommend an article to you. It's called "How do I make games: A path to Game Development" (http://www.gamedev.net/reference/design/features/makegames/)

However, I would also like to add that it's important to learn other languages especially if you'd like to consider game development as a career.

For instance, you may work in a company that only uses XNA as their primary development, which uses C# as the main language.

Or quite possibly,

you get hired as a programmer to make games on Nokia cell phones, which uses Java...

Limiting yourself to a language limits your creativity and work.

Don't limit yourself.

Also, start out small and work your way up.

I'm writing a continuing article on making games using SDL and the games I have non-game developers who have programming experience is Pong, Arkanoid, and Space Invaders since these games are reasonably small and build off of each other.

Once you're comfortable with what you have learned at these small steps branch out slowly and learn new programming techniques creating entities, scrolling backgrounds, maps, animation, etc...

It's like if you want to learn math, and you barely have algebra skills you don't jump into Calculus. NO, you'd be lost over your head you finish algebra, and then trigonometry and slowly progress to Calculus.

Game development is a continuous learning progression depending on how much patience and desire you have for the field.

Good Luck!

##### Share on other sites
If you google the term "SDL", the first result will be the official site. The front page should answer your question.

Also, I recommend that you think about what Telastyn has said. C# is much easier to learn than C++. Using it in combination with XNA (an API that's similar to DirectX but offers more functionality and is easier to use) will make you much more productive. I have no doubt that you can accomplish a lot with C++ and DirectX, but with C# and XNA you'll accomplish much more, much faster.

##### Share on other sites
i am sorry if i mislead you. I meant that currently i have no way of using C# and xna. It was my orriginal plan to learn C# and Xna but my computer is so old it dont work. i want to learn one language for now and even if it is one of the most difficult to learn it can be done. I learn things a little odd as i have been told. When i do math i learn the basics and move up just like you are suggesting, but i also may learn things that are way above my levle. same thing goes with my piano. I dont learn easy things I tackle the hard things and come out better because of it. it may not make sence but it does to me. I did not mean to say that I wont learn other languages I just want to start with this one. I hear that c# should be very easy to learn if i know C++ anyway so i guess if i ever get a new computer I'll learn it and how to use Xna. Again i mean no offence to anyone.

my reasons.
I already know basic to some degree and I just hate the restrictions.
c# my computer stinks so i say no more
Java just doesnt interest me
python i dont know anything about and i never even heard of ruby!!!

##### Share on other sites
I dont think he said that he is never going to learn any other language but just learn c++ for now. I often see people who are still switching between languages and actually never teach any of them. So pick one and stick with it! No matter what language it is. And we know, when you know one language its a whole lot easier to learn another.

edit: ah, Im too late [smile]

##### Share on other sites
Quote:
 Original post by coding penguinI dont think he said that he is never going to learn any other language but just learn c++ for now. I often see people who are still switching between languages and actually never teach any of them. So pick one and stick with it! No matter what language it is. And we know, when you know one language its a whole lot easier to learn another.edit: ah, Im too late [smile]

QFT. Why would you recommend to someone not knowing a single programming language at a decent level to go start learning other languages? That is relatively implausible.

I second the SDL recommendation. It's very easy to use and is very beginner friendly. Also, there are plenty of resources on the internet, so you should never need to spend any money learning how to use it.

##### Share on other sites
yea I looked on the website and it is safe to say that i like what i see.

Once i have more of a grasp on c++ I'm going to try and learn SDL. Oh and pong sounds like a good starter game.

##### Share on other sites
Quote:
Original post by bschneid
Quote:
 Original post by coding penguinI dont think he said that he is never going to learn any other language but just learn c++ for now. I often see people who are still switching between languages and actually never teach any of them. So pick one and stick with it! No matter what language it is. And we know, when you know one language its a whole lot easier to learn another.edit: ah, Im too late [smile]

Why would you recommend to someone not knowing a single programming language at a decent level to go start learning other languages? That is relatively implausible.

I don't think anyone suggested that he should learn another language right now. They merely suggested that learning C# instead of C++ would be easier, and that when you are proficient with one language, you should learn other languages.

@steveworks: You should know that SDL also has a .NET version (SDL.NET) that can be used from C#. SDL.NET is also cleaner and easier to use than SDL.

However, if you still want to go with C++, there's nothing wrong with that. It sounds like you are up for the task and the links I gave you should keep you busy for a while. [smile]

Good luck.

##### Share on other sites
ok google is no help here what is the difference between a regular Language and a .net language?

Like i stated before i cant use c# right.

thanks again Gage64

edit: nevermind i didnt notice the link.

##### Share on other sites
I've been doing things the hard way, which I don't mind, but now that I see SDL.Net no more going back to the old ways.

##### Share on other sites
umm ok i have visual c++ 2005 and for the life of me SDL wont work!!! i have done everything that the numerous guides has told me but it just wont work!

does anyone have any ideas?

##### Share on other sites
Quote:
 Original post by steveworksumm ok i have visual c++ 2005 and for the life of me SDL wont work!!! i have done everything that the numerous guides has told me but it just wont work!does anyone have any ideas?

Maybe, just maybe, you can start by providing the errors you are encountering.

##### Share on other sites
You could always try assembly? :P

; a = a*5+b;mov eax, dword ptr[a]mul eax, 5add eax, dword ptrmov dword ptr[a], eax

(ps ^^ may be incorrect, havent done asm in a while :P)

##### Share on other sites
If you're new to the language itself, you should consider getting a good beginner book. There are an infinite number of ways of making life difficult for yourself in a programming language such as C++. Getting a book isn't one of them Smile

Here's a list, loosely ordered by complexity.
Recommended Books

Accelerated C++, Andrew Koenig and Barbara E. Moo, ISBN 020170353X
C++ Primer, Stanley Lippman, Josee Lajoie, Barbara E. Moo, ISBN 0201721481
The C++ Standard Library, Nicholas M. Josuttis, ISBN 0201379260
Effective STL, Scott Meyers, ISBN 0201749629
Effective C++, Scott Meyers, ISBN 0201924889
More Effective C++, Scott Meyers, ISBN 020163371X
Exceptional C++, Herb Sutter, ISBN 0201615622
More Exceptional C++, Herb Sutter, ISBN 020170434X
Exceptional C++ style, Herb Sutter, ISBN 0321113586
The C++ Programming Language, Bjarne Stroustrup, ISBN 0201889544
Modern C++ Design, Andrei Alexandrescu, ISBN 0201704315

If you're familiar with C++, and want to get started using Visual C++ 2005 Express Edition, there are various articles, videos and screencasts available on the MSDN web sites.

Articles

MSDN: Getting Started with Visual C++ Express Edition

Video Guides

Visual C++ 2005 Express Edition Videos
Introduction to Visual C++ 2005 Express Edition
Other Channel9 C++ Videos

When you've gotten friendly with the language, and you are comfortable with the IDE, it's time to start programming something useful.

I recommend you read Accelerated C++ first or if that doesn't make any sense then read the Mike Dawson C++ book first.
Second book you need to read is C Primer Plus book by Stephen Prata. Okay you are probably wondering why I would recommend such a thing? I know some people won't agree with me but there is still alot of old/legacy code/books that use C and if you don't want to spend 1/2 your time googling stuff or looking stuff up in a book. Not to mention you will see how much of an improvement C++ is over C and all the extra stuff it lets you do.
"C++ is a large language and can be daunting to new users. Modern C++ can be thought of as comprising three parts:

The low-level language, largely inherited from C

More advanced language features that allow us to define our own data types and to organize large-scale programs and systems

The standard library, which uses these advanced features to provide a set of useful data structures and algorithms

Most texts present C++ in this same order: They start by covering the low-level details and then introduce the the more advanced language features. They explain the standard library only after having covered the entire language. The result, all too often, is that readers get bogged down in issues of low-level programming or the complexities of writing type definitions and never really understand the power of programming in a more abstract way. Needless to say, readers also often do not learn enough to build their own abstractions.
"
After that you should be good enough with C/C++ to start on books dedicated specifically to games programming.
First I suggest is either an Allegro or SDL book to get basic 2D games down. I recommend the Harbour GPAIO book which uses Allegro although if you've read one of the decent C++ books above you'll notice how terrible some of the code is but it does it's job of covering the basic 2D games like platform scroller,vertical scroller,split screen,etc.
After that you'll need a book like Ron Penton's "Data structures for game programmers" since you won't get much further without knowing the basics of all the different data structures like:linked list,hash tables, binary trees, graphs,etc. If you are able to make it through this book you will also have 2 2D graphics API's under your belt since it uses SDL to show you how to create menu's for your game, multiple enemies,etc. pretty much everything in your list you will be able to accomplish with this book!
This should take you about 1 year to get C/C++ basics down and another year to get through the data structures book so yeah you are looking at about 2 years if you take your time.

p.s. Even though this book will most likely appear to be gibberish at first you still need to get yourself a copy since it's like a dictionary for someone learning English. You will look up stuff in there all the time and other C++ books always tell you to look it up in this book since it's the only one that really covers the entire language of C++ and fits in a single book! And it's always correct AFAICT so if you find conflicting or dodgy info in the other C/C++ books you are reading you can always check it out with this book.
"The C++ Programming Language, Bjarne Stroustrup, ISBN 0201889544"

[Edited by - daviangel on May 8, 2008 6:38:37 AM]

##### Share on other sites
Quote:
 Original post by steveworksumm ok i have visual c++ 2005 and for the life of me SDL wont work!!! i have done everything that the numerous guides has told me but it just wont work!does anyone have any ideas?

Yeah check out my other post and get started learning C/C++ properly. It's obvious you don't have enough experience at this point to start messing with SDL since it's really a no-brainer to set up if you've been programming for a while. But if you insist look up lazy-foo since his SDL tutorials seem to be quite popular.

[Edited by - daviangel on May 10, 2008 2:50:45 AM]

##### Share on other sites
game maker.
Search for 'game maker' in Google.

##### Share on other sites
ok i get it I dont have enough experiance with c++ so thanks for the book recomendations. I have to wonder though for the people in the industry just how many years do they spend learning how to program to work on a game like Gears or call or duty. well at least i can be sure i have a hobby that will take a looooooonnnnnnggg time to learn. thanks everyone for the help and i probably wont ever come back to this forum.

##### Share on other sites
Quote:
 Original post by steveworksok i get it I dont have enough experiance with c++ so thanks for the book recomendations. I have to wonder though for the people in the industry just how many years do they spend learning how to program to work on a [triple-A] game

After you've graduated high school and mastered the use of the Shift key and spelling and punctuation: 4 years of college, maybe 2 years working on mods, and at least 4 years working in the industry. So (after you've finished high school) figure another 10 years.