Hey,
This is a small experiment built with pygame + PyOpenGL — a 3D Tetris / Blockout-style prototype. It was generated with assistance from Qwen3.6 35B A3B, mainly focusing on gameplay logic and iteration speed.
Pieces fall into a 7×7×18 well, and full horizontal layers are cleared.
The camera can orbit around the grid with the mouse, and movement adapts to the camera so “left” stays consistent on screen.
- intuitive 3D movement
- depth perception issues
- control scheme clarity
- full 3-axis rotation
- orbit camera + zoom
- ghost piece (landing preview)
- layer-based scoring
- progressive difficulty
- semi-transparent blocks with wireframe edges
- high score saved to
3dt.json - ~60 FPS
| Key | Action |
|---|---|
| Arrow keys | Move piece (X/Y) |
| Q / E | Rotate around Z axis |
| W / S | Rotate around X axis |
| A / D | Rotate around Y axis |
| Space | Hard drop |
| Mouse drag | Orbit camera |
| Mouse wheel | Zoom |
| Home | Reset camera |
| R | Restart |
| Esc | Quit |
- 1 layer = 100
- 2 layers = 300
- 3 layers = 700
- 4+ layers = 1500+
Large clears are significantly more valuable than single layers.
3D Tetris introduces a common issue: depth misjudgment.
The orbit camera and ghost piece are meant to reduce that, but it's unclear if this approach is optimal.
Project consists of two files:
3dt.py3dt.bat
The batch file:
- creates a virtual environment
- upgrades pip
- installs dependencies (
pygame,PyOpenGL,PyOpenGL_accelerate) - launches the game
- Python 3.10+
- Windows (for
.bat, Python itself is cross-platform)