SlideShare uma empresa Scribd logo
1 de 42
Five Clichés
Of Online Game Development
       That We Wish Weren’t True

  (But Will Probably Ruin Your Life Some Day)

  Ian Dundore – TRC Family Entertainment Ltd
Who is he?

THIS GUY STANDING UP
True facts.
•   Started making games as a pre-teen.
•   Game journalist, 1999 - 2006
•   B.Sc. Computer Science, 2004
•   First game programming job in 2006
    – Gods & Heroes: Rome Rising
• CCP Games, 2008 – 2012
    – Several EVE Online expansions
    – Dust 514
This slide is an excuse for me to make jokes in grey text that I will not
read out loud. For those of you who actually read this far along a
slide, bravo. I salute you, literati.

THIS IS THE SLIDE WHERE I TALK
ABOUT WHAT I’M GOING TO SAY.
That man has a chart. Look at him. He’s probably never worked a day in
his life. He’s not even wearing a suit. By the way, don’t Google Image
Search for “Getting Down to Business” with SafeSearch off.

LET’S GET DOWN TO BUSINESS.
Cliché the first.

THE CLIENT IS IN THE HANDS
OF THE ENEMY
Ah, Client, my old foe…


“Never trust the client. Never put
anything on the client. The client is
in the hands of the enemy.
Never, ever forget this.”
  – Apocryphal, often misattributed to Raph Koster.
The numerology is strong with these slides.

TWO MEANINGS
#1: Input
• Data from the client is raw input, period.

• Validate or escape everything you receive.
  – Should be familiar to Web devs.


• Thought Exercise: What if the user could call
  my function/class/code snippet?
Corollary: Don’t Melt Your Server
• Light/vital systems: Double-check everything.
  – Speech, wallet


• Heavy/fuzzy systems: Calculate on
  client, verify possibility on server.
  – Physics, movement.


• How much error can you tolerate?
Case Study: Speedhacks
• Movement based on client-supplied position
  updates.

• Server verifies for maximum possible speed.

• How to make a speedhack: figure out
  maximum range, scale movement vector.
  – This is how real speedhacks work: WoW, EQ, etc.
#2: Output
• Data to the client = data to the player.
• Anything you send to the client, the user will
  see.
• Anything measurable via the client will be
  decoded: game systems, etc.
Case Study: BACON
• EVE Online comes with debug output viewer.
• Identifying info logged each time a player
  entered your vicinity.
• This was not displayed to the player in-game.

• Result: External program plays audible alerts
  when enemy players enter the area.
  – Logs introduced in 2002, BACON released 2008.
Addendum
• Anything in the client, the player will see.
Nuance
• Logical extreme: Gaikai.

• Compare vulnerabilities of trust to advantages
  in user experience.
  – Offloading heavy work to the client = good!

  – Lots of bling = happy players!
Cliché the second.

PREMATURE OPTIMIZATION IS THE
ROOT OF ALL EVIL
The Quote
“We should forget about small
efficiencies, say about 97% of
the time:
   Premature optimization is
   the root of all evil.”
          - Donald Knuth, super genius
No “Two Meanings” Slide This Time
• The proper order:
  – Find the fun
  – Make it good
  – Make it fast


• However, don’t cut corners for the sake of it.
  – Avoid the most obvious blunders.
  – Test, test, test.
The Case for Quick
• EVE - Planetary Interaction
• 4 month development cycle
  – 10 weeks of “real” development
• Fluctuating requirements
• Major new features injected halfway through
The Case for Quick?
• Heavy overtime
• Shipped first-revision architecture
  – ~10 major bugs discovered after release
  – 1 item duplication bug discovered
  – Two hotfixes
  – Memory leaks relied on daily server reboots
The Case for Quick!
• Concurrency goals exceeded
  – 30,000+ concurrent users after launch
  – 25% peak CPU usage or less
  – Memory not an issue, EVE already rebooted daily


• Post-launch rewrite: 2 + 1 weeks
  – Eliminated memory issues
     • 50% memory usage reduction by using Python Slots
  – Eliminated duplication & high-priority issues
  – ~4 new bugs filed after 2 years in the wild
Case Study: The Five Bug
• Gods & Heroes – in production for > 4 years

• Fully home-grown, pure C++ engine

• Largest scale test: 30-50 users, ~2-3 hours uptime

• Target: ~5000 users, 72 hours uptime.

