How data rules the world: Telemetry in Battlefield Heroes
-
Upload
dice -
Category
Entertainment & Humor
-
view
15.500 -
download
3
description
Transcript of How data rules the world: Telemetry in Battlefield Heroes
![Page 1: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/1.jpg)
How data rule the worldKristoffer Benjaminsson CTO
![Page 2: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/2.jpg)
Easy?• Easy is a studio within EA Games that do free to
play games• Originates from DICE• 3 live titles– Battlefield Heroes– Battleforge– Lord of Ultima
![Page 3: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/3.jpg)
Trailer
![Page 4: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/4.jpg)
Telemetry - Wikipedia” Telemetry (synonymous with telematics) is a
technology that allows remote measurement and reporting of information. The word is derived from Greek roots tele = remote, and metron = measure.”
![Page 5: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/5.jpg)
Telemetry - Easy• Data that helps us make decisions to provide a better service for
our players• Provides answers to specific questions• Multiple sources
– Financial data– Game statistics– Web behaviour data– Game telemetry
• Vertical slice of the player population
![Page 6: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/6.jpg)
Why bother?• We prefer to know what is going on instead of
guessing• We can measure results from actions• Data do not (usually) lie• Forums not representative – Less than 20% read forum posts– Less than 5% post in forums
![Page 7: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/7.jpg)
Game telemetry examples• Latency data• Punkbuster kicks• Matchmaking• Time to level• Hardware profiles• Play time
![Page 8: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/8.jpg)
Architecture
Game Client
Game Server
Magma DB Reporting
![Page 9: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/9.jpg)
Implementation• TelemetryManager sends data to our backend for
database storage• Hooks in the game code collects data• Hooks are records packed as name value pairs• Each record will create its own table in the database• All telemtry includes a common identifer so we can
cross reference data between telemetry hooks
![Page 10: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/10.jpg)
Example recordclass PingRecord : public ITelemetryRecord{public:
PingRecord(const std::string& clientIp, const std::string& serverIp, int ping, const std::string& dataCenter, const std::string& community);
public:virtual bool hasType( int typeId ) const { return typeId == RTPing; }virtual bool assimilate( const ITelemetryRecord* other ) { return false; }virtual IDataCollector::DataRef buildData() const;
private:std::string m_clientIp;std::string m_serverIp;int m_ping;std::string m_dataCenter;std::string m_community;
};
![Page 11: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/11.jpg)
Example usage
player->addTelemetry(new backend::telemetry::PingRecord(clientIp, serverAddressAndPort, conn->getAveragePing(), serverSettings->getProdDataCenter(), serverSettings->getServerCommunity()));
![Page 12: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/12.jpg)
Real life examples
![Page 13: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/13.jpg)
High latency - before
![Page 14: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/14.jpg)
Why were people in Europe being matchmade to Australia and North America?
![Page 15: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/15.jpg)
High latency - after
![Page 16: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/16.jpg)
How did we do it?• Generated an HTML page– GeoIP City– A bit of C#– Google Maps API– Telemetry data– A bit of SQL
![Page 17: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/17.jpg)
Example page<html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> function initialize() { var latlng = new google.maps.LatLng(45.5735931396484, 12.1060943603516); var myOptions = { zoom: 2, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP };
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker = null; var coords = null; var path = null; marker = new google.maps.Marker({ position: new google.maps.LatLng(59.433, 24.728), map: map, title:"gva, 62.65.243.167" , icon: "client.png" }); marker = new google.maps.Marker({ position: new google.maps.LatLng(52.350, 4.916), map: map, title:"gva" , icon: "server.png" }); coords = [new google.maps.LatLng(59.433, 24.7283), new google.maps.LatLng(52.350, 4.916)]; path = new google.maps.Polyline({ path: coords, strokeColor: "#ff0000", strokeOpcaity: 0.5, strokeWeight: 1}); path.setMap(map); } </script> </head> <body onload="initialize()"> <div id="map_canvas" style="width: 100%; height: 100%"></div> </body></html>
![Page 18: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/18.jpg)
Google Maps
![Page 19: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/19.jpg)
Punkbuster - before
![Page 20: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/20.jpg)
Punkbuster - after
![Page 21: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/21.jpg)
How did we do it?• Microsoft SQL Server 2008: Reporting Services– Standard BI tool– Easy to create charts and tables– Updates on a daily basis
![Page 22: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/22.jpg)
During development
![Page 23: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/23.jpg)
Asserts• We collect all asserts from both client and server• We differentiate between content asserts and code
asserts• We have leaderboards and summaries– Top 10 asserts– Total content/code asserts per branch
• Provides guidance to what we need to fix
![Page 24: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/24.jpg)
Fragalyzer• Level design helper tool• Collects information about how a map is played– Kill position– Killed from position– Player/Vehicle movement– Etc
• Currently collected locally on a game server
![Page 25: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/25.jpg)
Summary• Telemetry is awesome!• Collect data to answer specific queries• Build a flexible system to make it super easy to
add new telemetry hooks• Chose the right reporting tools to mine and
report on the data
![Page 26: How data rules the world: Telemetry in Battlefield Heroes](https://reader034.fdocuments.us/reader034/viewer/2022051314/554a6e66b4c90573288b4c6c/html5/thumbnails/26.jpg)
Questions?