69 lines
3.0 KiB
Markdown
69 lines
3.0 KiB
Markdown
# Project Sacrifice — Android vertical slice
|
|
|
|
An original landscape puzzle-platformer prototype inspired by the broad “death changes the puzzle” genre formula. It does not reuse the title, art, audio, text, characters, or level layouts of any commercial game.
|
|
|
|
Project documents:
|
|
|
|
- [`docs/DEVELOPMENT_PLAN.md`](docs/DEVELOPMENT_PLAN.md) — approved GDD + TDD + production roadmap;
|
|
- [`docs/CURRENT_ROADMAP.md`](docs/CURRENT_ROADMAP.md) — execution roadmap for the existing vertical slice;
|
|
- [`docs/LEVEL_SOLUTION_GRAPHS.md`](docs/LEVEL_SOLUTION_GRAPHS.md) — source-backed intended solution graph for every current level;
|
|
- [`docs/BEADS_WORKFLOW.md`](docs/BEADS_WORKFLOW.md) — local backlog structure and daily Beads commands.
|
|
|
|
## Playable content
|
|
|
|
The APK contains ten sequential levels:
|
|
|
|
1. movement and jumping;
|
|
2. bodies covering a spike lane;
|
|
3. a corpse holding a pressure plate and door;
|
|
4. a toggle-controlled moving lift;
|
|
5. a saw launching a corpse onto a remote plate;
|
|
6. a frozen corpse becoming a stable step;
|
|
7. an electrified corpse completing a relay;
|
|
8. a timed switch and moving platform;
|
|
9. a two-signal door requiring weight and electricity;
|
|
10. a mastery level combining saw, freeze, electricity, pressure plate, pit, moving lift, and final gate.
|
|
|
|
Death does not reset the level. A new volunteer respawns after a short delay while retained bodies stay in the simulation. The restart button deliberately clears the puzzle state. Progress, best time, and lowest volunteer count are stored locally.
|
|
|
|
## Controls
|
|
|
|
- Hold the left/right arrows to move.
|
|
- Hold a direction and tap jump simultaneously; multitouch is supported.
|
|
- `Restart` restores the current level.
|
|
- `II` pauses the game and exposes level selection.
|
|
|
|
The movement constants include 130 ms coyote time and 140 ms input buffering.
|
|
|
|
## Build
|
|
|
|
Requirements: JDK 17 and Android SDK Platform/Build Tools 34.
|
|
|
|
```sh
|
|
./gradlew testDebugUnitTest assembleDebug
|
|
```
|
|
|
|
All ten levels have device-level acceptance bots. They drive the production
|
|
`GameView` through the same movement and jump inputs as the touch controls and
|
|
run each intended solution three times. Level 8 also has a dedicated recovery
|
|
scenario for an expired timer on the far side of the pit. Stage 2 additionally
|
|
checks clean restart and long-term stability of the saw-delivered body on the
|
|
level 10 lift plate. The final Stage 2 build passed all 16 instrumentation
|
|
methods (36 gameplay executions plus lifecycle and restart) on Android 16 in a
|
|
single unfiltered run. With an emulator or phone connected, run the complete
|
|
matrix with:
|
|
|
|
```sh
|
|
./gradlew connectedDebugAndroidTest
|
|
```
|
|
|
|
The debug APK is written to `app/build/outputs/apk/debug/app-debug.apk`. It is signed with Android's standard debug key and can be installed with:
|
|
|
|
```sh
|
|
adb install -r app/build/outputs/apk/debug/app-debug.apk
|
|
```
|
|
|
|
## Scope
|
|
|
|
This is a dependency-free vertical slice rendered through a custom Android Canvas view. It is intended for gameplay evaluation on phones and tablets, not as a content-complete commercial release.
|