• No automated test tools
The Law of Five
• Server occasionally crashed
  – Corrupted stacktrace, clear memory corruption
     • Usually the value 0x5, hence the name
  – Random code module
     • But usually combat or special abilities
  – Cause not clearly evident, debugger useless
  – Deprioritized until beta
Beware the Fives of March
Highest beta concurrency: ~1000 users, 30
minutes uptime
Average concurrency: 300-500 users, 10-15
minutes uptime
The Fives Have It
• ~6 weeks spent debugging.
• Deep bug in 5-year-old inter-module
  communication
• Very rare in the wild…
  – As users rise, “very rare” approaches “certain”
• Bug fixed October 8, 2007
• Company closed October 9, 2007
Learn From These Mistakes
Too Big to Fail                  Rewriteable
• Networking code                • Low-level code
• Scene layout                   • Individual box features
• Art style                      • User interface
• Genre                          • Lore & character details



Technical & creative direction    Stuff built upon that stuff
Cliché the third.

THERE ARE TWO TYPES OF
UNKNOWNS.
Obligatory quote slide.

“There are known unknowns; …
things that we know we don’t
know.
    But there are also unknown
unknowns … things that we don’t
know we don’t know.”
           - Donald Rumsfeld, defense guru
The “engineer’s rule of thumb” holds
• Any given project will have work injected
  – Technical requirements, design
    changes, optimization, iteration, platform
    upgrades…


• Account for this when planning

• Planning and tracking tools are invaluable
  – But you will hate them every step of the way
How It Works
• Come up with some estimation benchmark
  – Homework: Look up “Complexity Points”
• Estimate ALL THE THINGS
• Keep track of what you finish in a constant time
  period (2 weeks, 1 month, etc.)
  – Use these to calculate Ultra Nerdy Stats
     • Averages, medians, standard deviations…


• BAM. You have a rough estimate of how long
  your project will take.
More Importantly…
• Keep track of everything you add.
  – Note when you added it.


• Everything you add must be estimated too.
  – Use the same metric as before.


• BAM. Now you have a guideline of how much
  unknown work to expect.
Examples
• Newly-formed team, new feature, established
  tech framework & art style
  – ~50% of work completed was injected during
    development

• Gelled team, iteration on existing feature
  – ~25% of work completed was injected

• Your numbers will vary!
Cliché the fourth.

ANY SUFFICIENTLY CREATIVE TOOL
WILL BE USED TO DRAW A…
Problem Users
• 1% of your playerbase will generate 90% of
  your support load.

• Good logging, data retention plans are key

• Log everything involving money, real or
  otherwise
Case Study: Zero-Day Exploit
• Item duplication exploit due to subtle bug in a
  game feature’s code.
• Not readily apparent without hours/days of
  observation.
• Easily disrupted through normal play.
• If manipulated, would generate perpetual
  stream of items for free.
  – Unattended!
Incidence
•   136 different abusers in prior 6 months
•   ~200 bugged item generators
•   Circa $30,000 worth of in-game currency
•   120 abusers were short-time offenders
    – Likely unnoticed, small-scale
• 3 abusers generated over 90% of exploit-
  driven in-game currency
The Value of Logs
• Excellent logs allowed us to:
  – Pinpoint start of item duplication
  – Trace duplicated items through “fence” accounts
  – Measure likely scale of duping operations over
    time
  – Ban them all!
Creativity vs. Safety
• Any sufficiently advanced tool…
  – FPS sprays, Minecraft…


• Carefully weigh support cost vs. user fun
  – Family image? Intolerant audience?


• Have good support tools in place
  – Habbo blockade     
Cliché the fifth isn’t really a cliché at all.

NEVER WRITE YOUR PRESENTATION’S
TITLE BEFORE YOUR PRESENTATION
Questions?

Mais conteúdo relacionado

Mais procurados

Creating Havoc using Human Interface Device
Creating Havoc using Human Interface DeviceCreating Havoc using Human Interface Device
Creating Havoc using Human Interface Device
Positive Hack Days
 

Mais procurados (7)

Creating Havoc using Human Interface Device
Creating Havoc using Human Interface DeviceCreating Havoc using Human Interface Device
Creating Havoc using Human Interface Device
 
Recon-Fu @BsidesKyiv 2016
Recon-Fu @BsidesKyiv 2016Recon-Fu @BsidesKyiv 2016
Recon-Fu @BsidesKyiv 2016
 
Patterns, Code Smells, and The Pragmattic Programmer
Patterns, Code Smells, and The Pragmattic ProgrammerPatterns, Code Smells, and The Pragmattic Programmer
Patterns, Code Smells, and The Pragmattic Programmer
 
