This project was created for the FIT2102 unit at Monash University. The goal was to create a tetris game using functional reactive programming patterns. Observables were extensively used to create a reactive game loop, and to handle user input.
By utilising a custom action system, the game was able to be easily extended to support multiplayer. The game is hosted on a node.js server, and uses websockets to communicate between clients. All the code for backend and frontend was written with Typescript.
The player can move, rotate, perform wall kicks according to the SRS standard, and hard drop pieces. The game also features a hold piece, and a queue of upcoming pieces implemented with a lazy sequence.
Custom CSS was written to style the game.
Music and SFX created by me. The soundtrack and sound effects were intended to sound similar to Tetris Effect’s deep, ethereal and atmospheric soundtrack. Something that would be relaxing to listen to while playing the game, almost meditative in nature.
Background generated with Deep-Fold’s Pixel Space background generator
@ Davit Gogiberidze 2023