TOOTHRIS: smooth open-source tetris clone with a few surprises


Build from Source Download Video

For best viewing experience make sure your system can consistently play 60 fps video without twitches.

The video itself was rendered at constant 60 fps rate and features perfectly smooth animation, so if you're seeing any twitches, the problem is likely in your system. Last time I checked, iPhone 4, MacBook Pro and Raspberry Pi B+ played the video pretty well. Though I couldn't get satisfactory results on Sony Ion, Lenovo Thinkpad and Playstation 3...


Looks awesome! Though I have no clue what's going on here...

Yulia, my wife

Can we port it to Flash?

Eugene, ex-colleague

What you guys are smoking?..

Alexey, ex-colleague

What the heck is wrong with controls!? Reproduce the CLASSICS first, THEN get creative!

Andrew, ex-colleague


Kick-ass chip tune in the video: "Artificial Sweetener" by Christian "Funky Fish" Finstad and Lasse "raina" Mattila licensed under

All the great services, software and hardware I used to build the game: too many good people to list here, see all the dependencies in sources.

Inspiration, support and occasionally kicking me away from the laptop to do something useful: my dearest wife Yulia.

The rest of game stuff: yours truly, Oleg "olegus8" Plakhotniuk.


I made this thingy back in 2008 over a course of 3 months. I wanted to create a game with very smooth animations and transitions all over the place. Before long I realized that on some platforms it's problematic even in principle to achieve consistent graphics performance. Moreover, the tools I chose made it difficult to port the game to more suitable platforms. In the end I decided to get the game to some stable point and stop there.

I'm sharing all this in hope it might inspire some bright mind to create something beautiful. Or perhaps someone may even wish to finish this project and make a real game out of it.

If you want to get in touch, please feel free to drop me a line at

Thanks for reading all this, you're great! Oleg.


Freeplay mode only: single infinite level with all gameplay elements. There's no end of the game or gradual levels progression.

It runs on Arch Linux, but with a reasonable amount of effort can be built on Windows or Mac OS X.

It's written in Stackless Python. All game objects are separate microthreads communicating with each other.

Game logic is deterministic. If you start with the same random seed and playback the same player inputs, you'll get the same results.

It can record and playback demos. Comes in handy when debugging stuff or shooting gameplay videos.

Game video at the top of this page was automatically generated from the demo played back and rendered frame by frame.


The gameplay consists of two main parts: classical and extended. Classical part comes from the original Tetris game: there are 7 different figures; each round a random figure is falling into the cup; whenever a row is completely filled up with figures, it's being removed from the cup.

Extended gameplay part is unique to this game. It's based on two concepts: actions and bonuses. Action is something the player does (for example, rotate the figure full circle, or slam it against the cup). Bonus is something the player gets (for example, the ability to slam the figure all the way to the very bottom destroying every other figure in its way).

After a player has performed a given action with all 7 figures, he/she gets the corresponding bonus. There's a table in the right part of the game screen showing which actions with which figures were made. When the row in this table is complete, player gets the bonus to the left of this row.

The game is controlled with arrow keys. The menu is navigated with mouse. There are 7 actions and 7 bonuses. They are described below.


Actions & Bonuses

Drop: hold "down" key and slam the figure down hard. After dropping all 7 different figures you'll get Super Drop bonus.

Super Drop: when you slam the figure down, it'll go all the way to the very bottom of the cup, destroying every figure in its way.

Hit: slam the figure hard against a side of the cup. After hitting all types of figures you'll get Super Hit bonus.

Super Hit: when you slam the figure against a side, whole bottom row of cells will be removed from the cup.

Ground: place the figure so that there are no empty cells immediately below it. The figure must rest completely on other figures or at the bottom of the cup. No part of the figure should overhang or bridge. When you did this with figures of every type, you'll get Builder bonus.

Builder: after you placed the figure to rest, every empty space below it will be filled up.

Rotate: hold "up" key and rotate the figure full circle. After rotating all the figures you'll get King of the Hill bonus.

King of the Hill: after you placed the figure to rest, all the rows it lays in will be removed.

Fragment: the figure gets fragmented when only a part of it is being removed from the cup. Fragmented figure looks like separate square cells. After each figure type was fragmented, you'll get Acid Rain bonus.

Acid Rain: in the beginning of next round acid droplets will fall down into the cup, dissolving topmost cell in each column.

Swallow: remove the figure from the cup all at once, without fragmenting it. After each figure type was swallowed, you'll get Hail bonus.

Hail: in the beginning of next round new cells will fall down into the cup until all columns are of the same height.

Float: place the figure so that it overhangs or bridges over other figures. It's the opposite of Ground action. After you floated each figure type, you'll get Earthquake bonus.

Earthquake: in the beginning of next round the cup gets shaken up, removing all gaps in each column. That is, each column will have the same number of cells in it, but they'll go continuously without any gaps.

Copyright 2008, 2015 Oleg Plakhotniuk