Rat a-tat-tat
Rat a-tat-tatRat a-tat-tat
Rat a-tat-tat
 
Heartbleed Overview
Heartbleed OverviewHeartbleed Overview
Heartbleed Overview
 
Going Purple : From full time breaker to part time fixer: 1 year later
Going Purple : From full time breaker to part time fixer: 1 year later Going Purple : From full time breaker to part time fixer: 1 year later
Going Purple : From full time breaker to part time fixer: 1 year later
 
Case study
Case studyCase study
Case study
 

Destaque (8)

11 parr infor .13.03.11 per pdf
11 parr infor .13.03.11 per pdf11 parr infor .13.03.11 per pdf
11 parr infor .13.03.11 per pdf
 
Merida Inolvidable
Merida InolvidableMerida Inolvidable
Merida Inolvidable
 
TORINO e LA SACRA SINDONE
TORINO e LA SACRA SINDONE TORINO e LA SACRA SINDONE
TORINO e LA SACRA SINDONE
 
Spettacolo fine anno
Spettacolo fine annoSpettacolo fine anno
Spettacolo fine anno
 
23
2323
23
 
3b face to faith foianodef
3b face to faith foianodef3b face to faith foianodef
3b face to faith foianodef
 
Adaptacao Ágil para Times de Desenvolvimento
Adaptacao Ágil para Times de DesenvolvimentoAdaptacao Ágil para Times de Desenvolvimento
Adaptacao Ágil para Times de Desenvolvimento
 
431 dieci regole vitali per chi lavora
431   dieci regole vitali per chi lavora431   dieci regole vitali per chi lavora
431 dieci regole vitali per chi lavora
 

Semelhante a Five Cliches of Online Game Development

Gdco12 kartik ayyar
Gdco12 kartik ayyarGdco12 kartik ayyar
Gdco12 kartik ayyar
Kartik Ayyar
 
Supersize your production pipe enjmin 2013 v1.1 hd
Supersize your production pipe    enjmin 2013 v1.1 hdSupersize your production pipe    enjmin 2013 v1.1 hd
Supersize your production pipe enjmin 2013 v1.1 hd
slantsixgames
 

Semelhante a Five Cliches of Online Game Development (20)

Maximize Your Production Effort (English)
Maximize Your Production Effort (English)Maximize Your Production Effort (English)
Maximize Your Production Effort (English)
 
Supersize Your Production Pipe
Supersize Your Production PipeSupersize Your Production Pipe
Supersize Your Production Pipe
 
BiowareDesignDoc.ppt
BiowareDesignDoc.pptBiowareDesignDoc.ppt
BiowareDesignDoc.ppt
 
Gdco12 kartik ayyar
Gdco12 kartik ayyarGdco12 kartik ayyar
Gdco12 kartik ayyar
 
An Introduction To Software Development - Testing, Continuous integration
An Introduction To Software Development - Testing, Continuous integrationAn Introduction To Software Development - Testing, Continuous integration
An Introduction To Software Development - Testing, Continuous integration
 
Vulnerability, exploit to metasploit
Vulnerability, exploit to metasploitVulnerability, exploit to metasploit
Vulnerability, exploit to metasploit
 
PyData Texas 2015 Keynote
PyData Texas 2015 KeynotePyData Texas 2015 Keynote
PyData Texas 2015 Keynote
 
Hacklu2011 tricaud
Hacklu2011 tricaudHacklu2011 tricaud
Hacklu2011 tricaud
 
LST Toolkit: Exfiltration Over Sound, Light, Touch
LST Toolkit: Exfiltration Over Sound, Light, TouchLST Toolkit: Exfiltration Over Sound, Light, Touch
LST Toolkit: Exfiltration Over Sound, Light, Touch
 
H2O World - Solving Customer Churn with Machine Learning - Julian Bharadwaj
H2O World - Solving Customer Churn with Machine Learning - Julian BharadwajH2O World - Solving Customer Churn with Machine Learning - Julian Bharadwaj
H2O World - Solving Customer Churn with Machine Learning - Julian Bharadwaj
 
Lecture 8 - What is Game AI? Final Thoughts
Lecture 8 - What is Game AI? Final ThoughtsLecture 8 - What is Game AI? Final Thoughts
Lecture 8 - What is Game AI? Final Thoughts
 
Supersize your production pipe enjmin 2013 v1.1 hd
Supersize your production pipe    enjmin 2013 v1.1 hdSupersize your production pipe    enjmin 2013 v1.1 hd
Supersize your production pipe enjmin 2013 v1.1 hd
 
