janjagusch / dota-2-ai-coach

We use cutting edge AI to improve your Dota 2 skills.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dota 2 AI Coach

We use cutting edge AI to improve your Dota 2 skills.

Ok, enough with the buzzwords. This repository provides aggregated in-game information about professional DOTA 2 matches. We developed this project during Hackdays Rhein-Neckar 2019 over a period of three days (14.02.2019 - 18.02.2019).

Sponsor and data-/ infrastructure provider is the Esports department of SAP in collaboration with Team Liquid.

In short, the program compiles a series of SAP SQL queries, provided a match identifier, and executes them on a SAP HANA database. The results are then provided through an easy-to-use API.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Data

The data provided consists of combat logs for Team Liquid during The International 2018 as well as additional meta information about the game. Unfortunately, the data cannot be shared publicly.

Prerequisites

The packages required for running this program are:

flask
numpy
pandas
pyhdb

You can install them through the provided requirements.txt file.

Connecting to HANA

Place your HANA credentials in the .env file.

Deployment

Start the service from coach_api_server.py.

Using the API

URL Path HTTP Verb Request Body Request Headers Response Body (JSON) Description
/match_ids GET None None [match_ids] Returns all match ids in the database
/first_blood GET match id (int) None [{"type": "DOTA_COMBATLOG_FIRST_BLOOD", "attacker": DOTA_HERO, "target": DOTA_HERO, "start_time": timestamp, "end_time": timestamp}] Returns first blood information for match id
/kill_sequences GET match id (int) None [{"type": "KILL_SEQUENCES", "datetime_start": timestamp, "datetime_end": timestamp, "tick_start": game_tick, "tick_end": game_tick}] Returns kill sequences for match id
/intensity GET match id (int) None {"dire" {"name": "Dire", objects: []}, "radiant": {"name": "Radiant", "objects": []}, "seconds_interval": []} Returns match intensity by team in 10 second intervals

Authors

Acknowledgments

  • Thanks to Hackdays - especially to Oliver Bruemmer - for organizing this event.
  • Thanks to SAP for challenging us with this exciting project.

About

We use cutting edge AI to improve your Dota 2 skills.

License:Other


Languages

Language:Python 100.0%