Skip to content

Arcade › Crystal Keep

Crystal Keep

  • 3d
  • tower-defense
  • strategy
  • low-poly
  • arcade
0
Remix it Discord

4 plays

How to play

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

Discussion

Nobody has said anything about Crystal Keep yet. Play it, then tell Kamden Finch what you would add next.

Make your own game

Crystal Keep was built by Kamden Finch 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 Crystal Keep 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 Crystal Keep

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.

Recreate "Crystal Keep" as a playable fixed-camera 3D tower-defense game in Three.js. Use a bright low-poly toy-like Kenney Tower Defense Kit aesthetic: a rectangular floating green grass tile board with subtle textured tile surfaces, a winding orange dirt path, faceted teal-green trees around the edges, and a glowing purple/blue crystal at the base. Use an orthographic-looking but technically perspective elevated camera from the front/right, approximately at (0, 10.5, 9.5), looking at the center of the board; keep the camera fixed and do not add camera controls. Use a pale sky-blue background and soft fog, strong ambient plus directional lighting, shadows, and a clean colorful presentation. Load Kenney-style GLB assets for grass tile, dirt path tile, spawn tile, round tower base, tower body, cannon, ballista, turret, trees, and large crystal; use the Quaternius Ultimate Monsters Blob Alien GLB for animated enemies and play its Walk animation. Add small click and laser shooting sounds if available.

The board is a 13-by-9 grid with x from -6 to 6 and z from -4 to 4. Build the terrain from individual tiles. The enemy route is a connected 19-cell winding path, starting at the left spawn at (-6,3), running right across the upper portion to (-3,3), turning down through (-3,2),(-3,1), then right across z=1 through (1,1), down through (1,0),(1,-1), right across z=-1 to (4,-1), down through (4,-2),(4,-3), then right through (5,-3) to the crystal/base at (6,-3). Render these cells as dirt and the start as a spawn tile; all other cells are grass. Place the crystal at (6,-3) with a translucent cyan circular glow beneath it. Scatter low-poly trees at the visible perimeter/grass positions, including along the back edge, left edge, right edge, and lower area, matching the decorative arrangement rather than obstructing the path.

Place exactly ten circular build pads on grass beside the path at coordinates (-5,1), (-3,-1), (-1,3), (0,-1), (2,2), (3,0), (5,1), (5,-1), (-6,-1), and (-1,-3). Each pad is a dark translucent circular disk with a yellow glowing torus outline and gentle rotation/hover-like visual motion while unoccupied. Clicking/tapping an unoccupied glowing pad places the currently selected tower if the player can afford it; hide the pad after placement. Clicking a placed tower selects it and shows its range ring and upgrade/sell controls. Clicking empty board space clears selection. Support mouse and touch/pointer input.

Start with 
40, 12 crystal lives, and Wave 0 / 8. The player manually starts each wave. The top HUD must show dark translucent rounded pills for money (with a money-bag/coin icon), crystal lives, "Wave 0 / 8" style progress, current total enemies remaining including not-yet-spawned enemies, and a green Start Wave button. While a wave is active the button says Wave Running and is disabled; after wave 8 it says Complete and is disabled. Display short centered status messages such as the initial defense instruction, wave incoming, wave cleared with the next-wave instruction, and victory/defeat. Provide a bottom-left dark translucent rounded control panel with three blue gradient tower selection buttons, with the selected one outlined yellow: Cannon $55 • solid damage, Ballista $70 • long range, and Turret $90 • rapid fire. Below them show the instruction: "Click a glowing build pad to place the selected tower. Click a tower to upgrade or sell it. Towers target enemies automatically." When a tower is selected, show its type, level, damage, range, upgrade cost or Max level, and sell value, with orange Upgrade and red Sell buttons. Selling returns 65% of total money spent on that tower. Implement the tower stats and behavior: Cannon costs 55, range 2.45, damage 32, fire rate 0.95 shots/sec, projectile speed 8, orange projectile, and small splash damage; Ballista costs 70, range 3.35, damage 24, fire rate 0.72, projectile speed 11, yellow projectile, and single-target damage; Turret costs 90, range 2.55, damage 13, fire rate 2.8, projectile speed 13, cyan projectile, and rapid single-target fire. Towers automatically choose the furthest-along enemy currently within range (based on route progress), rotate their weapon toward it, and fire visible moving projectiles. Cannon splash affects nearby enemies, with the primary receiving full damage and nearby targets receiving 55%. Towers have levels 1 through 3. Upgrade cost is floor(base tower cost * (0.7 + current level * 0.65)); on upgrade subtract the cost, add it to total spent, increase level, multiply damage by 1.45, add 0.33 range, multiply fire rate by 1.18, and visually scale the tower larger. Show a thin white range circle around the currently selected tower. Waves spawn Blob Alien enemies from the left spawn one at a time and make them follow the exact route toward the crystal. For wave index w (1 through 8), spawn count is 7 + 3*w, health is round(70 + 32*w), speed is 0.82 + 0.055*w route units per second, and each kill awards 10 + floor(1.8*w) money. Spawn interval is max(0.45, 0.92 - 0.035*w). Enemies should be around scale 0.32 + 0.01*w, animated with Walk, and have billboard health bars above them: dark background and green foreground that shrinks with health. If an enemy reaches the crystal, remove it and subtract one life. If its health reaches zero, remove it, award its reward, and show a brief expanding/fading colored hit pop. Towers fire with small visible sphere or cone projectiles and a short expanding/fading impact effect; play a quiet laser sound on shots and click sound for UI actions. When all enemies in a wave have spawned and all active enemies are gone, award a wave-clear bonus of 35 + 10*w. Waves 1 through 7 can then be started manually; after wave 8 is cleared, show "Victory! The crystal base survived all waves." and stop gameplay. If lives reach zero, show "Defeat! Too many enemies reached the base." and stop spawning/updating combat. Preserve the bright sky-blue background, soft shadows, rounded bold Nunito-like HUD typography, responsive layout, and mobile-friendly wrapping of the top bar and bottom tower panel. Expose optional getGameState/setGameState debugging hooks for money, lives, wave index, towers, enemies, and victory/game-over state.

More free browser games

Browse the whole Arcade →