Sign in to follow this  
Suedish

From novice, to a game like wolfenstein

Recommended Posts

Suedish    122
Hi, Yes, i know most of you just released a deep *sigh* when you read this topic. But please read my whole post :) First of all, im im this for the long run. I dont expect to learn to how to make a game in like a month or something. But I am going to learn it, no matter the time it takes. Back in school (what, 8 years ago?) I learned Pascal which i found to be pretty easy, altho thats completely forgotten now. A few years ago I decided i wanted to learn making websites, and my main goal was a "perfect" webshop with credit card solutions and an impressive admin area and everything, which i did. And been working with that for a couple of years now and made all kinds of websites in PHP for various companies. So what im trying to say is, i seem to find programming quite easy to learn and i definately know how to set a long term goal and then work my way there, no matter how long it takes. For quite some time now I've had a dream of making a really easy fps game, and i mean a really crappy one, somewhere along the looks of Wolfenstein but probably much worse. The challenge of trying to make a 3d game it what drives me really. And now I'm ready to try and fight my way to make that 'dream' come true. So to sum it up, I'm looking for advice on what language would be the best (I assumed it would be c++?) for me to learn. But more importantly, i would appreciate it if someone was able to help me organize like a list of books that i need to read. I am well aware of the hard work it will take, but i'm going to do it. So i would truly appreciate all tips and comments you might have for me. Thank you in advance.

Share this post


Link to post
Share on other sites
jbadams    25713
Firstly, congratulations on what appears to be a very realistic view of things.

Normally I would advise a beginner to start out learning a language such as Python (tutorial) or C# to start out with and looking in to C++ later on if they felt they needed it, as the C++ language can have a somewhat steep learning curve. However, coming with a background of having learnt Pascal in the past and having a lot of experience with PHP you probably wouldn't have too much trouble with jumping straight in to C++. I'm going to drop the usual Python suggestion and instead say that either C# or C++ are good options - you should be able to create the game you want to make using either of the two. C# is designed in a way that makes it a bit more beginner friendly, but at the current time there's probably more relevant literature around for C++.

If you want to try C# you can download Microsoft Visual C# 2005 Express Edition, and can find some C# video tutorials here. I'm afraid I don't know of any good books I could recommend for C#.

If you'd like to try C++ you can download Microsoft Visual C++ 2005 Express Edition and could try the C++ tutorials at www.cprogramming.com. Accelerated C++ is an excellent book for getting started with the C++ language.


You'll want to start out getting a good handle on the language you decide to use. Learn the basics, and develop some smaller practice games to make sure you understand what you're doing. Doing at least something simple in 2d is probably a good idea before attempting 3d. Once you decide to move into 3d you've basically got a couple of options; learn OpenGL, learn DirectX, or use an existing engine (be aware that you may need to work in a specific language for this option, and that often means C or C++). The book 3D Math Primer for Graphics and Game Development would probably be good reading at this stage.

Hope that helps you, feel free to ask if you have further questions. I'm sure you'll probably get some great advice from other posters as well. [smile]

Share this post


Link to post
Share on other sites
Iftah    413
just a side note, wolfenstein was a 2d game,
its follow up "wolfenstein 3d" was a pseudo 3d game (illusion of 3d space, but everything was actually on a 2d plane) and it used a very outdated technology, so please don't read tutorials on how wolfenstein-3d was made because you will just learn (very) old news.

for a programming language I recomend C# because its easier to learn and easier to create windows applications (and its valuable if you want to program for a living, as opposed to python). For C# I think managed directX is the best way for a beginner to do 3d.

the basic concepts of 3d are easy -
you have a 3d space meaning each point has 3 coordinates (x,y,z), you can draw triangles with textures and light between 3 points and project it to the screen. Any 3d API (directX, openGL) will teach you this at the first lesson. You can play around with that. The 2nd lesson you will probably learn how to move around and rotate, so a simple "wolfstein3d" style game (well exculding the monsters and wall collision and such) you can probably do just after a 2nd lesson.

good luck!
Iftah.

Share this post


Link to post
Share on other sites
XeeRox    130
Hi, my name is XeeRox ;).

Okay, i really understand you, you are almost same as me.I worked in VB and find it too simple & easy.I suppost you know this, but i am going to tell again.
The game is a final production of fews api and a language.When i started to learn to make a engine there was only C++ as the best language for game, because of that, you would need to know (or to have a time) Windows programming, OpenGL or DirectX programming, and ofcourse C++.

