30th anniversary tetris in ClojureScript
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
00-scrap
devblog add devblog 8 May 29, 2014
externs
public GitHub Issue #39 - fix issue with velocity.js; update CLJS and librar… Mar 16, 2016
src GitHub Issue #33 - persist theme changes from paused state Jun 10, 2017
.editorconfig add .editorconfig Mar 16, 2016
.gitignore
Gruntfile.js
LICENSE GitHub Issue #39 - fix issue with velocity.js; update CLJS and librar… Mar 16, 2016
README.md point readme back to t3tr0s.com as it's up and running again Jun 8, 2017
deploy-singleplayer.sh
example.config.json single player mode at https://t3tr0s.github.io Apr 2, 2017
nodemon.json
package.json
planning.md add details to README, and split planning into new file May 19, 2014
project.clj
todo add some todo notes May 22, 2014

README.md

PLAY HERE

We re-created Tetris™ in ClojureScript. We mainly did this to produce the pleasure and to celebrate the 30th anniversary of its original release in 1984. Our remake enabled us to host a small, local tournament to share a montage of the game's history. Choose from 10 themes representing the popular versions from its past.

DevBlog

In the beginning, we worked on the game at least once a week. It got pretty crazy at the end closer to deadline, but our initial process is documented in blogs below:

  • DevBlog 1 - data, collision, rotation, drawing
  • DevBlog 2 - basic piece control
  • DevBlog 3 - gravity, stack, collapse, hard-drop
  • DevBlog 4 - ghost piece, flash before collapse
  • DevBlog 5 - game over animation, score
  • DevBlog 6 - level speeds, fluid drop, improve collapse animation, etc.
  • DevBlog 7 - draw next piece, tilemap for themes
  • DevBlog 8 - allow connected tiles for richer graphics
  • Day 9 - live board broadcasting (no blog)
  • Day 10 - chat room, more tilemaps, page layouts (no blog)
  • Day 11 - page routing, username (no blog)
  • Day N - socket netcode, spectate mode, MC controls, key-repeat control, chatroom, authentic theming, history graphs, ...

Learn

In the end, we wrapped up what we learned into an educational resource:

Development Setup

  1. Install Leiningen and Node.js.

  2. Run the following in the project directory

    # install node.js dependencies
    npm install
    
    # install grunt
    npm install -g grunt-cli
    
    # compile LESS file
    grunt
    
    # compile ClojureScript files (this may take a minute)
    lein clean && lein cljsbuild once
    
    # copy the example config file (edit as needed)
    cp example.config.json config.json
    
    # start the node.js server
    node server.js
  3. Open http://localhost:1984 in your browser.

If you want a REPL connected to the browser for interactive testing:

lein repl
> (brepl)

Deploying

To deploy a single-player build to https://t3tr0s.github.io

./deploy-singleplayer.sh

Team

License

All code licensed under the terms of the MIT License.

The image files of past versions of the games (ie: the tilemap files) belong to their respective copyright holders.

Tetris is a registered trademark of The Tetris Company.