The last two days have been a lot of good, solid work – the kind of work where you make slow-but-steady progress. Rainboids has seen a lot of incremental improvements, including:
- Gameplay improvements
- Streamlining UI and fine-tuning the HUD
- Graphical enhancements
- Tremendous graphical performance gains using WebGL
- Completely new sound effects
- Complete overhauls of existing weapons
… just to name a few things.
Gameplay
The game plays much faster with better access to its weapons, offering a lot of variety in gameplay. Gameplay is more powerup-centric, with the shop and upgrades taking a bit of a backseat as all weapons and skills are now unlocked right out of the gate.
The goal with these design decisions was to empower the player to tailor the gameplay experience to their enjoyment and feel free to try new things and experiment. Enhancing replay-ability was a core tenet informing many design choices. That, and streamlining UI and HUD so that the game provides a steady-stream of action with minimal interruptions.
Graphics
Besides that, careful attention was paid to all the little details, especially visual details. The starfield got a lot of love, and there were some critical WebGL enhancements. The game now features a hybrid Canvas + WebGL architecture, utilizing WebGL for particles and the background starfield for big performance gains. This allows for more on-screen particles and bigger explosions and more effects. It helps tremendously with later waves when there’s a ton of action and many on-screen objects.
The biggest teller is the particle pool size where recycled particle objects are kept – we were able to bump the size from 600 to 2500, effectively quadrupling the max number of on-screen particles. All this without any apparent hit in performance. That’s all thanks to WebGL.
Game Balance
Balance is the name of the game, and there will be many more iterations needed to truly balance the difficulty to keep things frenetic but also fun. Right now, the game leans in the direction of easy, and is arguably too easy – but the beginning is also intended to be that way in a bid to draw players in and get them invested. The future will definitely see much rebalancing in favor of more moderate difficulty.
3 May 2026
Versions: 5.47.0 → 5.59.4 (23 releases)
Mines & balance
- 5.47.0 — Mine Layer renamed Seeker Mines: hunts targets, 12s self-detonate, urgent-blink telegraph.
- 5.47.1 — Fixed wave-skip-to-2 race in
checkWaveComplete. - 5.48.0 — Bullet-hell pass: enemy HP −30–40%, asteroid HP halved, +60% reward points, 2× XP, denser early waves, steeper scaling,
MAX_ASTEROIDS4 → 16.
SFX & HUD
- 5.49.0 — Removed all jsfxr SFX (audio glitches);
AudioManagerno-op shell. Lance Beam now hits asteroids, grows in over 150ms, jagged segments. Bench paths fixed. HUD powerup names → 3-letter abbreviations + hover tooltips. - 5.49.1 — Refined 6 abbreviations (SHD→SHLD, CRT→CRIT, etc.). Lance Beam tuned for low DPS / long uptime.
Nebula (six tries)
- 5.49.2 — Strong parallax (depth 0.0–0.65), one palette per scene, faux-3D blob structure, filaments, stardust.
- 5.49.3 — Density profiles, elliptical sub-blobs, edge halos, 2 new palettes.
- 5.49.4 — Pool sampling + per-blob HSL jitter, 2 more palettes.
- 5.49.5 — Embedded stars w/ diffraction spikes, dust lanes, filament threads.
- 5.49.6 — Removed all haze passes (speckles, filaments, wisps, sky tint).
- 5.49.7 — Lens-flare stars only; bg star brightness up; charging glow now plays for every power weapon.
Wave intros & warp-ins
- 5.49.8 — Wave-start spawns now inside the visible viewport.
- 5.49.9 — Dark intro overlay; asteroid warp-in (HSL-matched streaks); smoother warp w/ scale ramp.
Campaign restructure
- 5.50.0 — 20-wave speedrun campaign w/ bosses at 5/10/15/20; new GAME_COMPLETE state + stats screen; idle enemies orbital-strafe instead of standing still.
- 5.50.1 — Snap intro overlay to opaque on frame 1 (no flash).
Title screen
- 5.51.0 — Animated parallax starfield + 1700ms RAINBOIDS launch animation.
- 5.51.1 — Launch reworked into a per-letter twister w/ 3D perspective.
- 5.52.0 — Wave-start invincibility (3000ms); 6 random launch animations (twister/explosion/wave/cascade/warpdrive/pinwheel); wave intro dark overlay disabled.
- 5.52.1 — Subtler asteroid warp-in; HUD weapon squares 38 → 50px rounded.
- 5.53.0 — Launch reuses static title’s letters; sandstorm starfield; post-init fade-in to playfield.
- 5.53.1 — Lens-flare nebula parallaxes on title screen.
- 5.53.2 — Cooldown-based power weapons’ charging glow now persists through fully-charged.
Weapon FX & asteroid collisions
- 5.54.0 — Mines, Lance Beam, Lightning Arc, Nova, Missiles, primaries all got more epic;
MAX_PARTICLES50 → 220. - 5.54.1 — Title-screen lens-flare nebula also rotates with parallax.
- 5.54.2–5.54.5 — Powerup pickup blurbs finally show; Press Start 2P font; launch animations centered correctly.
- 5.54.6 — Removed asteroid-vs-asteroid collision response (visible jumps).
- 5.54.7 — Re-enabled
avoidAsteroidsAI hook; enemies steer around rocks.
Game-wide balance
- 5.55.0 — Powerup drop rates −65–70%, per-stack effects +25–50%; steeper enemy/asteroid scaling; late-wave roster trimmed.
- 5.56.0 — Wave-clear gate now requires destroying half the asteroids; perf plan authored at
docs/Performance Optimization Plan – 2026-05-03.md; sell button single-line. - 5.56.1 — Smallest orbs ~75% larger; README — every npm script documented.
Wave-clear pulse, then revert
- 5.57.0 — “ENEMIES CLEARED” pulse (ring + flash + toast); power-curve scaling formulas; asteroid fragmentation 3–4 → 2.
- 5.57.1 — Asteroid-vs-asteroid collisions back, closing-only (no position correction).
- 5.57.2 — Reverted asteroid wave-clear gate; trimmed asteroid spawn counts.
Player damage feedback
- 5.58.0 — Damage numbers + epic FX on player hits; camera kicks AWAY from impact.
- 5.58.1 — No more free between-waves health top-up.
Enemy death sequence (four tries)
- 5.59.0 — Three-phase death: impact → drift+popcorn → final big-bang.
- 5.59.1 — Fixed
ReferenceError: i is not definedcrash. - 5.59.2 — Every dial up: shake, hitstop, popcorn frequency, finale magnitude.
- 5.59.3 — Big bang at midpoint; ship vanishes; debris keeps flying.
- 5.59.4 — Removed fullscreen flash on enemy damage/death;
MAX_PARTICLES220 → 320.
4 May 2026
Versions: 5.60.0 → 5.69.0 (40 releases)
Performance plan
- 5.60.0 — Pre-baked glow sprites for
explosionFlash+explosionEmber(singledrawImageinstead of gradient/arc). - 5.61.0 — Bg stars halved (120 → 60); two-pass batched particle render; late-wave AI throttle (alternating frames); asteroid 3D-projection stagger.
Enemy explosions, finally consistent
- 5.62.0 — Animated HP bar; flash on destruction only; popcorn cookoffs visible (silhouette glow trimmed); fewer-but-bigger popcorn particles.
- 5.62.1 — Removed
explosionFlashon non-lethal enemy hits. - 5.62.2 — Death sequence simplified to two beats; wave-clear gate waits for all death anims; WAVE COMPLETE fade window before shop.
- 5.63.0 — Root cause: deferred ring spawns evicted earlier particles. All deferred spawns now fire same-frame.
MAX_PARTICLES320 → 600. Authoreddocs/WebGL Migration Analysis – 2026-05-04.md. - 5.63.1 — Enemy explosions are now motion-only (no lingering particles).
WebGL particle layer
- 5.64.0 —
WebGLParticleRenderer— single instanced GL2 draw call for the 6 hottest particle types; replaces ~600 Canvas2D draws/frame. - 5.64.1 — Removed lingering ember trails on bullet hits.
- 5.64.2 —
MAX_PARTICLES600 → 2500 (per-particle cost is flat now).
Sharper sprites & ship-shred deaths
- 5.64.3 — Procedural pixel-curve atlas slots: ember Gaussian, flash + cross spike, NEW
sparkslot, streak hot-tip, ring annulus. - 5.64.4 — Hit/destruction effects redelineated (enemies “alive”, asteroids “inert”); ember lifespan halved; sprites sharpened further.
- 5.64.5 — Enemy ships visibly tear apart (outline edges fragmented 2×, chaotic kicks, 2.4× rotation, per-type internal struts); shop sell refund full at-cost; sell button restyled; shop opens on random non-HELP tab; DEFENSE/SKILLS header banners.
- 5.64.6 — Big-bang rings cut hard (4 → 3, multipliers way down).
- 5.64.7 — Enemy explosions in 2 beats: BIG ring on impact, debris at frame 6.
- 5.64.8 — Fixed duplicate damage number on player hits.
- 5.64.9 — Fixed sell button background clipping (CSS Grid placement bug).
- 5.64.10 — Sell button moved left of cost/level; red “Level 0” tag.
Skill rework & keybinds
- 5.64.11 — Single-equipped skill model (was 4-slot); SHIFT cycle, SPACE activate; new SKILL HUD square; all skills FREE; bracket cheats
[/]. - 5.64.12–5.64.13 — SKILL HUD square repositioned, then merged into PRM/PWR row.
- 5.64.14 — New keybinds: SPACE charge POWER, TAB skill, E primary cycle, R power cycle, F skill cycle; SHIFT free.
- 5.64.15 — Lance Beam + Lightning Arc are continuous-tether beam weapons (no cooldown, single-target).
WebGL starfield
- 5.64.16 —
WebGLStarfieldRenderer— single instanced draw, 8 atlas shapes, twinkle/parallax/rotation in vertex shader; ~435 stars vs ~10 on Canvas2D. - 5.64.17 — Brighter + more dynamic (size pulse, hot-white peak shift, twinkle amplitude up).
- 5.64.18 — Inverse-size brightness rule (small=bright, big=dim); fragment-shader gain pre-blend.
Radial menus & primary roster
- 5.65.0 — Holding E/R/F opens a radial menu of every option; click to equip.
- 5.65.1–5.65.3 — Radial typography pass: Press Start 2P → Silkscreen → icon-only slices w/ name in hub.
- 5.66.0 — Lightning Arc moved to PRIMARY (continuous tether on LMB); both beam primaries DPS-aligned to projectile primaries.
- 5.66.1 — Radial type label abbreviated (PRM/PWR/SKILL); Rail Driver icon ⚡ → 🛤️.
- 5.67.0 — Rail Driver fires double-helix pair; icon → 🧬; generic helix support added to
Bullet. - 5.67.1 — Missile Salvo pre-assigns distinct targets.
- 5.68.0 — Merged
webgl-starfieldbranch into master.
Tuning & QoL
- 5.68.1 — Faster enemy bullets at the floor; primary DPS rebalance to ~3.0 baseline; pause-menu CONTROLS tab fixed.
- 5.68.2 — Hint overlay auto-dims when ship/cursor overlap.
- 5.68.3 — Cycle keybinds rotated (E skill, R primary, F power).
- 5.68.4 — Q activates equipped skill (was TAB).
Sound, take 2
- 5.68.5 — Kenney Digital SFX wired up (manifest + throttle + per-weapon hit clips).
- 5.68.6 — Volume cap removed; layered destruction sounds (asteroid/enemy/playerExplosion/rams).
- 5.68.7 — jsfxr offline pipeline restored:
sound-defs.js+tools/scripts/generate-sfx.js; 26 WAVs generated. - 5.68.8 — Fixed SFX slider still using old 0–20% display cap.
- 5.68.9 — Defense skills were silent on activation — wired
SKILL_ACTIVATE_SOUNDmap; default SFX vol 0.5 → 0.8; throttles loosened. - 5.68.10 — All 26 jsfxr WAVs were SILENT. Generator passed partial params objects;
p_lpf_freqdefaulted to 0 (closed LPF) → zero output. Fix: merge onto freshnew Params()so defaults apply. Audible signal restored. - 5.69.0 — Full jsfxr SFX overhaul: 11 new defs replacing every Kenney mp3 (destruction, all 6 defense skills, Lightning Arc hit, generic enemyHit fallback);
menuClickUI tick on every button-shaped element (50ms throttle); 62 Kenney mp3s + zip + readme deleted fromsfx/.



Leave a Reply