Solving the Database Problem
Solving the Database ProblemSolving the Database Problem
Solving the Database Problem
 
An Introduction To Software Development - Software Development Midterm Review
An Introduction To Software Development - Software Development Midterm ReviewAn Introduction To Software Development - Software Development Midterm Review
An Introduction To Software Development - Software Development Midterm Review
 
God Of War : post mortem
God Of War : post mortemGod Of War : post mortem
God Of War : post mortem
 
Reverse Engineering Presentation.pdf
Reverse Engineering Presentation.pdfReverse Engineering Presentation.pdf
Reverse Engineering Presentation.pdf
 
BSides_Charm2015_Info sec hunters_gathers
BSides_Charm2015_Info sec hunters_gathersBSides_Charm2015_Info sec hunters_gathers
BSides_Charm2015_Info sec hunters_gathers
 
Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...
Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...
Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...
 
Cross-platform logging and analytics
Cross-platform logging and analyticsCross-platform logging and analytics
Cross-platform logging and analytics
 
An Introduction To Software Development - Final Review
An Introduction To Software Development - Final ReviewAn Introduction To Software Development - Final Review
An Introduction To Software Development - Final Review
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

Five Cliches of Online Game Development

  • 1. Five Clichés Of Online Game Development That We Wish Weren’t True (But Will Probably Ruin Your Life Some Day) Ian Dundore – TRC Family Entertainment Ltd
  • 2. Who is he? THIS GUY STANDING UP
  • 3. True facts. • Started making games as a pre-teen. • Game journalist, 1999 - 2006 • B.Sc. Computer Science, 2004 • First game programming job in 2006 – Gods & Heroes: Rome Rising • CCP Games, 2008 – 2012 – Several EVE Online expansions – Dust 514
  • 4. This slide is an excuse for me to make jokes in grey text that I will not read out loud. For those of you who actually read this far along a slide, bravo. I salute you, literati. THIS IS THE SLIDE WHERE I TALK ABOUT WHAT I’M GOING TO SAY.
  • 5. That man has a chart. Look at him. He’s probably never worked a day in his life. He’s not even wearing a suit. By the way, don’t Google Image Search for “Getting Down to Business” with SafeSearch off. LET’S GET DOWN TO BUSINESS.
  • 6. Cliché the first. THE CLIENT IS IN THE HANDS OF THE ENEMY
  • 7. Ah, Client, my old foe… “Never trust the client. Never put anything on the client. The client is in the hands of the enemy. Never, ever forget this.” – Apocryphal, often misattributed to Raph Koster.
  • 8. The numerology is strong with these slides. TWO MEANINGS
  • 9. #1: Input • Data from the client is raw input, period. • Validate or escape everything you receive. – Should be familiar to Web devs. • Thought Exercise: What if the user could call my function/class/code snippet?
  • 10. Corollary: Don’t Melt Your Server • Light/vital systems: Double-check everything. – Speech, wallet • Heavy/fuzzy systems: Calculate on client, verify possibility on server. – Physics, movement. • How much error can you tolerate?
  • 11. Case Study: Speedhacks • Movement based on client-supplied position updates. • Server verifies for maximum possible speed. • How to make a speedhack: figure out maximum range, scale movement vector. – This is how real speedhacks work: WoW, EQ, etc.
  • 12. #2: Output • Data to the client = data to the player. • Anything you send to the client, the user will see. • Anything measurable via the client will be decoded: game systems, etc.
  • 13. Case Study: BACON • EVE Online comes with debug output viewer. • Identifying info logged each time a player entered your vicinity. • This was not displayed to the player in-game. • Result: External program plays audible alerts when enemy players enter the area. – Logs introduced in 2002, BACON released 2008.
  • 14. Addendum • Anything in the client, the player will see.
  • 15.
  • 16. Nuance • Logical extreme: Gaikai. • Compare vulnerabilities of trust to advantages in user experience. – Offloading heavy work to the client = good! – Lots of bling = happy players!
  • 17. Cliché the second. PREMATURE OPTIMIZATION IS THE ROOT OF ALL EVIL
  • 18. The Quote “We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil.” - Donald Knuth, super genius
  • 19. No “Two Meanings” Slide This Time • The proper order: – Find the fun – Make it good – Make it fast • However, don’t cut corners for the sake of it. – Avoid the most obvious blunders. – Test, test, test.
  • 20. The Case for Quick • EVE - Planetary Interaction • 4 month development cycle – 10 weeks of “real” development • Fluctuating requirements • Major new features injected halfway through
  • 21. The Case for Quick? • Heavy overtime • Shipped first-revision architecture – ~10 major bugs discovered after release – 1 item duplication bug discovered – Two hotfixes – Memory leaks relied on daily server reboots
  • 22. The Case for Quick! • Concurrency goals exceeded – 30,000+ concurrent users after launch – 25% peak CPU usage or less – Memory not an issue, EVE already rebooted daily • Post-launch rewrite: 2 + 1 weeks – Eliminated memory issues • 50% memory usage reduction by using Python Slots – Eliminated duplication & high-priority issues – ~4 new bugs filed after 2 years in the wild
  • 23.
  • 24. Case Study: The Five Bug • Gods & Heroes – in production for > 4 years • Fully home-grown, pure C++ engine • Largest scale test: 30-50 users, ~2-3 hours uptime • Target: ~5000 users, 72 hours uptime. • No automated test tools
  • 25. The Law of Five • Server occasionally crashed – Corrupted stacktrace, clear memory corruption • Usually the value 0x5, hence the name – Random code module • But usually combat or special abilities – Cause not clearly evident, debugger useless – Deprioritized until beta
  • 26. Beware the Fives of March Highest beta concurrency: ~1000 users, 30 minutes uptime Average concurrency: 300-500 users, 10-15 minutes uptime
  • 27. The Fives Have It • ~6 weeks spent debugging. • Deep bug in 5-year-old inter-module communication • Very rare in the wild… – As users rise, “very rare” approaches “certain” • Bug fixed October 8, 2007 • Company closed October 9, 2007
  • 28. Learn From These Mistakes Too Big to Fail Rewriteable • Networking code • Low-level code • Scene layout • Individual box features • Art style • User interface • Genre • Lore & character details Technical & creative direction  Stuff built upon that stuff
  • 29. Cliché the third. THERE ARE TWO TYPES OF UNKNOWNS.
  • 30. Obligatory quote slide. “There are known unknowns; … things that we know we don’t know. But there are also unknown unknowns … things that we don’t know we don’t know.” - Donald Rumsfeld, defense guru
  • 31. The “engineer’s rule of thumb” holds • Any given project will have work injected – Technical requirements, design changes, optimization, iteration, platform upgrades… • Account for this when planning • Planning and tracking tools are invaluable – But you will hate them every step of the way
  • 32. How It Works • Come up with some estimation benchmark – Homework: Look up “Complexity Points” • Estimate ALL THE THINGS • Keep track of what you finish in a constant time period (2 weeks, 1 month, etc.) – Use these to calculate Ultra Nerdy Stats • Averages, medians, standard deviations… • BAM. You have a rough estimate of how long your project will take.
  • 33. More Importantly… • Keep track of everything you add. – Note when you added it. • Everything you add must be estimated too. – Use the same metric as before. • BAM. Now you have a guideline of how much unknown work to expect.
  • 34. Examples • Newly-formed team, new feature, established tech framework & art style – ~50% of work completed was injected during development • Gelled team, iteration on existing feature – ~25% of work completed was injected • Your numbers will vary!
  • 35. Cliché the fourth. ANY SUFFICIENTLY CREATIVE TOOL WILL BE USED TO DRAW A…
  • 36. Problem Users • 1% of your playerbase will generate 90% of your support load. • Good logging, data retention plans are key • Log everything involving money, real or otherwise
  • 37. Case Study: Zero-Day Exploit • Item duplication exploit due to subtle bug in a game feature’s code. • Not readily apparent without hours/days of observation. • Easily disrupted through normal play. • If manipulated, would generate perpetual stream of items for free. – Unattended!
  • 38. Incidence • 136 different abusers in prior 6 months • ~200 bugged item generators • Circa $30,000 worth of in-game currency • 120 abusers were short-time offenders – Likely unnoticed, small-scale • 3 abusers generated over 90% of exploit- driven in-game currency
  • 39. The Value of Logs • Excellent logs allowed us to: – Pinpoint start of item duplication – Trace duplicated items through “fence” accounts – Measure likely scale of duping operations over time – Ban them all!
  • 40. Creativity vs. Safety • Any sufficiently advanced tool… – FPS sprays, Minecraft… • Carefully weigh support cost vs. user fun – Family image? Intolerant audience? • Have good support tools in place – Habbo blockade 
  • 41. Cliché the fifth isn’t really a cliché at all. NEVER WRITE YOUR PRESENTATION’S TITLE BEFORE YOUR PRESENTATION