300 likes | 312 Views
This study explores the impact of patch releases on bandwidth in on-line games and proposes a model to optimize the scheduling of patches. The model takes into account player behavior and aims to minimize both peak and cumulative bandwidth.
E N D
Patch Scheduling for On-line Games Chris Chambers Wu-chang Feng Portland State University
Outline • Background • Data Sources • Problem statement • Model • Evaluation
Background • On-line games popular • World of Warcraft: > 4 million subscribers • On-line updates to games are expected • Bug fixes • New content • Performance improvements • Anti-cheating modules • Updates can be very large • WoW beta: 4GB download, 1GB updates • When a patch is released, players download at next play session
Background: On-line gamers • Population has a daily/weekly cycle • Average daily variation between minimum and maximum: 50%
Background: Patching • Two main factors determine bandwidth impact of a patch: • Size of patch • Number of downloads • Lesser factor: • Time of release • Release at peak player load: maximized peak load • Release at trough: minimized peak load? • As players join in increasing numbers, what happens?
Data Source 1: Steam • Content-delivery network for a number of FPS games • Also performs authentication • Our trace is almost 1 year of Steam data polled every 10 minutes • Aggregate Bandwidth • Number of players
Data source 2: Mshmro.com • Popular counter-strike server • Our trace is one year of player data • Joins, leaves • Kills, deaths • Chat
Player session data • Distribution of player sessions: • 19.35% of all players have session times <= 10 minutes • Distribution of time between sessions • 50% of players seen every 48 hours • 90% of players seen every 18 days
Problem Statement • How can we model the release of a patch? • As we vary the time of day of the patch release, what happens to the bandwidth?
Model • Players fall into three categories • New • Continuing to play • Returning • Continuing players: those with session times > 10 minutes • Returning players: those whose interarrival times are up
Players fall into three categories Returning Unpatched Continuing Initially entire population is unpatched
Model • Definitions • Pt = players at time t • C = percent of players with sessions > 10 minutes • ret(t) = percentage of returning players at time t • New(t) = players needing the patch at time t • Model New(t) = Pt – C Pt-1 - ret(t) Pt
Evaluation • Observed patch • Subtract player bandwidth from Steam bandwidth • Predicted patch • Using the model with the same time of day as the observed • Scale starting point to the observed starting point
Evaluation • Model does not match observed very closely • Model predicts a very steep drop-off in players • If 80% of players have sessions > 10 minutes, drop-off is expected • Two reasons for poor match • Inaccurate session times • Server updates not modeled • There are lots of these • They may be weighted towards first day • We alter one parameter • Suppose only 10% of sessions > 10 minutes • Modeling servers: future work!
Applying the model • Experiment with varying hours of release • What’s good, what’s bad at different hours? • Cumulative bandwidth equal • Peak bandwidth varies with the initial population • Look at minimizing cumulative bandwidth along the way
Conclusions • Modeling game updates is an interesting problem • Game updates are initially modeled given: • Aggregate player behavior • Play characteristics: session times and interarrival times • Results • Minimize peak bw: release at player valley • Minimize cumulative bw: release 5 hours after peak • Model is relatively inaccurate • More work • Better data
Peak load predicted at moment of release Unless patches take long to download Model minimizes peak load at 22nd hour Predicted peak load
Constant scaling ineffective • S = Steam bandwidth • P = Number of players • k = Constant scaling factor (bandwidth / player) • S – kP = patch impact?
Constant scaling ineffective • Difference between the two should be a flat line • Why not? • Server population • Daily maintenance • Reporting lag • Solution: make a different scaling constant for each hour