OpenGl engine

What is the best book that you guys suggest for learning how to do a great engine?

Actually, I don’t think there is a good book about that because making an engine is mix of different things:

  1. Software Architecture
  2. Graphics
  3. Networking
  4. Sound
  5. Input
  6. Physics
  7. Specific game components

example of books

  1. Design patterns

  2. Real-Time Rendering

  3. N/A( don’t know too much about that )

  4. There isn’t a good book about that because sdk are usually sufficient. Check www.openAl.com for an easy of use sound library or use DirectSound.

  5. Directx Sdk is a good start. (this will be for windows only though. Macintosh has one also, but I don’t remember the name.

  6. Any Physics books, more precisely Mechanics. Oh, and there is also a need for numerical treatement of matematics, because in physics there are integrals and derivatives. Check books for that too. There are plenty of those
    because mathematician uses that every day

  7. Doesn’t exist. It depends of the language you use and the software architecture. So have good understanding of the language you will use is a start, and good software architecture is the key.

[This message has been edited by Gorg (edited 06-17-2000).]

Hello, Inspite of the Portal and BSP technology, Quadratic meshes and Opengl.
Quake3 failed in market expectations it only sold 50,000 copies. Rainbow Six rogue spear sold more than 4 times that amount. And rogue spear engine uses far less technology that quake3. Again this happened to ID software under estimating the small guys using old engines first Half Life and Now this.However the quake 3 engine as ported over to the playstation2 to do a James bond game.It is also important to implement marketing stratergies when developing your game/game engine.

Uhh… Quake 3 sucks compared to Unreal Turnament, gameplay wise. I have played both…

Quake III might look nice, but gameplay wise it’s old. Perhaps that is why it failed to do as well it should have.

Unreal also supports lower end computers which is a BIG +, Q3 lacks this…

But that is enough, since Id is a major helper in keeping OGL alive, so I’ll shut up now… (I am just a 16yr old, so don’t take this too seriously)

ngill. If you’re not on a 3dfx-board the Quake3 engine will run faster than the UT engine.
So the Q3 engine is actually better at supporting lower-end systems, if you’re not using 3dfx. UT is basically built for 3dfx.

Is there any new free Opengl engines available, can anyone make a suggestion to which one it top right now?

Hello,

a free 3D engine that looks promising is Crystal Space, http://crystal.linuxgames.com/
I have never used it so I can not comment about how good it is however it looks
pretty nice from there web site and best of all it is free (LGPL) and portable.

hope this helps

I have compiled it on Macintosh.
I seem to be slow. The c++ code, for to platform indipendent, is veri complicate == slow rendering.

Hi,

About CrystalSpace I have to disagree with Claudio on the performance issue. CrystalSpace is a very promising engine indeed and it runs quite fast (not as fast as Q3) under the platforms I’ve tested it in (Linux, Win9X).
Sure it’s complicated, the API isn’t quite stable and it has some gaps but you have to remember that it’s an evolving project, developed by people that are only doing it because they like it. One other thing is that CS current release is only 0.16 (they’re planning to release v1.0 in a couple of months) and as such you can’t expect it to be complete (no project ever is and an open source one even less).

From the developer point of view, CS is not only a 3D engine it’s a complete gaming API as it does colision detection, AI, networking, input handling and much more. If your developing a game and need a good 3D engine you might want to consider CS, because it is free and you can expect lots of improvements in the near future (just check the mailing list to see how these guys are commited to doing something great…).

Because Tim Sweeny has its own memory mangement.

Tim Sweeny, the Borg! :slight_smile:

Seriously, though. I’m a (non-game) software lead, and if someone told me to develop a “beat-Q3-and-UT” graphics engine from scratch, I would ask for three Really Senior™ graphics engineers and two years. Assuming at least two of them know the Pentium/P-II/P-III/P-IV pipelines by heart, that is.

And I’m known for underestimating projects by a factor of 2.

It would be fun to try, though :slight_smile:

To callisto.
Yes Crystal is a good framework for do game, but for make game like halo, not quake 3, you must get all computational power of you computer for all calculation of game.
Crystal spend some times for make tings, that are necessarie only for make abstract machine development. This work well for all app, but for game not.
I thinks that crystal is a very big and well programmed framework, where everyone can learn make a 3d programming.
I think however that if anyone want learn to develop 3D using opengl and all other algoritm for optimization, must create his personal 3D engine.
I repeat Crystal is a very good work!
Claudio.

Hi bgl!

Did you ever measured how many clockcylces a normal “new” or “delete” takes under Windows?

Visual C++ already uses a so called “small block heap” for allocation of small memory chunks. But it uses only 1 megabyte in total to do this (and it is not that much faster eighter…)

Regards,

LG

I am not a programmer nor do i make claim that i understand the logic of programming. Here is where my confusion lies. Chances are if you ask a medical doctor with a PHD. behind his name to do a small operation like removing tha appendix chances are that he can do it.Ask another doctor from another country chances are he can do it also.Why i guess they studied how to do it in med school perhaps. However it is diffrent with programming there are people who are certified programmers and they If one programmer does a Quake3 engine another programmer can’t do it? Did i miss something there?

Well to carry on you analogy if you asked any doctor if he could do a basic surgery most would say yes, however if you asked a normal
family doctor if he could perform a complex kidney transplant or something very new and cutting edge (no pun intend ) he would
not be able to do it. Making a game engine to outperform Quake is not something basic it is more like the complex kidney transplant.
there is no one class that teaches how it do it. Not that I am saying that it can’t be done just that someone will need lots of time and experience to do it.

[This message has been edited by Validus (edited 07-03-2000).]

Originally posted by lgrosshennig:
Did you ever measured how many clockcylces a normal “new” or “delete” takes under Windows?

Yeah, operator new can easily suck. Overriding your operator new() is one of the first performance tuning tricks I’d use for a C++ program that is allocation bound.

The reason I said Tim Sweeny, the borg was that the original poster said that Tim Sweeny had “its” own memory allocator. Last I checked, he was a “he”

Hi bgl!

Glad you found the TS post funny .

Well, just overloading the new operator dosen’t bring you that much when you still use malloc (which uses LocalAlloc() internally).

LocalAlloc() is know to be slow and the memory you got back is only aligned to a DWORD boundary, if you use double’s or MMX/3DNow! datatypes you get an 3 clock penalty on Intel Systems and a 1 clock penalty on AMD for load/store operations.

I usally allocate a large chunk of memory (bigger than 32MB, depending on what I want to do) and do all the allocation / deallocation stuff inside that chunk on my own.

And no, I am not a native english speaker,
it’s an international forum, isn’t it

Regards,

LG

Originally posted by BloodyAngel:
What is the best book that you guys suggest for learning how to do a great engine?

Read Michael Abrash’s
“Zen of Graphics Programming” !!!
mabrash has written Quake2 with Carmack,
so you’ll find much info about BSP,
the lighting model etc…
There are also some words about portals.
This book starts from scratch, so
you won’t learn anything about OpenGL.