League of Legends: Dynamic Team Builder

Similar documents
Gridiron-Gurus Final Report

Matthew Fox CS229 Final Project Report Beating Daily Fantasy Football. Introduction

Timekeeper/Statistical tool for Basketball Sponsor: Prof. Wayne Dyksen & MSU Basketball Team Spring User Guide

Journey through Game Design

Seaman Risk List. Seaman Risk Mitigation. Miles Von Schriltz. Risk # 2: We may not be able to get the game to recognize voice commands accurately.

USER GUIDE JOINING PLAYSIGHT SMARTCOURT

Chess Style Ranking Proposal for Run5 Ladder Participants Version 3.2

COMP3211 Project. Artificial Intelligence for Tron game. Group 7. Chiu Ka Wa ( ) Chun Wai Wong ( ) Ku Chun Kit ( )

CS 229 Final Project: Using Reinforcement Learning to Play Othello

Assignment II: Set. Objective. Materials

Q: WHAT ARE THE RESIDENCY REQUIREMENTS FOR THOSE WHO PLAY TO COMPETE? A: This is event is restricted to UK and Ireland, therefore:

2048: An Autonomous Solver

Game Playing AI. Dr. Baldassano Yu s Elite Education

Mittwoch, 14. September The Pelita contest (a brief introduction)

1 Document history Version Date Comments

Official Documentation

Overall approach, including resources required. Session Goals

Create Or Conquer Game Development Guide

3 things you should be doing with your survey results. Get the most out of your survey data.

Set Up Your Domain Here

Game Playing for a Variant of Mancala Board Game (Pallanguzhi)

For slightly more detailed instructions on how to play, visit:

Federico Forti, Erdi Izgi, Varalika Rathore, Francesco Forti

Table of Contents. Creating Your First Project 4. Enhancing Your Slides 8. Adding Interactivity 12. Recording a Software Simulation 19

The purpose of this document is to outline the structure and tools that come with FPS Control.

Creating Projects for Practical Skills

Obviously, this is after you start to get some traffic, but that is one of the steps, so I want to get that in there.

CMSC 671 Project Report- Google AI Challenge: Planet Wars

DOWNLOAD OR READ : KATARINA GUIDE BUILD PDF EBOOK EPUB MOBI

An IoT Based Real-Time Environmental Monitoring System Using Arduino and Cloud Service

Artificial Intelligence

For more information on how you can download and purchase Clickteam Fusion 2.5, check out the website

Learning to Play like an Othello Master CS 229 Project Report. Shir Aharon, Amanda Chang, Kent Koyanagi

Mine Seeker. Software Requirements Document CMPT 276 Assignment 3 May Team I-M-Assignment by Dr. B. Fraser, Bill Nobody, Patty Noone.

Real Time Word to Picture Translation for Chinese Restaurant Menus

COMP 3801 Final Project. Deducing Tier Lists for Fighting Games Mathieu Comeau

Learning Dota 2 Team Compositions

Artificial Intelligence. Minimax and alpha-beta pruning

Clickteam Fusion 2.5 [Fastloops ForEach Loops] - Guide

Picks. Pick your inspiration. Addison Leong Joanne Jang Katherine Liu SunMi Lee Development Team manager Design User testing

STARCRAFT 2 is a highly dynamic and non-linear game.

Moving Game X to YOUR Location In this tutorial, you will remix Game X, making changes so it can be played in a location near you.

Radhika.B 1, S.Nikila 2, Manjula.R 3 1 Final Year Student, SCOPE, VIT University, Vellore. IJRASET: All Rights are Reserved

How to create a survey with SurveyMonkey

Kodu Lesson 7 Game Design The game world Number of players The ultimate goal Game Rules and Objectives Point of View

Super HUD- User Guide

PLAY & WIN!* SUPER RUGBY 2018 DOWNLOAD THE APP TODAY! See inside for more information. *Terms and conditions apply. Metalcraft Insulated Panel Systems

Chief Architect X3 Training Series. Layers and Layer Sets

Overview... 3 Starting the Software... 3 Adding Your Profile... 3 Updating your Profile... 4

INVENTION LOG FOR CODE KIT

DESIGN A SHOOTING STYLE GAME IN FLASH 8

CS 380: ARTIFICIAL INTELLIGENCE MONTE CARLO SEARCH. Santiago Ontañón

SUPER AFFILIATE SNIPER

