Peasant Rebellion is a spin-off of the classic Atari game Space Invaders. There are starving peasants approaching in waves trying to attack you by shooting arrows. The goal of the game is to stay alive as long as possible, killing peasants and getting the highest possible score. The game ends when the player loses all their lives. The player is then prompted if they would like to save their score to the global leaderboard, inspired by old arcade machines, which is accessible from the main menu.
In a command line, navigate to the root of the project and enter these commands
./gradlew assembleDebug
./gradlew installDebug
There should now be a .apk file located under /android/build/outputs/apk/debug
Create an Android Virtual Device (AVD) by following these guidelines, or pair up your Android phone
Navigate to Android/Sdk/emulator and run the following command
./emulator -avd avd-name
Where avd-name is the name of your virtual device, you can list all AVDs by entering ./emulator -list-avds
Finally, navigate to Android/Sdk/platform-tools and run
./adb install path/to/debug-apk.apk
Where path/to/debug-apk.apk is the path to the .apk file that was created by running ./gradlew installDebug
The app should now be available to run on either the AVD or your Android phone
This assumes that you have already created a virtual device or paired up your Android phone
Download and open the latest version of Android Studio. Import the project by going to File → Import project
Lastly press the green run button on the top to run the project
Below is the tree of our project. Showcasing our folder structure and files
├───android
│ │ AndroidManifest.xml
│ │ build.gradle
│ │ google-services.json
│ │ ic_launcher-web.png
│ │ proguard-rules.pro
│ │ project.properties
│ │
│ └───src
│ └───main
│ └───kotlin
│ └───com
│ └───peasantrebellion
│ └───android
│ AndroidLauncher.kt
│ Firebase.kt
│
├───assets
│ │ copper_coin.png
│ │ game_icon_background.png
│ │ peasant_rebellion_music.mp3
│ │ Peralta-Regular.ttf
│ │
│ ├───hearts
│ │ heart_empty.png
│ │ heart_full.png
│ │
│ ├───menu
│ │ back_button.png
│ │ back_button_small.png
│ │ crown.png
│ │ double_damage_icon.png
│ │ double_shot_icon.png
│ │ game_background.png
│ │ in_game_settings.png
│ │ knob.png
│ │ large_button.png
│ │ leaderboard_background.png
│ │ main_menu_background.png
│ │ piercing_shot_icon.png
│ │ placeholder_copper_coin.png
│ │ plank.png
│ │ settings_background.png
│ │ settings_icon.png
│ │ shop_menu.png
│ │ side_menu.png
│ │ slider.png
│ │ splash_text.png
│ │ sword.png
│ │ top_bar.png
│ │ triple_damage_icon.png
│ │ triple_shot_icon.png
│ │ upgrade_shop_icon.png
│ │
│ ├───peasant
│ │ ├───easy
│ │ │ easy_peasant1.png
│ │ │ easy_peasant2.png
│ │ │ easy_peasant3.png
│ │ │ easy_peasant4.png
│ │ │ easy_peasant5.png
│ │ │
│ │ ├───hard
│ │ │ hard_peasant1.png
│ │ │ hard_peasant2.png
│ │ │ hard_peasant3.png
│ │ │ hard_peasant4.png
│ │ │ hard_peasant5.png
│ │ │
│ │ └───medium
│ │ medium_peasant1.png
│ │ medium_peasant2.png
│ │ medium_peasant3.png
│ │ medium_peasant4.png
│ │ medium_peasant5.png
│ │
│ ├───player
│ │ player1.png
│ │ player2.png
│ │ player3.png
│ │ player4.png
│ │ player5.png
│ │ player6.png
│ │ player7.png
│ │
│ ├───projectiles
│ │ arrow.png
│ │
│ ├───sfx
│ │ bow-shooting.wav
│ │ game-over.wav
│ │ player-hit.wav
│ │
│ └───tutorial
│ tutorial_1.png
│ tutorial_2.png
│ tutorial_3.png
│ tutorial_4.png
│ tutorial_5.png
│ tutorial_6.png
│ tutorial_7.png
│
├───core
│ │ build.gradle
│ │
│ └───src
│ └───main
│ └───kotlin
│ └───com
│ └───peasantrebellion
│ │ PeasantRebellion.kt
│ │ Screen.kt
│ │
│ ├───controller
│ │ │ Controller.kt
│ │ │ GameController.kt
│ │ │ GameEndController.kt
│ │ │ LeaderboardController.kt
│ │ │ MainMenuController.kt
│ │ │ SettingsController.kt
│ │ │ TutorialController.kt
│ │ │
│ │ └───utility
│ │ Input.kt
│ │
│ ├───model
│ │ │ Game.kt
│ │ │ Leaderboard.kt
│ │ │
│ │ ├───components
│ │ │ AnimationComponent.kt
│ │ │ BodyComponent.kt
│ │ │ CopperDropperComponent.kt
│ │ │ HealthComponent.kt
│ │ │ ProjectileComponent.kt
│ │ │ ScoreValueComponent.kt
│ │ │ ShooterComponent.kt
│ │ │ TextureComponent.kt
│ │ │ UserControlledComponent.kt
│ │ │
│ │ ├───entities
│ │ │ Arrow.kt
│ │ │ Peasant.kt
│ │ │ Player.kt
│ │ │
│ │ └───systems
│ │ AnimationSystem.kt
│ │ CoinSystem.kt
│ │ CollisionSystem.kt
│ │ EnemyMovementSystem.kt
│ │ EnemyWaveSystem.kt
│ │ HealthSystem.kt
│ │ PlayerControlSystem.kt
│ │ ProjectileMovementSystem.kt
│ │ ScoreSystem.kt
│ │ ShootingSystem.kt
│ │ UpgradeSystem.kt
│ │
│ └───view
│ │ GameEndView.kt
│ │ GameView.kt
│ │ LeaderboardView.kt
│ │ MainMenuView.kt
│ │ SettingsView.kt
│ │ TutorialView.kt
│ │ View.kt
│ │
│ └───utility
│ Button.kt
│ MenuFont.kt
│
├───gradle
│ └───wrapper
│ gradle-wrapper.jar
│ gradle-wrapper.properties
│
└───lwjgl3
│ build.gradle
│ nativeimage.gradle
│
└───src
└───main
├───kotlin
│ └───com
│ └───peasantrebellion
│ └───lwjgl3
│ Lwjgl3Launcher.kt
│ StartupHelper.kt
│
└───resources
libgdx128.png
libgdx16.png
libgdx32.png
libgdx64.png