Indiegogo is committed to accessibility. If you have difficulty using our site, please contact support@indiegogo.com for assistance or view our accessibility notice by clicking here
UPDATE: our InDemand campaign for PAPERBACKs and HARDCOVERs is over. Both PAPERBACKs and HARDCOVERs of Vol. I are now available for ordering on Amazon.
What's the Big Idea?
One of 20+ illustrations from Vol.1
The idea behind this book is to summarize the body of knowledge that already exists on multiplayer games but is not available in one single place. And quite a few of the issues discussed within this series (planned as three volumes 400+ pages each), while known in the industry, have not been published at all (except for maybe in discussion forums).
Programming and deploying an MOG is a daunting task, and having a frame of reference is usually quite helpful — "hey, those guys have already tried this, and it worked for them."
By the end of Vol. 1, we'll complete our discussion of the things related to architecting your MOG, and will be ready to start discussing "Development" (Vol. 2) and "Deployment" (Vol. 3). For more details on what's within the book, see the tentative Table of Contents (it also includes links to all the beta chapters from Vol. 1).
This current project is only about Vol. 1, "Architecture," but Vol. 2 and Vol. 3 are already planned (and obviously my enthusiasm about them will get an additional boost when Vol. 1 is successfully funded ;-)).
Why Me?
I really hate to speak about myself, but this is one of those cases where I don't have much choice. So, here it goes (and if you really want further details, you can dig them out of my LinkedIn page).
20 years ago (damn, I am getting old) I was a co-architect for an electronic stock exchange of a G20 country, and for all practical intents and purposes stock exchanges are just another game genre. The project was fun and, among other things, allowed for real-time trading over the cellphones of that time (those with 9600 baud connection).
A few years later, I became a chief software architect working for a start-up that quickly grew into a rather large online game with half a million simultaneous players that processed half a billion user transactions per day. The project taught me a damn lot about such different issues as scalability, DB physical layout, server farms, attackers and cheaters of all kinds, and bot fighting — just to name a few.
Since then, I have consulted and performed due diligence on several game-related projects. In addition, I've spent quite some time researching the field and discussing related problems and their respective solutions with people from the industry.
I feel that this puts me in quite a unique position of knowing not only one single game, but a bunch of them, and being able to summarize and generalize my real-world experiences. Oh, and I have been writing for industry journals (and am especially proud of articles in CUJ and C++ Report) since 1998, so the process of typing sentences is not something new for me either.
Since When Are Rabbits Programming??
From an 2010 article in Overload
I cannot speak for all of rabbitkind, but this particular hare has gone alongside my writings for quite a while now. He was born as "No MT Bugs" Hare in 2010, in an Overload article titled "Single-Threading: Back to the Future?"
Therefore, there is evidence that this particular rabbit has been programming at least since 2010. Yes, he has changed his appearance, but deep inside, he is still the very same bunny with a naïve idea of making programs less buggy. BTW, the character is created by Sergey Gordeev, a guy with many animation awards, known (among other things) for being a director of some of the Animated Mr. Bean series.
Who Is this Book For?
The book is intended for those intermediary developers who want to become senior ones, and for senior developers and up. I expect that the book will also be useful for decision-makers, from PMs all the way up to CEOs — so if you by any chance know one, please make sure to give her a link to this page ;-).
On the other hand, if you are working on your first programming project, this book will probably be too difficult for you. There will be no explanation on what event-driven programming is all about, what the difference is between optimistic locking and pessimistic locking, why you need a source control system, and so on. Instead, there will be discussions on how the concept of futures fits into event-driven programming, when the use of optimistic locking make sense for games, and how to use source control in the presence of unmergeable files.
In the same spirit, the book is not intended to be a CD to copy-paste your sample MOG from. Instead, the book aims to help you write your own code that is tailored to your own needs, and tries to advise on the available choices at most of the junctions.
What's the Plan?
Currently, the "beta" chapters of the Vol.1 are already available on my blog ithare.com. The same "beta" posts are also available re-formatted as a single PDF (11.1M, 355 PDF pages; please note that this is NOT how the book is going to look).
Steps still to complete to bring the "beta" draft into the shape of the ready-for-printing Vol.1:
Restructure Vol.1. Done.
Go through Vol.1 again, "harmonizing" and clarifying things. I expect to add about 30'000 words during this process (give or take). Current progress: ~30% completed, 12'000 words already added. ETA: July 2016.
Make another pass through Vol.1, this time is more about self-editing (not that much will need be changed at this stage, I hope). ETA: August 2016.
Give it to a professional copyeditor. ETA: September 2016.
Give it to a book design/layout specialist. ETA: October 2016. At this point E-BOOKs will be sent out.
Print paperbacks with CreateSpace and hardcovers with IngramSpark, and get them sent to backers. ETA - November 2016. At this point PAPERBACKs and HARDCOVERs will be sent out.
Start selling Vol.1 on Amazon (planned price is $24.95 for Kindle, $34.95+Shipment for PAPERBACK, and $49.95+Shipment for HARDCOVER)
Become rich and retire to the Bahamas ;-). On second thought - this book probably won't suffice ;-(.
What's Inside?
Pretty much all MOG genres are within the scope of the book, from MMOFPS on one side of the spectrum to social games on the other side — with stock exchanges and multi-player casino games in between. However, things such as gameplay (including AI), and monetization are intentionally left out. In addition, the areas of physics and 3D graphics are too large by themselves and — to avoid expanding this into a 10-volume series — are only discussed very briefly (with pointers to good books on these subjects provided).
An excerpt from the tentative full ToC of the Vol.1:
Chapter I. Game Design Document from an MOG Perspective
Chapter II. On Cheating, P2P, and [non-]Authoritative Servers
Chapter III. Protocols
RTT, Input Lag, and How to Mitigate Them (includes Client-Side Interpolation, Client-Side Prediction, and Lag Compensation)
Game World States and Reducing Traffic Publishable State, Interest Management, and different Compression techniques)
Point-to-Point Communications and Non-Blocking RPCs (including discussion on message queues)
IDL (includes hints on writing your own IDL compiler)
Chapter IV. DIY vs Re-Use. In Search of Balance
Chapter V. Event-Driven Programming
Classical Event-Driven Programs
Deterministic Event-Driven Programs (including benefits such as production post-mortem for both client and server, replay testing, and so on)
RPC Processing in Event-Driven Programs: from Plain Event Processing to Futures (with lambda call pyramids in between)
Relation to Actors, Node.js, and Erlang
Chapter VI. Client-Side Architecture
Graphics (only very basics)
Programming Language for Client-Side
Client-Side Architecture Diagram (based on multiple event-driven objects)
Chapter VII. Server-Side Architecture
Naïve Architectures
Web-Based Architecture (including write-back caching and locking strategies)
Classical Architecture
Front-End Servers
Load Balancing (including Round-Robin DNS, Server-Side Balancing and Client-Side Random Balancing)
Eternal Linux-vs-Windows Debate
Programming Languages for Server-Side
Chapter VIII. Unity 5 vs UE4 vs Photon vs DIY for MOG
Chapter IX. Pre-Coding Checklist: Things Everybody Hates, but Everybody Needs. From Source Control to Coding Guidelines
Chapter IX concludes Vol.1; for the list of the Chapters planned in Vol.2 and Vol.3, see the full tentative ToC.
Looking for more information?Check the project
FAQ