65 lines
2.8 KiB
Markdown
65 lines
2.8 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
|
|
```
|
|
|
|
Level 5 has a device-level acceptance bot. It drives the production `GameView`
|
|
through the same movement and jump inputs as the touch controls, sacrifices one
|
|
volunteer to the saw, verifies the retained body and pressure-plate door, then
|
|
reaches the goal. With an emulator or phone connected, run it with:
|
|
|
|
```sh
|
|
./gradlew connectedDebugAndroidTest \
|
|
-Pandroid.testInstrumentationRunnerArguments.class=com.projectsacrifice.game.LevelFivePlaythroughTest
|
|
```
|
|
|
|
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.
|