Monte Carlo Tree Search. Simon M. Lucas

Introduction to Artificial Intelligence CS 151 Programming Assignment 2 Mancala!! Due (in dropbox) Tuesday, September 23, 9:34am

Opponent Modelling In World Of Warcraft

Era of Mages User Manual

ELE 408 Final Project

Facilitator s Guide to Getting Started

CS 188: Artificial Intelligence Spring Announcements

INTANGIBLES Big-League Stories and Strategies for Winning the Mental Game in Baseball and in Life

Programming an Othello AI Michael An (man4), Evan Liang (liange)

Dota2 is a very popular video game currently.

Bridgemate App. Information for bridge clubs and tournament directors. Version 2. Bridge Systems BV

SDS PODCAST EPISODE 110 ALPHAGO ZERO

COMP219: COMP219: Artificial Intelligence Artificial Intelligence Dr. Annabel Latham Lecture 12: Game Playing Overview Games and Search

Appendix 3 - Using A Spreadsheet for Data Analysis

Scratch for Beginners Workbook

Understanding The Relationships Of User selected Music In Video Games. A Senior Project. presented to

Scrivener Manual Windows Version Part I

Concept Connect. ECE1778: Final Report. Apper: Hyunmin Cheong. Programmers: GuanLong Li Sina Rasouli. Due Date: April 12 th 2013

PAGE 1 THE PERFECT WORDPRESS DEVELOPMENT WORKFLOW

AI Approaches to Ultimate Tic-Tac-Toe

What is a Z-Code Almanac?

World of Warcraft: Quest Types Generalized Over Level Groups

1 Introduction. 1.1 Game play. CSC 261 Lab 4: Adversarial Search Fall Assigned: Tuesday 24 September 2013

Paly Robotics Team #8 Scouting Documentation. Authors: Robbie Selwyn, Ailyn Tong, Alex Tarng

Overview. The Game Idea

Kismet Interface Overview

Apocalypse Defense. Project 3. Blair Gemmer. CSCI 576 Human-Computer Interaction, Spring 2012

Automated Suicide: An Antichess Engine

LOOKING AHEAD: UE4 VR Roadmap. Nick Whiting Technical Director VR / AR

Getting Started Guide

Register and validate Step 1

Assignment III: Graphical Set

28 content upgrades that will boost your list

Adding in 3D Models and Animations

The original image. Let s get started! The final light rays effect. Photoshop adds a new layer named Layer 1 above the Background layer.

Sri Shakthi Institute of Engg and Technology, Coimbatore, TN, India.

PRINTING & SHARING IMAGES IN LIGHTROOM

Part II: Number Guessing Game Part 2. Lab Guessing Game version 2.0

TABLE OF CONTENTS. Logging into the Website Homepage and Tab Navigation Setting up Users on the Website Help and Support...

AECOsim Building Designer. Quick Start Guide. Chapter A08 Space Planning Bentley Systems, Incorporated

CPS331 Lecture: Search in Games last revised 2/16/10

Authority Site Build (Video 1)

Official Skirmish Tournament Rules

Designing, developing and playing KEEP ME SAFE IN EUROPE 2

The game of Reversi was invented around 1880 by two. Englishmen, Lewis Waterman and John W. Mollett. It later became

QUICK-START FOR UNIVERSAL VLS 4.6 LASER! FRESH 21 SEPTEMBER 2017

CS151 - Assignment 2 Mancala Due: Tuesday March 5 at the beginning of class

Transcription:

