175 lines
3.8 KiB
Markdown
175 lines
3.8 KiB
Markdown
# 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.
|