SlideShare a Scribd company logo
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.
Five Cliches of Online Game Development
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
Five Cliches of Online Game Development
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?

More Related Content

PDF
Top Security Challenges Facing Credit Unions Today
PPTX
Elite Bug Squashing
PDF
The 5 Minute MySQL DBA
PDF
PENETRATION TESTING FROM A HOT TUB TIME MACHINE
PDF
Владимир Стыран - Пентест следующего поколения, который ваша компания не може...
PDF
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
PDF
Designing for Tomorrow, Delivering Today
PDF
Building a Successful Internal Adversarial Simulation Team - Chris Gates & Ch...
Top Security Challenges Facing Credit Unions Today
Elite Bug Squashing
The 5 Minute MySQL DBA
PENETRATION TESTING FROM A HOT TUB TIME MACHINE
Владимир Стыран - Пентест следующего поколения, который ваша компания не може...
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
Designing for Tomorrow, Delivering Today
Building a Successful Internal Adversarial Simulation Team - Chris Gates & Ch...

What's hot (7)

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

Viewers also liked (8)

PDF
11 parr infor .13.03.11 per pdf
PPS
Merida Inolvidable
PDF
TORINO e LA SACRA SINDONE
PDF
PDF
3b face to faith foianodef
PPSX
Adaptacao Ágil para Times de Desenvolvimento
PDF
431 dieci regole vitali per chi lavora
11 parr infor .13.03.11 per pdf
Merida Inolvidable
TORINO e LA SACRA SINDONE
3b face to faith foianodef
Adaptacao Ágil para Times de Desenvolvimento
431 dieci regole vitali per chi lavora
Ad

Similar to Five Cliches of Online Game Development (20)

PPTX
SAD15 - Maintenance
PDF
Creative Engineering 101
PDF
Eight Rules for Making Your First Great Game
PPT
PHP games
PDF
Lecture 8 - What is Game AI? Final Thoughts
PPTX
Software testing and game testing
PDF
Quality Assurance 1: Why Quality Matters
PDF
Game Programming 01 - Introduction
PPTX
CEGD Game Design Document in Thought and Action Part1
PDF
LKNL12: Kanban for the whole value stream
PDF
The Most Important Thing: How Mozilla Does Security and What You Can Steal
PPT
BiowareDesignDoc.ppt
KEY
Agile Development Overview (with a bit about builds)
PDF
Big guns for small guys (reloaded)
DOCX
Lewis brady engine_terminology (edited version)
PPTX
Gaming Design for Beginners_Document.pptx
PDF
How To Become a Software Engineer
PPT
Gdco12 kartik ayyar
PDF
Devnology back toschool software reengineering
ODP
Debugging
SAD15 - Maintenance
Creative Engineering 101
Eight Rules for Making Your First Great Game
PHP games
Lecture 8 - What is Game AI? Final Thoughts
Software testing and game testing
Quality Assurance 1: Why Quality Matters
Game Programming 01 - Introduction
CEGD Game Design Document in Thought and Action Part1
LKNL12: Kanban for the whole value stream
The Most Important Thing: How Mozilla Does Security and What You Can Steal
BiowareDesignDoc.ppt
Agile Development Overview (with a bit about builds)
Big guns for small guys (reloaded)
Lewis brady engine_terminology (edited version)
Gaming Design for Beginners_Document.pptx
How To Become a Software Engineer
Gdco12 kartik ayyar
Devnology back toschool software reengineering
Debugging

Recently uploaded (20)

PDF
WOOl fibre morphology and structure.pdf for textiles
PPTX
The various Industrial Revolutions .pptx
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PPTX
Chapter 5: Probability Theory and Statistics
PDF
Developing a website for English-speaking practice to English as a foreign la...
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
Hindi spoken digit analysis for native and non-native speakers
PDF
Getting Started with Data Integration: FME Form 101
PPTX
Tartificialntelligence_presentation.pptx
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PPTX
observCloud-Native Containerability and monitoring.pptx
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
2021 HotChips TSMC Packaging Technologies for Chiplets and 3D_0819 publish_pu...
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
A comparative study of natural language inference in Swahili using monolingua...
PPTX
Modernising the Digital Integration Hub
PPTX
cloud_computing_Infrastucture_as_cloud_p
PDF
STKI Israel Market Study 2025 version august
WOOl fibre morphology and structure.pdf for textiles
The various Industrial Revolutions .pptx
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Chapter 5: Probability Theory and Statistics
Developing a website for English-speaking practice to English as a foreign la...
OMC Textile Division Presentation 2021.pptx
Hindi spoken digit analysis for native and non-native speakers
Getting Started with Data Integration: FME Form 101
Tartificialntelligence_presentation.pptx
Group 1 Presentation -Planning and Decision Making .pptx
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
observCloud-Native Containerability and monitoring.pptx
Assigned Numbers - 2025 - Bluetooth® Document
2021 HotChips TSMC Packaging Technologies for Chiplets and 3D_0819 publish_pu...
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
Final SEM Unit 1 for mit wpu at pune .pptx
A comparative study of natural language inference in Swahili using monolingua...
Modernising the Digital Integration Hub
cloud_computing_Infrastucture_as_cloud_p
STKI Israel Market Study 2025 version august

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.
  • 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
  • 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