Add side-scrolling shooter systems design
This commit is contained in:
530
DESIGN.md
Normal file
530
DESIGN.md
Normal file
@@ -0,0 +1,530 @@
|
|||||||
|
# Side-Scrolling Shooter Systems Design
|
||||||
|
|
||||||
|
This document captures systems that can be prepared before the game jam topic is known. It avoids theme, story, enemy names, weapon names, and visual commitments. All content-specific choices should live in data files, scene resources, or exported Godot properties so the final topic can reskin and rebalance the game without changing core systems.
|
||||||
|
|
||||||
|
## Design Goals
|
||||||
|
|
||||||
|
- Keep gameplay systems modular and data-driven.
|
||||||
|
- Separate content from behavior wherever practical.
|
||||||
|
- Allow each mission to define its own visual layers, music, enemy waves, boss, shop offer, rewards, and choreographed sequences.
|
||||||
|
- Support a fixed side-scrolling camera path with authored speed changes.
|
||||||
|
- Preserve enough flexibility for a serious, comic, abstract, horror, cute, mechanical, biological, fantasy, or surreal jam theme.
|
||||||
|
|
||||||
|
## Project Organization
|
||||||
|
|
||||||
|
Use the repository root as a Godot 4 .NET project.
|
||||||
|
|
||||||
|
- `project.godot` is the Godot project entrypoint.
|
||||||
|
- `scenes/` contains playable and reusable Godot scenes.
|
||||||
|
- `scripts/` contains C# scripts paired with scenes.
|
||||||
|
- `assets/` contains sprites, audio, fonts, tile sets, particles, and animation data.
|
||||||
|
- `addons/` contains third-party Godot plugins if needed.
|
||||||
|
- `build/` contains local export output and should stay uncommitted unless a release workflow requires it.
|
||||||
|
|
||||||
|
Recommended scene and script pairs:
|
||||||
|
|
||||||
|
- `scenes/game/GameRoot.tscn` with `scripts/game/GameRoot.cs`
|
||||||
|
- `scenes/level/LevelRunner.tscn` with `scripts/level/LevelRunner.cs`
|
||||||
|
- `scenes/hero/Hero.tscn` with `scripts/hero/HeroController.cs`
|
||||||
|
- `scenes/enemies/EnemyActor.tscn` with `scripts/enemies/EnemyActor.cs`
|
||||||
|
- `scenes/weapons/Projectile.tscn` with `scripts/weapons/Projectile.cs`
|
||||||
|
- `scenes/collectibles/Collectible.tscn` with `scripts/collectibles/Collectible.cs`
|
||||||
|
- `scenes/ui/Shop.tscn` with `scripts/ui/ShopController.cs`
|
||||||
|
|
||||||
|
## Data-Driven Content
|
||||||
|
|
||||||
|
Prefer Godot resources or plain C# definition classes for tunable game content. The final jam topic should mainly add or edit these definitions.
|
||||||
|
|
||||||
|
- `MissionDefinition`: level route, parallax sets, encounter schedule, boss, music, intro/outro choreographies, victory type rules, shop options.
|
||||||
|
- `LevelLayerDefinition`: texture set, scroll factor, repeat mode, transition rule, visibility window, optional animation.
|
||||||
|
- `CameraPathDefinition`: path points, speed curve, easing, gameplay bounds, boss lock behavior.
|
||||||
|
- `EnemyTypeDefinition`: composed sprite parts, health, collision bounds, score, behaviors, projectile patterns, collectible drop table.
|
||||||
|
- `EnemyClusterDefinition`: enemy type references, spawn timings, spawn anchors, cluster completion reward.
|
||||||
|
- `CollectibleDefinition`: category, pickup behavior, value, visuals, sound, persistence rule.
|
||||||
|
- `WeaponDefinition`: firing cadence, projectile count, damage, speed, collision behavior, seeking rules, level scaling.
|
||||||
|
- `SquadronMateTypeDefinition`: formation rule, spacing, movement smoothing, targeting behavior, visuals.
|
||||||
|
- `SpecialWeaponDefinition`: initial ammo, ammo pickup amount, projectile behavior, damage rule, invulnerability or pull effects.
|
||||||
|
|
||||||
|
## Level System
|
||||||
|
|
||||||
|
The level is a timeline-driven side-scrolling space. The camera follows a fixed authored path while the world layers, enemy spawns, and choreographies react to mission time and camera progress.
|
||||||
|
|
||||||
|
### Layers
|
||||||
|
|
||||||
|
Use separate layer groups:
|
||||||
|
|
||||||
|
- Background parallax layers without collision.
|
||||||
|
- Interactive elements layer with enemies, hazards, boss parts, destructible objects, collectible spawns, and terrain used by special weapons.
|
||||||
|
- Foreground parallax layers without collision.
|
||||||
|
|
||||||
|
Each parallax layer should support:
|
||||||
|
|
||||||
|
- Independent scroll factor.
|
||||||
|
- Repeating textures or scene chunks.
|
||||||
|
- Optional animation.
|
||||||
|
- Optional transition into a different layer set as the mission progresses.
|
||||||
|
- Visibility windows based on mission progress.
|
||||||
|
|
||||||
|
Layer transitions should support crossfade, slide-in replacement, hard cut during choreo, or hidden swap behind foreground cover. The transition type should be data, not hardcoded.
|
||||||
|
|
||||||
|
### Repeating Level Content
|
||||||
|
|
||||||
|
Parallax layers may repeat indefinitely. Interactive content should not repeat blindly; it should be scheduled by the mission definition so enemy clusters and pickups stay intentional.
|
||||||
|
|
||||||
|
Reusable repeating layer options:
|
||||||
|
|
||||||
|
- Texture-based repeat for simple skies, stars, clouds, tunnels, smoke, speed lines, or abstract fields.
|
||||||
|
- Chunk-based repeat for large authored sections.
|
||||||
|
- Procedural variation by selecting from a small set of compatible chunks.
|
||||||
|
|
||||||
|
### Camera Path
|
||||||
|
|
||||||
|
The player does not control camera movement. The mission controls:
|
||||||
|
|
||||||
|
- Path position over time.
|
||||||
|
- Speed changes.
|
||||||
|
- Gameplay bounds around the camera.
|
||||||
|
- Slowdowns or stops for boss intros.
|
||||||
|
- Acceleration during escape or chase sections.
|
||||||
|
- Transition windows for layer changes and music cues.
|
||||||
|
|
||||||
|
The hero should move inside a camera-relative play area. Enemy spawns can be anchored to the camera, world path, screen edges, or authored scene markers.
|
||||||
|
|
||||||
|
## Enemy Types
|
||||||
|
|
||||||
|
An enemy type is a reusable actor definition. It may be a free-moving spawned enemy or a level-attached interactive element.
|
||||||
|
|
||||||
|
Enemy types consist of composed sprite parts. Each part may define:
|
||||||
|
|
||||||
|
- Local offset and orientation.
|
||||||
|
- Sprite or animation.
|
||||||
|
- Optional hitbox.
|
||||||
|
- Optional hurtbox.
|
||||||
|
- Optional weapon mount.
|
||||||
|
- Optional destruction effect.
|
||||||
|
- Optional behavior track.
|
||||||
|
|
||||||
|
The whole enemy owns shared state:
|
||||||
|
|
||||||
|
- Health.
|
||||||
|
- Score value.
|
||||||
|
- Cluster membership.
|
||||||
|
- Drop table.
|
||||||
|
- Death behavior.
|
||||||
|
- Whether it is free-moving or attached to the level layer.
|
||||||
|
|
||||||
|
### Enemy Behaviors
|
||||||
|
|
||||||
|
A behavior is one serial sequence or many parallel sequences of timed events.
|
||||||
|
|
||||||
|
Supported event categories:
|
||||||
|
|
||||||
|
- Traverse a position path.
|
||||||
|
- Traverse an orientation path.
|
||||||
|
- Wait.
|
||||||
|
- Fire projectile pattern.
|
||||||
|
- Change speed.
|
||||||
|
- Change animation.
|
||||||
|
- Enable or disable hitboxes.
|
||||||
|
- Spawn child enemy or projectile.
|
||||||
|
- Move relative to camera.
|
||||||
|
- Move relative to level path.
|
||||||
|
- Trigger VFX or SFX.
|
||||||
|
- Signal cluster state.
|
||||||
|
|
||||||
|
Behavior authoring should allow both:
|
||||||
|
|
||||||
|
- Serial tracks where event B starts after event A.
|
||||||
|
- Parallel tracks where movement, aiming, firing, animation, and part transforms run together.
|
||||||
|
|
||||||
|
This can be implemented as composable behavior nodes, C# definition data, Godot animation tracks, or a hybrid. The key rule is that content creators can assemble behavior without rewriting the enemy runtime.
|
||||||
|
|
||||||
|
## Enemy Clusters
|
||||||
|
|
||||||
|
An enemy cluster is a mission-scheduled encounter group. It contains several instances of one or more enemy types spawned at different intervals.
|
||||||
|
|
||||||
|
A cluster definition should include:
|
||||||
|
|
||||||
|
- Cluster id.
|
||||||
|
- Spawn schedule.
|
||||||
|
- Enemy type references.
|
||||||
|
- Spawn positions or anchors.
|
||||||
|
- Optional path references.
|
||||||
|
- Optional shared behavior parameters.
|
||||||
|
- Completion reward.
|
||||||
|
|
||||||
|
Destroying all enemies in a cluster awards points. Enemies that leave the play area without being destroyed should follow a cluster-specific rule:
|
||||||
|
|
||||||
|
- Count as escaped and prevent completion reward.
|
||||||
|
- Count as resolved and still allow completion reward.
|
||||||
|
- Respawn or loop until destroyed.
|
||||||
|
|
||||||
|
Default rule: escaped enemies prevent the cluster completion reward. This keeps cluster rewards meaningful, but the mission can override it for casual or cinematic waves.
|
||||||
|
|
||||||
|
## Collectibles
|
||||||
|
|
||||||
|
Collectibles are spawned by enemies, clusters, scripted mission events, hidden triggers, or boss phases. Pickups should use a shared collection interface so hero, inventory, score, and mission systems are not tightly coupled to pickup scenes.
|
||||||
|
|
||||||
|
Collectible categories:
|
||||||
|
|
||||||
|
- Points.
|
||||||
|
- Primary weapon.
|
||||||
|
- Secondary weapon.
|
||||||
|
- Clear screen.
|
||||||
|
- Shield charge.
|
||||||
|
- Special weapon ammunition.
|
||||||
|
- Squadron mate of a specific type.
|
||||||
|
|
||||||
|
Primary weapon pickup rule:
|
||||||
|
|
||||||
|
- Fill an empty primary weapon slot if one exists.
|
||||||
|
- Otherwise replace the currently selected primary weapon slot.
|
||||||
|
|
||||||
|
Secondary weapon pickup rule:
|
||||||
|
|
||||||
|
- Replace the current secondary weapon.
|
||||||
|
|
||||||
|
Clear screen pickup rule:
|
||||||
|
|
||||||
|
- Destroy or neutralize normal enemy projectiles.
|
||||||
|
- Damage or destroy eligible non-boss enemies.
|
||||||
|
- Avoid deleting bosses unless a specific boss phase says it can.
|
||||||
|
|
||||||
|
Persistent pickup rule:
|
||||||
|
|
||||||
|
- The hero keeps collectibles at mission end.
|
||||||
|
- The hero loses all collectibles on death.
|
||||||
|
|
||||||
|
## Hero
|
||||||
|
|
||||||
|
The hero is the player's main actor. It owns mission-persistent inventory and mission-local survival state.
|
||||||
|
|
||||||
|
Hero state:
|
||||||
|
|
||||||
|
- Level.
|
||||||
|
- Points.
|
||||||
|
- Point thresholds for level up.
|
||||||
|
- Fixed number of primary weapon slots.
|
||||||
|
- Current primary weapon slot.
|
||||||
|
- Current secondary weapon.
|
||||||
|
- Current special weapon and ammo.
|
||||||
|
- Shield charges.
|
||||||
|
- Squadron mate list.
|
||||||
|
- Retry count.
|
||||||
|
|
||||||
|
Default survival rules:
|
||||||
|
|
||||||
|
- The hero starts with 3 shield charges.
|
||||||
|
- Getting hit consumes 1 shield charge.
|
||||||
|
- Leveling up adds 1 shield charge.
|
||||||
|
- A hit with 0 shield charges kills the hero.
|
||||||
|
- The hero starts with 3 retry counts.
|
||||||
|
- Rebirth consumes 1 retry.
|
||||||
|
- Game over occurs when retries are exhausted.
|
||||||
|
- Death removes all collectibles and squadron mates.
|
||||||
|
- Mission victory persists kept collectibles into the next mission.
|
||||||
|
|
||||||
|
Point thresholds should be configurable per game mode or mission set. The jam topic may change score pacing, so level-up curves should not be hardcoded.
|
||||||
|
|
||||||
|
## Squadron Mates
|
||||||
|
|
||||||
|
Squadron mates are support actors owned by the hero.
|
||||||
|
|
||||||
|
Rules:
|
||||||
|
|
||||||
|
- Maximum active squadron mates: 4.
|
||||||
|
- 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.
|
||||||
|
|
||||||
|
Changing squadron mate type should preserve count and replace formation behavior. The visual style can change with the final topic.
|
||||||
|
|
||||||
|
### Squadron Mate Types
|
||||||
|
|
||||||
|
Hug:
|
||||||
|
|
||||||
|
- Mates stay close together on the hero's nose.
|
||||||
|
- Useful for high forward damage and focused defense.
|
||||||
|
|
||||||
|
Orbit:
|
||||||
|
|
||||||
|
- Mates orbit around the hero.
|
||||||
|
- Mate id determines phase offset.
|
||||||
|
- Useful for defensive coverage.
|
||||||
|
|
||||||
|
Line-Formation:
|
||||||
|
|
||||||
|
- Mates form equidistant positions above and below the hero.
|
||||||
|
- Useful for vertical coverage.
|
||||||
|
|
||||||
|
V-Formation:
|
||||||
|
|
||||||
|
- Mates form equidistant positions behind and above or behind and below the hero.
|
||||||
|
- Useful for broad forward coverage.
|
||||||
|
|
||||||
|
Follow:
|
||||||
|
|
||||||
|
- Mates fly toward the front of the oldest enemy on screen.
|
||||||
|
- Useful for aggressive targeting.
|
||||||
|
|
||||||
|
## Hero And Squadron Firing
|
||||||
|
|
||||||
|
The hero and all squadron mates:
|
||||||
|
|
||||||
|
- Fire the current primary weapon forward.
|
||||||
|
- Fire the secondary weapon in its configured direction.
|
||||||
|
|
||||||
|
Firing ownership matters for balance. Each shot should know whether it came from the hero or a squadron mate so damage, effects, score credit, and visual scale can be tuned separately.
|
||||||
|
|
||||||
|
## Primary Weapons
|
||||||
|
|
||||||
|
Primary weapons have infinite ammo and are influenced by hero level.
|
||||||
|
|
||||||
|
Primary weapon families:
|
||||||
|
|
||||||
|
- Ballistic many-fast-weak shots.
|
||||||
|
- Ballistic few-slow-strong shots.
|
||||||
|
- Forward-only projectiles.
|
||||||
|
- Seeking projectiles that target the nearest enemy.
|
||||||
|
- Laser beams that appear and disappear while filling an entire row.
|
||||||
|
- Grenade clusters that launch fast, slow down, then create a large explosion when stopped.
|
||||||
|
- Projectile-consuming shots that collide with and consume enemy projectiles.
|
||||||
|
|
||||||
|
Primary weapon level scaling may affect:
|
||||||
|
|
||||||
|
- Damage.
|
||||||
|
- Fire cadence.
|
||||||
|
- Projectile count.
|
||||||
|
- Projectile spread.
|
||||||
|
- Projectile size.
|
||||||
|
- Seeking strength.
|
||||||
|
- Projectile lifetime.
|
||||||
|
- Ability to consume enemy projectiles.
|
||||||
|
|
||||||
|
## Secondary Weapons
|
||||||
|
|
||||||
|
Secondary weapons have infinite ammo and always fire from the hero and squadron mates. Their projectiles do not collide with enemy projectiles.
|
||||||
|
|
||||||
|
Secondary weapon types:
|
||||||
|
|
||||||
|
- Vertical: fire upward when on the top half of the screen, or downward when on the bottom half.
|
||||||
|
- Diagonal: fire toward the positive diagonal when on the top half of the screen, or toward the negative diagonal when on the bottom half.
|
||||||
|
- Backward: fire backward.
|
||||||
|
|
||||||
|
Secondary weapons should support additional projectile counts depending on type. The final topic can turn these into exhaust blasts, magic sparks, drones, thrown tools, sound waves, or any other theme.
|
||||||
|
|
||||||
|
## Special Weapons
|
||||||
|
|
||||||
|
Special weapons are chosen in the shop before a mission. They have initial ammo and may be replenished by collectibles.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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 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 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.
|
||||||
|
|
||||||
|
## Shop
|
||||||
|
|
||||||
|
The shop appears before each mission. Its required function is choosing one special weapon type for the next mission.
|
||||||
|
|
||||||
|
The shop can later support:
|
||||||
|
|
||||||
|
- Previewing ammo count.
|
||||||
|
- 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.
|
||||||
|
|
||||||
|
## Game Loop
|
||||||
|
|
||||||
|
Top-level flow:
|
||||||
|
|
||||||
|
1. Logo.
|
||||||
|
2. Intro choreography, skippable.
|
||||||
|
3. Menu with start and controls.
|
||||||
|
4. Mission loop.
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Mission Loop
|
||||||
|
|
||||||
|
Per-mission flow:
|
||||||
|
|
||||||
|
1. 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.
|
||||||
|
5. Run camera path, level timeline, enemy clusters, collectibles, and player control.
|
||||||
|
6. Queue boss music.
|
||||||
|
7. Play boss-specific intro choreography.
|
||||||
|
8. Run boss fight.
|
||||||
|
9. Mute music and play boss destruction VFX.
|
||||||
|
10. Queue victory music.
|
||||||
|
11. Play generic mission outro choreography.
|
||||||
|
12. Fade out.
|
||||||
|
|
||||||
|
Mission results should determine:
|
||||||
|
|
||||||
|
- Continue to next mission.
|
||||||
|
- Trigger rebirth retry.
|
||||||
|
- Trigger game over.
|
||||||
|
- Trigger normal victory.
|
||||||
|
- Trigger secret victory.
|
||||||
|
- Submit or display highscore.
|
||||||
|
|
||||||
|
## Bosses
|
||||||
|
|
||||||
|
Bosses are specialized enemy clusters with stronger choreography and phase control.
|
||||||
|
|
||||||
|
Boss design should support:
|
||||||
|
|
||||||
|
- Composed sprite parts.
|
||||||
|
- Separate health pools per part or shared health.
|
||||||
|
- Phase transitions.
|
||||||
|
- Destructible mounts.
|
||||||
|
- Attached projectiles or hazards.
|
||||||
|
- Boss-specific intro.
|
||||||
|
- Boss-specific destruction VFX.
|
||||||
|
- Boss music queue.
|
||||||
|
|
||||||
|
Bosses should use the same behavior event model as enemies where possible. Add boss-specific code only for phase orchestration that normal enemies cannot express cleanly.
|
||||||
|
|
||||||
|
## Collision Model
|
||||||
|
|
||||||
|
Recommended collision categories:
|
||||||
|
|
||||||
|
- Hero body.
|
||||||
|
- Squadron mate body.
|
||||||
|
- Hero projectile.
|
||||||
|
- Hero projectile that consumes enemy projectiles.
|
||||||
|
- Enemy body.
|
||||||
|
- Enemy weak point.
|
||||||
|
- Enemy projectile.
|
||||||
|
- Enemy particle.
|
||||||
|
- Interactive hazard.
|
||||||
|
- Collectible.
|
||||||
|
- Terrain contour for special weapons.
|
||||||
|
|
||||||
|
Keep parallax background and foreground layers collision-free.
|
||||||
|
|
||||||
|
## Scoring
|
||||||
|
|
||||||
|
Scoring sources:
|
||||||
|
|
||||||
|
- Point collectibles.
|
||||||
|
- Enemy destruction.
|
||||||
|
- Cluster completion.
|
||||||
|
- Boss phases.
|
||||||
|
- Mission victory.
|
||||||
|
- Secret victory.
|
||||||
|
|
||||||
|
The score system should publish events for UI, highscore, level-up thresholds, and mission results.
|
||||||
|
|
||||||
|
## Persistence
|
||||||
|
|
||||||
|
Persist only what needs to survive across missions or game sessions.
|
||||||
|
|
||||||
|
Mission-to-mission state:
|
||||||
|
|
||||||
|
- Hero level.
|
||||||
|
- Points.
|
||||||
|
- Primary weapon slots.
|
||||||
|
- Current primary weapon slot.
|
||||||
|
- Current secondary weapon.
|
||||||
|
- Current special weapon ammo if the game mode keeps it.
|
||||||
|
- Shield charges.
|
||||||
|
- Squadron mate count and type.
|
||||||
|
- Retry count.
|
||||||
|
|
||||||
|
Run-ending highscore state:
|
||||||
|
|
||||||
|
- Player name or initials.
|
||||||
|
- Score.
|
||||||
|
- Mission reached.
|
||||||
|
- Victory type.
|
||||||
|
- Optional modifiers.
|
||||||
|
|
||||||
|
## Testing Strategy
|
||||||
|
|
||||||
|
For a one-month jam, keep tests focused on systems that can break content quickly.
|
||||||
|
|
||||||
|
High-value unit tests:
|
||||||
|
|
||||||
|
- Level-up thresholds add shield charges.
|
||||||
|
- Primary weapon pickup fills empty slot before replacing current slot.
|
||||||
|
- Secondary weapon pickup replaces current weapon.
|
||||||
|
- Squadron mate pickup changes type while preserving count up to 4.
|
||||||
|
- Death clears collectibles and consumes retry when available.
|
||||||
|
- Game over triggers when retry count is exhausted.
|
||||||
|
- Cluster reward is awarded only when completion rules are satisfied.
|
||||||
|
- Special weapon ammo pickups replenish the selected special weapon.
|
||||||
|
|
||||||
|
High-value play tests:
|
||||||
|
|
||||||
|
- Start game and enter first mission.
|
||||||
|
- Pick a special weapon in the shop.
|
||||||
|
- Complete a small enemy cluster and receive points.
|
||||||
|
- Collect each collectible type.
|
||||||
|
- Die with shield charges and without shield charges.
|
||||||
|
- Rebirth and game over.
|
||||||
|
- Reach boss intro, boss destruction VFX, and mission outro.
|
||||||
|
|
||||||
|
## Open Topic Customization Points
|
||||||
|
|
||||||
|
When the jam topic is announced, decide these late:
|
||||||
|
|
||||||
|
- Visual identity of hero, enemies, projectiles, collectibles, and UI.
|
||||||
|
- Names and flavor text.
|
||||||
|
- Mission count and mission themes.
|
||||||
|
- Enemy sprite composition style.
|
||||||
|
- Background and foreground layer art.
|
||||||
|
- Music style.
|
||||||
|
- Sound effect vocabulary.
|
||||||
|
- Exact weapon names.
|
||||||
|
- Special victory requirement.
|
||||||
|
- Score balance.
|
||||||
|
- Difficulty curve.
|
||||||
|
- Boss concepts.
|
||||||
|
|
||||||
|
Do not decide these early unless they help prove a system.
|
||||||
|
|
||||||
|
## First Implementation Slice
|
||||||
|
|
||||||
|
The first playable slice should be intentionally small:
|
||||||
|
|
||||||
|
1. One mission definition.
|
||||||
|
2. One repeating background layer.
|
||||||
|
3. One repeating foreground layer.
|
||||||
|
4. One fixed camera path with speed changes.
|
||||||
|
5. One hero with movement, shield charges, points, and primary fire.
|
||||||
|
6. One primary weapon.
|
||||||
|
7. One secondary weapon.
|
||||||
|
8. One special weapon selected through a minimal shop.
|
||||||
|
9. One enemy type with a serial behavior.
|
||||||
|
10. One enemy type with parallel movement and firing behavior.
|
||||||
|
11. One enemy cluster with completion reward.
|
||||||
|
12. One collectible for points.
|
||||||
|
13. One collectible for squadron mate.
|
||||||
|
14. One boss placeholder with intro and destruction sequence.
|
||||||
|
15. One mission outro and highscore entry.
|
||||||
|
|
||||||
|
This slice proves the game loop and leaves almost all theme content open.
|
||||||
Reference in New Issue
Block a user