Sopa
February 10, 2026 ยท View on GitHub
Download in Play Store.
Overview
SOPA is an android puzzle game.
The game consists of an field which has 16 tiles. These tiles contains a tube or nothing. The games goal is to connect two doors which are on the side of the field with the tubes in the field, by moving the tubes. To play the game, the tubes has to be moved horizontal and vertical.
As soon as the tubes connect the two doors a level is done.
Gamemodes
Levelmode
The Levelmode consists of 100 predefined level, which can be played sequential. If a level gets solved the next gets unlocked. Solving a level the player gets stars for the win. The maximum stars are three.
Justplay
In this mode the main opponent is the time. It starts with an easy level and 10 seconds of time. For each solved level the player gets the rest of his left time in addition to an extra bonus for the next one. Each level is autogenerated with an increasing difficulty.
For each level the player gets points. The number of points is calculated with the difficulty of the game and the moves needed to solve the game.
- harder game -> more points
- more moves-> less points
Development
Requirements
- JDK 21 recommended (JDK 17+ required)
- Android SDK Platform 35
- Gradle wrapper (included, version 9.1.0)
- Android Gradle Plugin 9.0.0
Tests
Execute tests:
./gradlew testDebugUnitTest
Build:
./gradlew assembleDebug
Reporting
With JaCoCo there is a possibility to calculate test coverage.
./gradlew jacocoTestReport
The generated test results can be found here: app/build/reports/jacoco/jacocoTestReport/html/index.html
Release the game
./gradlew clean
./gradlew :app:bundleRelease
The release bundle is generated at:
app/build/outputs/bundle/release/app-release.aab
The release build is configured for signing via keystore.properties in the project root:
storeFile=/absolute/path/to/your/keystore.jks
keyAlias=your_alias
storePassword=...
keyPassword=...
Notes:
keystore.propertiesis local-only and must not be committed.- If your keystore is in iCloud (
/Users/<user>/Library/Mobile Documents/...) and signing fails with "Operation not permitted", copy it to a local path (e.g./Users/<user>/keys/...) and use that path. - Increment
versionCodefor every Play upload.
Android / Play config
- Application ID / package:
com.sopaapp - App module
minSdkVersion: 24 - App module
targetSdkVersion: 35 - App + AndEngine
compileSdkVersion: 35
AndEngine note
AndEngine is vendored directly in this repository (not a git submodule).
License
Sopa is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.