refactoring app name to spacetris and new icon
This commit is contained in:
174
cooperate_mode_plan.md
Normal file
174
cooperate_mode_plan.md
Normal file
@ -0,0 +1,174 @@
|
||||
# Spacetris — COOPERATE Mode (Two-Player Co-Op)
|
||||
## VS Code Copilot AI Agent Prompt
|
||||
|
||||
> Implement a new **COOPERATE** play mode for Spacetris.
|
||||
> This is a **two-player cooperative mode** with a shared board and synchronized line clears.
|
||||
|
||||
---
|
||||
|
||||
## 1. Mode Overview
|
||||
|
||||
### Mode Name
|
||||
- **COOPERATE**
|
||||
|
||||
### Core Concept
|
||||
- Two players play **together**, not versus.
|
||||
- One shared game board with **double width**.
|
||||
- Each player is responsible for **their own half** of the board.
|
||||
- A line clears **only when BOTH halves of the same row are full**.
|
||||
|
||||
---
|
||||
|
||||
## 2. Grid Layout
|
||||
|
||||
- Grid width: **20 columns**
|
||||
- Grid height: **standard height** (same as Endless/Challenge)
|
||||
- Column ownership:
|
||||
- Player 1 → columns `0–9` (left half)
|
||||
- Player 2 → columns `10–19` (right half)
|
||||
|
||||
### Visual Requirements
|
||||
- Draw a **vertical divider line** between columns 9 and 10.
|
||||
- Divider should be subtle but always visible.
|
||||
|
||||
---
|
||||
|
||||
## 3. Line Clear Rule (Critical)
|
||||
|
||||
A row clears **only if**:
|
||||
- Player 1 half of the row is completely filled
|
||||
- AND Player 2 half of the row is completely filled
|
||||
|
||||
If only one side is filled:
|
||||
- The row **does NOT clear**
|
||||
- Provide visual feedback:
|
||||
- Glow or pulse on the completed half
|
||||
- Optional hint on the incomplete half
|
||||
|
||||
---
|
||||
|
||||
## 4. Player Mechanics
|
||||
|
||||
### Piece Streams
|
||||
- Each player has their **own active piece**
|
||||
- Each player has their **own NEXT queue**
|
||||
- Both queues use the **same RNG seed** for fairness
|
||||
|
||||
### Controls
|
||||
- Player 1 controls only the left half
|
||||
- Player 2 controls only the right half
|
||||
- Players cannot move or rotate pieces into the other player’s half
|
||||
|
||||
---
|
||||
|
||||
## 5. Gravity & Timing
|
||||
|
||||
- Gravity applies globally (same speed for both)
|
||||
- Lock delay is handled **per player**
|
||||
- One player locking does NOT block the other player
|
||||
|
||||
---
|
||||
|
||||
## 6. Failure Conditions
|
||||
|
||||
Recommended:
|
||||
- Game over occurs only when **both players top out**
|
||||
|
||||
Alternative (optional):
|
||||
- If either player tops out → shared loss
|
||||
|
||||
---
|
||||
|
||||
## 7. Scoring System
|
||||
|
||||
- Score is **shared**
|
||||
- Line clears grant:
|
||||
- Base score
|
||||
- Cooperative bonus if both halves complete simultaneously
|
||||
- Combo bonus for consecutive cooperative clears
|
||||
|
||||
No competitive scoring between players.
|
||||
|
||||
---
|
||||
|
||||
## 8. UI / HUD Requirements
|
||||
|
||||
- Two NEXT panels (one per player)
|
||||
- Shared score display
|
||||
- Shared level display
|
||||
- Visual feedback for:
|
||||
- Half-filled rows
|
||||
- Successful cooperative clears
|
||||
|
||||
Optional:
|
||||
- SYNC meter for advanced cooperative mechanics (future)
|
||||
|
||||
---
|
||||
|
||||
## 9. Data Model Suggestions
|
||||
|
||||
```cpp
|
||||
enum class PlayerSide {
|
||||
Left,
|
||||
Right
|
||||
};
|
||||
|
||||
struct PlayerState {
|
||||
PlayerSide side;
|
||||
ActivePiece piece;
|
||||
bool isAlive;
|
||||
};
|
||||
|
||||
struct Cell {
|
||||
bool occupied;
|
||||
PlayerSide owner;
|
||||
};
|
||||
````
|
||||
|
||||
---
|
||||
|
||||
## 10. Line Clear Algorithm (Guidance)
|
||||
|
||||
When checking for full rows:
|
||||
|
||||
1. For each row:
|
||||
|
||||
* Check columns `0–9` for full (Player 1)
|
||||
* Check columns `10–19` for full (Player 2)
|
||||
2. Only if **both are full**, mark row for clearing
|
||||
3. Clear row normally and apply gravity to both halves
|
||||
4. Update shared score and combos
|
||||
|
||||
---
|
||||
|
||||
## 11. Constraints
|
||||
|
||||
* COOPERATE is a separate play mode
|
||||
* Do NOT reuse versus or garbage mechanics
|
||||
* Focus on clarity, fairness, and readability
|
||||
* Keep implementation modular (easy to expand later)
|
||||
|
||||
---
|
||||
|
||||
## 12. Acceptance Criteria
|
||||
|
||||
* Two players can play simultaneously on one board
|
||||
* Each player fills only their half
|
||||
* Lines clear only when both halves are filled
|
||||
* Visual feedback clearly shows cooperative dependency
|
||||
* Mode integrates cleanly into the main menu
|
||||
|
||||
---
|
||||
|
||||
## 13. Optional Future Hooks (Do Not Implement Now)
|
||||
|
||||
* Assist blocks
|
||||
* Shared power-ups
|
||||
* Cross-half interactions
|
||||
* Online co-op
|
||||
|
||||
---
|
||||
|
||||
## Short Summary for the Agent
|
||||
|
||||
Implement a two-player COOPERATE mode with a 20-column board split into two halves. Each player fills their half independently. A line clears only when both halves of the same row are full. Score, level, and progress are shared. Add clear visual feedback and a divider between player halves.
|
||||
Reference in New Issue
Block a user