Skip to content

Arcade › SoulShift

SoulShift

  • arcade
  • dodge
  • timing
  • action
  • rpg
  • 3d
  • neon
  • browser
0
Remix it Discord

8 plays

How to play

Click the game above and it runs right here in your browser. No download, no installer, no account needed. Malachi Medrano built it with Cinevva, so it works on a phone or a tablet too.

Discussion

Nobody has said anything about SoulShift yet. Play it, then tell Malachi Medrano what you would add next.

Make your own game

SoulShift was built by Malachi Medrano with the Cinevva game creator: describe the game you want in chat, watch it get built, and play it in your browser minutes later.

Remix SoulShift opens the real game in the creator and forks its actual files, chat and design doc, so you start from the code rather than from a description.

Read the build brief for SoulShift

Cinevva's analyzer read this game's design doc and its source, then wrote the brief below. "Make your own" hands it to the game creator as your opening message, so you start from a real spec rather than a one-line idea.

Create a playable browser game called “SoulShift,” an original dark neon dodge-and-timing battle game. Use a full-screen Three.js-style orthographic 3D scene rendered behind HTML/CSS HUD. The visual style is minimalist and crisp: near-black navy background (#05060a) with a subtle large square grid in dark blue/purple, cyan and magenta accents, pale lavender-white bold sans-serif UI text, translucent charcoal panels, thin blue-violet borders, rounded corners, and soft shadows/glows. Keep the camera fixed straight-on so the battle arena reads like a flat 2D game inside a 3D scene.

Overall flow:
- On boot show a title screen, then a menu with “Play — Start a run” and “Reset Save — Wipes progression (local only).” The screenshot-like menu should have SoulShift at upper left, a top-right profile readout such as “LV 1 • XP 0/74 • Shards 0,” a centered translucent panel, and bottom help text: “Move: WASD/Arrows • Confirm/Attack: Space • Back: Esc • Click once for audio.”
- Play opens team selection with two factions: Bonecraft (cyan/blue, skeleton-themed, described as patterns/pressure/weird geometry) and Fallen (pink/red, fallen-child-themed, described as blades/echoes/relentless offense). Allow left/right plus Space, Escape to go back, and tapping menu cards.
- Then show a vertically navigable fighter selection list for the chosen team. Each entry displays name, tagline, HP, ATK, DEF, SPD, and a special ability. Only unlocked fighters appear. Start with Bonecraft Sentry and Blaster unlocked, and Fallen Blade and Rift unlocked. Additional fighters unlock automatically at level gates.
- Selecting a fighter starts a battle. There is no campaign map in the implemented game: the real loop is menu → faction → fighter → battle → victory upgrade/unlocks → faction selection, or defeat → menu.

Battle presentation and actors:
- At the top of the Three.js scene, position two stylized fighter models facing across the screen: player at x=-4.8 and enemy at x=4.8, with a small floating/bobbing animation. Bonecraft models are original simple skeleton-like figures: dark boxy hoodie, cyan trim, pale round skull, two dark eyes, and a glowing accent ring/aura. Fallen models are original simple child-like figures: dark capsule body, peach round head, red/pink scarf ring, and a small colored knife/shard at the side. Do not use copyrighted character names or exact existing character designs.
- In the center/lower portion, show a dark rectangular dodge arena, approximately 10 by 7 world units, with a cyan-violet outlined border. Put the player’s soul inside it as a small glowing diamond/heart-shaped square, cyan for Bonecraft or pink/red for Fallen. Constrain it within the arena with a small margin.
- Bottom battle HUD contains two translucent cards, player and enemy, showing name, current/max HP, stats, enemy difficulty level, and phase label when applicable. Beneath them show a prompt such as “Enemy turn — dodge for 5.5s.” or “ATTACK — press Space near the center.” During player turns show a horizontal timing bar with a moving gold cursor ping-ponging from edge to edge and a bright center marker.

Core combat loop:
1. Battle intro says to survive the enemy pattern, then strike with timing; Space begins the enemy turn.
2. Enemy turn lasts about 5.2 seconds plus difficulty scaling, capped around 9 seconds. The player moves the soul with WASD or arrow keys; normalize diagonal movement and use fighter SPD. Spawn continuous projectiles from all four arena edges, moving inward, with occasional aimed shots toward the soul and occasional three-projectile vertical bursts. Bonecraft enemies fire cyan rectangular “bones” and cyan orbs; Fallen enemies fire pink knife-like cones and pink orbs. Projectiles leave the arena and are removed. Collision with the soul removes the projectile, damages the player, briefly grants invulnerability/flicker, updates HP, and can cause defeat at zero HP.
3. After surviving the wave, clear projectiles and enter the player turn. The timing cursor moves back and forth. Press Space once to attack. Judge distance from the center: near-center is Perfect, a wider center region is Good, otherwise Miss. Use base damage 14/10/3 respectively, then add player ATK and subtract a portion of enemy DEF, with at least 1 damage. Display the result and damage, then return to the enemy turn unless the enemy is defeated.
4. Enemies with phase definitions shift at 50% HP: increase projectile speed/rate and damage, update the HUD to “Phase 2,” show a shift message, play a short tone, and optionally rebuild the enemy with a changed accent. Sentry, Blade, and Last Breath have multi-phase behavior; other fighters use a base phase.
5. Victory awards XP (24 + 10×difficulty, integer) and Shards (10 + 4×difficulty), checks level-up using an increasing XP curve, and can automatically unlock fighters. Show a victory message, then a three-choice upgrade screen. Randomly offer three distinct choices from +HP max (+3), +ATK, +DEF, +Soul Speed, and +Special. Choose with Up/Down or W/S and Space; save the upgrade to the selected character, then show any new unlocks and return to faction selection. Defeat shows “You fell. Press Space to return to menu.”

Roster and distinct mechanics:
- Bonecraft: Sentry (HP34 ATK7 DEF3 SPD7; larger timing window), Blaster (30/9/2/7; one Space-triggered 0.9-second slow-time burst during dodge), Vanguard (40/7/4/6; +2 regen after enemy turn, unlock level 3), Phase (28/10/2/8; Space dash with brief invulnerability, unlock level 6), Classic (32/8/3/7; longer hit recovery, unlock 2), Little (28/7/2/9; smaller soul hitbox, unlock 4), Undersell (34/8/3/7; timing cursor starts closer to center, unlock 5), Scientist (30/9/3/7; enemy projectiles slightly slower, unlock 7), Dust (36/10/2/6; Perfect attacks deal 25% more, unlock 9), Swap Skeleton (34/8/3/7; extra burst chance, unlock 10), Last Breath (42/9/4/6; tough two-phase enemy behavior, unlock 12). Keep the displayed names/taglines and cyan/blue accent variations.
- Fallen: Blade (36/7/4/6; incoming damage reduced to 80%), Rift (30/8/3/8; one quick Space dash per enemy turn with brief invulnerability), Mercybreaker (34/10/2/7; 35% chance to crit on Perfect, unlock 3), Red Echo (26/11/2/9; projectile reflect is listed as its special, unlock 6), Fallen Child (32/9/3/7; after being hit, briefly gains 20% attack damage), Swap Child (30/10/2/8; faster attack cursor, unlock 10). Use red/pink accents with occasional gold variations. Forms are primarily visual/stat-kit variants, aside from the explicitly implemented special behaviors above.

Controls and responsive UI:
- Desktop: WASD/arrow keys move during enemy turns; Space confirms menus, starts battle, attacks, and activates character abilities; Escape backs out of team/fighter screens. Prevent page scrolling from arrows/Space.
- Mobile/touch: show a translucent square movement pad at bottom left with a draggable inner stick and a large “ACT” button at bottom right mapped to Space. Show these only on coarse pointers. Menu cards should also be tappable.
- Initialize simple Tone.js audio on first click/key press. Use restrained triangle synth tones for confirms, attacks, victory, phase shifts, and noise hits; audio should fail gracefully if unavailable.

Persistence:
Store local progress in localStorage under a SoulShift save key. Persist XP, level, shards, unlocked fighter IDs for both factions, and per-character upgrade levels for hp/atk/def/spd/special. Start at level 1, XP 0, Shards 0 with the four starter fighters above. Include Reset Save to restore this default save. Keep the HUD profile updated continuously with level, XP toward next level, and shards.

More free browser games

Browse the whole Arcade →