DEV Community

Cover image for Engine Refactor - Moksha Devlog
Weird Codes
Weird Codes

Posted on • Edited on • Originally published at weirdcodes.itch.io

Engine Refactor - Moksha Devlog

ЁЯХЙя╕П MOKSHA тАФ DevLog v0.0.8

"рдЬреЛ рднреАрддрд░ рд╣реИ, рд╡рд╣реА рдмрд╛рд╣рд░ рджрд┐рдЦреЗрдЧрд╛ред"

Release: v0.0.8 тАФ Visual Clarity + Engine Refactor + Prarabdha Mechanic

Date: July 2026

Developer: @weirdcodesofficial

Play: weirdcodes.itch.io/moksha

Support: ko-fi.com/weirdcodes


ЁЯМ▒ рдХреНрдпрд╛ рд╣реИ MOKSHA?

MOKSHA рдПрдХ browser-based HTML5 Canvas game рд╣реИ рдЬреЛ Sanatan Shastra рдФрд░ Karmic philosophy рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдпрд╣ рдХреЛрдИ simple platformer рдирд╣реАрдВ тАФ рдпрд╣ рдПрдХ рдЖрддреНрдорд┐рдХ рдпрд╛рддреНрд░рд╛ рд╣реИ рдЬрд╣рд╛рдБ player рдХреА рд╣рд░ action рдХрд╛ рдХрд░реНрдо-рдлрд▓ рд╣реЛрддрд╛ рд╣реИред

рдирд╛рдо рдЬрдкреЛ, рдорд╛рдпрд╛ рд╕реЗ рдмрдЪреЛ, рд╕рдорд░реНрдкрдг рдХрд░реЛ тАФ рдФрд░ рдореЛрдХреНрд╖ рдкрд╛рдУред


ЁЯФз v0.0.5тАУv0.0.8 рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ?

рдпрд╣ release рдПрдХ рдмрдбрд╝реЗ refactor рдФрд░ рдХрдИ gameplay improvements рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред v0.0.4 monolithic index.html рдерд╛ тАФ рдЕрдм рдпрд╣ рдПрдХ рдкреВрд░рд╛ modular ES6 architecture рд╣реИред


тЪЩя╕П Engine Refactor тАФ Mixin Pattern

рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ change рдерд╛ engine.js рдХреЛ рддреЛрдбрд╝рдирд╛ред рдПрдХ 3000+ line file рдХреЛ 4 focused modules рдореЗрдВ split рдХрд┐рдпрд╛:

engine.js   тЖТ  Slim orchestrator (core loop, state)
karma.js    тЖТ  KarmaMixin (Vedic logic, maya, actions)
physics.js  тЖТ  PhysicsMixin (glow-rings, particles, pools)
state.js    тЖТ  StateMixin (HUD, alerts, animations)
Enter fullscreen mode Exit fullscreen mode

Composition pattern use рдХрд┐рдпрд╛ тАФ рд╣рд░ Mixin engine instance рдХреЛ this рд╕реЗ access рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ circular dependencies рд╕реЗ рдмрдЪрд╛рд╡ рд╣реБрдЖ рдФрд░ zero breaking changes рд╣реБрдПред

Object.assign(KarmaEngine.prototype, PhysicsMixin, KarmaMixin, StateMixin);
Enter fullscreen mode Exit fullscreen mode

рдпрд╣ decision рд╢реБрд░реВ рдореЗрдВ рдбрд░рд╛рд╡рдирд╛ рд▓рдЧрд╛ тАФ рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╡реЗрджрд╛рдиреНрдд рдореЗрдВ рдХрд╣рддреЗ рд╣реИрдВ, "рд╡рд┐рднрд╛рдЬрди рдореЗрдВ рднреА рдПрдХрддрд╛" тАФ рд╕рдм modules рдорд┐рд▓рдХрд░ рдПрдХ KarmaEngine рдмрдирд╛рддреЗ рд╣реИрдВред


ЁЯУЬ рдкреНрд░рд╛рд░рдмреНрдз Timer Mechanic

рдпрд╣ v0.0.8 рдХрд╛ рд╕рдмрд╕реЗ philosophically important feature рд╣реИред

