This week I read Algorithms and Networking for Computer Games by Jouni Smed and Harri Hakonen. The title conceals nothing about the contents. But this is a book that may be better treated as a reference than one to read from cover to cover as I did.
Math, Do You Know It?
A book with the words ‘algorithms’ and ‘computer’ in the title will have its share of math. And so it is with Algorithms and Networking for Computer Games (ANCG). The book expects the reader be comfortable with set theory, graph theory, and calculus. While not as demanding as, say, Knuth, an understanding of some advanced mathematical concepts is necessary.
ANCG does not present its plethora of forumlae and equations for the sake of being daunting. Instead it presents an interesting, mathematical view of common technical game issues: path-finding, decision making for artificial intelligence, synchronizing game data over a network, guarding against packet manipulation for the purposes of cheating, and so on. The authors dissect the topics with such precision and logical clarity that I would say the book is practically required reading for anyone programming an online multiplayer game.
Personally I am not a fan of pseudo-code in books. That said, I had little complaint with the examples in ANCG. I prefer to see examples in a real programming language, but the authors thoroughly explain their pseudo-code language in the appendix and make efficient use of it to present the book’s ideas.
Each chapter ends with a series of questions that exhibit a wide range of difficulty. They are not all mere factual tests either. The more challenging questions ask the reader to apply the chapter’s information to a new domain. This makes ANCG quite the brain exercise, and there was no way I could finish even half of the problems in one week—not with other things in life to do. This gives ANCG re-read value; I can imagine myself revisiting the book in the future to attempt problems I previously skipped for the sake of time.
My only serious complaint is that the book fails to discuss cheating prevention with the same amount of depth that it provides for all other topics. This is somewhat acceptable considering its time of publication (2006) and then-recent research which presented new attacks against common anti-cheating measures (particularly Wang and Yu 2005).
Overall I would recommend Algorithms and Networking For Computer Games to any computer programmer working on games. Its compact, efficient mathematical approach to its subject makes the book more useful as a reference, but there is nothing wrong with that. If you need to refresh your mind about the pros-and-cons of different path-finding algorithms or A.I. behavior in zero-sum games then ANCG is a good book to pull off the shelf. And if you want a challenge for an afternoon just pick one of the exercises from the end of any chapter.
Next Book of the Week
After reading Algorithms and Networking For Computer Games I felt like something ‘lighter’, even though I will be revisiting the book during the week for its exercises. So my next book of the week will be MUD Game Programming by Rob Penton. I have always loved MUDs so I look forward to the book. And it will give me a reason to re-read parts of ANCG, which honestly I did not make as much time for as I would have liked this week.