Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


How to create a game engine


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
27 replies to this topic

#1 4n0n   Members   -  Reputation: 239

Like
0Likes
Like

Posted 30 October 2005 - 07:34 AM

I've been searching information about game engines and developing a game engines alot lately, but I haven't found any good tutorial/article yet, that would contain the basics of engine programming and maybe about engine design etc.. I have the solid knowlegde of C++ basics and I would like to find out how to create an engine and I don't have much exp. about graphics programming yet. so.. do you recommend any tutorials, maybe a book..?

Sponsor:

#2 Telastyn   Crossbones+   -  Reputation: 3726

Like
0Likes
Like

Posted 30 October 2005 - 07:46 AM

First off, get solid knowledge of Advanced C++. Only having the basics will make things exceptionally more difficult.

#3 4n0n   Members   -  Reputation: 239

Like
0Likes
Like

Posted 30 October 2005 - 07:48 AM

what do you mean by advanced c++

#4 Servant of the Lord   Crossbones+   -  Reputation: 20377

Like
0Likes
Like

Posted 30 October 2005 - 07:49 AM

You may want to know graphic proggramming, too. For that try NeHe.

#5 T1Oracle   Members   -  Reputation: 100

Like
0Likes
Like

Posted 30 October 2005 - 07:56 AM

Quote:
Original post by zeeli
what do you mean by advanced c++

Templates, STL, iterators, exception handling, functors, inheritance, ploymorphism, virual classes and the cost of using them, operator overloading, understanding of temporaries, smart pointers, memory management...
Programming since 1995.

#6 Telastyn   Crossbones+   -  Reputation: 3726

Like
0Likes
Like

Posted 30 October 2005 - 08:16 AM

Quote:
Original post by zeeli
what do you mean by advanced c++


Well, you said you have a good understanding of C++ basics. This implies that there are 'not basic' things you don't know or aren't comfortable with. These advanced topics [such as the ones listed by T1Oracle] make the difficult task of making a computer game plausible.

#7 Hodge   Members   -  Reputation: 106

Like
0Likes
Like

Posted 30 October 2005 - 08:26 AM

If you have a good understanding of how to program with cpp you should start working on a small project.

#8 MumbleFuzz   Members   -  Reputation: 188

Like
0Likes
Like

Posted 30 October 2005 - 09:46 AM

If you're comfortable with most of the concepts mentioned above, the best way to start writing an engine is to 1) try it yourself to work out where the difficulties lie and 2) examine the source code of some existing engines for solutions to these problems.

Engines worth a look include Wild Magic, OGRE and Irrlicht, amongst others. Also have a look at the Enginuity article on GameDev.

#9 Richy2k   Members   -  Reputation: 313

Like
0Likes
Like

Posted 30 October 2005 - 11:43 AM

Quote:
Original post by zeeli
but I haven't found any good tutorial/article yet, that would contain the basics of engine programming and maybe about engine design etc..


Speaking of which, me and a couple of mates have got together and came up with a game engine design, and we are documenting it, writing an article on it, why we designed and made it the way we did. Read some books on object orientated design to get you off the ground, and draw LOTS of diagrams, work out exactly what you want your engine to do, and all the usual blah.

#10 4n0n   Members   -  Reputation: 239

Like
0Likes
Like

Posted 30 October 2005 - 11:02 PM

Quote:
Original post by T1Oracle
Templates, STL, iterators, exception handling, functors, inheritance, ploymorphism, virual classes and the cost of using them, operator overloading, understanding of temporaries, smart pointers, memory management...


well.. thats what i meant about c++ basics :)


#11 YengaMatiC   Members   -  Reputation: 172

Like
0Likes
Like

Posted 31 October 2005 - 01:25 AM

Well, you talk about design. I always believed that design doesn't have much to do with programming language (actually they do, but souldn't have to).
So, the first question should be 'do I know what an engine is/does?' and then you ask yourself 'what i want my engine to do?'.
When i first thought of it, after reading tutorials on graphics programming (actually they tell you one way to do some technique, nothing to do with a whole engine) I bought 'Game Engine Design' book and looked at WildMagic source code to understand how to separate the parts of an engine. Then I started to look for engine's source code and documentation (mainly OGRE and NeoEngine) to get insights on some aspects of the rendering engine.