League of Legends: Dynamic Team Builder Blake Reed Overview The project that I will be working on is a League of Legends companion application which provides a user data about different aspects of the game. I hope to create a tool which will allow a user easy access to information regarding team building within a ranked League of Legends match. I will be programming in 2 week sprint cycles to fit our reports nicely and have tangible changes that are made between each report. My main goals for a finished product would be defined by how many features I can implement while keeping a simple and easy to use interface, how well the user interface can parallel RIOT s client design, and how relevant the extra data analysis tools that I will provide stands up to other useful functionalities that other applications came up with. I. INTRODUCTION League of Legends is a game that is constantly evolving and in most matches, players are matched on a team with other random players that they have never played with before. This can pose a problem as League of Legends is an extremely team-based game in which one player underperforming in a 5 versus 5 match can lead to a loss. So when looking at the rapidly changing meta of the game, the randomness of the teams you are placed on, and the limited time given during Champion Select, team building to improve player synergy can be difficult. There are many companion applications which provide analytics for League of Legends games such as Op.gg and Mobalytics. These provide data analysis on champions and players in order to ensure that players stay on top of their game; however, they provide data on players after they have entered a game. When looking at creating a dynamic team building application, there were several functionalities that I considered the keys to success. 1. A system to quickly retrieve summoner names from the client and associate them with their roles. 2. Show a player in-depth statistics collected from previous games for each champion 3. Machine learning algorithm trained with collected match data and results in order to more accurately predict how a champion fits a certain matchup My application allows for quick team building while players are in champion select in order to help teams build more efficient team compositions and improve their chances of winning. This is accomplished by allowing players to scan their client and immediately retrieve data corresponding to their teammates and the strongest champions picks in the game s current state. This project is connected to my project in my Big Data Management and Analytics course. By using RIOT s API to collect game data, I have created an application similar to OP.gg and other useful companion applications used by the player base. I hope my solution can become an easy to use system for analyzing different patterns in champions and recommending players builds and other tips. I had a big focus on creating an application with a nice, clean design that allows a player minimal clicks to view data relevant to a champion that they pick. A unique feature that I have added which can put my application a step above other apps that do something similar is a quick team analysis system that lets you see various stats on your teammates before entering a game. The idea for this type of application came about after many professional League of Legends coaches began facing scrutiny for champion selection during the recent 2017 World Championships. Games can potentially be won or lost during champion select so ensuring you can draft a team composition with the best chance of winning is crucial. I also chose to pursue this because I enjoy playing League of Legends and the class projects seemed to mesh well allowing me to go more in depth in the data mining while providing relevant data to a user. Some terminology which will be used throughout this report with regards to League of Legends should be specified as well. A Summoner is a player of the game. Each user is a summoner and their Summoner Name is their unique username. A Champion is a character that you can select within a game of League of Legends. There are currently 138 champions which means that Champion Select for a standard five versus five match has over one sextillion possible champion combinations. The first few iterations of my project were based around creating the infrastructure used to support my application and researching methods of analyzing game data. At the beginning of the iterations, I planned on deciding on which type of database would fit my dataset well, setting up a Raspberry Pi with a 5TB external hard drive to work as my server, and become familiar with how I will be gathering game data. My third iteration concluded my big data collection and management and solidified my final project idea. My fourth iteration was to finish my activity which scans the League of Legends client in order to retrieve all summoner names from a team. It also included the initial development of a deep learning algorithm which allows a score to be assigned to available

