From ed703d91f49e6298180383203d2d74af180c825c Mon Sep 17 00:00:00 2001 From: Frank Tovar Date: Tue, 21 Apr 2026 17:37:04 +0200 Subject: [PATCH] tech design --- AGENTS.windows.md | 4 ++ DESIGN.md | 28 ++++++------- ROUGH-DESIGN.md | 101 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 118 insertions(+), 15 deletions(-) create mode 100644 AGENTS.windows.md create mode 100644 ROUGH-DESIGN.md diff --git a/AGENTS.windows.md b/AGENTS.windows.md new file mode 100644 index 0000000..bc6c2d0 --- /dev/null +++ b/AGENTS.windows.md @@ -0,0 +1,4 @@ +# Windows-specific rules + +- This is a Windows environment, WSL is not installed (i.e. sed is not available). You're running under PowerShell 7.6.0. Due to platform restrictions, file deletions are not possible. Replacing the entire file content via a context diff is a viable alternative. +- PowerShell doesn't support bash-style heredocs. If complex scripts need to be executed, consider using python. Run Python code using python -c with inline commands instead of python - <<'PY'. diff --git a/DESIGN.md b/DESIGN.md index 540dd62..122b9c5 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -195,6 +195,10 @@ Persistent pickup rule: - The hero keeps collectibles at mission end. - The hero loses all collectibles on death. +Squadron mate rule: +- If the collectible matches the current type, increase mate count (capped at max) +- Otherwise change the current type + ## Hero The hero is the player's main actor. It owns mission-persistent inventory and mission-local survival state. @@ -236,8 +240,8 @@ Rules: - All active mates use the same type. - The type is determined by the last collected squadron mate pickup. - Mates maintain relative position according to type. -- Mates collide with and consume enemy particles. -- Mates take no damage from consuming enemy particles. +- Mates collide with and consume enemy projectiles. +- Mates take no damage from consuming enemy projectiles. Changing squadron mate type should preserve count and replace formation behavior. The visual style can change with the final topic. @@ -262,7 +266,7 @@ Line-Formation: V-Formation: - Mates form equidistant positions behind and above or behind and below the hero. -- Useful for broad forward coverage. +- Useful for tight maneuvers. Follow: @@ -282,7 +286,7 @@ Firing ownership matters for balance. Each shot should know whether it came from Primary weapons have infinite ammo and are influenced by hero level. -Primary weapon families: +Primary weapon properties: - Ballistic many-fast-weak shots. - Ballistic few-slow-strong shots. @@ -324,16 +328,13 @@ Special weapon types: - Bomb: gravity affects it; it explodes once on impact; lots of ammo. - Crawler: gravity affects it; it crawls forward following terrain contour; it explodes once on enemy impact; moderate ammo. - Napalm: gravity affects it; it creates a huge horizontal spread and 1 second burn on impact; moderate ammo. -- Black Hole: grants 3 seconds of invulnerability, pulls enemies, and is destroyed upon player impact; few ammo. +- Black Hole: grants 3 seconds of invulnerability, pulls enemies which are destroyed upon player impact; few ammo. -Terrain interaction should be optional per mission. Missions without solid terrain can still use Bomb and Napalm with screen-bound impact rules, while Crawler may be disabled in that mission's shop. - -## Enemy Projectiles And Particles +## Enemy Projectiles Enemy offensive objects should be separated by gameplay role: -- Enemy projectile: damages the hero, may be consumed by eligible primary weapons. -- Enemy particle: can be consumed by squadron mates without damaging them. +- Enemy projectile: damages the hero, may be consumed by eligible primary weapons or squadron mates without damaging them. - Enemy hazard: part of interactive level content, may damage the hero and may ignore projectile-clear effects. This separation allows the final topic to change visuals without changing collision rules. @@ -348,7 +349,6 @@ The shop can later support: - Showing mission hint text. - Showing currently kept collectibles. - Locking special weapons that do not fit the mission. -- Secret victory requirements. The first implementation should stay small: choose one special weapon, confirm, enter mission intro. @@ -363,13 +363,13 @@ Top-level flow: 5. Rebirth retry, game over, normal victory, or secret victory choreography. 6. Highscore. -Choreography means an authored non-interactive or lightly interactive sequence. It may move actors, play animations, change music, show text, or transition scenes. Choreography should be skippable where appropriate. +Choreography means an authored non-interactive sequence. It may move actors, play animations, change music, show text, or transition scenes. Choreography should be skippable where appropriate. ## Mission Loop Per-mission flow: -1. Open shop for choosing one special weapon type for the next mission. +1. Show next mission details and open shop for choosing one special weapon type for the next mission. 2. Queue mission-specific music. 3. Play mission-specific intro choreography. 4. Fade to actual gameplay. @@ -460,8 +460,6 @@ Run-ending highscore state: - Player name or initials. - Score. - Mission reached. -- Victory type. -- Optional modifiers. ## Testing Strategy diff --git a/ROUGH-DESIGN.md b/ROUGH-DESIGN.md new file mode 100644 index 0000000..df28c99 --- /dev/null +++ b/ROUGH-DESIGN.md @@ -0,0 +1,101 @@ + I plan to participate in a gamejam, duration of one month. I want do do a side scrolling shooter in godot. Since the game jam topic is not yet known, I can't do a proper content design. But I can prepare a systems design. Please create a DESIGN.md page with my topics, and keep as many options open for when the final topic is known, so it can be customized. Here's what I want: + +# Level + +- multi-layered background parallax scrolling (without collision) +- interactive elements layer +- multi-layered foreground parallax scrolling (without collision) +- repeating +- might change as level progresses, need proper transition +- fixed camera path, varying speed + +# Enemy Types +- consist of composed sprites, each with an own behavior +- A behavior can be one serial or many parallel sequences of events (traverse position/orientation path, fire a projectile, etc.) +- either spawned and move freely, or part of the interactive elements layer of the level +- may belong to a cluster +- may spawn a collectible when destroyed + +# Enemy Clusters +- contain of several instances of several enemy types, spawned at different intervals +- destroying all enemies of a cluster awards points + +# Colllectibles +- Add points +- Primary weapon (fill empty slot, otherwise replace current slot) +- Secondary weapon (replace) +- Clear screen +- Shield charge +- Special weapon ammunition +- Squadron mate of a specific type + +# Hero +- Has a level, influencing primary weapon +- Collects points, point thresholds cause level up. +- Has fixed number of primary weapon slots, player can toggle current primary weapon +- Has initial number of shield charges (3). Getting hit reduces by one, leveling up increases by one. +- Dies when hit without shield charges +- Contains a max amount of squadron mates (4) +- Keeps collectibles at the end of a mission, begins next mission with kept collectibles +- Loses all collectibles on death +- Has 3 retry counts for rebirth after death. Game over when exhausted. + +# Squadron mates +- All of them are of the same type, the type is determined by the last collected one. +- Maintain relative position to another squadron mate depending on type +- Collide/consume with enemy particles, taking no damage + +## Types +- Hug: close together on hero's nose +- Orbit: circular motion around hero, mate id is phase offset +- Line-Formation: equidistant formation on top and on bottom of hero +- V-Formation: equidistant formation on back/top and on back/bottom of hero +- Follow: fly towards front of oldest enemy on screen + +# Heros and Squadron mates +- Fire current primary weapon forwards +- Fire secondary weapon to another direction + +# Primary weapons +- infinite ammo +- many/fast/weak or few/slow/strong ballistic, constant speed +- Flying only forward or seeking nearest enemy +- Laser, appear/disappear filling entire row +- Grenade cluster, fires fast, gets slower, big explosion on stop +- Possibility to collide and consume enemy projectiles + +# Secondary weapons +- infinite ammo +- Always fire forwards +- Projectiles don't collide with enemy projectiles +- Fire additional projectiles depending on type + +## Types +- Fire upwards if on top screen half, or downwards if on bottom screen half +- Fire upwards towards positive diagonal if on top screen half, or downwards towards negative diagonal if on bottom screen half +- Fire backwards + +# Special weapons +- Can be chosen in shop +- Have initial ammo, may be replenished by collectible + +## Special weapon types +- Bomb (gravity does its thing, explode once on impact). Lots of ammo. +- Crawler (gravity does its thing, crawls forwards following terrain contour, explodes once on enemy impact). Moderate ammo. +- Napalm (gravity does its thing, huge horizontal spread and 1s burn on impact). Moderate ammo. +- Black Hole (3s invulnerability period, pull enemies, destroyed upon impact with player). Few ammo. + +# Game loop +- Logo, intro choreo, can be skipped +- Menu (start/controls) +- Mission loops +- Rebirth retry / Game over / Normal victory / Secret victory choreo +- Highscore + +## Mission loop +- Shop for choosing one special weapon type for the next mission +- Queue mission specific music, play mission specific intro choreo +- Fade to actual gameplay +- Queue boss music, play boss specific intro choreo +- Mute music and play boss destruction vfx +- Queue victory music, play generic mission outro choreo and fade out