But what finally has teached me how to design an engine is to make lots of bad designs. One thing you learn when you fail is what don't work :) Actually, in software design, you can do almost everything in many ways (in game engines you have that real-time constraint, but who cares? ;)
Design is iterative, so, don't stick with a design, definitely you'll have to go back and redesign.


PS: if you want a good book about software design, get 'Code Complete'. It teached me a lot of things (but don't become too dogmatic ;)

#12 JD   Members   -  Reputation: 208

Like
0Likes
Like

Posted 31 October 2005 - 09:44 PM

Get Jet3D and Quake2 engines and study those. I recommend against C++/STL/OOP right now because that is a chore in itself and not needed. The problem with engines is that they have zillion parts and until you read the code flow you won't understand the design decisions. Quake2 is engine that is separated from editor while Jet3D interacts with the engine. So those are two different styles. Besides, in both of them there is some really clever code to pick up along the way. Might also want to check out quake3/doom3 but they're probably too advanced in many areas from the simpler q2/jet engines. In q3/d3 you got subdivision surfaces + advanced renderer system, etc.

#13 silvermace   Members   -  Reputation: 634

Like
0Likes
Like

Posted 31 October 2005 - 10:30 PM

I'd have to disagree with the advice to avoid the OOP and C++ Standard Library (aka STL). For a beginner I would say OOP (at least at the most basic level) would be easier to understand because it's higher level and easier to conceptualize a problem. And well, I kind-of agree with the STL being more trouble than its worth for beginners, but the converse can be argued, and because of that, deciding whether or not it should be learnt is moot; it's a key part of C++, without it C++ would be a real nightmare, and finally the STL is just too usfull and important a tool to ignore - practice makes perfect [wink]

"I am a donut! Ask not how many tris/batch, but rather how many batches/frame!" -- Matthias Wloka & Richard Huddy, (GDC, DirectX 9 Performance)

http://www.silvermace.com/ -- My personal website

#14 YengaMatiC   Members   -  Reputation: 172

Like
0Likes
Like

Posted 01 November 2005 - 12:25 AM

I don't think studying quake engines is a good example of 'How to create a game engine' for anyone that has not done it a few times at least.
Object-oriented engines are a lotta more understandable and you can make easily a conceptual scheme of the engine's architecture. Nowadays, engines are so complicated and do lots of things that if you don't have any high-level view of the whole, you'll get insane.

#15 Telastyn   Crossbones+   -  Reputation: 3726

Like
0Likes
Like

Posted 01 November 2005 - 04:27 AM

I also disagree with the avoid the STL advice. If you're going to try to make an engine, do that. Don't waste your time writing [and debugging] data structures and algorithms that already exist in the language.

#16 evolutional   Moderators   -  Reputation: 1069

Like
0Likes
Like

Posted 01 November 2005 - 05:15 AM

Read Game Coding Complete, it's a good book and you'll learn a lot. But yes, the author assumes you're at an intermediate level with C++, so you'd want to work more with that to get the most out of the book.

#17 Hodge   Members   -  Reputation: 106

Like
0Likes
Like

Posted 02 November 2005 - 05:52 AM

Look for a book on the subject like game coding complete & Programming a Multiplayer FPS in Direct X or look at someones source code
Quote:
Original post by JD
Get Jet3D

Personnally I recommend that you stay away from the quake engines. The quake engines have poor coding conventions and are full of unnecessary optimization code.

#18 T1Oracle   Members   -  Reputation: 100

Like
0Likes
Like

Posted 02 November 2005 - 06:23 AM

^ I thought the same when I saw the code but I figured Id Software had to have some great reason for it.
Programming since 1995.

#19 4n0n   Members   -  Reputation: 239

Like
0Likes
Like

Posted 02 November 2005 - 07:18 AM

I've decided to buy books (when I get some money ;P) "Programming a Multiplayer FPS in Direct X" and
"Programming Role-playing Games with DirectX 8.0"

are those books good? at least they cover engine creation and directX..

#20 shadowcode   Members   -  Reputation: 122

Like
0Likes
Like

Posted 02 November 2005 - 08:40 AM

Well.. You may want to grab an open-source engine and try to implement something simple.. Maybe just a model viewer to start with. That should help you understand what tasks an engine/gameOS does.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS