Skip to content

feat: implement Arkanoid Power-Ups with temporary effect components #71

@salazarsebas

Description

@salazarsebas

Context

Arkanoid is already one of the clearest arcade examples in the repository, which makes it a better target than a non-existent Breakout example for demonstrating temporary gameplay modifiers.

Adding power-ups to Arkanoid would strengthen the example by showing how Cougr can model spawned pickups, temporary effects, and expiration-driven systems without changing the core genre or making the example unnecessarily broad.

Goal

Extend examples/arkanoid/ with power-up mechanics modeled through clear Cougr-style components and systems.

The implementation should demonstrate effect spawning, pickup handling, timed modifiers, and clean expiration behavior while preserving the existing gameplay loop.

Scope

In scope:

  • power-up spawn rules
  • pickup handling
  • temporary gameplay modifiers
  • expiration logic for timed effects
  • tests for effect lifecycle and gameplay interaction
  • README updates and workflow alignment if needed

Out of scope:

  • frontend or graphical effects
  • large progression systems or unlock trees
  • unrelated gameplay redesigns

Suggested Power-Ups

A first version can stay intentionally small. Good candidates include:

  • wider paddle
  • slower ball speed
  • extra life
  • multi-ball, only if it does not distort the example's scope too early

ECS Design Direction

Suggested components:

Component Fields Purpose
PowerUpComponent kind, position, active Represents a spawned pickup
ActiveEffectComponent effect_kind, remaining_ticks Represents an applied temporary effect
TimerComponent remaining_ticks Supports effect expiration

Suggested systems:

  • PowerUpSpawnSystem
  • PickupSystem
  • EffectApplicationSystem
  • EffectExpirationSystem

Tests

Add tests covering:

  • power-up spawn conditions
  • pickup resolution
  • effect application
  • effect expiration after the configured duration
  • interaction with existing Arkanoid gameplay state

Deliverables

  • implementation in examples/arkanoid/
  • tests covering the effect lifecycle
  • updated examples/arkanoid/README.md
  • workflow updates if needed

Acceptance Criteria

  • power-ups are modeled cleanly rather than hard-coded into unrelated gameplay logic
  • temporary effects apply and expire correctly
  • tests cover the main effect lifecycle and gameplay interaction
  • the example remains readable and useful as a Cougr reference
  • documentation and commands use wasm32v1-none

Validation Commands

cd examples/arkanoid
cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test
stellar contract build

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave program

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions