`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 1 of 63 PagelD #: 17584
`
`
`
`
`
`
`
`
`
`EXHIBIT 1
`EXHIBIT1
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 2 of 63 PageID #: 17585
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 2 of 63 PagelD #: 17585
`
`AO 88B (Rev. 02/14) Subpoena to Produce Documents, Information, or Objects or to Permit Inspection of Premises in a Civil Action
`
`UNITED STATES DISTRICT COURT
`for the
`District of Delaware
`
`Acceleration Bay LLC
`
`Plaintiff
`¥.
`
`Activision Blizzard., Electronic Arts Inc., Take-Two
`Interactive Software lnc., et al,
`Defendant
`
`Civil Action No. 16-453, 16-454, 16-455
`
`SUBPOENA TO PRODUCE DOCUMENTS, INFORMATION, OR OBJECTS
`OR TO PERMIT INSPECTION OF PREMISES IN A CIVIL ACTION
`
`To: Microsoft Corporation, 3460 157" Avenue, NE, Redmond, WA 98052-5393, United States
`
`(Name ofperson to whomthis subpoena is directed)
`
`ix] Production: YOU ARE COMMANDEDto produceat the time, date, and place set forth below the following
`documents, electronically stored information, or objects, and to permit inspection, copying, testing, or sampling of the
`
`ATTACHMENTA, attached
`
`Place: Seattle Deposition Reporters
`600 University Street, Suite 320
`1 Union Square
`
`Seattle, WA 98101
`
`Date and Time:
`July 31, 2017
`
`[_] Inspection ofPremises: YOU ARE COMMANDEDtopermit entry onto the designated premises, land, or
`other property possessed or controlled by you at the time, date, and location set forth below,so that the requesting party
`may inspect, measure, survey, photograph, test, or sample the property or any designated object or operationonit.
`Date and Time:
`
`
`The following provisions of Fed. R. Civ. P. 45 are attached — Rule 45(c), relating to the place of compliance;
`Rule 45(d), relating to yourprotection as a person subject to a subpoena; and Rule 45(e) and (g), relating to your duty to
`respond to this subpoena and the potential consequences of not doing so.
`
`eee mo
`
`Date: 7/20/2017
`
`CLERK OF COURT
`
`i
`
`b
`
`if a
`
`
`
`Signature ofClerk ar Deputy Clerk
`
`Ny oo
`
`/ “Attorneys signature
`
`The name, address, e-mail address, and telephone numberofthe attorney representing (name-ofpartys Activision Blizzard
`Inc., Electronic Arts Inc., Take-Two Interactive SoftwareInc., et al.
`, who issues or requests this subpoena, are:
`David K. Lin, Esq.
`Email: Dlin@winston.com: Telephone: 213-615-1700
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 3 of 63 PageID #: 17586
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 3 of 63 PagelD #: 17586
`
`AO 88B (Rey, 02/14) Subpoena to Produce Documents, Information, or Objects or to Permit Inspection of Premises in a Civil Action
`
`Notice to the person who issues or requests this subpoena
`If this subpoena commandsthe production of documents, electronically stored information, or tangible things orthe
`inspection of premises beforetrial, a notice and a copy of the subpoena must be served on eachparty in this case before
`it is served on the person to whom it is directed. Fed. R. Civ. P. 45{a){4).
`
`
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 4 of 63 PageID #: 17587
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 4 of 63 PagelD #: 17587
`
`AO 88B (Rev. 02/14) Subpoena to Produce Documents,Information, or Cbjects or to Permit Inspection of Premises in a Civil Action (Page 2}
`
`Civil Action No,
`
`(This section should not befiled with the court unless required by Fed, R, Civ, P, 45.)
`
`PROOF OF SERVICE
`
`I received this subpoena for(name ofindividual andfille, ifany)
`
`I served the subpoena by delivering a copy to the named person as follows:
`
`
`
`on (dete)
`
`; or
`
`Iveturned the subpoena unexecuted because:
`
`
`
`Unless the subpoena was issued on behalf of the United States, or one ofits officers or agents, I have also
`tendered to the witness the fees for one day’s attendance, and the mileage allowed by law, in the amount of
`
`My fees are $
`
`for travel and $
`
`for services, for a total of $0.00
`
`I declare underpenaity of perjury that this informationis true.
`
`Server's signature
`
`Printed name and title
`
`Server's address
`
`Additional information regarding attempted service, etc.:
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 5 of 63 PageID #: 17588
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 5 of 63 PagelD #: 17588
`
`AO 88B (Rev. 02/14) Subpoena to Produce Documents, Information, or Objects or io Permit Inspection of Premises in a Civil Action (Page 3)
`
`Federal Rule of Civil Procedure 45 (c), (d), (e), and (g) (Effective 12/1/13)
`
`(ec) Place of Compliance.
`
`(ii) disclosing an unretained expert’s opinion or information that does
`not describe specific occurrences itt dispute and results from the expert’s
`(1) For a Trial, Hearing, or Deposition, A sabpoena may command a
`study that was not requested by a party.
`person to aftendatrial, hearing, or deposition only as follows:
`(C} Specifying Conditions as an Alternative. In the circumstances
`(A) within 100 miles of where the person resides, is employed, or
`described in Rule 45(d)(3)(B), the court may, instead of quashing or
`regularly transacts business in person; or
`modifying a subpoena, order appearance or production underspecified
`(B} within the state where the person resides, is employed, or regularly
`conditions if the serving party:
`transacts business in person, if the person
`(i) shows a substantial need for the testimony or material that cannot be
`(i) is a party or a party’s officer; or
`otherwise met without undue hardship; and
`(ii) is commanded to attend a trial and would not ineur substantial
`(ti) ensures that the subpoenaedperson will be reasonably compensated.
`
`(2) Fer Other Discovery, A subpoena may command:
`{A) preduction of documents, electronically stored information,or
`tangible things at a place within 100 miles of where the personresides,is
`employed, or regularfy transacts business in person; and
`(B} inspection of premises at the premises to be inspected.
`
`(d) Protecting a Person Subject to a Subpoena; Enforcement,
`
`(1) Avoiding Undue Burden or Expense; Sanctions. A parly or attorney
`responsible for issuing and serving a subpocna rust take reasonable steps
`to avoid imposing undue burden or expense on a person subject to the
`subpoena. The court forthe district where compliance is required must
`enforce this duty and impose an appropriate sanction—which may include
`lost earnings and reasonable attorney’s fees—ona party or attorney who
`
`(2) Command to Preduce Materials or Permit Inspection.
`(A) Appearance Not Required. A person commanded to produce
`documents, electronically stored information, or tangible things, orto
`permit the inspection of premises, need not appear in person at ihe place of
`production or inspection unless also commanded to appearfor a deposition,
`hearing,ortrial.
`(B) Odjections, A person commanded to produce documents or tangible
`things or fo permit inspection may serve on the party or attorney designated
`in the subpecna a written objection to inspecting, copying, testing, or
`sampling any orall of the materials or to inspecting the premises—orto
`producing electronically stored information in the form or forms requested.
`The objection must be served before the earlier of the time specified for
`compliance or 14 days after the subpoenais served. If an objection is made,
`the following rules apply:
`(i) At any time, on notice to the commandedperson, the serving party
`may movethe court forthe district where compliance is required for an
`order compelling production or inspection.
`(ii) These acts may be required only as directed in the order, and the
`order must protect a person whois netther a party nor a party’s officer from
`significant expense resulting from compliance.
`
`(3) Quashing er Modifying a Subpoena.
`(A} Ihen Required. On timely motion, the court for the district where
`compliance is required must quash or modify a subpoenathat:
`(i) fails to allow a reasonable time to comply;
`(ii) requires a person to comply beyond the geographical limits
`specified in Rule 45(c);
`(iii) requires disclosure of privileged or other protected matter, if no
`exception or waiver applies; or
`(iv) subjects a person to undue burden,
`(B) Hhen Permitted. To protect a person subject to or affected by a
`subpcena, the court forthe district where compliance is required may, on
`mation, quash or modify the subpoenaif it requires:
`(i) disclosing a trade secret or other confidential research,
`development, or commercial information; or
`
`(e) Duties in Responding to a Subpoena,
`
`(1) Producing Documents er Electronically Stored rforimation, These
`procedures apply to producing documents orelectronically stored
`information:
`
`(A) Documents. A person responding to a subpoena to produce documents
`must produce them as they are keptin the ordinary course of busiaess or
`must erganize and label them to correspond to the categories in the demand.
`(B) Formfor Producing Electronically Stored Information Not Specified.
`Ifa subpoena does not specify a form for producing electronically stored
`information, the person responding must produce it in a form or forms in
`whichit is ordinarily maintained or in a reasonably usabie form or forms.
`(C} Electronically Stored Information Produced in Only One Form. The
`person responding need not produce the same electronically stored
`information in more than one form.
`(D) Inaccessible Electronically Stored Information. The person
`responding need not provide discovery ofelectronically stored information
`from sourcesthat the person identifies as not reasonably acecssible because
`of undue burdenorcost. On motion to compel discovery orfor a protective
`order, the person responding must showthat the information is not
`reasonably accessible because of undue burden orcost. If that showing is
`made, dhe court may nonetheless order discovery from such sources if the
`requesting party shows good cause, considering the limitations of Rule
`26(b}H2MC). The court may specify conditions for the discovery.
`
`(2) Claiming Privilege or Protection,
`(A) Information Jithheld. A person withholding subpoenaed information
`undera claim thatit is privileged or subject to protectionas trial-preparation
`material must:
`(i) expressly make the claim; and
`(ii) describe dhe nature of the withheld documents, communications, or
`tangible things in a manner that, without revealing information itself
`privileged or protected, will enable the parlies to assess the claim,
`(B) nformation Produced. Uf information produced in response to a
`subpoenais subject to # claim of privilege orof protection as
`trial-preparation material, the person making the claim may notify any party
`ihal received the information ofthe claim andthe basis forit. After being
`notified, a party must promptly return, sequester, or destroy the specified
`information and any copies it has; must not use or disclose the information
`until the claim is resolved; must take reasonable steps to retrieve the
`informationif the party disclosed it before being notified; and may promptly
`present the information underseal to the court for dhe district where
`compliance is required for a determination of the claim. The person who
`produced the information must preserve the informationuntil the claim is
`resolved,
`
`(g} Contempt.
`The court for the districl where compliance is required—and also, after a
`motion is transferred, the issuing cour(—may hold in contempt a person
`who, having been served, fails without adequate excuse to obey the
`subpoenaoran orderrelatedto it.
`
`
`
`For access to subpoena materials, see Fed, R, Civ. P. 45(a) Committee Note (2043).
`
`
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 6 of 63 PageID #: 17589
`
`ATTACHMENT A
`
`DEFINITIONS
`
`1.
`
`“Defendants” shall mean Activision Blizzard, Inc., Electronic Arts Inc., Take-
`
`Two Interactive Software, Inc., Rockstar Games, Inc., and 2K Sports, Inc., including but not
`
`limited to their predecessors, all parent companies, partners, wholly or partially owned
`
`subsidiaries, divisions, past or present affiliated corporations, and each of their present and
`
`former employees, agents, officers, directors, representatives, consultants, accountants, and
`
`attorneys.
`
`2.
`
`“Acceleration Bay” or “Plaintiff” means and includes Acceleration Bay LLC
`
`together with each of its respective departments, divisions, subsidiaries, predecessors, and
`
`affiliates, past and present, and all employees, representatives, and/or agents acting or purporting
`
`to act on any or all of their respective behalves.
`
`3.
`
`4.
`
`“You,” “your,” and “Microsoft” means Microsoft Corporation.
`
`“This Case” shall mean the lawsuit(s) filed by Acceleration Bay in the District of
`
`Delaware, C.A. Nos. 16-453 (RGA), 16-454 (RGA), 16-455 (RGA).
`
`5.
`
`6.
`
`“Age of Empires” shall mean Age of Empires 1 and Age of Empires 2.
`
` “Communication,” “communications,” or “communicated” shall mean and shall
`
`include any oral or written expression, statements, or utterance of any nature whatsoever,
`
`including but not limited to, correspondence, conversations, memoranda, notes, computer or
`
`electronic expressions and statements and telecommunications.
`
`7.
`
`“Documents” shall have the meaning ascribed to that term in Rule 34 of the
`
`Federal Rules of Civil Procedure, and shall also include, without limitation, all writings,
`
`printouts, graphical material, and recordings as defined by Rule 1001 of the Federal Rules of
`
`
`
`
`1
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 7 of 63 PageID #: 17590
`
`Evidence, drawings, graphs, charts, photographs, film, audio or video recordings, facsimile
`
`transmissions, computer files, and electronic mail messages, and all data compilations from
`
`which information can be obtained, translated, if necessary, through detection devices into
`
`reasonably useable form. “Documents” also includes, without limitation, anything that can be
`
`classified as a “writing,” “original,” or “duplicate. “Documents” also include all drafts, all
`
`attachments to Documents, and all copies of Documents that are not identical duplicates of the
`
`original (for example, because handwriting, marginalia, or notes appear on the duplicate or are
`
`attached to it), whether or not the originals are in Acceleration Bay’s possession, custody or
`
`control.
`
`8.
`
`“Entity” or “entities” include natural persons, proprietorships, partnerships, firms,
`
`private corporations, public corporations, municipal corporations, governments (including
`
`foreign national governments, the government of the United States or any state or local
`
`government), all departments and agencies thereof, and any governmental agencies of any
`
`country, political subdivisions, groups, associations, or organizations.
`
`9.
`
`“Thing” or “things” shall mean any tangible object other than a document as
`
`defined herein, and includes objects of every kind and nature.
`
`10.
`
`“Relating to,” “related to” or “concerning” shall mean anything pertaining to,
`
`comprising, evidencing, alluding to, responding to, connected with, commenting on, with respect
`
`to, about, regarding, resulting from, embodying, explaining, supporting, discussing, showing,
`
`describing, reflecting, analyzing, constituting, setting forth, in respect of, or having any direct or
`
`indirect logical or factual connection with the subject matter in question.
`
`11.
`
`“Including” shall not be construed as limiting any request, and shall mean the
`
`same as “including, but not limited to.”
`
`
`
`
`2
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 8 of 63 PageID #: 17591
`
`12.
`
`The use of the term “the” shall not be construed as limiting the scope of any
`
`document request.
`
`13.
`
`“Any” or “each” shall be understood to include and encompass “all;” “or” shall be
`
`understood to encompass “and;” “and” shall be understood to include and encompass “OR.”
`
`14.
`
`“And,” “or,” and “and/or” shall be construed conjunctively or disjunctively as
`
`necessary to make the request inclusive rather than exclusive.
`
`15.
`
`The plural of any word shall be construed as the singular, and vice versa, as
`
`necessary, in order to bring within the scope of these requests any information, documents, or
`
`things that might otherwise be construed to be outside their scope.
`
`INSTRUCTIONS
`
`16.
`
`You are to search all documents and things within your possession, custody or
`
`control or within the possession, custody or control of your attorneys, accountants, or other
`
`agents or representatives, wherever located, including but not limited to documents and things
`
`placed in storage facilities and documents and things in the possession of any employee, agent,
`
`representative, or person acting or purporting to act on your behalf whether located at his or her
`
`residence(s) and/or place(s) of business(es).
`
`17.
`
`Pursuant to Fed. R. Civ. P. 34(b), you are instructed to produce documents as they
`
`are kept in the usual course of business or the documents shall be organized and labeled to
`
`correspond to the categories for each Request. In addition, documents are to be produced in full
`
`and unexpurgated form; redacted documents will not constitute compliance with a Request.
`
`18.
`
`Different versions of the same documents, handwritten notes or notations in any
`
`form, draft documents and documents with handwritten notations or marks not found in the
`
`
`
`
`3
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 9 of 63 PageID #: 17592
`
`original or on other copies are considered to be different documents for the purpose of
`
`production in compliance with these requests, and each form should be produced independently.
`
`19.
`
`Electronic and computerized information must be produced in an intelligible
`
`format or together with a description of the system from which it was derived sufficient to permit
`
`rendering the materials intelligible.
`
`20.
`
`All documents produced in response to these Requests shall be produced in toto
`
`notwithstanding the fact that portions thereof may contain information not requested.
`
`21.
`
`All documents produced in response to these Requests shall be produced along
`
`with any and/or all attachments and/or enclosures as have ever been attached to and/or enclosed
`
`with such documents at any time.
`
`22.
`
`All documents requested herein shall be produced in the same sequence as they
`
`are contained or found and with the file folders and other identifying documents or containers
`
`(e.g., copy of envelope, file cabinet market, binder tab) in which such documents were located
`
`when these requests were served.
`
`23.
`
`If you object or otherwise refuse to respond or produce documents or things in
`
`response to any portion of a document request, you shall (1) state the objection or reason for such
`
`refusal, and (2) provide all documents or things called for by that portion of the request for
`
`production to which you do not object or refuse to respond.
`
`24.
`
`These Requests are submitted for the purpose of discovery and are not to be taken
`
`as waiving any objections that may be made at trial to the introduction of evidence on subjects
`
`covered by these Requests or as an admission of the relevance or materiality at trial of any of the
`
`matters covered by these Requests.
`
`
`
`
`4
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 10 of 63 PageID #: 17593
`
`25.
`
`Pursuant to Fed. R. Civ. P. 26(e)(2), these Requests shall be deemed continuing so
`
`as to require further and supplemental production by you in the event that you or any person
`
`acting on your behalf, obtains or discovers additional documents or information that may
`
`augment or otherwise modify your responses hereto, between the time of initial production and
`
`the time of any trial in this Case.
`
`REQUESTS FOR PRODUCTION
`
`1.
`
`Documents sufficient to explain the design, architecture, and implementation of
`
`the multiplayer features of Age of Empires prior to July 31, 2000, as described in the Exhibit 1.
`
`2.
`
`Documents sufficient to show the earliest date on which Age of Empires 1 and
`
`Ages of Empires 2 were offered for sale or sold in the United States.
`
`
`
`
`5
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 11 of 63 PageID #: 17594
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 11 of 63 PagelD #: 17594
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`EXHIBIT 1
`EXHIBIT 1
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 12 of 63 PageID #: 17595
`
`1500 Archers on a 28.8: Network Programming in Age
`of Empires and Beyond
`
`Paul Bettner
`pbettner@ensemblestudios.com
`
`Mark Terrano
`mterrano@ensemblestudios.com
`
`(Presented at GDC2001 - 03/22/2001 2:30p)
`
`Introduction
`
`This paper explains the design architecture, implementation, and some of the
`lessons learned creating the multi-player (networking) code for the Age of
`Empires I & II games; and discusses the current and future networking
`approaches used by Ensemble Studios in its game engines.
`
`Age of Empires multi-player - Design Goals
`
`When the multi-player code for Age of Empires ™ was started in early 1996 there
`were some very specific goals that had to be met to deliver the kind of game
`experience we had in mind.
`
`
`• Sweeping epic historical battles with a great variety of units
`• Support for 8 players in multi-player
`•
`Insure a smooth simulation over LAN, modem-to-modem, and the Internet
`• Support a target platform of: 16Mb Pentium 90 with a 28.8 modem
`• The communications system had to work with existing (Genie) engine
`• Target consistent frame rate of 15 fps on the minimum machine config
`
`
`The Genie Engine was already running and the game simulation was shaping up
`into a compelling experience in single player. The Genie Engine is a 2D single-
`threaded (game loop) engine. Sprites are rendered in 256 colors in a tile-based
`world. Randomly-generated maps were filled with thousands of objects, from
`trees that could be chopped down to leaping gazelles. The rough breakdown
`(post optimization) of processing tasks for the engine was: 30% graphic
`rendering, 30% AI and Pathing, and 30% running the simulation & maintenance.
`
`At a fairly early stage, the engine was reasonably stable - and multi-player
`communications needed to work with the existing code without substantial
`recoding of the existing (working) architecture.
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 13 of 63 PageID #: 17596
`
`To complicate matters further, the time to complete each simulation step varied
`greatly: the rendering time changed if the user was watching units, scrolling, or
`sitting over unexplored terrain, and large paths or strategic planning by the AI
`made the game turn fluctuate fairly wildly by as much as 200 msec.
`
` few quick calculations would show that passing even a small set of data about
`the units, and attempting to update it in real time would severely limit the number
`of units and objects we could have interacting with the player. Just passing X &
`Y coordinates, status, action, facing and damage would have limited us to 250
`moving units in the game at the most.
`
`We wanted to devastate a Greek city with catapults, archers, and warriors on one
`side while it was being besieged from the sea with triremes. Clearly, another
`approach was needed.
`
`
`Simultaneous Simulations
`
`Rather than passing the status of each unit in the game, the expectation was to
`run the exact same simulation on each machine, passing each an identical set of
`commands that were issued by the users at the same time. The PCs would
`basically synchronize their game watches in best war-movie tradition, allow
`players to issue commands, and then execute in exactly the same way at the
`same time and have identical games.
`
`This tricky synchronization was difficult to get running initially, but did yield some
`surprising benefits in other areas.
`
`
`Improving on the basic model
`
`At the easiest conceptual level, achieving a simultaneous simulation seems fairly
`straightforward. For some games, using lock-step simulations and fixed game
`timings might even be feasible.
`
`Since the problem of moving hundreds or thousands of objects simultaneously
`was taken care of by this approach - the solution still had to be viable on the
`Internet with latency swings of 20-1000 milliseconds, and handle changes in
`frame processing time.
`
`Sending out the player commands, acknowledging all messages, and then
`processing them before going on to the next turn was going to be a gameplay
`nightmare of stop-start or slow command turnover. A scheme to continue
`processing the game while waiting for communications to happen in the
`background was needed.
`
`
` A
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 14 of 63 PageID #: 17597
`
`No
`
`Analyze game &
`ping speed
`
`Accept player
`commands
`
`Has turn-time
`elapsed?
`
`Yes
`
`TX 'Done'
`message w /
` timing & count
`
`Increment
`'command turn'
`
`AoE Turn Processing
`
`Mark used a system of tagging
`commands to be executed two
`‘communications turns’ in the
`future (Comm. turns were
`separated in AoE from actual
`rendering frames).
`
`So commands issued during turn 1000 would be scheduled for execution during
`turn 1002. On turn 1001 commands that were issued on turn 0999 would be
`executed. This allowed messages to be received, acknowledged, and ready to
`process while the game was still animating and running the simulation.
`
`Turns were typically 200 msec in
`length, with commands being sent
`out during the turn. After 200
`msec, the turn was cut off and the
`next turn was started. At any
`point during the game, commands
`were being processed for one
`turn, received and stored for the
`next turn, and sent out for
`execution two turns in the future.
`
`‘Speed Control’
`
`Since the simulations must always
`have the exact same input, the
`game can really only run as fast
`as the slowest machine can
`process the communications,
`render the turn, and send out new
`commands. Speed Control is
`what we called the system to
`change the length of the turn to
`keep the animation and gameplay
`smooth over changing conditions
`in communications lag and
`processing speed.
`
`There are two factors that make
`the gameplay feel ‘laggy’: If one machine’s frame rate drops (or is lower than the
`rest) the other machines will process their commands, render all of the allocated
`time, and end up waiting for the next turn - even tiny stops are immediately
`noticeable. Communications lag - due to Internet latency and lost data packets
`would also stop the game as the players waited around for enough data to
`complete the turn.
`
`RX
`'Done' msgs for all
`players?
`
`No
`
`Process drop &
`timeout checks
`
`Yes
`
`Advance turn
`counter
`
`Adjust timing for
`new turn
`
`Do game turn
`(render, etc.)
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 15 of 63 PageID #: 17598
`
`
`Each client calculated a frame rate that it thought could be consistently
`maintained by averaging the processing time over a number of frames. Since
`this varied over the course of the game with the visible line-of-sight, number of
`units, map size and other factors - it was sent with each ‘Turn Done’ message.
`
`Each client would also measure a round trip ‘ping time’ periodically from it to the
`other clients. It would also send the longest average ping time it was seeing to
`any of the clients with the ‘Turn Done’ message. (Total of 2 bytes was used for
`speed control)
`
`Each turn the designated host would analyze the ‘done’ messages, figure out a
`target frame rate and adjustment for Internet latency. The host would then send
`out a new frame rate and communications turn length to be used. The following
`diagrams show how the communications turn was broken up for the different
`conditions.
`
` Single Communication Turn
`
` A
`
`
`
`Communications turn (200 msec) - scaled to 'round-trip ping' time estimates
`
`Process all messages
`
`Frame
`
`50 msec
`
`50 msec
`
`Frame
`Frame
`Frame - scaled to rendering speed
`50 msec
`50 msec
`
`20 fps
`
`
`High Internet Latency with normal machine performance
`
`
`Communications turn (1000 msec) - scaled to 'round-trip ping' time estimates
`
`Process all
`messages
`
`Frame
`
`Frame
`
`Frame
`
`Frame
`
`Frame
`
`Frame
`
`Frame
`
`Frame
`
`Frame
`
`50 msec
`
`20 frames, 50 msec each
`
`
`Poor machine performance with normal latency
`
`
`20 fps
`
`Communications turn (200 msec) - scaled to 'round-trip ping' time estimates
`
`Process all messages
`
`100 msec
`
`Frame
`Frame - scaled to rendering speed
`100 msec
`
`10 fps
`
`
`The ‘communications turn’ which was roughly the round-trip ping time for a
`message, was divided up into the number of simulation frames that on average
`could be done by the slowest machine in that period.
`
`
`
`
`
`
`
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 16 of 63 PageID #: 17599
`
`The communications turn length was weighted so it would quickly rise to handle
`Internet latency changes, and slowly settle back down to the best average speed
`that could be consistently maintained. The game would tend to pause or slow
`only at the very worst spikes- command latency would go up but would stay
`smooth (adjusting only a few milliseconds per turn) as the game adjusted back
`down to best possible speed. This gave the smoothest play experience possible
`while still adjusting to changing conditions.
`
`Guaranteed Delivery
`
`At the network layer UDP was used, with command ordering, drop detection and
`resending being handled by each client. Each message used a couple of bytes
`to identify the turn that execution was scheduled and the sequence number for
`the message. If a message was received for a past turn, it was discarded, and
`incoming messages were stored for execution. Because of the nature of UDP,
`Mark’s assumption for message receipt was that “When in doubt , assume it
`dropped”. If messages were received out of order, the receiver immediately sent
`out re-send requests for the dropped messages. If an acknowledgement was
`later than predicted, the sender would just resend without being asked
`anticipating the message had been dropped.
`
`Hidden Benefits
`
`Because the game’s outcome depended on all of the users executing exactly the
`same simulation, it was extremely difficult to hack a client (or client
`communication stream) and cheat. Any simulation that ran differently was
`tagged as ‘out of sync’ and the game stopped. Cheating to reveal information
`locally was still possible, but these few leaks were relatively easy to secure in
`subsequent patches and revisions. Security was a huge win.
`
`Hidden Problems
`
`At first take it might seem that getting two pieces of identical code to run the
`same should be fairly easy and straightforward - not so. The Microsoft product
`manager - Tim Znamenacek told Mark early on “In every project, there is one
`stubborn bug that goes all the way to the wire - I think out-of-sync is going to be
`it” - he was right. The difficulty with finding out-of-sync errors is that very subtle
`differences would multiply over time. A deer slightly out of alignment when the
`random map was created would forage slightly differently - and minutes later a
`villager would path a tiny bit off, or miss with his spear and take home no meat.
`So what showed up as a checksum difference as different food amounts had a
`cause that was sometimes puzzling to trace back to the original cause.
`
`As much as we check-summed the world, the objects, the Pathfinding, targeting
`and every other system - it seemed that there was always one more thing that
`slipped just under the radar. Giant (50Mb) message traces and world object
`
`
`
`Case 1:16-cv-00455-RGA Document 201-1 Filed 07/21/17 Page 17 of 63 PageID #: 17600
`
`dumps to sift through made the problem even more difficult. Part of the difficulty
`was conceptual - programmers were not used to having to write code that used
`the same number of calls to random within the simulation (yes, the random
`numbers were seeded and synchronized as well).
`
`Lessons Learned
`
` few key lessons were learned in the development of the networking for Age of
`Empires that are applicable to development of any game’s multi-player system.
`
`Know your user
`
`Studying the user is key to understanding what their expectations are for multi-
`player performance, perceived lag, and command latency. Each game genre is
`different, and you need to understand what is right for your specific gameplay
`and controls.
`
`Early in the development process Mark sat down with the Le