Now, the time is changed.There are very very powerfull language called C-Sharp(C#), and i am using it right now.It is very easy(readable-like eng) and it is better that c++ (microsoft says:) it should be like C+++ but that is silly.
If you start to work with C# you dont need to know Windows programming, because it has already build-in windows editor, so you can just drag 'N' put various compoments on a form.

But like everything, the programming language is your personal choise & passion.C++ is very powerfull, too but when i saw C# i never looked back.

In case you want to start with C#, here are some books i recommend:

1st: Microsoft C# Game Programming For The Absolute Beginner
2nd: Programming Microsoft Windows with C#
3rd: Beginning C# Game Programming

P.S. The Microsoft Visual C# 2005 is FREE, and contain all needed functions for game dev.Be sure to check it!

If you have any problems, questions just ask me.If you want to learn C# you can join me, altrough i am still learning it(not an ad).

Good Luck!
XeeRox

Share this post


Link to post
Share on other sites
Haytil    525
First, learn C++. It's not very hard to learn.

Then pick up the following two books:

"Tricks of the Windows Game Programming Gurus" by Andre Lamothe. This will teach you basic game programming, including 2D. I would try and make a practice 2D game after reading this (maybe tetris?)

Then get "Tricks of the 3D Game Programming Gurus" by Andre Lamothe. This is the direct sequel to the first book, it uses the same code libraries the first one taught you, but shows you how to implement 3D. It's very clear and easy to read, and will teach you enough to make a Quake-like game (which was the followup to Wolfenstein 3D).

-Gauvir_Mucca

Share this post


Link to post
Share on other sites
Iftah    413
oh, if you are looking to learn C++ and don't want to spend 30-40$ for a book you can read the free books by Bruce Eckel (thinking in C++, thinking in Java,...)
They are quite good books and are available online for free (legal free!), search google for Bruce Eckel

Share this post


Link to post
Share on other sites
Bad Maniac    252
Quote:
Original post by Gauvir_Mucca
Then get "Tricks of the 3D Game Programming Gurus" by Andre Lamothe. This is the direct sequel to the first book, it uses the same code libraries the first one taught you, but shows you how to implement 3D. It's very clear and easy to read, and will teach you enough to make a Quake-like game (which was the followup to Wolfenstein 3D).

This is about the worst advice I've ever seen given to a beginner... He doesn't want to start by making a software 3D engine, nor should he.

I'd recommend something along the lines of "Beginning OpenGL Game Programming" or an equivalent book about Direct3D.
I totally agree with the above poster about Tricks of the Windows Game Programming Gurus tho, it's a brillint book. And while the context might be getting a little outdated it still teaches you everything you'll ever need about DirectInput, DSound and so on, as well as general game programming methods.

Share this post


Link to post
Share on other sites
Suedish    122
Wonderful, thanks everyone for the great replies. Altho I'm not quite sure what the difference is between C++ and C#. Is any of them more suited for games than the other? What else is there to consider when choosing between them?

Share this post


Link to post
Share on other sites
Suedish    122
Another one,

The book "Tricks of the Windows Game Programming Gurus" seems to be a good pick. Altho I understand basic knowledge is required before digging into this one? So then the question would be how much? Which i know is hard - if not impossible - to answer to, i know. But to put it this way, is it possible to take on that book as your first book or not? If not, which book would you consider to be a good one to read before that?

Share this post


Link to post
Share on other sites
Chad Smith    1344
First of, congratulations on actually having a reasonable goal. Many people come in here wanting to make a MMORPG, and few do it.


Now, onto your question. C# is a lot easier then C++ to learn. There is like no doubt of saying it isn't. Also, C# is FULLY OOP(Object Oriented Programming). So, if you want to use OOP(which can also be a very good design on stuff),then I suggest you use C#, as everything will be. Though you can do OOP in C++ also, so it is up to you.

This is what I suggest. I suggest you try both languages out. For the type of game you are making, both of those languages are powerfull enough(espically C++). Try them both out, and see which one you like the most. That is all I can say.

That is just my 2 cents.

Chad

PS: Good luck on your journey!

Share this post


Link to post
Share on other sites
XeeRox    130
Yes, you should try them both.

Download C++ DirectX sample, and C# DirectX sample and see the diferents.
And also download C++ Console Sample, and C# Console Sample ;)

C++==============================================================

#include <iostream>

string me;

cout::std << "Hello user, please input your name: "<< endl;
cin >> me;

cout::std << "Your name is " <<" Me "<< "..." << endl;
(maybe there are some mistakes, i forget c++)

-Output:

Hello user, please input your name: xxxxxxxx
Your name is xxxxxxx ...
=================================================================
C#===============================================================

string Me;

Console.write("Enter your name: ");
me = console.readline();

Console.writeline("Your Name is: {0}", me);
Console.readline();

-Output:

Enter your name: xxxxxx
Your Name is: xxxxxx
=================================================================

That are some of difference, between C++ & C#.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
I'd stick with C++ since it is universial. It will benefit your games and your career in the future since in C# you need to pinvoke from C++/Win32 to get things done. There is a new C++.NET 05 which .NET-enables your preexisting C++ applications meaning there's less need to switch to an entire different environment for one project. When you need .NET, you can attach it much like a seperate library.

C# is specificallly for Windows, officially. Its graphics APIs are still in its early development stages with constant updating in a two-month basis, so I'd stay clear and use C++/DirectX. By the way, Wolfenstein used software rasterization. So, if you're religious about doing it "their way," (and it's a great educational goal to do so), I'd suggest picking up Andre' Lamothe's book "Tricks of the Windows Game Programming Gurus," volume 1 & 2, and you'll understand how to do these techniques which I bet 3% of the people here know how to do it. It simply makes you stand out for the job position. No, you won't be doing software rasterization on the job, but you would be more interesting to me than some 3d-gurus who still can't show me a simple Asteroids clone.

Don't take my word for it, check out the reviews. People say it's old, but nothing from the book has really changed over the years. DirectDraw 7 is still the latest. The Win32 API barely changes, and if so, easy to migrate. It's just overall the best bottom-up book I know of.

http://www.amazon.com/gp/product/0672323699/ref=pd_bxgy_img_b/104-5403905-5133568?%5Fencoding=UTF8

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
To Suedish, knowing C is the only requirement before reading the book.

My last word of advice: you'll have to use C++/DirectX anyway because there's unlimited resources for that and software rasterization using C++, and there's barely nothing in the book stores for C# and gaming. In fact, if anyone makes a successful game right now with C#/Managed DirectX, it's because they came from a C++/DirectX background. They knew how to get it done. There's absolutely nothing on .NET gaming besides two books that just teach you how to throw a 3d teapot on the screen. That does not make you a game programmer. So, just learn C and start reading Tricks. You'll be glad you did later :)

