lasermammoth
🇨🇦 Matthew Johns - Game Design - lasermammoth@gmail.com
Projects
- Biplomacy (August 2026)
-
Bounce balls around to gain territory. Make friends and defeat enemies.
[more]
- Geopolitical AI & Alliance Matrix: Multi-faction AI bots evaluate relative power, territory expansion, and mutual threats to issue alliance offers, peace treaties, or strategic betrayals in real time — generating emergent sandbox geopolitics.
- Ricochet Ballistics & Territory Flow: Kinetic energy projectiles bounce off borders, neutral obstacles, and enemy bases; dynamic Voronoi territory boundaries continuously re-partition the map as bases expand or change hands.
- Additive Infrastructure Links: Inter-base network links (Power, Speed, Recharge, Ricochet Bounces) scale volley throughput and ball velocity based on topological connectivity, rewarding spatial base clustering and line-of-sight defense.
- 100-Level Campaign & Arena Shapes: Data-driven level pipeline supports shaped arenas (Square, Circle, Triangle, Diamond, Open) across map scales from 1v1 skirmishes up to 100-AI grand campaigns with persistent state saved locally.
- Responsive Canvas Engine & High-Contrast UI: Optimised HTML5 2D canvas rendering paired with custom 8-bit typography, real-time diplomatic stat panels, country flags, and touch controls maintaining 60fps on mobile browsers.
[less]
- Guitooner (June 2026)
-
Simple, ad-free guitar and bass tuner.
- Freejiji (June 2026)
-
Swipe to discern between free and paid online classified listings.
[more]
- Daily Challenge Loop: Players evaluate 10 curated local classified listings per day, guessing whether each item is free or paid — a one-session-per-day format that creates appointment gaming.
- Swipe Gesture Controls: Tactile card-dragging with directional physics feedback; swipe right for free, left for paid, using velocity thresholding to distinguish deliberate swipes from accidental drags.
- Global Score Distribution Chart: Aggregates real-time scores from all players into a histogram rendered on the game-over screen, giving each player context for where their result sits in the global population.
- Streak Retention System: Consecutive-day streaks are tracked per player and surfaced on the game-over screen, with milestone events sent to analytics to measure engagement cliffs.
- Anonymous Auth + Cloud Sync: Firebase Anonymous Authentication silently assigns each browser session a persistent UID, enabling server-side stat aggregation without requiring sign-up friction.
- Mid-Session Persistence: In-progress game state is written to localStorage on every card swipe, allowing seamless resume after a page reload or accidental tab close.
- Automated Content Pipeline: A Node.js ingestion script scrapes, deduplicates, and schedules daily puzzle decks, with spam-filtering heuristics to remove low-quality or adult listings before publication.
- Vercel Analytics Integration: Custom events track game_started, game_completed, share_clicked, listing_clicked, and streak_milestone — each with strict once-per-day deduplication logic to prevent inflation.
[less]
- Tryplane (June 2026)
-
WWI dogfights and dive bombs.
[more]
- Aerodynamics Model: Full 3D flight physics with lift coefficient, drag, stall speed, throttle ramping, and independent pitch/roll/yaw rates — all exposed as Inspector-tweakable variables for rapid feel iteration without recompiling.
- Dual Weapon System: Machine guns use burst-fire with a 110ms cooldown and alternating muzzle flash lights; bombs alternate between two wing hardpoints with separate reload timers, requiring deliberate weapon-mode switching to manage both threats.
- Procedural Terrain: A 12km × 12km world is generated at runtime from a 210×210 vertex grid with seven height-based biomes — water, beach, grass, farmland (4 crop variants), mountain, and snowcap — plus winding asphalt highways and dirt road grids painted via vertex color.
- Enemy AI: Enemy planes use lead-prediction aiming, burst fire patterns, and a health bar rendered through a SubViewport → billboard Sprite3D — keeping overhead low while supporting full 2D UI art in 3D world space.
- Three Camera Modes: Chase cam, cockpit view, and gun-sight mode are switchable in flight; on death the camera detaches and holds position, giving a cinematic view of the wreckage.
[less]
- Fireworks Fever (June 2026)
-
Remake of Rocket Mania aligned vertically.
[more]
- Fuse Routing Mechanic: Players rotate pipe-style tiles (I, L, T, X, S) on a grid to connect a continuous fuse path from ignition source to rockets — a portrait-oriented interpretation of the classic Rocket Mania formula with interruptible ignition propagation.
- 30-Level Campaign: Hand-crafted difficulty curve grows the play grid from 3×3 to 8×8 across 30 levels, with each level specifying its own column count, row count, time limit, score target, allowed piece types, and coin drop rate as a data-driven config table.
- Weighted Tile Spawning: Each level defines a spawn_weights dictionary (I/L/T/X/S → float) that shifts piece distribution from easy straight-and-corner pieces at early levels toward harder junction tiles at high levels, controlling difficulty without changing the core rules.
- Rocket Upgrade Economy: A coin economy funds per-row rocket upgrades tracked in a shared GameState; upgrades affect visual rocket tier and scoring multipliers, creating a secondary optimization layer beyond puzzle solving.
- Procedural Rocket Drawing: Rockets are drawn entirely via Canvas draw calls (no sprite sheets), with tween-based flicker animation during ignition and a launch arc tween on fire — keeping asset count low while remaining visually expressive.
[less]
- Really Rally (June 2026)
-
Arcade rally racing on tracks generated from real world maps.
[more]
- Real-World Stage Import: A GPX importer parses GPS trace files (lat/lon/elevation) using equirectangular projection to convert real rally stage routes into 3D Godot spline paths — stages include actual race locations such as Monaco and Col de Turini.
- Streaming Procedural Track: Infinite track generation keeps only 5 road segments (each 160m) in memory at once; a macroscopic zone bias system schedules long straights and dramatic hairpin corners to give each run a coherent rhythm without pre-authored layouts.
- Destructible Scenery: Roadside fences are individually destructible with debris geometry and separate physics lifecycle, rewarding aggressive driving lines while keeping the environment interactive.
- @tool Editor Integration: The track generator runs as an @tool script in the Godot editor, enabling designers to load, rebuild, and preview any rally stage without entering Play mode — shortening the track-authoring iteration loop.
- Checkpoint System: An active checkpoint dictionary tracks clean vs. dirty passes per checkpoint ID, enabling sector-time penalties and providing the data needed for fair time comparisons across different racing lines.
[less]
- MergeSpell (May 2026)
-
Word making game with letter merging mechanics.
[more]
- Hex Grid Letter Chain: Players drag across adjacent hexagonal tiles to chain letters; completing a valid word promotes each tile's letter up a defined hierarchy, rewarding planning several moves ahead rather than pure word knowledge.
- Dual Mode Architecture: Daily Hex and Practice modes run as two fully isolated save contexts inside a single ScoreManager — players switch mid-session without losing progress in either mode, with all state serialized to a local JSON save file.
- Date-Seeded Daily Puzzle: The daily board uses a date string hash as its RNG seed, ensuring every player receives an identical starting layout while Practice mode uses a fresh random seed per session — the same grid logic serves both without branching code.
- Booster and Multiplier System: Per-cell multipliers and bonus tiles modify score calculations, adding a spatial dimension to word selection beyond letter value — high-value chains require routing through bonus cells as well as forming valid words.
- Pre-processed Dictionary: A Python script (filter_words.py) strips the word list of profanity and low-frequency entries before shipping, keeping the dictionary.gd lightweight and the in-game validation fast.
[less]
- Traffickle (May 2026)
-
Traffic management sim and road maintenance sim.
[more]
- Procedural City Generation: An organic road network of up to 3,500 branches is generated at runtime using a distance-weighted sprawl system — branch probability tapers from the city center outward, with a separate commercial core radius creating realistic density gradients without hand-authored layouts.
- Road Degradation Shader: Road surfaces use a custom GLSL fragment shader with Fractal Brownian Motion to render evolving crack patterns tied to a durability float uniform — roads visually decay from solid asphalt through cracking and grass intrusion, turning orange during repair.
- AStar3D Pathfinding: Up to 1,500 simulated inhabitants route between procedurally zoned residential and commercial nodes via AStar3D, with a distance-computation pass run at generation time to pre-build the routing graph.
- Roundabout Placement: Players can upgrade any intersection to a roundabout via a confirmation-gated UI flow; roundabouts modify the local routing mesh and are tracked in a dictionary for downstream traffic simulation queries.
- Progressive City Reveal: The city is revealed outward from the center using a distance-sorted activation system, creating a fog-of-war expansion feel at game start without a separate visibility layer.
[less]
- Landerlivery (April 2026)
-
Lunar Lander inspired delivery game, landing on moons and planets.
[more]
- Multi-Axis Landing Grading: Each landing is evaluated simultaneously across approach speed, body angle, and trajectory angle — the three penalties are combined with a power-curve blend to produce five grades (Excellent / Good / Okay / So-So / Rough) with live numerical readout, giving players precise feedback on what to correct.
- Emergency Retro-Thruster: A three-level emergency system auto-rotates the lander to retrograde heading and fires at 3×/4×/5× thrust when triggered at high speed — a skill-based safety net that burns extra fuel, creating a meaningful trade-off.
- Magnetic Gear Joint: Landing on a rotating or orbiting celestial body creates a runtime PinJoint2D between the lander and the body, correctly inheriting surface velocity so the lander sits stable on moving terrain without physics drift.
- Procedural Pilot Identity: Each player is assigned a callsign generated from a curated adjective + noun word list (~2,000 combinations) on first launch, providing a personal identity for score sharing without requiring account creation.
- Delivery Economy: Payouts scale with route distance minus fuel cost, creating a natural tension between conservative fuel-efficient landings and faster but costlier approaches — driving repeated play as players optimise each route.
[less]
- Herdr (March 2026)
-
Sheep herding in the style of Atari 2600.
[more]
- Boid-Style Sheep AI: Each sheep combines three steering forces — a 90-degree forward cone that funnels the flock toward a focal point ahead of the dog, radial scatter when approached from the side, and FBM wander during idle — all exposed as Inspector-tweakable floats to dial herd responsiveness without code changes.
- Hazard Penalty Design: A gorge at the edge of each level deducts 5 seconds per sheep lost rather than ending the run, punishing sloppy herding proportionally and keeping all skill levels in play until the final sheep is corralled.
- Cumulative Multi-Level Scoring: Run times accumulate across three levels via a Global singleton; levels are chained by assigning a PackedScene reference in the Inspector, keeping level sequencing entirely data-driven and easy to reorder.
- Cross-Platform Share: The end-screen share button calls the Web Share API via JavaScriptBridge.eval() with a user-agent mobile/desktop branch — mobile devices open the native share sheet while desktop silently copies to clipboard, with no platform-specific code paths in GDScript.
- Web Audio Pre-Warming: The gorge reverb bus is played at -80dB during scene load to force the browser to initialise the audio graph before first player input, preventing the well-known first-play audio latency issue in HTML5 Godot exports.
[less]