It has been a while since last time I wrote here. Real Life(tm) aka getting married and other stuff has meant I have been really busy and the time to write 10 page articles are kinda restricted. While I have a couple of articles being partially written I can't vouch for when they will be ready.
Instead I will try to produce a series of shorter less in-depth articles that focus more on individual tricks and tips and less on complexer systems and we'll see how this pans out. So first out today are some book recomendations.
While working at a game development school you quickly discovers the importance of good course literature. While of course you can teach the students everything they need to know yourself it takes a lot of time and effort and since these educations aren't 5 years educations you won't have time to give them all they need.
But if you got good literature as a base it saves a lot of time. Not only has someone sat down and worked really hard to put in a written format what you need to tell the students but they can also study the book interdependently of the lessons when they are looking for now information.
A good book also gives a great base to build a course around. The problem is that there are so much literature out there that are either crap, focused on a purely academic stand point or otherwise simply not targeted to game students. And a lot of the game books are just shameless cash in attempts or written by authors who lack the necessary skills as either a programmer or a writer or just simply out of date.
And some books while great are more useful after a few years in the industry or simply not build in a way that you can base a course around them. But through the years we have started to build up quite a nice library of books here to use and I will try to go through them during the coming articles. This might not be the best idea from a competitive advantage point as a school as the books are really important. But my main goal is for as many people as possible to become competent programmers and good books really helps here.
So lets start with the basic courses and move our way upwards. (btw I don't use cash links or anything like that so I won't earn a penny if anyone purchases these books, even though blogger has support for this I feel it would only detract from my main goal which is to put these books into the hands of as many people as possible)
C++ Primer (4th Edition) [Paperback]
Stanley B. Lippman
Paperback: 912 pages
Publisher: Addison-Wesley Professional; 4 edition (February 24, 2005)
Language: English
ISBN-10: 0201721481
ISBN-13: 978-0201721485
Amazon link
This is our basic C++ book we use for our introductionary courses, but also refers people back to pretty much every time they have a question about C++ releated things. Picking a course litterature for C++ for this education was really hard since it was years since I read any such base books. But a good friend recommended this one and I am really grateful for it. Despite having spent my last 12 years programming C++ as my job I still found new information in this book that I didn't knew about earlier.
This is however not a "learn to program" style book. It's based on learning C++. This this well into our unique approach here where we run two parallel courses one about how to program and one about how to program in C++.
The book starts out slowly walking though all the different parts of C++ syntax while quickly focusing on giving the reader enough knowledge to actually be able to program in C++. After that it starts going in-depth though the language, with amazingly well detailed descriptions of how things work under the hood and why some things works while others don't. Pretty much every area of the C++ language is covered with detailed explanations while never loosing readability. Things like implicit casting and how it conflicts with operator overloading, How virtual functions works behind the hood etc are described in great details telling you what rules the compiler follows so that you easily can write good code that works. If you are pretty new to C++ this is a gold mine. If you are an experienced programmer there are some nice stuff in here but probably not enough to make it worth your while. However I will cover a few books that didn't make it to course litterature but are awesome anyway in later posts.
Conclusion: This is an awesome learn C++ book with enough in depth information that unless you have been working with C++ actively for a couple of years you will still learn a lot of new stuff here it is also a good reference for more tricky parts of the language.
3D Math Primer for Graphics and Game Development
Fletcher Dunn, Ian Parberry
Paperback: 429 pages
Publisher: Jones & Bartlett Publishers; 1 edition (June 21, 2002)
Language: English
ISBN-10: 1556229119
ISBN-13: 978-1556229114
Amazon Link
The linear algebra for 3D math was a tough course to crack here. The first year we had in an algebra teacher with classic algebra knowledge and sat down with him and discussed what we wanted the students to know. This didn't work out however. Not due to a fault of the teacher the students were excellent at solving linear algebra with pen and paper but had problems transferring this to usable facts in 3D math and we had to spend a lot of time to work on this. For the second year we ditched the classical math texts and run the course completely based on lectures and compendiums. This worked out decently but I felt that with a good book as base we could have gotten further as there is only so much time you have to prepare a lecture. But all the books we looked at was either to academic or required to much prior knowledge until a student that was having some trouble with the course purchased and recommended this book.
When I got it in my hand I was amazed. Here was a book that tried to teach Linear Algebra in almost the exact same way as I wanted to. By focusing on approaching in not only from a purely mathematical stand point but also showing what it all means from a geometric standpoint. It also explains coordinate systems or spaces as they are often called as concept quite well and this is an area where in my experience students often have problems really grasping the basic ideas.
It covers normal vector,matrix math of course and all kinds of operations on vector you would need to know about for 3D math again with geometric explanations of things like the dot product and cross product.I can't vouch for it's sample code since I never used it. But then again sample code is not really relevant you want to learn things not just copy them. It gives a sensible explanation of matrixes using the Affine Transform vs Linear transform to explain things I myself always had been using other terms for but basically derived the same idea independantly.
It contains a good discussion of the different ways to contain an orientation in 3d with advantages and disadvantages and covers quaternions in the process. After that it covers collision detection with a diverse set of geometric primitives working with basic 3d meshes and discussing and showing how the math applies to basic 3d operations like lightning fog and culling. If finishes of with discussing spatial representations for culling and occlusion.
Conclusion : This really is a complete 3d primer from the first step to actually applying it in game. This is an absolute gold mine of information for anyone getting into 3D math and I simply can't recommend this book enough I simply love it.
It seems these posts are gonna be a bit longer than I thought when I started this one so I will have to split it up over a couple of posts to make it manageable. So I will continue in the next posts.
Subscribe to:
Post Comments (Atom)
I can actually recommend three books which are also very good.
ReplyDeleteThe first one, I feel it fills the gap between basic object oriented development and more advance techniques (like generalization).
The book is called Agile Software Development Principles, Patterns, and Practices by Robert C. Martin
ISBN: 0-13-597444-5
It takes an XP, test driven agile approach to development. Discusses a lot of principles which are good to keep in mind. Gives a good introduction to patterns (the good kind of patterns not anti patterns :) ) and also has a few pointer on project management approach.
Note that as with any good literature one should know what to apply and when. All practices are not applicable in every project setup, and also some just don't work due to resource differences (like for instance XP).
The second book is called Secure Coding in C and C++ by Robert C. Seacord.
ISBN: 978-0-321-33572-2. It discusses for instance stack smashing, buffer overflow issues, integer arithmetic exploits, arc injection. Basically how a malicious user can exploits common developer errors in order to gain control of the code.
Final one is called:
Modern C++ Design, Generic Programming and Design Patterns Applied
By Andrei Alexandrescu
ISBN: 0-201-70431-5
I feel that this is a quite advance book discussion templates, partial specialization, policy templates etc.
Either way if you haven't seen these books before I truly recommend them.