Skip to content


Switch branches/tags
  ___ _ __   __| | __ _  __ _ _ __ ___   ___
 / _ \ '_ \ / _` |/ _` |/ _` | '_ ` _ \ / _ \
|  __/ | | | (_| | (_| | (_| | | | | | |  __/
 \___|_| |_|\__,_|\__, |\__,_|_| |_| |_|\___|

A WebRTC-enabled 3D chess game.


endgame is a simple online 3D chess game. Load the page, share the link, connect up and play chess!

endgame began as an entry for Static Showdown 2015, and has slowly crystallized into existence from that point on. The goal was to build an interesting way of playing chess with remote friends or family, while using it as an excuse to learn about WebRTC and WebGL.


Get the code and install the Node packages. See package.json for the version of node required.

git clone
cd endgame
npm install

Then just run gulp to build and serve the app locally!


For deployment, there are a set of dist gulp tasks that can be used to isolate, concatenate, and minify endgame's source.

  • gulp dist will build and minify a distributable set of files for endgame, under the dist directory
  • gulp dist-serve will launch a local web serve for the minified source
  • gulp dist-clean will clean and remove the dist files

endgame was made to be hosted on Firebase. See their docs for directions on how to set up Firebase hosting and DB. To use a custom Firebase DB, modify the FIREBASE_CONFIG constant in src/config.js.

After configuring Firebase, simply run gulp dist to generate the distributable and then firebase deploy to deploy to hosting.


This project wouldn't be possible without the generosity of open source creators and contributors. See for a list of the libraries, tools, and assets used.