Neon Chess

3D chess with five engine levels — three.js

Overview

A complete chess game on a glowing 3D board: full rules, a built-in chess engine with five levels (about 600 to 2200+), clocks, 3D and top-down views and two players on one device.

  • Full chess rules: castling, en passant, promotion, check, mate, stalemate, repetition, 50-move rule
  • Built-in engine with five levels, from about 600 to 2200+, running in a Web Worker
  • Glowing 3D board with sculpted pieces, plus a crisp top-down 2D view
  • Optional clocks (bullet, blitz, rapid), undo, hints, resign and draw
  • Two players on one device with automatic board flip
  • Move, capture, check and checkmate sounds and ambient music
  • Touch, mouse and keyboard; all texts in one file for translation
  • Self-hosted three.js — no CDN, no external requests

Requirements

  • A browser with WebGL (all current desktop and mobile browsers); a 2D board is used otherwise
  • Serve over http(s) — any static host or a local server (the engine runs in a Web Worker)

Technology: three.js r159 · WebGL · Web Worker · Web Audio · JavaScript.

Quick start

  1. Unzip the package.
  2. Upload the game/ folder to your web host, for example as /games/neon-chess/.
  3. Open https://your-site.com/games/neon-chess/index.html. No install, no database, no server code.

To try it on your computer first, start any local web server inside game/:

cd game
python3 -m http.server 8080
# then open http://localhost:8080/index.html

Browsers block some features (workers, 3D model files) for pages opened straight from disk, so always test through a web server.

How to play & controls

Tap or drag a piece to move it — legal squares light up. Pick your colour, a clock and 3D or top-down view in the game lobby. Undo, hints and draw/resign are in the side panel.

Move a pieceTap the piece, then the square · or drag it
KeyboardArrow keys + Enter to pick and drop · Esc to pause
LobbyColour, clock and 3D / top-down view before the game
MenuButton in the bottom-left corner

File structure

game/index.htmlThe page: start menu markup and the GAME_CONFIG settings (texts, difficulty levels, colours).
game/host.js · game/host.cssThe host: start menu, loading, countdown, pause on tab switch, result card.
game/games/chess/game.jsThe game itself: rules, computer opponent, rendering, input, sound.
game/games/chess/rules.jschess rules and engine (move generation, search, levels)
game/games/chess/ai-worker.jsruns the engine in a Web Worker
game/games/chess/clock.jschess clock
game/games/chess/copy.jsall on-screen texts (translate here)
game/games/chess/assets/Models, textures and sound (32 files).
game/vendor/three.js r159 and its loaders / post-processing (MIT).
game/fonts/Inter and Unbounded fonts, self-hosted (OFL).
documentation/index.htmlThis documentation.
LICENSE.txt · THIRD-PARTY.txt · CHANGELOG.mdLicence terms, bundled components, version history.

Configuration

The start menu is driven by window.GAME_CONFIG in game/index.html:

name, titleHtml, kicker, lead, howToTexts of the start menu (titleHtml may use <em> for the coloured word).
levelsDifficulty buttons: [key, label, hint]. The keys are the computer levels the game knows: spark, pulse, circuit, cyber, singularity.
defaultLevelLevel selected on the first visit (the player's last choice is remembered).
hotseattrue = show the "2 Players · same device" button.
playersNames used for the two players in two-player mode.
backUrl (optional)Adds a "← All games" link to the start menu, e.g. back to your games page.

Colours: --acc and --acc2 in the <style> line of index.html; --menu-bg is the menu background picture.

Customise & rebrand

Gameplay settings live near the top of game/games/chess/game.js. Search for these names:

TIERS (rules.js)Engine levels: search depth, time and mistakes per level.
PST_SRC (rules.js)Piece-square tables (engine style).
copy.jsEvery on-screen text.
NAMESSound effect file names.
assets/tex/Board, piece and sky textures.

Art and sound

Replace files in game/games/chess/assets/ with your own, keeping the same file names and formats (WebP images, MP3 sound, GLB models).

Name and credit

Change the <title>, the meta description and the menu texts in index.html. The small "Made by Vortaxis Studio" credit may be kept or removed.

Embed in a page

<iframe src="/games/neon-chess/index.html" title="Neon Chess"
        width="100%" height="680" allow="fullscreen; autoplay"
        style="border:0;border-radius:16px"></iframe>

Game portals (CrazyGames, Poki, itch.io and similar) accept the game/ folder as an HTML5 upload; add their SDK calls in host.js (start, result, pause).

FAQ

Does it need a server or database?

No. It is static HTML, CSS and JavaScript. Any web host works; it plays fully offline once loaded.

Is there online multiplayer?

Not out of the box: you play against the computer or with a friend on the same device. The game code accepts a multiplayer adapter (ctx.multiplayer: sendMove / onMove), so online play can be added with your own real-time server — we can quote it as custom work.

Can I change the art, colours and texts?

Yes. Texts and colours are in index.html, gameplay values near the top of game.js, and all pictures, models and sounds are plain files you can replace.

Does it work on phones?

Yes — touch, mouse and keyboard controls, portrait and landscape, high-DPI screens.

What is the difference between Licence and Full source?

Licence = one end product (yours or one client's). Full source = one production domain for you and your clients, including white-label, paid games and SaaS. Neither allows reselling the game or its source on its own.

Can I put it on game portals and show ads?

Yes, in your own end product. Add the portal or ad SDK calls in host.js.

Support & updates

Updates are free. Questions are answered for 6 months after purchase (12 months with Full source) — write to hello@vortaxis.com or use vortaxis.com/store. Need a custom version (your art, online play, leaderboards, a portal SDK)? Ask for a quote.

Licence and production activation

Single-domain and Full-source purchases each activate one production hostname. Full source adds editable code, white-label and SaaS rights; it does not include unlimited installations or redistribution. Localhost and .test development hosts are allowed.

Set the delivered key and production hostname in LICENSING/licence.json. Use https://vortaxis.com/licence/ to view activation or request a domain transfer. Vortaxis Studio approves replacement domains. Production activation requires a network connection; public demos remain unrestricted.

See LICENSE.txt for the complete terms. Existing purchases retain their original terms.