A Mario-STYLE (100% original β no Nintendo IP) 2D comedy platformer starring Ami,
a desi mother in shalwar kameez whose weapon of choice is the mighty chapal (slipper).
Bonk naughty kids, wake the snoring husband off his sofa, dodge Dadiβs complaints β
every 10 seconds, something to grin at.
Built with Babylon.js + Vite + TypeScript. Procedural WebAudio chiptune (original melodies).
Status (2026-10-14)
Scaffold (Vite + TS + @babylonjs/core), dev server on :5173
Ami locked design: 5 poses sliced + matted from AMI-OFFICIAL-LOCKED.png (user-approved)
Menu β mission intro β win/fail cards verified via screenshots
Proof video: proof-gameplay.mp4 (16.5s)
SAKOON power system (2026-10-14): chapal hits β +Sakoon (combos: DOUBLE/TRIPLE SAKOON!) β meter FULL = SUPER AMI (Mario-mushroom style: grows 1.35x with easeOutBack animation, golden aura, bigger/faster chapal, faster run, higher jump, 10s) β hit as super = shrink back (not out) β hit as normal = AMI OUT β 3 lives β Game Over (βAmi ko araam chahiye! π΄β)
Particles & popups now pooled (200-mesh ring buffer, 24-DOM popup pool) β zero create/dispose churn in the hot loop; Super Ami activation no longer spikes
HUD writes cached β DOM touched only on value change (was: every frame)
Chapal trail rate 50%β20%, Super bursts 16+10β10+6, grow sparkles 20β12/s
Controls: jump/chapal presses register in the event handler (quick taps shorter than a frame no longer missed); coyote time 0.12s + jump buffer 0.15s; ground accel 30β60, air 18β30
Unstick: penetration resolve pass after collision + auto-hop if input held with no movement for 0.5s
Touch: pointer capture (sliding thumb no longer drops the button), buttons 68β84px, blur resets all input
βAmi Outβ card auto-respawns after 4s countdown (never looks stuck); overlay innerHTML cleared on hide
V5 PERF FIX (2026-10-14, Sehrish: βsare level lag, bhaga nahi ja raha, hit pe stuckβ):
Layout thrashing KILLED:project() was calling getBoundingClientRect() per popup per frame (10-24 forced layouts/frame!) β now cached on resize only
Material leak FIXED:spriteMesh() created a new StandardMaterial (random name!) per chapal/mud throw, never disposed β now uses shared cached materials
Stamina NERFED (was too punishing): drain 3.5/s β 1.2/s; recovers while moving (4/s) not just idle (12/s); tired threshold 30β20; tired speed 0.6xβ0.75x β Ami can actually RUN now
Attack freeze FIXED: returning chapal was re-hitting bonked enemies β hitStop spam (400ms+ freeze!) β now skips stunned enemies; only OUTGOING chapal triggers hitStop/slowMo
hitStop/slowMo reduced: kid 0.14sβ0.08s, dadi 0.1sβ0.06s, husband slowMo (0.25x, 1.0s)β(0.5x, 0.5s) β Ami never locked long
Enemy culling: off-screen enemies (>18 units from camera) skip AI updates
Camera:new Vector3 per frame β scratch vector reuse
All art, music, characters, and names are original. No Nintendo assets, melodies, or sprites.
Stuck-spot fix (2026-10-14, v3.1)
User report: Ami βcanβt go forwardβ in Kapray Dhona, with a staircase-like visual blocking her.
Root causes found:
No staircase exists in the map β Kapray Dhona is flat ground. The visual is a phone-GPU rendering artifact (road tiles smearing). Added NaN guards on player position + camera: any NaN snaps back instead of smearing geometry.
Death loop feels like stuck β walking into mudkids triggers: 2.4s outro (frozen) β 4s βAmi Out!β card β respawn at LEVEL START (progress lost). For a casual player this reads as βstuckβ.
Road texture was 16Γ16 β upscaled to 32Γ32 to reduce high-DPI aliasing on phones.
Fixes:
Safe-spot respawn: game tracks last safe grounded position (no enemies within 2.5u); respawn there, not at level start.
Faster out card: countdown 4s β ~2.4s.
Hard unstick: 3s of held input with zero x-progress β teleport to safe spot + βUff! Nikal aayi! π β.
NaN guards: px/py and camera position β any NaN resets to safe spot.
Verified: all 9 missions traverse with 0 errors, 0 NaN, no false unstick triggers; safe-spot respawn confirmed in headless playtest.