Due to Popular Demand: PDFs of Beta Chapters from “Development & Deployment of Multiplayer Online Games”

Author:  Follow: TwitterFacebook
Job Title:Sarcastic Architect
Hobbies:Thinking Aloud, Arguing with Managers, Annoying HRs,
Calling a Spade a Spade, Keeping Tongue in Cheek

Beta chapters of my upcoming book Development & Deployment of Multiplayer Online Games seem to gain in popularity. I’ve even got more than one request to make a PDF out of them, so they can be read offline in a e-book reader such as Kindle. Ok, here they go: PDFs of beta chapters from the book.

Note that PDFs are not formatted for the book, and certainly do not represent “how the book will look when it is published”. It is HTML mechanically reformatted to PDF, with the only purpose being to allow reading of the same-thing-which-you-can-read-on-site but offline. It should be also better suitable for printing.

Chapter I. Business Requirements
Chapter II. Game Entities and Interactions
Chapter III. On Cheating, P2P, and [non-]Authoritative Servers
Chapter IV. DIY vs Re-Use: In Search of Balance
Chapter V(a). Modular Architecture. Client-Side. Graphics
Chapter V(b). Modular Architecture. Client-Side. Programming Languages
Chapter V(c). Modular Architecture. Client-Side. On Debugging Distributed Systems, Deterministic Logic, and Finite State Machines
Chapter V(d). Modular Architecture. Client-Side. Client Architecture Diagram, Threads, and Game Loop
Chapter VI(a). Modular Architecture. Server-Side. Naïve, Web-Based, and Classical Deployment Architectures
Chapter VI(b). Modular Architecture. Server-Side. Front-End Servers and Client-Side Random Load Balancing
Chapter VI(c). Modular Architecture. Server-Side. Eternal Windows-vs-Linux Debate
Chapter VI(d). Modular Architecture. Server-Side. Asynchronous Processing for Finite State Machines/Actors: from plain event processing to Futures (with OO and Lambda Call Pyramids in between)
Chapter VI(e). Modular Architecture. Server-Side. Programming Languages
Chapter VII(a). Modular Architecture. Protocols. RTT, Input Lag, and Mitigation
Chapter VII(b). Modular Architecture. Protocols. World States and Reducing Traffic
Chapter VII(c). Modular Architecture. Protocols. Point-to-Point Communications and Non-blocking RPCs
Chapter VII(d). Modular Architecture. Protocols. IDL: Encodings, Mappings, and Backward Compatibility
Chapter VIII. Unity 5 vs UE4 vs Photon vs DIY
Chapter IX. Pre-Coding Checklist: Things Everybody Hates, but Everybody Needs Them Too. From Source Control to Coding Guidelines

VOL.1 COMBINED (11.1MBytes, 355 pages) NOT FORMATTED AS A BOOK, BETA QUALITY; now with table of contents, thanks to http://pdfmerge.com/

PDFs of further chapters will be added here as they’re published on the site. To navigate through HTML version of the book, please see Table of Contents.


Conversion from HTML to PDF has been performed by http://www.htmlpdf.com/ (with some minor CSS tweaking on our side). Merge of different chapters has been performed supposedly by the same team, via http://pdfmerge.com/ . I am really surprised with the quality of the conversion they provide (and their merge was the only one which was able to merge navigation)… Thanks guys and gals, you’ve done a wonderful job with this converter and merger!

Join our mailing list:


  1. Justin says

    Nice interesting work, thanks for sharing. I’m not familiar with the reddit articles, I came here via a link on high scalability. After browsing the first few chapters, I feel like one thing thats acutely missing is: who you are.

    Maybe I missed it in the intro and improved formatting would point it out…but it would be good to hear the story of how you came to gain all of this knowledge, what projects you worked on, when you did it, etc. Essentially: why should I buy the book and listen to you vs someone else? 😉

  2. David Elrod says

    When you publish the paper version of the book, please consider making a small boxed set of “pocket book” sized volumes. I find a 700 page book to be unwieldy to hold. A set of 3-5 shorter smaller books in a set will cost a bit more to produce, but would be far more manageable for readers.

    For example: I have a boxed set of Tolkien’s “Lord of the Rings”, along with a nice leatherbound version that is all in one volume. The smaller books in the boxed set fit in a jacket pocket, and are now very well worn. The leatherbound book looks nice on the shelf… (grin)

    • "No Bugs" Hare says

      Currently we’re planning to have 3 volumes of 400-500 pages (~150K words) each, around 6×9″ to 7×10″ format. I assume you’d prefer something smaller, but which format and how many volumes?

      P.S. Overall, the whole thing is Really Large (at 450K words total it is comparable to “War and Peace” by Leo Tolstoy ;-)), so “how to split” question is Really Important…

  3. Jason Guzzardo says

    I’m a distributed systems architect that had a short stint in the games industry and this is the kind of thing I’ve been waiting to see catch fire in the games industry for some time. The concept of non-blocking, asynchronous/concurrent, micros-service based architectures expressed via actors/futures, etc is not something you typically see in games. Most of the industry still seems to be caught up in low level socket based UDP/TCP frameworks…

    Just got done reading chapter VI(d) and it does an excellent job of illustrating the usefulness of functional programming in distributed systems. It’s often times difficult to explain why imperative languages are sometimes not the best choice here but you broke it down really well. I’m hoping to see a more detailed exploration of actor systems like akka and how they might fit in with an MMO based architecture. Anyway, great job! Really looking forward to reading your series of books!

    • "No Bugs" Hare says

      TBH, I am Big Fan of deterministic non-blocking FSMs/Reactors (for many reasons). To implement them, lambdas/closures MIGHT indeed be necessary, though from my perspective functional programming is much more a _tool_ to achieve the goal of such non-blocking FSMs/Reactors, than the “end in itself”. OTOH, I certainly recognise the inherent value of certain concepts coming from functional programming (such as “pure” functions – oh, I _love_ them even for purely imperative programs). BTW, if you’re into this kind of things, you MIGHT be interested in the following rant of mine about functional programming for interactive programs and FSMs: http://ithare.com/on-zero-side-effect-interactive-programming-actors-and-fsms/ (it is quite on a “thinking aloud” side and may be not as straightforward as it should be, but it MIGHT be of interest).

  4. Farzam says

    I think the word “Designer” should be replaced with artist/modeler in chapter V(a) in the paragraph below:

    “3D design, usually made using readily available 3rd-party 3D toolchain. For this purpose, you can use such tools as Maya, 3D Max, Poser, or – for really adventurous ones – Blender. 3D design is not normally done by developers, but by designers. It includes both models (including textures etc.) and animations.”

    as we use the word “designer” mainly for “game designer”s in the industry.

    • "No Bugs" Hare says

      You’re right, I hope that I’ve fixed most of this kind of stuff in “beta 2” of the book (in particular, Chapter I was SEVERELY rewritten), but this one apparently slipped the rewriting. Will fix for “beta 2”, THANKS!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.