A Dota 2 custom game project aiming to recreate gameplay and mechanics from patch 7.30.
This repository is a hobby project that serves both as a playable experience and a technical reference. It includes a variety of gameplay systems, structured code examples, and fully custom abilities implemented from scratch.
The project includes:
- TypeScript for Panorama
- TypeScript for VScripts
- Continuous Integration support
- Simple commands to build and launch your custom game
- Localization system — a simple and scalable approach to managing translations
- Clone this repository or, if you're planning to have a repository for your custom game on GitHub, create a new repository from this template and clone it instead.
- Install dependencies:
npm install(Optional) Keep dependencies up to date:
npm update- Start development:
- Press
Ctrl+Shift+Bin VSCode - or run:
npm run dev- [src/common]: TypeScript
.d.tstype declaration files with types that can be shared between Panorama and VScripts - [src/vscripts]: TypeScript code for Dota addon (Lua) vscripts. Compiles lua to
game/scripts/vscripts. - [src/panorama]: TypeScript code for panorama UI. Compiles js to
content/panorama/scripts/custom_game - [src/localization]: A convenient localization workflow that merges multiple
.txtfiles into a singleaddon_english.txt
- [game/*]: Dota game directory containing files such as npc kv files and compiled lua scripts.
- [content/*]: Dota content directory containing panorama sources other than scripts (xml, css, compiled js)
- [scripts/*]: Repository installation scripts
This template includes a GitHub Actions workflow that builds your custom game on every commit and fails when there are type errors.