Anuken

    Anuken/Mindustry

    #347 this week

    The automation tower defense RTS

    android
    game-development
    desktop
    game
    java
    mindustry
    mobile-game
    Java
    GPL-3.0
    28.3K stars
    3.6K forks
    28.3K GitHub watchers
    Updated 7/22/2026
    View on GitHub

    Backblaze Generative Media Hackathon

    Build the next generation of AI media apps with Genblaze, stored on Backblaze B2. $10,000 in prizes.

    Enter the hackathon

    Loading star history...

    Use Cases & Benefits

    • Mindustry is a Java-based automation tower defense real-time strategy game supporting Android, desktop, and multiplatform environments.
    • Key features include automation mechanics, RTS gameplay, sandbox elements, and support for mobile and desktop platforms.
    • Strengths are its large community with 25k stars, active development since 2017, and open-source GPL-3.0 license; limitation includes dependency on JDK 17.
    • Organizations can use Mindustry as a customizable game platform or educational tool for programming and automation concepts in production environments.
    • Ideal use cases include game development learning, RTS and tower defense enthusiasts, and cross-platform game deployment on mobile and desktop.

    About Mindustry

    Logo

    Build Status Discord

    The automation tower defense RTS, written in Java.

    Trello Board
    Wiki
    Javadoc

    Contributing

    See CONTRIBUTING.

    Building

    Bleeding-edge builds are generated automatically for every commit. You can see them here.

    If you'd rather compile on your own, follow these instructions. First, make sure you have JDK 17 installed. Other JDK versions will not work. Open a terminal in the Mindustry directory and run the following commands:

    Windows

    Running: gradlew desktop:run
    Building: gradlew desktop:dist
    Sprite Packing: gradlew tools:pack

    Linux/Mac OS

    Running: ./gradlew desktop:run
    Building: ./gradlew desktop:dist
    Sprite Packing: ./gradlew tools:pack

    Server

    Server builds are bundled with each released build (in Releases). If you'd rather compile on your own, replace 'desktop' with 'server', e.g. gradlew server:dist.

    Android

    1. Install the Android SDK here. Make sure you're downloading the "Command line tools only", as Android Studio is not required.
    2. In the unzipped Android SDK folder, find the cmdline-tools directory. Then create a folder inside of it called latest and put all of its contents into the newly created folder.
    3. In the same directory run the command sdkmanager --licenses (or ./sdkmanager --licenses if on linux/mac)
    4. Set the ANDROID_HOME environment variable to point to your unzipped Android SDK directory.
    5. Enable developer mode on your device/emulator. If you are on testing on a phone you can follow these instructions, otherwise you need to google how to enable your emulator's developer mode specifically.
    6. Run gradlew android:assembleDebug (or ./gradlew if on linux/mac). This will create an unsigned APK in android/build/outputs/apk.

    To debug the application on a connected device/emulator, run gradlew android:installDebug android:run.

    Troubleshooting

    Permission Denied

    If the terminal returns Permission denied or Command not found on Mac/Linux, run chmod +x ./gradlew before running ./gradlew. This is a one-time procedure.

    Where is the mindustry.gen package?

    As the name implies, mindustry.gen is generated at build time based on other code. You will not find source code for this package in the repository, and it should not be edited by hand.

    The following is a non-exhaustive list of the "source" of generated code in mindustry.gen:

    • Call, *Packet classes: Generated from methods marked with @Remote.
    • All entity classes (Unit, EffectState, Posc, etc): Generated from component classes in the mindustry.entities.comp package, and combined using definitions in mindustry.content.UnitTypes.
    • Sounds, Musics, Tex, Icon, etc: Generated based on files in the respective asset folders.

    Gradle may take up to several minutes to download files. Be patient.
    After building, the output .JAR file should be in /desktop/build/libs/Mindustry.jar for desktop builds, and in /server/build/libs/server-release.jar for server builds.

    Feature Requests

    Post feature requests and feedback here.

    Downloads

    Discover Repositories

    Search across tracked repositories by name or description