Share this post


Link to post
Share on other sites
XeeRox    130
@Anonymous Poster

I understand that you like C++, but why do heck you laying this guy?!

If you didnt know, there are around 15-20 books on C#, and there are around 10 sites about it, and you can learn everything from book, because i am doing it right now!

I dont have anything bad with c++, i still love it, but man, let Suedish make desision.

Share this post


Link to post
Share on other sites
jbadams    25713
Quote:
Original post by Anonymous Poster
DirectDraw 7 is still the latest.

But DirectX is now in version 9, with 10 due out soon with the Vista OS. DirectDraw 7 is only still the latest DirectDraw version because it isn't included anymore.

I'm not saying don't learn it, feel free if you'd like to, and it certainly won't really hurt you in any way, but it is a very dated technology.

Share this post


Link to post
Share on other sites
Cosmic R    159
I disagree with everyone saying learn directx 3d. Wolf3d was essentially 3d, but simulated using 2d. The first game to be considered 'true 3d' to my knowledge was actually Quake. Wolf3d and Doom, and many many early fps games used what is called raycasting. This is the method I suggest:
1. learn a programming language (C++ is a goodie)
2. choose an api. I recommend SDL or Allegro, better for smaller games and beginners.
3. make a couple of small games like pong, breakout, tetris, card games, etc.
4. read this neat tutorial on raycasting I found at http://www.permadi.com/tutorial/raycast/
5. make your game.

remember he only wanted to make a 'simple' game. why go after a fly with a bazooka?

Share this post


Link to post
Share on other sites
Adam Hamilton    271
Quote:
Original post by Iftah
just a side note, wolfenstein was a 2d game,
its follow up "wolfenstein 3d" was a pseudo 3d game (illusion of 3d space, but everything was actually on a 2d plane)


