CREDIT WHERE IT’S DUE

Made with love.
Not made by Valve.

Guess the Hero is an unofficial, non-commercial Dota 2 fan game. It isn’t affiliated with or endorsed by Valve.

The heroes belong to Valve.

Dota 2, hero artwork, voices, and trademarks belong to Valve Corporation. These assets are not relicensed as open source. Attribution alone does not establish permission. See Valve’s legal information ↗ before commercial use or redistribution.

Where the media comes from

The current roster and transparent renders come from Valve’s official Dota 2 website and media CDN. The 32 original silhouette and reveal pairs come from my 2017 Android game. The December 2018 roster is pinned from OpenDota’s historical data. Archived portraits and response scripts come from SteamTracking’s December 2018 game archive. Voice metadata and extracted audio come from mdiller’s Dotabase.

Media is frozen locally, optimized as WebP and MP3, and checked against a checksum ledger. Normal gameplay doesn’t hotlink third-party media. The verified roster snapshot is dated October 9, 2026.

A note on the Classic mode

Classic means the December 2018 roster. Beyond the original 32 heroes, silhouettes use current transparent renders. There are 113 archived 2018 portraits; Dark Willow, Pangolier, and Grimstroke have no portrait in the checked archive.

Classic voice-line identifiers are verified against 2018 response scripts, but audio comes from current game extractions. It is not guaranteed to be the exact 2018 recording.

The bits around the game

The arcade uses Astro, React, Tailwind CSS, Radix UI, shadcn-style source-owned components, Lucide, DM Sans, and Space Grotesk. Guess the Hero also uses Three.js, React Three Fiber, Drei, Inter, and Cinzel. These UI dependencies and fonts have their own open-source licenses, separate from Valve’s media rights.

Need to discuss an asset?

Find me on Twitter/X at @theybanjan ↗. Assets can be removed on request.

Back to the game ↗