CHANGELOG
WHAT'S CHANGED AND WHEN
This page tracks significant updates to Gravitydrift. Minor tweaks and routine dependency updates are not listed. For a more narrative account of development, see the Developer Diary.
Development is ongoing. This page is updated alongside releases. Last updated: March 2026.
March 2026 — Week 3–4
Community, Auth & Siege Mode
- Change Game renamed to Gravitydrift (gravitydrift.io) — final name, replacing the "Gravity X" interim placeholder.
- New User authentication — sign in with Google or GitHub via Supabase OAuth. Persistent identity replaces anonymous fingerprint for level ownership.
- New Community Forum page — threaded posts and replies, likes, sort by newest or top-liked, infinite scroll, lazy-loaded reply sections.
- New Server-side profanity filter — offensive words silently replaced in all user-submitted text (posts, replies, author names).
- New Siege mode added to multiplayer — asymmetric format where one player defends and others attack. Uses the same physics as Race mode.
- Change Level Editor and Maps browser: edit/delete restricted to the level's owner. Admin override for moderation.
- Fix Force fields now correctly destroy the ship in Siege missile mode (collision check was skipping the forcefield list).
- Fix Siege mode aiming indicator now shows real physics trajectory — reuses
drawTrajectoryPreview() from renderer instead of a custom approximation.
- Fix Level generator no longer places overlapping planets — placement validation now accounts for actual planet radii, not a fixed minimum distance.
- Change Generator solvability check removed — levels generate much faster. Playability is validated by the editor's Test Mode instead.
- Fix Auth dropdown in Level Editor was covered by the canvas (z-index issue). Auth widget now renders above all canvas elements.
- Perf Planet cap of 20 per level added to the editor. Trajectory preview steps now scale with planet count to keep dragging responsive.
- New Editor draft auto-saved to sessionStorage on page unload — survives OAuth redirect so work-in-progress is not lost when signing in.
March 2026 — Week 1–2
Infrastructure, Compliance & Polish
- New Cookie consent banner added — GDPR and CCPA compliant, with accept/decline options stored per browser.
- New Terms of Service page added, covering UGC, age requirements, and liability.
- New Content Guidelines page added for Level Editor publishers.
- New FAQ page added covering gameplay, editor, multiplayer, and technical questions.
- New Changelog page (this page) added.
- New Developer Diary page added — full narrative account of the project from January.
- Change Privacy policy updated with explicit Google AdSense cookie disclosure and GDPR/CCPA sections.
- Fix Physics determinism across devices: same shot now produces identical trajectory on all screen refresh rates (60Hz, 90Hz, 120Hz). Fixed by implementing a fixed timestep accumulator with render interpolation.
- Fix Grainy planet rendering on high-DPI mobile screens. Canvas now sized at physical pixel resolution using devicePixelRatio, with ctx.setTransform scaling drawing to logical coordinates.
- Fix Aspect-ratio cheating: game world now locked to a fixed 1800×900 logical coordinate space, letterboxed into any screen. Resizing the browser window no longer shifts planet positions or changes level difficulty.
- Perf Planet image loading: added
rel="preload" tags and fetchPriority="high" on all planet sprite images to reduce loading latency on first play on mobile.
- New All planets now render with type-specific atmospheric halos (radial gradient glow matching each planet's color and intensity). Black holes have no halo by design.
- Change Explosion reworked: debris chunks removed, particle decay tuned for slower, more satisfying animation, shockwave ring restored at smaller radius.
- Change Main menu now scrollable on mobile — was previously clipped on small screens.
- New Service Worker and PWA manifest — game installable to home screen on Android and iOS, with offline support for generated single-player levels.
February 2026
Multiplayer, Level Editor & Planets
- New Multiplayer added — real-time competitive rooms via WebSocket. Up to 8 players, four-letter room codes, live leaderboard by attempt count.
- New Level Editor added — full in-browser editor with planet placement, size control, checkpoint and force field tools, undo/redo, test mode, and publish to shared library.
- New Level rating system — five-star ratings with Bayesian smoothing. Ratings visible in Saved Maps browser.
- New Saved Maps browser — sortable by newest, highest rated, or most played. Playable directly from browser.
- New Nine planet types — white, grey, blue, green, yellow, red, red star, neutron star, black hole — each with distinct density, mass, and visual sprite.
- New Black hole planet type: fixed small radius, extreme gravitational pull, distinct visual (no atmosphere).
- New Neutron star planet type: fixed tiny radius, very high density, large atmospheric glow.
- New Force fields added to Level Editor — invisible barriers that destroy the ship on contact.
- New Checkpoints added — optional rings players must pass through before the destination counts. Supported in both editor and game.
- New Difficulty selector (easy / medium / hard) with different planet type pools and generation constraints per difficulty.
- Change Level generator rewritten with deterministic seeded PRNG — levels reproducible from seed. Solvability verified by running 2,000+ test shots per candidate level.
- Change Editor layout: sidebar collapses to reveal black void rather than reflowing the canvas area — canvas position fixed at all times.
- Fix Generator solvability check now uses identical physics code to the game loop — no more falsely flagging unsolvable levels as solvable.
- Perf Levels stored in normalised (0–1) coordinate space — correct display at any screen resolution without per-level adjustments.
January 2026
Initial Development
- New Core physics engine: Newtonian inverse-square gravity, Euler integration, multi-planet force accumulation.
- New Ship drag-and-launch mechanic: press and hold on ship, drag to aim, release to fire.
- New Game state machine: IDLE → DRAGGING → FLYING → WIN / CRASH, with crash pause and auto-reset.
- New Trail rendering: ship leaves a fading trail of its last 900 positions (15 seconds at 60Hz).
- New Ghost trail: previous attempt's trail persists on reset as a dim reference line.
- New Star field background: 160 randomly positioned stars generated once per session.
- New Destination ring with pulsing glow animation.
- New Launch velocity arrow: real-time preview of direction and speed while dragging.
- New Explosion particle system: sparks, fireball, smoke, and shockwave ring on crash.
- New Procedural level generator: generates solvable levels with seeded randomisation.
- New Touch input support alongside mouse input.
- New Canvas 2D renderer with monospace font UI elements drawn directly onto the canvas.
- New Node.js HTTP server with static file serving and REST API for level storage.
- New Supabase database integration for level and rating persistence.