imalooney / t3tr0s

30th anniversary tetris in ClojureScript

Home Page:t3tr0s.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

About

30th anniversary tetris in ClojureScript

t3tr0s.com

License:Other


Languages

Language:Clojure 65.7%Language:CSS 31.8%Language:JavaScript 2.0%Language:Shell 0.5%