Cheating at Multiplayer Online Games Bruce Maggs (with some slides from An-Cheng Huang) A small confession… Your professor is a notorious cheater PLATO Computer System • PLATO IV Developed by the University of Illinois and the Control Data Corporation • 1961 timesharing PLATO II begins • 1964 invention of plasma panel • 1968 PLATO IV begins • Spun off as “NovaNET” late 1980’s • Revived at www.cyber1.org Innovations • • • • • • • • • first LARGE on-line community invention of the plasma panel multimedia “personal notes” – email “group notes” – newsgroups “consulting mode” – desktop sharing widely used “term talk” (like Unix talk) Shared memory enabled multiplayer games IBM correctly attributes Lotus Notes to PLATO Hardware • Control Data mainframes designed by Seymour Cray • Cyber 70, 176, CDC 6600, 7600 • Magnetic core memory • 60-bit words, 6-bit characters • One’s-complement arithmetic • Up to 1000 simultaneous users • (NovaNET runs on Alpha today?) PLATO IV Terminal https://digitalanalogues.wordpress.com/2011/04/22/it-really-is-deja-vu-all-over-again/ • 512x512 plasma panel • 1200 baud connection to mainframe • Stream of commands for displaying text and symbols, and for drawing lines Multiplayer Games • Dungeons and Dragons – e.g., oubliette, avatar • Space – e.g., spasim, empire • Warfare – e.g., airfight, panther Empire Empire Basics • I am shrike , a proud Klingon / Kazari • Becoming a member of the Federation, a Vulcan/Orion, or a Romulan is equivalent to turning in your private key • The goal is to conquer the universe • Ship fires phasers, photon torpedos • Firing at correct angle inflicts more damage. To fire phasers at angle 233, type “f 233 NEXT” • Ship makes a hyperjump when you replot the screen, based on time since last replot Empire The Clone Brothers • I built a device that you plugged a keyboard into, and then it plugged into two separate PLATO IV terminals • Small circuit waited for both terminals to acknowledge keystroke before telling keyboard • Why? Fly two ships to same location in empire, then have double the firepower! • Nicknamed the “Clone Brothers” device migrated to different clusters of PLATO terminals around campus at U of I PLATO V Terminal • Plasma panel and CRT versions • Same 512 x 512 display • 8080 processor implemented all graphics PLATO V Terminal From http://plato.filmteknik.com/ • • • • • Empire Bot 8080 had access to stream of commands sent to terminal from mainframe I wrote assembly code to determine angles to enemies on the screen (using an arctan look-up table) Program displayed exact angle above each enemy, with keyboard shortcuts to fire phasers or torpedos at that angle Also displayed a growing ellipse around ship to indicate distance of hyperjump Possibly the first shooter-game bot - 1979? (“shoot’ em up” or “arcade shooter” genre) Avatar Avatar Basics • Players join different guilds, e.g., fighter, magician, cleric, and gain different capabilities • Players form groups and enter the dungeon together to fight monsters and gather treasures • At one time possibly most popular multiplayer on-line game in the world • Co-authored with David Sides and Andrew Shapira, with help from many others • My current character is dead on level one Avatar Duplicating Magical Items • Strategy: give all of your magical items and gold to a friend, the crash the game before the changes to your character are recorded to disk! • Negative: “unfair” and throws the game economy out of whack • Positive: we quickly find out about serious bugs Best Consulting Gig Ever • I am hired by Jagex, maker of Runescape to document that third-party bots really work • My character is exempted from being banned for using bots • My kids complain that I am a cheater Runescape How do the bots work? • Runescape is a Java applet • Bot maker provides Java applet container • Bot does not scrape the screen, but instead examines the byte code • Bot determines position on screen of character, objects, etc. Anti-Bot Measures • Code is rearranged in different instances of applet • Ultimately, all data stored in one master array, permuted in random order, killing bots! • Many players quit when bots were defeated First-Person Shooter Games played over the Internet Latency Compensation in Half-Life • [Bernier GDC01] • Naïve approach: dumb client render player1 at (x1,y1) Player1 forward forward render player1 at (x1,y1) Response time for player: round-trip to server + server processing Predicting Where I Am render player1 render player1 render player1 render player1 atat(x1,y1) (x1,y1) at at(x1,y1) (x4,y4) Player1 forward forward forward forward forward render player1 at (x1,y1) Predicting Where You Are • Updates about other players’ locations not continuous • Extrapolation (dead reckoning) – At last update, player2 is at (x1,y1) facing N with speed S It should be at (x2,y2) now – Not good: in FPS, player movement very non-deterministic • Interpolation – Impose an “interpolation delay” for rendering Now Now Int. delay Now Update3 (x3,y3) Update2 (x2,y2) time Update1 (x1,y1) Lag Compensation • Interpolation introduces a fixed lag (int. delay) – E.g., always see where you were 100 ms ago – Need to lead the target when aiming – Require players to extrapolate! • Server-side lag compensation – Server uses the old location to compute hit/miss – Allows natural aiming/shooting – Possible weird experiences for players being fired upon tradeoff for better game play Fair Message Exchange • [Guo et al. NG03] • Look at “fairness” in client-server games P1 (4 ms) room P3 P3 P2 (3 ms) P3 (1 ms) P1 P1 P2 P2 Fair Message Exchange (2) • Different latencies can make the game “unfair” Server t=0 t=8 t=11 t=19 P2 (RTT 5) P1 3 P3 (RTT 10) (RTT 15) P2 P3 time 1 4 P1 Fair Message Exchange (3) • Fair-ordering delivery without synchronized clocks (a simple case) P3 P2 P2,3,18 P2,3,18 P3,1,16 P2,3,18 Server t=0 t=8 t=11 t=16 t=18 P2 (RTT 5) P1 3 P3 (RTT 10) P2 (RTT 15) P3 P1 1 4 Server waits (here 15) before performing action. Ordering based on response time. t=19 Cheating Strategy • Introduce artificial delay between client and server • Lie about how long it took to respond (or take advantage of server thinking update was received last) • Server will think client was first to shoot, even though it receives message last Cheat-Proof Playout • [Baughman & Levine INFOCOM01] • Two types of cheats – “Suppress-correct cheat” under dead reckoning (extrapolation) predict P2 P1 here here, actually – “Lookahead cheat” P2 ? ? here Cheat-Proof Playout • [Baughman & Levine INFOCOM01] • Two types of cheats – “Suppress-correct cheat” under dead reckoning (extrapolation) – “Lookahead cheat” game advances in frames do nothing duck P2 P1 fire P2 P1 fire Texture Hacks! transparent