I discovered the task late and, to meet the deadline, I couldn't implement advanced functionality or fully refine the styling. While the core features are functional, there are areas such as improved styling or additional enhancements that I couldn't complete within the available time. I appreciate your understanding and welcome any feedback or suggestions for further improvement.
This is an Overwolf-based simple overlay application for Dota 2, built with Vite, React, TypeScript, and Redux. The overlay provides:
- KDA tracking (kills, deaths, assists).
- Creep statistics (last hits, denies).
- A rune timer with:
- Countdown to rune spawns.
- Last 10 seconds highlighted in red to alert the player.
- Allows toggling the overlay visibility using a Ctrl + Shift + D shortcut.
- Node.js (version 16 or later).
- Yarn (or npm, but yarn is recommended).
- Overwolf Developer Tools for testing.
- Clone the repository:
git clone https://github.com/ironslee/irs-dota2-app.git
cd irs-dota2-app
- Install dependencies:
yarn install
- Build the project:
yarn build
- Install and configure the application in Overwolf:
- Go to the Overwolf settings → Development Options → Add your app using the manifest in the
dist
folder.
- Go to the Overwolf settings → Development Options → Add your app using the manifest in the
- Launch Dota 2.
- Copy the
dist/
folder into your Overwolf Extensions directory. - Add the app via Overwolf's developer settings.
- The app is specifically designed for Dota 2 (Game ID:
7314
). - All game events and features are fetched using Overwolf Game Events Provider (GEP).
- The overlay UI prioritizes simplicity and transparency to avoid interfering with gameplay.
- Stats are fetched in real-time, which could have minor delays due to Overwolf API processing.
- During match start, the overlay appears and tracks your KDA and creep stats.
- The rune timer can be toggled on/off and resets every 120 seconds.
- The last 10 seconds of the rune timer are highlighted in red and use a larger font size for better visibility.
- At the start of another match, all stats reset.