Features
- implemented
- to be added
Implemented
Features already working in the JavaScript version.
Game States
- Get Ready screen ("Press Fire To Begin")
- Gameplay state
- Game Over screen (final score + high score display)
- Pause / resume (P or ESC)
Player
- Player 1 ship with 8-directional movement (WASD / arrows / numpad)
- Screen-boundary movement clamping
- Health (100 HP) with red/green health bar above ship
- 3 lives system
- Invincibility flash on hit and on respawn
- Engine particle trail (20 particles per ship)
Weapons
- Single green laser (SPACE / on-screen A / B buttons), with fire-rate limit
- Laser upgrade grades: single → double → triple beam, via power-up unlocked by enemy-ship kills, HUD icon + progress bar
- Ninja stars: rotating projectile, destroys enemy ships (+50) and splits blood cells (N / on-screen X / Y buttons)
- Enemy blue laser fire
- Saw: melee weapon hovering in front of ship (E key / on-screen Y), cuts blood cells and enemy ships, invincibility while active; energy drains with use and requires a full recharge after burning out; HUD icon + energy bar
- Rockets: 5-rocket inventory (cap 10), hold-to-charge with power bar and score bonus, steerable up/down after launch (R/F keys or two on-screen thumbsticks), particle trail, HUD icon + count
- Ninja star / saw virus splitting: splits a green virus into 2 small viruses on hit (laser and rockets destroy it outright, no split)
Enemies & Obstacles
- Nano-bot enemy ship: right-to-left movement, 4-frame animation, fires back at player, respawns at random Y
- Blood cells: rotating, scroll with background, destroyable (blood splatter explosion)
- Bloodcell Count bar: game over when all blood cells are destroyed
- Green virus: tracks the player's Y while approaching from the right, then continues straight; deals contact damage; splits into 2 small viruses when hit by ninja star / saw
Power-Ups
- Life power-up: rotating collectible, grants +1 life (or full health if lives maxed)
- Health power-up (+50 HP), also fully recharges the saw
- Laser upgrade power-up (increments laser grade, capped at triple)
- Rocket power-up: real Rocket sprite floats in vertically with a wavy bob, grants +1 rocket (capped)
HUD & UI
- Lives display with ship icons
- Bloodcell Count status bar
- Score display (top centre)
- Level text (static "Level: 1")
- Timer display (counts up)
- FPS counter (toggle with F1)
- Credit text ("Antibody JS by Joe O'Regan")
- Controls / Info accordion panels on the page
- Weapon status boxes (Laser / Saw / Rocket) with icons and progress/ammo indicators
Scoring
- Score increments on enemy ship destroyed
- High score persisted in browser localStorage
- Score popup text at kill location, floats toward scoring player with fade-out
- Per-enemy point values (ship 25, blockage 15, boss 50, virus tiers)
Audio
- Sound FX: player laser, enemy laser, explosion, blood splash, power-up pickup, ninja star swoosh, saw loop
- All audio (music + FX) pauses and resumes together with the game pause
- Mute / unmute toggle (M)
- Music: 4 tracks ("The First Step", "Virus", "Blood Stream", "Blood Level")
Graphics & Effects
- Seamless scrolling background (dual-image wrap)
- Sprite animations via JSON sprite manifest with async preloading
- Explosion animation (fire) and blood splatter animation
- Player transparency flash effect
C++ Features to Implement
Features from the C++ original (AntibodyV3 Year 3 Project) not yet ported.
Game States & Screens
- Splash screens: title, creators, 3-page story
- Main menu (Story, 1 Player, 2 Player, Settings, High Scores, Quit) with mouse-driven buttons
- Settings menu (music on/off, fullscreen toggle)
- High Scores table screen (top 10)
- Enter Name screen after qualifying score
- Level intro / objective screens with random message generator
- Enemies / Power-ups / Story info screens
- Pause menu (Resume, Return to Main Menu)
- Level Complete screen
Player
- 2-Player mode: Player 2 ship with independent controls (arrow keys), health, lives and score
- Speed Boost (P1: F / P2: R) with HUD indicator
- Gamepad support: D-pad + analog stick (dead zone 8000), per-player pads
- Controller haptic / force feedback on hits
Weapons
- Per-player ninja-star kill-rate tracking (2-player mode)
Enemies & Obstacles
- Orange virus: tracks player, explodes on collision, approach warning message
- Blue virus: fires satellite projectiles, spawns orbiting satellites
- Large blood cell: stalker movement (chases small viruses)
- Small blood cell
- White blood cell: guardian, hunts small viruses
- Blockage walls: groups of 4 segments, only destructible by saw, warning message on spawn
- Enemy Boss: 100 HP, animated face, eye lasers, spawns viruses from mouth, dedicated health bar, spawns after 15 background scrolls
Power-Ups
- Checkpoint power-up (saves progress, restores health)
HUD & UI
- Countdown game timer (30s, flashing red at ≤5s) — JS timer currently counts up and does nothing
- Per-player scores, lives and weapon indicators in 2-player mode
- Speed Boost indicator text
- Boss health bar
- Ninja star kill-rate percentage
- Mini-map with enlarge/shrink toggle
- Random message displays: level intro, boss approach, blockage, player spawn
Scoring
- High score table (top 10 names + scores)
- Name entry for qualifying scores
Audio
- Music controls: play/pause, skip forward/back, current track name display
- Separate SFX per player (laser, ninja star)
- Virus-rip and dedicated rocket-launch SFX (rocket currently reuses the laser sound)
Levels & Progression
- 3 levels with increasing difficulty (enemy spawn limits per level)
- Start / middle / end background sequence
- Boss encounter after 15 background scrolls to complete a level
- Level progression to next level on boss defeat
Multiplayer
- Split-Screen Race Mode (2-player split-screen test case from C++ repo)
JavaScript Only Features
Features unique to this version, not present in the C++ original.
- Runs in the browser (HTML5 canvas, no install)
- High score persistence via localStorage (C++ used a highscore.txt file)
- On-screen touch controller (D-pad + A/B/X/Y + START + two rocket-steer thumbsticks), auto-shown on mobile devices only
- Vibration API haptics on mobile (hit / power-up collected)
- Web page wrapper: top navigation (Home / Antibody / Docs)
- Dark / light page theme toggle, persisted in localStorage
- Accordion Controls / Info panels
- MkDocs documentation site (this site)
- JSON sprite manifest with automatic preloading of all sprites
- Node/Express server with Socket.IO: connected-user list and chat messaging (foundation for online multiplayer)
- Online multiplayer / co-op over Socket.IO (server groundwork exists, gameplay networking not yet built)
- Server-side shared high scores (scores.json)