рд╢рд╛рд╕реНрддреНрд░-рдЖрдзрд╛рд░: "рдкреНрд░рд╛рд░рдмреНрдзрдВ рднреБрдЬреНрдпрддреЗ рдПрд╡" тАФ рдкреНрд░рд╛рд░рдмреНрдз рдХрд░реНрдо рдХреЛ рднреЛрдЧрдирд╛ рд╣реА рдкрдбрд╝рддрд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдмрдЪрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред

Game рдореЗрдВ:

  • рдкреБрдирд░реНрдЬрдиреНрдо рдкрд░ рд╕рдВрдЪрд┐рдд рдХрд░реНрдо тЖТ рдкреНрд░рд╛рд░рдмреНрдз рдмрдирддрд╛ рд╣реИ
  • рдкреНрд░рд╛рд░рдмреНрдз timer countdown рдХрд░рддрд╛ рд╣реИ (10s per unit)
  • Timer active рд╣реЛрдиреЗ рдкрд░ samaya decay ├Ч1.15 рддреЗрдЬрд╝ рд╣реЛрддреА рд╣реИ
  • 10 рдирд╛рдо active рд╣реЛрдВ рддреЛ рднреЛрдЧ-рдЧрддрд┐ 2├Ч рд╣реЛ рдЬрд╛рддреА рд╣реИ
  • MAX_PRARABDHA = 15 cap тАФ game unplayable рдирд╣реАрдВ рд╣реЛрдЧрд╛
  • рдкреНрд░рд╛рд░рдмреНрдз unit рдШрдЯрдиреЗ рдкрд░ purple explosion + рдмрдВрдзрди-рдореБрдХреНрдд sound

рдпрд╣ mechanic player рдХреЛ encourage рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡реЛ рдирд╛рдо-рдЬрд╛рдк рдЬрд╛рд░реА рд░рдЦреЗ тАФ рдпрдВрддреНрд░-рд╡рд┐рджреНрдпрд╛ рдирд╣реАрдВ, рднрдХреНрддрд┐-рдорд╛рд░реНрдЧред


ЁЯФФ Canvas Alert Queue System

рдкреБрд░рд╛рдирд╛ DOM-based alertBox element рд╣рдЯрд╛рдпрд╛ред рдЕрдм Canvas рдкрд░ slide-in alert cards рд╣реИрдВ:

  • Top-right position тАФ gameplay рд╕реЗ рдЕрд▓рдЧ
  • 4 categories: achievement ЁЯЯв, guidance ЁЯЯа, warning ЁЯФ┤, info ЁЯФ╡
  • Smooth animation: 80px right рд╕реЗ slide-in, fade-in/fade-out
  • Max 3 alerts stack тАФ overflow рдкрд░ oldest рд╣рдЯреЗ
  • Depth fade: рдиреАрдЪреЗ рд╡рд╛рд▓реЗ cards slightly dim

рд╕рд╛рде рдореЗрдВ Contextual alerts рднреА add рд╣реБрдП:

  • samaya < 200 тЖТ "рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ"
  • samaya < 100 тЖТ context-aware рдирд╛рдо-рд╕рдорд░реНрдкрдг guidance
  • рдкрд╣рд▓реА рдЪреЗрддрдирд╛-рдЬрд╛рдЧреГрддрд┐ тЖТ achievement card
  • Samarpita milestones (10/25/50) тЖТ achievements
  • Chakravaata nearby тЖТ рд╢рдВрдЦ guidance
  • Drishti blocked тЖТ рдЬреНрдпреЛрддрд┐ guidance

ЁЯОи Visual Clarity Improvements

Gameplay рдореЗрдВ рдмрд╣реБрдд clutter рдерд╛ред рдЗрд╕реЗ systematically fix рдХрд┐рдпрд╛:

Timer Pills тАФ punyaTimer рдФрд░ prarabdhaTimer рдЕрдм player рдХреЗ рдКрдкрд░ pill background рдХреЗ рд╕рд╛рде рджрд┐рдЦрддреЗ рд╣реИрдВред рджреЛрдиреЛрдВ active рд╣реЛрдВ рддреЛ side-by-sideред