2 champion picks. II. RELATED WORK There are other applications that seek to provide data correlations to users that allow the user more information when playing a champion in game. Some focus on player statistics allowing you to check a player s win rate, games played, etc. Some focus on champions and their statistics to recommend builds and if they re in the Meta. I hope to provide unique information in an easier fashion and allow a user to view it all in an easy to use mobile application. III. APPLICATION DESIGN I developed this application using the Agile Software Development methodology with two week sprint cycles. I have experience programming with MVC as my design methodology and will most likely develop using it for this project as well. I manage a NoSQL database using MongoDB hosted on a cloud server which contains all of the relevant data that my app will need to process and correctly display all relevant data. The processing of this data was the biggest part of the application as the most important part of the applications is to be able to provide clear analysis on champion pick rankings during a certain stage of champion select. The view also needed to have a certain aesthetic feel that was clean and enticing to the League of Legends player base. According to their policies, Riot does not allow applications to parallel the client s design; however, developers are allowed access to different resources such as champion art and other valuable images. From this, I was able to import different game art such as the icons for the different champions. My application contains three key activities. The first being an activity which uses Google s Mobile Vision API in order to scan the League of Legends client during champion select and retrieve all of a user s teammates and their roles. This can then query the database for each user and return relevant data to the next activity. The next activity is an interface similar to the champion selection screen allowing the user to select which champions have been picked so far. Each user has a layout containing a circular picture which represents characters that have been locked in and the rest of the area providing an onclick functionality that will go to data about that specific player. This transitions to the final activity which is the presentation of the information returned by the big data analysis. This provides the user with a ranking system which represents which champions provide the highest chance for a win during the current pick and the reasoning behind these ranks. IV. CHAMPION SCORING SYSTEM The big data analytics portion of my project consists of a machine learning algorithm which tries to accurately predict the champion for a player to pick with the maximum chance of winning. For my data analytics, I use a Python script to train a linear regression machine learning algorithm. I extract data from matches into a useable form into a CSV file. This is then transferred into a dataframe by Pandas which is a Python library. This is then used by Scikit-learn in order to create a linear regression prediction for champion performance. In order to measure champion performance, I took into account many aspects of a game. First, I looked at Champion overall win rate and performance. By collecting the overall KDA, overall win rate, and total games played, I am able to accurately predict how strong a pick is in the current state of the game. I then look at the individual performance on the champion for a potential pick. By collecting the individual KDA, win rate, and games played compared to the average, I am able to get a better metric for the player s average performance on that champion. Next, I looked at the champion s strength with the champions that are on the player s team. By collecting the same statistics from games paired with each of the other four members of the team, I am able to accurately predict how those champions will perform when paired together on the same team. Lastly I looked at the strength of the champion versus the picks that the enemy has made. Similar to the strength with the current teammates, this looks at the champion s performance in games against the enemy picks. Some sample data used to train my machine learning algorithm can be seen in Figure 1 at the end of my report. This machine learning algorithm is trained by my current dataset which consists of a few hundred thousand matches and then is able to accurately predict a champion s percentage of winning in a certain matchup. This should determine which factors are most important when looking at a potential champion selection and weigh each parameter it receives in order to give an accurate scoring of a champion My approach to Champion Select will also follow similarly to chess artificial intelligence which takes into account the opponent s next move. By utilizing a minimax algorithm with alpha-beta pruning, I can predict possible counter picks and build a team which has less counter possibilities. V. RESULTS During my first iteration, I was able to complete all three tasks that I created, primarily focusing on set-up and research. I ve decided on a NoSQL database, most likely MongoDB, as it will be much more scalable and will be able to flexibly handle whatever big data sets I will be storing. Now onto the data that I was looking into. I had some ideas that were not possible with Riot s API. They ve strictly enforced that scraping game data outside of their API is forbidden which prevents me from getting any data on the attitude of players. Riot s API does not provide any information about players that could cause you to view them in a negative way other than their game scores; however, the API will allow me to achieve several other functionalities that I had hoped to create which are outlined in my future work section. I also finished my setup of my Raspberry Pi. I am able to remote into it when at school or elsewhere and I went ahead and installed MongoDb on the machine. During my second iteration, I finished the setup for my data collection. I now have a system which stores game logs but I currently have no methods for analysis of this data. I have narrowed in on a specific type of companion application that I wish to make and I should now have a proper big data management system to handle the data that I will be using.

