// Header (shared) + Hero + Ticker + Featured games + Demos function Header({ active }) { const [scrolled, setScrolled] = React.useState(false); React.useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 60); window.addEventListener("scroll", onScroll, { passive: true }); return () => window.removeEventListener("scroll", onScroll); }, []); const links = [ { href: "index.html", label: "Home", id: "home" }, { href: "games.html", label: "Games", id: "games" }, { href: "cv.html", label: "CV", id: "cv" }, { href: "press.html", label: "Press", id: "press" }, { href: "contact.html", label: "Contact", id: "contact" }, ]; return ( ); } function Hero() { return (
Vancouver, BC · Est. 2024

MAPLE MARTEN studios.

Fiercely Canadian · Seriously fun.

// NOW BUILDING ● LIVE
Loonie Trouble — first studio title, in active development. Vertical slice 2026.
// AVAILABLE
Open to senior engineering roles. C++ · Python · Cloud.
// 50.4452°N, 123.7314°W
SCROLL
v2.6.04 / 2026
); } function Ticker() { const items = [ ["BUILDING", "Loonie Trouble — first studio title"], ["LATEST COMMIT", "feat: AI pathfinding now respects fog-of-war"], ["LISTENING TO", "Disasterpeace — Hyper Light Drifter OST"], ["READING", "Game Engine Architecture, 3rd ed."], ["BREW", "Phillips Blue Buck"], ["FORECAST", "Vancouver — 11°C, light rain"], ["UPTIME", "5+ years shipping production systems"], ["MOOD", "Caffeinated and hopeful"], ]; const repeated = [...items, ...items]; return (
{repeated.map(([k, v], i) => ( {k} {v} ))}
); } function GameCard({ game, wishlisted, onWishlist, href }) { const Cover = game.cover; return (
● {game.statusLabel}
{game.tags.map((t) => {t})}

{game.title}

{game.desc}

{game.fundingNeeded ? ( ) : ( )}
); } const GAMES = [ { id: "loonies", title: "Loonie Trouble", statusLabel: "IN DEVELOPMENT", statusClass: "dev", tags: ["Shooter", "Survival", "Comedy"], desc: "Survival shooter in the Canadian wilderness. Precision mechanics meet wild humor and waterfowl with grudges.", cover: () => window.CoverLoonies(), href: "games/loonie-trouble.html", fundingNeeded: false, }, { id: "echoes", title: "Echoes of Tomorrow", statusLabel: "SEEKING FUNDING", statusClass: "funding", tags: ["Strategy", "Survival", "Sci-Fi"], desc: "Lead the survivors of New Aurora, uncover the conspiracy, and decide if humanity deserves a second chance.", cover: () => window.CoverEchoes(), href: "games/echoes-of-tomorrow.html", fundingNeeded: true, }, { id: "grocer", title: "Go Go Grocer", statusLabel: "SEEKING FUNDING", statusClass: "funding", tags: ["Simulation", "Physics", "Arcade"], desc: "High-octane shopper sim. Custom physics-based delivery mechanics where time is money and the cart has opinions.", cover: () => window.CoverGrocer(), href: "games/go-go-grocer.html", fundingNeeded: true, }, ]; function GamesSection({ heading = true }) { const [wishlist, setWishlist] = React.useState(() => { try { return JSON.parse(localStorage.getItem("mm_wl") || "[]"); } catch { return []; } }); const toggle = (id) => { setWishlist((w) => { const next = w.includes(id) ? w.filter(x => x !== id) : [...w, id]; try { localStorage.setItem("mm_wl", JSON.stringify(next)); } catch {} return next; }); }; return (
{heading && ( <>
02 / OUR TITLES

Studio titles.

One in active development. Two seeking funding. All built with stubborn attention to feel.

)}
{GAMES.map((g) => ( ))}
); } function DemosSection() { return (
03 / TECHNICAL SHOWCASE

Engineering under the hood.

The systems work that powers both the studio and the day job — performance, scale, strongly-typed plumbing.

DEMO 01

Real-Time Simulation Engine

C++ · Unreal Engine 5 · Event-Driven Arch.

Engineered a performant C++ subsystem for real-time object state management, handling entity lifecycles and memory optimization. C++ bindings drive a reactive UI layer with sub-frame data flow.

10k+
Entities / Frame
<2ms
State Tick
Zero
Allocs / Tick
DEMO 02

High-Volume Transaction Engine

Python · GCP · Gradient Boosting

Production transaction processor handling 50M+ daily events, with gradient-boosting fraud detection wired directly into the request path. Reduced fraud losses by 23% without latency regression.

50M+
Daily TPS
−23%
Fraud Losses
99.97%
Uptime
); } window.Header = Header; window.Hero = Hero; window.Ticker = Ticker; window.GamesSection = GamesSection; window.DemosSection = DemosSection; window.GAMES = GAMES;