DotA2 Spatio-Temporal Game Analysis
Descrição do Produto
DotA2 SpatioTemporal Game Analysis DotA2 is one of the most played online digital games in the world. In this game 2 teams (Radiant and Dire) of 5 players each fight against each other in arena environments with using tactical combats to win against the other team. The main goal of the game is to destroy the Ancient that belongs to the opposite team. Apart from that there are a lot of strategies involved in winning the game. The company managing DotA 2, Valve, has developed several ways for players to access data from the game. The player community can access replay files from games of their own as well as the tournaments through a variety of websites. Valve also provides an API to directly access the data. Many tools have also been developed for extracting metrics from replay files. However, very few of these do spatiotemporal aspects of player behaviour. I found it to be an interesting area to work with given the importance of positioning and timely deployed strategy in the game. The aim of this project is to visualize and analyse team behaviour. There are mainly 4 skill tiers as identified by the DotA 2 community i.e Normal, High, Very High and Pro tiers. This project will visualize 3 main aspects of spatiotemporal analysis. 1. The moving Trajectories (Live Maps) of players in different tiers at different game times. An additional filter for sorting the teams based on Win/Lose or Radiant/Dire can be seen. 2. The Heat Maps of players during a particular interval in the game. This also can be sorted as Win/Lose or Radiant/Dire 3. The average distance between the players of each tier (Pro/Very High/High/Normal) filtered with Win Lose and are visualized using a Box Plot. The sample live demo is available on: http://codetaha.github.io/DotaAnalysis/web/ The dataset includes information on the positioning of team members as a function of time. The dataset contains the data of 200 games (50 in each tier). Below is a very small sample of the dataset, where team: 0/1 (Radiant/Dire), x,y: Player coordinates match: Unique Match Id won: 0/1 (Lose/Win) tsync: time is seconds starts from 0 till the end of the game. The used time variable in the visualization tier: Type of tier t,tstd,tper: Different types of time parameters which are not used for this visualization. [{"team":0,"t":196833,"x":9,"y":7,"match":621041235,"won":0,"tstd":0,"tsync":0,"tper":0,"tier":"\"Normal\""},{"team":0,"t": 197600,"x":33,"y":31,"match":621041235,"won":0,"tstd":767,"tsync":0,"tper":0,"tier":"\"Normal\""},{"team":1,"t":197366, "x":61,"y":67,"match":621041235,"won":1,"tstd":533,"tsync":0,"tper":0,"tier":"\"Normal\""},..]
From the above dataset, the first 2 types of charts are created i.e Live Maps and Heatmaps. Before I start explaining these visualization, I would like to explain the initial setup. Figure 1 shows the initial page. On the top there is a filter menu where a user can select the type of map (Live/Heat), coloring by Team or Win/Lose and a tsync timeinterval that can go from 0 to somewhere around 4000 seconds by which usually the game ends.
Figure 1: Initial Screen
The 4 blocks contains the map which is generated using D3.js. The map was rendered using BitMap data available. The grass is greener on the radiant team side, while the darker one is Dire team side. The yellow spots are the lane shops while the purple ones are the secret shops where players can buy items and upgrade themselves. The larger Orange spot on the Dire side
is a place for a neutral creep named Roshan. Players of both the teams try to kill this creep to gain bonuses. Roshan keeps on respawning after being killed. There is a river in between and three lanes namely toplane, middlelane and bottomlane which are the main paths. There is also jungle in between with smaller paths as seen in the maps. 1. Live Maps: Here we can see a moving trajectories of the players. On every tier map there are 500 (50 games * 10) moving dots colored by either Win/Lose or based on teams. In total this visualization simulates the movements of 4000 players in a time interval. As humans we are really good at identifying patterns and the differences between the strategies of every tier at a time interval can be spotted by such visualization. Figure 2 shows the simulation of first 20 seconds. It can be easily spotted the Pro tier never uses the middle lane in the beginning while on the contrary the Normal ties has an equal distribution on all the three lanes.
Figure 2: Live Maps
A live video has been posted on https://vimeo.com/149885443
2. Heat Maps: Heat Maps shows the spatial concentration of players in specific time intervals. They can be used to analyze concentration differences between different tiers as well as those of teams that won or loss. Figure 3 is a heatmap where players are colored by BlueWin and RedLose for a time interval of 060 seconds.
Figure 3: HeatMaps
3. Box Plot: Another way to investigate team movement and teamwork behavior is to consider the distances between each member of a team. The goal is to evaluate the degree of team distribution over the map and whether it is related to the skill tier and win/loss conditions. Running a MapReduce job on hadoop returned the average distance of the team at every second of tsync
parameter. The distance between two player’s of the team was calculated using the Euclidean Distance formula to find distance between 2 points. Finally a box plot was generated which compares the distribution of average distances between players of different tiers and Win/Lose for a given time interval. Figure 4 shows the boxplot for an interval of 0100. The interesting thing found here is that the average distance between the winning teams are generally lower than that of the losing teams in every tier except the Normal tier. For the Normal tier it's generally random as new players don't have strategies yet. The dots beside the boxplots show the distribution of players and the outliers. The Pro and Very High tiers have players usually compact having not a single outlier, while we can see a lot of dots on the higher and lower ends of Normal tier.
Figure 4: Boxplots
Used Technologies: All the visualizations have been done by using D3.js and HTML5 technologies. The backend is based on JAVA and data queried using web services. The database used is MySql. The size of the data was almost 2 GB and therefore filtering techniques were used. The limitation is that browser can only process and render data upto a certain level and therefore the data queried should not have an interval of more than 50 seconds for smooth transitions. The browser might freeze depending on the processor speeds if higher interval of times are used. All the code except the data has been published on github. The data can be generated by the user using replay files and Dotalys 2 tool. References: Drachen, A.; Yancey, M.; Maguire, J.; Chu, D.; Wang, I.Y.; Mahlmann, T.; Schubert, M.; Klabajan, D., "Skillbased differences in spatiotemporal team behaviour in defence of the Ancients 2 (DotA 2)," in Games Media Entertainment (GEM), 2014 IEEE , vol., no., pp.18, 2224 Oct. 2014 doi: 10.1109/GEM.2014.7048109 URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7048109&isnumber=7047963 T. Mahlmann. (2014, March) Dotalys2. [Online]. Available: http://www.lighti.de/dotalys2 Git : https://github.com/CodeTaha/DotaAnalysis Sample Live Demo: http://codetaha.github.io/DotaAnalysis/web/ Temporary Link of Full Demo(Might not work in Future): http://54.148.130.167/DOTA/
Lihat lebih banyak...
Comentários