Original games
and worlds.
Each project is an excuse to push a system harder. Some are tight arcade loops, some are long-running roguelikes, one is an anime universe.
Elemental Rift
The flagship.
Tower-defense roguelike. Stack elements, evolve classes, fight bosses that adapt to your build. Cloud saves, segmented leaderboards, and a constant patch cadence.
Version history
Simulate waves fix
Try/catch wrapper surfaces errors inline. Player can now die mid-simulation and sees a proper inline death result instead of a crash. Wave base calculation corrected for first-run state.
Retire button fix
Undefined trinityRank variable caused the retire overlay to crash silently. Fixed with proper variable declaration.
Simulate waves — real survival check
Simulation now calculates actual HP loss per wave based on enemy attack, defense, and lifesteal. If the player dies on wave 3 of 5, simulation stops and shows partial results.
Simulate waves on map screen
Moved wave simulation from the Cosmic menu to the wave selection screen where it belongs. Input a count, hit Simulate — XP, gold and auto-equipped loot apply immediately.
Cosmic Alignment system
Full Trinity Force redesign. Six alignments (Inferno, Storm, Void, Nature, Order, Chaos), node trees per class, mutations every 10 levels, ascension for permanent stat boosts. XP earned from total damage dealt — slow progression by design. Extreme difficulty replaces Infinite (25 waves, boss every 5, all loot tiers). Batch level-up screen — invest all points on one screen with repeated taps.
Basic attack rate limiting
Manual taps are now rate-limited to the same interval as auto-toggle. No advantage from spamming vs using auto — both fire at identical speed.
Attack speed overhaul
Base attack speed raised from 1.0 to 2.0 (500ms between hits at start). Self-scheduling setTimeout replaces fixed setInterval — speed recalculates every hit so buffs and gear apply immediately. Minimum interval lowered to 100ms for high-speed builds.
Level-up popup pauses combat
G.combatActive set to false immediately when level-up triggers, not just when the popup opens. Closed the 900ms window where enemy could still attack.
Zindigon loading screen
Branded loading screen matching zindigon.com — dot grid, mint glow, film grain, Z mark, Instrument Serif title. Dismisses on auth ready with 6s failsafe.
Dark/light element removal
All remaining dark and light element logic removed — draw shapes, sound cases, particle color maps. Sound key map now routes by imbue instead of class name.
Mage particle crash fix
Particle spawn used ab.class ('mage') as the element key. elementParticleColor('mage') returned undefined, producing undefinedff as a canvas color — corrupting the 2D context. Fixed by using ab.imbue instead.
Arrow particle canvas corruption
Arrow particle handler placed inside particles.filter() called ctx.restore() without a matching save, corrupting the canvas save/restore stack after a few shots. Moved drawing to drawParticlesLayer.
Classes start at level 3
All classes now start at classLv 3 so the first skill is immediately usable. Loadout picker always shows currently equipped abilities regardless of level requirement.
Enemy scaling — power curve
Replaced 1.18^level exponential (blows up past lv40) with lv^1.85 HP and lv^1.4 attack. Level range widens from ±5 to ±12 at high player levels. Consistent 8-35 hits to kill across all stages.
Auto-slots persist between enemies
Root cause: stopAllAutoSlots called multiple times in the kill chain overwrote saved state with empty. Fixed to only save when slots are actually running. All interruptions (vendor, item drop, level-up) now restore slots on next spawn.
Damage variance + color coded numbers
Every hit rolls 80-120% of average. White = normal, Blue = near-max roll (top 13%), Red = crit, Gold = max roll + crit. Enemy levels now roll playerLevel-2 to playerLevel+8.
True idle mode
Next Wave always visible (dimmed when unavailable). Ability slots stay on between waves — saved and restored across vendors, item drops, and level-up popups. Auto-wave toggle persists across the entire run.
Full class overhaul — 85 abilities
Each class now has 2 basics, 5 skills, 3 ultimates per imbue path. New passive buff system — abilities trigger timed stat boosts (Phoenix Surge, Storm King, Shadow Realm, Absolute Zero etc). Arrow projectile animation for rogue bow. Enemy lunge animation on attack.
Gear upgrading + boss milestones extended
Equipment can be upgraded +1 to +5 (50→1800g per tier). +5 rolls a star bonus on a random stat (+25-50%), rerollable for 2500g. Boss milestones extended to 50M damage with exclusive titles: Decimator (10M), Dragonslayer (30M), World Ender (50M).
XP system rework
XP per kill = wave × 12. XP to level = playerLevel × 80. Always ~7 kills to level regardless of wave. Boss XP = wave × 12 × 5 (~80% of a full level).
Enemy level scales with player
Enemies roll between playerLevel-2 and playerLevel+5. No more restarting on easy mode — enemies always match your progression. Enrage chance scales with level gap.
The Great Restructure
Three playable classes (Mage, Warrior, Rogue) with imbue selection. New creature-based enemy roster with enraged variants. Defense replaces Armor+MagicResist. New imbue effects (burn, poison, electric, ice, slow, heal-on-hit). Title system with Season 1 awards. Leaderboard wipe — Season 2 begins.
All games
AetherFall
Mobile-first roguelike with keepers, upgrades, and endless waves. The systems lab where everything else gets stress-tested.
HyperCell
Fast-paced cube runner. Speed, precision, momentum. 90-second loops you can't stop replaying.
Nexus Defense
Build defenses, survive pressure, evolve a build. A study in escalation.
Tornix
Compact action prototype. Tight controls, escalating chaos, moment-to-moment feel.