Archive for the ‘Maths’ Category

ADFs - the heart of the Saffron Font engine

Friday, August 26th, 2005

I was reading up on the Saffron font engine technology today, and as I was skimming this paper I noticed that the technology seems to use quadtrees and octtrees, which are popular concepts in collision detection space partitioning. Basically, it works on the principle of scanning an object, and analysing the amount of detail in it, and only storing higher resolution data of it if needed. For example, if we have a 200×200 square, and there’s only a 25×25 box in the top right hand corner, we can ignore 3/4 of the scene by dividing the square by four and discarding the empty sections. We can then go further, by dividing the one occupied square by four again, and again, ad infinitum. This lets us draw and query the scene much more quickly, and means that less data is needed to represent it. It also means that the coordinates themselves will be limited to a smaller range, because they only need to be stored in terms of the coordinate space of the cell they are in. This can potentially cut the size of the data in half again. ADF seems to use the corners to represent edges, so it can avoid too many levels of recursion into a shape, while still maintaining the same level of quality.

Book Review: Mathematics For Game Developers

Monday, September 13th, 2004

By Christopher Tremblay - Thomson Course Tehnology
cover

Mathematics For Game Developers is a really unique book. It approaches mathematical subjects from the perspective of the game developer - while still staying in-depth and accurate enough to satisfy the more mathematically minded. It covers all the essential topics - vectors, matrices,physics, calculus, manipulating equations - and it relates them directly to their applications in games programming. It introduces topics one by one, and builds upon existing knowledge - however, it’s also accessible enough that you can just dip into a random chapter and not be too lost. More complex algorithmic subjects like collision detection and space partitioning are covered later on, and these topics are all handled very well. The solutions the book provides are mostly in the form of equations, so you’ll need to do a little work converting them to code, but all in all I think you’ll find the book invaluable. The section on space partitioning is excellent, as is its coverage of understanding lines - a topic usually skipped by math authors as it’s supposedly an ‘elementary’ problem - however the limitations of the conventional y=mx+b approach are explored and worked around in one of the early chapters.

There is so much unique and useful information in this book, and it is presented in such an accessible way, I’d definitely recommend it to anyone who is interested in games development. A basic high school maths knowledge is assumed, but it could be read in parallel with a more conventional book to cover or revise the math basics.

The only things that count against it are the contents of the CD - no Maple evaluation (possibly not the publisher’s fault), and the code samples are a little lacking - absolutely no sample code for collision detection? Unacceptable. There are also some minor typographical errors in one or two of the proofs/expansions, but nothing fatal.

Overall, a great, accessible, knowledgable book, which should find a prominent place in any serious game developer’s library.