🔒 Locked
Game Engine Coding
Advertisement
Original Post
Could anyone recommend a book which focuses on building a 3d game engine using OpenGL for graphics? I'm not sure if there are any, as I can't seem to find one. If not, I would still be willing to accept suggestions of other books which focus on engine programming in general, or for another library (such as DirectX / D3D), as long as the ideas are good enough to be able implement in OpenGL. Thanks.
Not a book, but... Enginuity!
-jouley
Quote:
It's going to be written in C++, and we're not going to work from scratch - we'll use SDL for graphics (and, thus, OpenGL), input, and timers; SDLNet for networking; and FMOD for sound (so if you want to see someone initialize DirectX/OpenGL for the nth time, go somewhere else - there's nothing achieved by reinventing the wheel). That should pretty much fulfill the cross-platform, networked, and minimum technical requirements parts of the spec; the rest is down to us.
-jouley
Enginuity is a pretty bad series of articles (by the author's own admission). I don't recommend taking a lot of the ideas there.
Game Coding Complete, while obviously DirectX-based, makes a lot of concessions to API independence so you should find it trivial to port to OpenGL as necessary. It's not a complete engine by any means, but it gives you the tools so that you can approach the problem a different way.
My general advice is not to build an engine; it is a waste of time if you want to make a game. Pick up an existing popular engine like OGRE or Irrlicht and start building a game rather than fiddling about with engine code.
Game Coding Complete, while obviously DirectX-based, makes a lot of concessions to API independence so you should find it trivial to port to OpenGL as necessary. It's not a complete engine by any means, but it gives you the tools so that you can approach the problem a different way.
My general advice is not to build an engine; it is a waste of time if you want to make a game. Pick up an existing popular engine like OGRE or Irrlicht and start building a game rather than fiddling about with engine code.
Quote:
Original post by Ravuya
Enginuity is a pretty bad series of articles (by the author's own admission). I don't recommend taking a lot of the ideas there.
Whoops. I stumbled upon it the other day and it looked promising. Speaking of promises, I promise to read through something before I recommend it next time.
Was there a discussion about why it was so bad I could peruse?
-jouley
I agree that if all you want to do is make a game then you should use an open source engine. The one thing you need to realize about Ogre and Irrlicht though is that they are 3D engines. They are not game engines. They are meant to be used for displaying graphics and that's it.
Many people use them for simple games, but they will not provide you with anything else you need for a game such as AI, object or memory management (outside of their built in scene graphs), networking, sound, etc.
Many people use them for simple games, but they will not provide you with anything else you need for a game such as AI, object or memory management (outside of their built in scene graphs), networking, sound, etc.
Thanks for the replies. I don't want to just make a game, I'd also like to make the engine (mainly just the graphics engine at the moment), building it from the ground up. It's not going to be too complex, just something whith which I can put my OpenGL to use, as I am currently learning it.
Cheers
Cheers
In that case, definitely check out Ogre and Irrlicht. They implement things in OpenGL as well as DirectX and have decent documentation.
They're free and open source, so it'll save you money on a book. They will at least give you some ideas about how a 3D engine is designed and implemented.
They're free and open source, so it'll save you money on a book. They will at least give you some ideas about how a 3D engine is designed and implemented.
I'm just going to throw this one out because it's what I'm currently having to use for my game technology class. G3D is a low-to-mid level game engine that provides support for various things. I don't have too much experience with it (since I've only been in the course for two weeks), but so far I have mixed feelings about it. The library seems well structured; however, the docs kinda suck unless you know some OpenGL (which is what the graphics portion of G3D is built on top of). Nevertheless, I found that a combination of the Red Book and Nehe's tutorials, along with cross-referencing the G3D API docs has allowed me to fill in blanks and figure out how things work in the library.
If you're dead set on programming a game engine, these are a couple of books that I've found useful:
Ultimate 3D Game Engine Design & Architecture
Game Coding Complete
3D Game Engine Architecture
If you're dead set on programming a game engine, these are a couple of books that I've found useful:
Ultimate 3D Game Engine Design & Architecture
Game Coding Complete
3D Game Engine Architecture
Game Coding Complete is great book if any book deserves to be in anyones library this one does. but to the question at hand i find irrlicht code clean. If you can read code pretty good try irrlicht, since its small and simple else get Game coding complete and 3d game engine programming
Quote:
Original post by Ravuya
My general advice is not to build an engine; it is a waste of time if you want to make a game. Pick up an existing popular engine like OGRE or Irrlicht and start building a game rather than fiddling about with engine code.
If everyone think as you are, there would be no engine out there. ><
When I started my first engine, I wasn't competent enough, but it's XP. The next engine is better, then the next, then the next. I'm still far from perfection. But it's pretty good now. So I say: YES, do your own engine. Don't read Enginuity, it's a waste of time. Do what you think is best and learn from your errors.
That's my general advice.
Quote:
Original post by Daivuk
When I started my first engine, I wasn't competent enough, but it's XP. The next engine is better, then the next, then the next. I'm still far from perfection. But it's pretty good now. So I say: YES, do your own engine. Don't read Enginuity, it's a waste of time. Do what you think is best and learn from your errors.
"If I have seen further it is by standing on the shoulders of Giants."
Learn from others errors and then expand upon yours and theirs knowledge by making new errors. I do however agree that Enginuity isn't the best way to learn about engine design. Game Coding Complete is good and so is 3D Game Engine Architecture (this does require a little more from the reader though and isn't as general, but more in depth), but to really understand it I think you need to learn general software design.
Dave Eberly's books are the ones I know have titles dealing specifically with game engine coding, they're not exactly beginner books however, neither are they cheap.
There is also his website, where you can download the latest source code for his engine.
There is also his website, where you can download the latest source code for his engine.
In my experience it's important to build a game while building the game engine, otherwise you lose sight of your goals and will probably end up wasting your time on stuff that doesn't matter. You'll be so concerned with trying to write something that is general enough to work in every situation that it ends up not working at all.
Start with a simple game concept and go from there. As you require more features, add them to the engine, and modify the game code to take advantage of them. You will come to points where there is no good way to add a feature you need without re-writing significant parts of the engine -- that's fine, though. It's part of the learning experience and allows you to experiment with different ways of doing things. It also prevents you from doing a lot of work to add features that simply are not necessary.
Start with a simple game concept and go from there. As you require more features, add them to the engine, and modify the game code to take advantage of them. You will come to points where there is no good way to add a feature you need without re-writing significant parts of the engine -- that's fine, though. It's part of the learning experience and allows you to experiment with different ways of doing things. It also prevents you from doing a lot of work to add features that simply are not necessary.
Quote:
Original post by Ravuya
...My general advice is not to build an engine; it is a waste of time if you want to make a game. Pick up an existing popular engine like OGRE or Irrlicht and start building a game rather than fiddling about with engine code.
Wow! ... just wow.
Anyways, "Ultimate Game Programming with DirectX" by Allen Sherrod might interest you. Throughout the book you build a complete game engine. It's geared around a final game project called "Stranded". While the game is fairly simple, the engine covers all the basics and it can be expanded upon. In addition, the engine that you create with this book isn't cemented around DirectX. This book focuses on DirectX, but the engine is intentionally setup to work with OpenGL as well. You might want to check it out.
I am currently going thourgh
"Introduction to 3D Game Programming with Direct X 9.0c: A Shader Approach". I have no interest in OGL, so I am not to worried how my resulting engine will port to that API. However, I have found the "shader approach" will help to intergrate D3D10. Also I am not really following the books example other than if a get simular output to what the authors code gets I move on.
That said, the code examples the book has are small and
easy to read. You understand the concepts and have the tools to implement those concepts into your own little world when you finish the chapter and thats what I like.
"Introduction to 3D Game Programming with Direct X 9.0c: A Shader Approach". I have no interest in OGL, so I am not to worried how my resulting engine will port to that API. However, I have found the "shader approach" will help to intergrate D3D10. Also I am not really following the books example other than if a get simular output to what the authors code gets I move on.
That said, the code examples the book has are small and
easy to read. You understand the concepts and have the tools to implement those concepts into your own little world when you finish the chapter and thats what I like.
Quote:
Original post by Kwizatz
Dave Eberly's books are the ones I know have titles dealing specifically with game engine coding, they're not exactly beginner books however, neither are they cheap.
There is also his website, where you can download the latest source code for his engine.
Yep, I have the second one, er...*checks bookshelf*... "3D game engine architecture". It's a good book, very practical, talking about design patterns and implementation and stuff. I believe his first one was more high level.
Topic Locked
This topic has been locked by a moderator. New replies are not allowed.
Sign in to reply to this topic.
Advertisement