// the find
Anuken/Mindustry
The automation tower defense RTS
Mindustry is a fully-featured tower defense / factory automation game — think Factorio meets Bloons, playable on desktop, Android, and iOS. It's a solo-developer project that has shipped a polished, complete game with multiplayer, modding support, and active development. Not a demo or a framework — actual shipped software with 28k stars earned honestly.
1. The annotation processor pipeline is genuinely clever: entity components are defined as annotated interfaces, and a build-time processor generates the actual entity classes, network packet serializers, and asset registries. Cuts a ton of boilerplate that game engines usually handle badly. 2. Network code uses the same @Remote annotation system to generate both client call stubs and server dispatch handlers — the source of truth for the protocol is the annotation, not duplicated hand-written code on both sides. 3. Cross-platform target coverage (desktop JVM, Android, server headless) all from a single Gradle multi-module build with clearly separated launcher modules — the core game logic has no platform coupling. 4. Active, disciplined release cadence with bleeding-edge CI builds on every push and a separate suggestions repo to keep issue noise out of the main tracker.
1. Hard dependency on JDK 17 specifically — not 'JDK 17+', exactly 17. The README calls this out explicitly, which means adopters on newer JDKs will hit unexplained build failures without reading carefully. 2. The generated `mindustry.gen` package is invisible in the source tree and only exists after a build, which makes first-time IDE setup confusing and breaks static analysis until you've run Gradle at least once. No tooling hint or setup script helps with this. 3. The codebase uses Arc (the author's own custom libGDX fork) as a dependency rather than upstream libGDX — this is fine for the game itself but is a silent trap for anyone trying to learn from or adapt the code, since Arc's API diverges from libGDX docs with no warnings. 4. Test coverage is thin for a project this size — the CI runs tests but the test suite mostly covers serialization and data structures, not game logic. You won't catch a regression in the power graph or pathfinding from tests.