Dota 2 Arcade Project Setup
Overview
Use this skill for repository-level Dota 2 Arcade work. Default to TypeScriptAddonTemplate conventions unless the existing project is clearly Lua-only.
First Inspection
Inspect these files before changing structure:
package.jsontsconfig.json,src/vscripts/tsconfig.json,src/panorama/tsconfig.jsonsrc/common,src/vscripts,src/panoramagame/scripts/vscriptsgame/scripts/npccontent/panorama.vscode/tasks.jsonand workflow files when present
Use scripts/inspect-addon.sh <project-root> for a quick structural summary when the project is available locally.
Directory Rules
- Put TypeScript gameplay source in
src/vscripts; compiled Lua belongs ingame/scripts/vscripts. - Put Panorama TypeScript source in
src/panorama; compiled JavaScript usually belongs undercontent/panorama/scripts/custom_game. - Put shared declarations and event contracts in
src/common. - Put NPC, ability, item, hero, and unit KV in
game/scripts/npc. - Put Panorama XML/CSS and UI resources in
content/panorama. - Put map, particle, model, material, and sound authoring assets under
contentunless the project has a stricter convention.
Do not edit compiled Lua or compiled Panorama JavaScript when matching TypeScript source exists. Patch source and rebuild.
Setup Workflow
- Confirm the addon name and Dota 2 install/addons target expected by the project.
- Confirm whether the repo is based on TypeScriptAddonTemplate, a Lua addon, or a custom hybrid.
- Install dependencies only after reading the package manager lockfile.
- Prefer the repo's existing scripts. In TypeScriptAddonTemplate, expect
npm run devor VS Code build tasks to compile and watch. - Keep generated output out of source edits unless the project intentionally commits generated files.
- After structural changes, run typecheck/build scripts that already exist in
package.json.
Migration Guidance
When moving a Lua addon toward TypeScript:
- Preserve existing
game/scripts/npcKV first. - Introduce TypeScript for new systems before rewriting stable Lua.
- Move event names and nettable contracts into shared declarations where useful.
- Keep compiled output reviewable until the build pipeline is trusted.
Coordinate With Other Skills
- Use
dota2-arcade-panorama-uifor UI files and Panorama API usage. - Use
dota2-arcade-vscriptsfor GameMode and gameplay systems. - Use
dota2-arcade-abilities-itemsfor ability, item, and modifier implementation. - Use
dota2-arcade-debuggingwhen setup work fails to build or launch.