Floating Text Stagger тАФ MIN_Y_GAP = 22px enforce рдХрд┐рдпрд╛ред Multiple events рдПрдХ рд╕рд╛рде рдЖрдПрдВ рддреЛ texts overlap рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред X jitter рднреА ┬▒10 тЖТ ┬▒28px рдХрд┐рдпрд╛ред

Chain/Orbit Separation тАФ prarabdha heavy chain рдХреА globalAlpha = 0.72 рдФрд░ Y position +8px shiftред orbit rings рдХрд╛ extraGlow cap 28px maximumред

notifyText Banner тАФ рдкреБрд░рд╛рдирд╛ abrupt full-screen black overlay рдЧрдпрд╛ред рдЕрдм centered pill (340├Ч56px) рд╣реИ рдЬреЛ smoothly fade-in/out рд╣реЛрддреА рд╣реИред


ЁЯСБя╕П рдЪреЗрддрдирд╛-рдЬрд╛рдЧреГрддрд┐ тЖТ рдХрд░реНрдо-рд░рдХреНрд╖рд╛

рдЧреАрддрд╛ 4.37: "рдЬреНрдЮрд╛рдирд╛рдЧреНрдирд┐рдГ рд╕рд░реНрд╡рдХрд░реНрдорд╛рдгрд┐ рднрд╕реНрдорд╕рд╛рддреН рдХреБрд░реБрддреЗ"

рдЬрдм samarpita тЙе 50 рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЪреЗрддрдирд╛ рдЬрд╛рдЧрддреА рд╣реИ тАФ рдЕрдм isKarmaImmune = true рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рдпрд╛ рдХрд╛ рдХрд░реНрдо-рдкреНрд░рднрд╛рд╡ рд╢реВрдиреНрдпред рдкреБрдирд░реНрдЬрдиреНрдо рдореЗрдВ рднреА рдпрд╣ carry рд╣реЛрддреА рд╣реИред

рдпрд╣ рд╢рд╛рд╕реНрддреНрд░-рд╕рдВрдЧрдд рд╣реИ тАФ рдЬрд╛рдЧреГрдд рдЖрддреНрдорд╛ рдкрд░ рдХрд░реНрдо-рдмрдВрдзрди рдирд╣реАрдВ рд▓рдЧрддрд╛ред


ЁЯРЫ Bug Fixes

  • bandhanaMukta audio key typo fix (manifest mismatch)
  • Per-second alert flooding рдмрдВрдж тАФ unit-change рдкрд░ рд╣реА alert
  • Naam jaapa duplicate alert fix
  • DOM alertBox тЖТ canvas triggerAlert() (gamepad, tab-switch)
  • ctx.roundRect() polyfill тАФ older browser support
  • Reincarnation рдкрд░ isNaamaJaapa, _prevSamaya200 reset

ЁЯУК Stats

Metric v0.0.4 v0.0.8
Architecture Monolithic ES6 Modules
Source files 1 (index.html) 7 src files
Alert system DOM single string Canvas queue (3 cards)
prarabdha No timer Bhog timer + penalty
Browser support Chrome 99+ Chrome 80+ (polyfill)

ЁЯЫгя╕П рдЖрдЧреЗ рдХреНрдпрд╛?

тЬЕ v0.0.9 тАФ Prarabdha refinements (done)
тмЬ v0.1.0 тАФ Pankhudi directional mechanics
Enter fullscreen mode Exit fullscreen mode

v0.1.0 рдкрд╣рд▓рд╛ major gameplay overhaul рд╣реЛрдЧрд╛ тАФ pankhudi рдХреА active direction рд╕реЗ power shoot, maya pull, рдФрд░ indriya pull drive рд╣реЛрдВрдЧреЗред


ЁЯЩП рд╕рдорд░реНрдкрдг

рдпрд╣ game рдПрдХ solo project рд╣реИ тАФ code, design, audio, philosophy тАФ рд╕рдм рдХреБрдЫ рдЕрдХреЗрд▓реЗред

рдЕрдЧрд░ рдпрд╣ journey рдЕрдЪреНрдЫреА рд▓рдЧреА рддреЛ:

реР рдирдордГ рд╢рд┐рд╡рд╛рдп ЁЯХЙя╕П


Moksha

Top comments (0)