About this project

Mindustry is an open-source real-time strategy game that blends tower defense with automation: players build and wire up production chains to feed defenses rather than only placing turrets. It is written in Java and developed in the open on GitHub, with the README describing it simply as "the automation tower defense RTS." Platforms and distribution The project compiles to a desktop client, an Android client and a standalone server build. Prebuilt releases are published on GitHub, and the README also links to downloads on itch.io, Google Play, F-Droid and Flathub. Automatic bleeding-edge builds are generated for every commit in a separate builds repository, so testers can follow development without compiling. Building from source Contribution requires JDK 17, which the README states explicitly (other JDK versions will not work). The build system is Gradle with wrapper scripts for Windows and Linux/Mac. Typical commands are `gradlew desktop:run` to run, `gradlew desktop:dist` to produce a packaged desktop JAR, `gradlew server:dist` for a server release, and `gradlew tools:pack` for sprite packing. Android builds go through the Android SDK command-line tools, require `ANDROID_HOME`, license acceptance via sdkmanager and developer mode on the device; `gradlew android:assembleDebug` produces an unsigned APK and `gradlew android:installDebug android:run` installs and launches on a connected device. Output locations are documented as `desktop/build/libs/Mindustry.jar` and `server/build/libs/server-release.jar`. The README also lists a common permission-denied fix (`chmod +x ./gradlew`) and warns that the first Gradle run may take several minutes downloading dependencies. Code generation and architecture A notable part of the project is that the `mindustry.gen` package is generated at build time and is not present in the repository. The README explains its sources: `Call` and packet classes come from methods annotated with `@Remote`; entity classes such as `Unit`, `EffectState` and `Posc` are generated from component classes in `mindustry.entities.comp` and combined via definitions in `mindustry.content.UnitTypes`; and `Sounds`, `Musics`, `Tex` and `Icon` are generated from the corresponding asset folders. This generated package is documentation-marked as not to be edited by hand. Community and contributing The project maintains a contributing guide covering code style and pull request expectations. New contributors are pointed to issues labeled 'candidate' in the separate Mindustry-Suggestions repository, which is also where feature requests and feedback are filed. Further resources linked from the README include a Trello board for release plans, a project wiki and generated Javadoc, plus an active Discord community.