Don't mean to be picky but it all comes down to the same thing. All 3D games give the illusion of 3D space, after all it is all rendered on a 2D framebuffer.

My 2 cents :)


Share this post


Link to post
Share on other sites
Suedish    122
Thanks to everyone, again =)
I never meant that i was going to do a clone of Wolfenstein, it was simply an example of the kind of game i wished i could make. I don't know anything about the different techniques that works in the background, and I'm not out to make an authentic version of Wolfenstein myself. My original idea was to make an FPS game, the graphics will of course pretty much suck as i see myself as a programmer, not a designer/gfx artist. Thats why Wolfenstein came to mind =)
I have no desire to learn some old technique (?) just because Wolfenstein had it, what i want is to learn the most up to date things, but I'm not aiming to my own Doom 3 =)

Share this post


Link to post
Share on other sites
DarkZoulz    106
As you are Swedish, you could pick up 'C++ Direkt' by Jan Skansholm. It's a really nice book in swedish about C++. I used it as course literature for my C++ class at my school (Powerhouse).

Other books we used are:
* Tricks of the windows game programming gurus
* Tricks of the 3D game programming gurus
* Windows 2000 Programming - from the ground up

These books should be able to teach you all about win32 and directx programming.

Share this post


Link to post
Share on other sites
e-u-l-o-g-y    196
Quote:
Original post by Iftah
just a side note, wolfenstein was a 2d game,
its follow up "wolfenstein 3d" was a pseudo 3d game (illusion of 3d space, but everything was actually on a 2d plane) and it used a very outdated technology, so please don't read tutorials on how wolfenstein-3d was made because you will just learn (very) old news.


I Don't mean to be picky, but I'm not sure I agree here.. He shouldn't necessarily read up on raycasting to begin with, but calling it outdated technology is at best wrong. Basically the same technique (with some modifications) is being used both in shaders and volume renderers.

Share this post


Link to post
Share on other sites
kensan    122
To accomplish anything difficult, I personally set a very clear goal. For example in your case you want to make a 3d game, like wolfenstein. Exactly like Wolf 3D? If so, that's easy. Learn C (any book will do, even tutorials on the web), then pick for yourself a broad project using the Wolf 3D source code, in order to exercise the knowledge of the wolf 3d source code, to internalize it.

To generalize my answer to learning any ability: in order to reach skill level A, the easiest path to it is to find someone that is at skill level A and model them. (Tony Robbins stuff.) You can't apprentice under Carmack for example (if you want to learn fps engine coding) but you can study all the source code he's put out, and innovate from there.

Share this post


Link to post
Share on other sites
nihonlvr    184
I am in a similiar boat as you are. I have experience in C/C++. I don't really have a whole team of programmers to work with (or the time, college student), so I decided on C#. I am currently learning the syntax and effective usage of C#.

Two books that I plan on purchasing very soon are:

Managed DirectX Game Programming, by Tom Miller (April 11, 2006)
Game Engine Toolset Development, by Graham Wihlidal (March 6, 2006)

The second book would be good if you plan on making some sort of editor for your game (might be more trouble than its worth though). Stick with it for the long run and you will learn a lot and have fun doing it. People looking for the quick fix burn themselves out and never make anything. You have realistic goals so I am sure that you will achieve AND surpass them.

Good luck!

Share this post


Link to post
Share on other sites
Suedish    122
Again, thanks alot to everyone that has taken the time to respond to this thread. It's really appreciated and ive taken everything under consideration.

I've been checking out some code samples from c++ and c# and i must say, when i read the code from c++ i understand 95% of it right away. Of course these are just like 'noob samples' that i have looked at, but i still understand the syntax and everything pretty easy. So i think i'll be going for c++.

I have an odd question, I'm not even sure how to ask it correctly. But, how much math is included in making this kind of game? Yes, i know its loads of math in my opinion im really good at math aswell. I understand - duh! - that if you make the game completely from scratch it's a massive mathematics job that is included. But how about if you go with an existing game engine (keep in mind i have absolutely no clue how these work, or how much of the 'work' that a game engine does really), is that _alot_ easier for me as a novice? I probably wont get involved with the graphics part for quite some time, but i might aswell ask these questions now.

My apologies if this was an incredibly stupid question, but i have to find out somehow and i've gotten nothing but awesome replies on gamedev so far =)

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