3 During my third iteration, I was able to finish collecting a sizeable data set and began planning what I want to provide the user as an end-application. I have decided to approach the application as a team building tool which dynamically provides the user with the best potential champions based on the matchup of teammates and enemy champions selected. During my fourth iteration, I was able to finish the development of my home activity which allows a user to scan their client to collect the summoner names from the team and transition to the champion selection screen. The names of the summoners will then need to be passed to the machine learning algorithm that I am currently working on. This will allow for the scoring of champions based on player performance in order to suggest the best possible champion selection. This feature uses Google Mobile Vision s API to interpret images and search for certain bits of text. I initially began implementation by following Google s text recognizer tutorials. Their implementation of frame by frame analysis of text wasn t a good fit for my application as text is constantly being read and portions of words were cut off. When looking for text blocks containing the roles from a champion select screen such as SUPPORT either the role or the player s summoner name weren t decoded in full. Instead I opted to allow the user to take a picture of their client in order to decode the summoner names and roles. This was much more effective at receiving full summoner names and roles. The only drawback is that the picture s layout can affect whether the text can be recognized or not. Testing the application on my own android device, I have to take landscape pictures rather than portrait but other devices behave differently. This was demonstrated during my presentation as the direction that the picture was processed was different for the presentation android s default camera application. When taking a photo in portrait mode, it was able to effectively retrieve the summoners in their correct roles. Pictures of this feature can be seen in Figures 2 and 3. During my fifth iteration, I was able to finish the champion select activity and begin to work on displaying all of the potential champion selections. The champion select feature mirrors League of Legends Champion Selection screen and allows for an easy to use simulation of picks prior to actually having to lock in your champion that you will play in game. Each of the 5 players on a user s team as well as the 5 enemy players are given a slot in which a character can be selected. Any errors in player names made by the text recognizer can be quickly and easily fixed before creating a team composition. This can be seen in Figure 3. During my sixth iteration, I was able to finish the pick champion activity. This was intended to show a list of all of the possible champion picks and allow a user to select one based on which imagebutton was pressed. I created a layout for an individual item to be inserted into the list of potential champion picks. I used a listviewadapter in order to populate my list view. I then added a way to filter the champions based on a search bar. This activity can be seen in Figure 4. During my seventh iteration, I was able to connect data to my machine learning algorithm. I also provided more in-depth statistics on a champion if you click on anything besides the champion s portrait. This ViewStats activity can be seen in Figure 5 and still needs some adjustments to make the UI look better. Once both teams have selected their 5 champions, the data is then passed to the machine learning algorithm and the effective win percentage is calculated. This is then displayed as shown in Figure 6. During this iteration I also performed blackbox testing by having other people that I know play League of Legends try out my application. After receiving feedback from five of the seven testers, I have a better understanding of how a consumer might view my product and how I should shape the UI moving forward. The biggest concern was that there isn t a score system implemented to show the best pick at the time, rather statistics are shown when looking at a champion. Another concern was that the application has too much whitespace on larger android devices. Taking these into consideration as I move forward will allow me to transform my application into a more userfriendly system. VI. FUTURE WORK Moving forward, I still have a lot of UI work to perform. The champion statistics aren t displayed in an orderly form and my champion select menu contains too much white space. I might also want to implement some kind of template or just change the color scheme to make my application look more appealing. I also need to determine how to create my score system. I don t believe that it is feasible to run my linear regression algorithm on each potential champion pick in order to produce a score as a user is going to select their pick. This application is very time-sensitive so keeping the data analysis under one second in order to allow the user to maintain their flow of thought is essential. Most operations run from a localhost setting perform in under 0.1 seconds which seems instant to a user. I need to work to achieve this same speed when having latency to worry about. My data was currently being extracted from my MongoDB database directly which is a big issue if the application were to be released today. I would need a better hosting system and a web API that the mobile application could hit to retrieve data properly. VII. DISCUSSION My main ideas for tools that would be useful to players are pretty complex in terms of implementation. My favorite idea that I will focus heavily on is a way to view relevant data about your team while in a pregame lobby. This will help players make decisions on roles and champions before a game starts in order to help team synergy. Many applications will display game data about your team when in a live game. The key here being that it doesn t help as much after champion select and your team is already set. I hope to accomplish this by using an image text reading API in order to allow a user to take a picture of their pregame lobby and display team stats based on their assigned roles. My second idea is a skin tracker. The idea is it will show players in depth pictures/videos on each skin that can be purchased for a champion and track/predict when it will be on sale. Riot generally has a set rotation of which skins will be on sale for a week and I think that a system where you can favorite skins and be notified when they go on sale would benefit players.

4 I have set an initial scope of my project to be the completion of a Teammate Tracker which can display relevant data about a player s teammates while in a pregame lobby. This is my favorite idea for a companion app as I feel it is the most needed of my ideas. This tool seems even more prevalent now that a new season of League of Legends has started. With new seasons, many new features such as items, runes, changes to Champions, etc. are made which means there is a lot of experimentation as to which champions are currently the strongest. Given a tool which provides such deep analysis on match history such as this, players are much better off going into games when they can determine which Champions are powerful at the moment. Figure 1: Champion ID Figure 2: Overall KDA Overall Win Rate Total Individual Games KDA Played Individual Win Rate Individual Strength Strength With Versus Team Team Games Played 4 2.410621 54.05405 518 1.666667 0 1 3.989877 4.2341 FALSE 29 2.571942 49.39173 2055 1.714286 0 1 3.956642 4.456161 FALSE 23 1.92214 53.27771 839 0.333333 0 1 3.949053 4.466294 FALSE 143 2.523422 46.93069 505 1.484663 53.48837 43 4.13543 4.360922 FALSE 24 1.964699 49.88417 1295 0.9 0 1 4.037415 4.391041 FALSE 126 2.517589 50.29762 672 1.909091 100 1 4.039937 4.415069 TRUE 122 2.00379 48.11031 979 1.272727 100 1 4.041583 4.510244 TRUE 63 2.393396 52.22073 743 3.333333 100 1 4.008893 4.384335 TRUE 37 3.357969 56.47059 1700 2.19149 66.66667 6 3.979795 4.418441 TRUE Win

5 Figure 4: Figure 3:

6 Figure 6: Figure 5: