2010-01-16

Book review: ActionScript for Multiplayer Games and Virtual Worlds

This book is a huge disappointment. Despite the trendy topic and the promising title it completely fails to deliver. The crucial hint is the fact that the author is a founder of Electrotank. Because of that the book has become a thinly disguised advertisement for Electrotank's server product. Nowhere in the title or on the cover flap does it hint that all examples, text and code are basically useless without the commercial Electroserver. It would have been fair to distribute the book's content as free sample programs and tutorials with the server instead of selling it as a fully priced stand alone product. The way it stands it feels like a shameless rip-off.

There are lots of major shortcomings with the content. Despite dealing with network games there is basically no treatment whatsoever of networking protocols, encryption or compression schemes, redundancy or other such "minor details" that make networking code a hard problem. Instead it is assumed that all of these things are magically dealt with by the server product. In the same vain there isn't a single example of actual server code! There is a passing mention that you'll need to write plugins to handle the server side of things but you are only presented with half the game. Now to be fair the book is about ActionScript and you don't usually write the server parts in that language, but since the server is a non trivial part of any multiplayer game it would have been fair to spend a few words on that.

The chapter on security does mention many of the important topics that plague online developers. However, it stops well short of actually offering solutions to these issues. The advice can basically be summed up as "don't trust the client!". Cross site scripting, packet injection, SQL injection, hacking the client's memory and data encryption are all mentioned in small half paragraph passages. While the problems are well stated they can at best serve as entry points for google searches and in themselves offer very little actionable advice.

Many of the code examples in the book are worthless because they show long lists of member variable assignments. I knew how to do that, thank you. The interesting part is not how to assign _x = 12; The interesting part is how that object actually synchronizes itself with the server and other clients. An apparently unimportant detail that gets skimped over because Electroserver will magically solve that for you. Similarly, some code examples which are actually useful miss the topic of the book. A* pathfinding or rendering an isometric view, while well presented, have little to do with multiplayer.

Last but not least there are the factual errors. Things like a set of equations, which, when you actually solve them, present results such as "server time = server time + offset". Huh? Or errors in diagrams where a bar chart is shown and a line supposedly marking the median (not mean, mind you) which doesn't fit any of the values.

While it is clear that the author is knowledgeable on the topic and brings a lot of experience the resulting book is unfortunately quite shallow and superficial. It also seems as if the author deals with games in quantity, not quality. This is understandable, considering he's in the business of selling a back end product and that lots of low quality games is where the flash game industry as a whole is currently at, but it's nevertheless lamentable. I personally would have hoped for someone who lives, breathes and loves games and doesn't treat them as a commodity.

1 comment:

  1. I've been a roleplayer all my life, starting with D&D in the 80s, LARPing in the 90s and internet gaming in the 21st century. My favorite game of all time has to be Neverwinter Nights. I loved it because of the fabulous Aurora toolset it came with that let you create your own virtual world. I spent two months building a "mod" for others to play. And hundreds did. In the end, I got some cheers and jeers and made a few friends. But it always irked me that I would be unable to profit from my creation because the platform I built my game on belonged to someone else.

    ReplyDelete