Posted July 18, 2020 by brook.p8
It's 6 days after the jam ended, and my excitement has returned to baseline levels. I wanted to take a more critical look at my game, and talk about my experience makng it. This will mostly be about the design and idea behind it, so I won't cover everything about it.
First off, the inner workings of tetris is a clone of tetris, where you control the random piece generator - sending tetrominos to a couple of ai-controlled players. It's fast and frantic, but also enables strategic play, figuring out which playfields really needs which pieces. It has received, by this point, over 2000 views and 800 plays - significantly better than anything else I've put out - which is my motivation for making this.
What I think is the biggest factor is that it's an idea that really resonates with people, especially so with the crowd who participates in game jams. (It also definitely helps that I have a nice, eye-catching thumbnail)
This idea follows the "x game, but y" formula pretty closely. This has several benefits, and dangers: X immediately serves as a reference point. It gives people a rough idea of what to expect. But, it also creates the question "Why wouldn't I just play x instead?" That's where the twist comes in: X is a reference point, but the twist is the main selling point. If you have a good twist, people will be interested in trying it out! And that's definitely what happened here.
The Inner Workings of Tetris follows the "x, but y" formula pretty much to the letter. The twist here, though, changes Tetris from a real-time puzzle game to.... well, it's still a real time puzzle, but it fundamentally changes the puzzle, and how the player thinks about Tetris. At least, that's the idea.
I received a lot of great feedback. Stuff about the puzzle mode colors being not great, keyboard controls adding accessibility, needing more feedback for failed placement. But, what I heard perhaps the most relates to the difficulty. This is due to components:
-First, the piece timer is too short. In this game, if a playfield doesn't receive a piece for 6 seconds, it receives a garbage line. This is meant to add a time pressure, so the real-life player is basically always having to walk on coals. But, in practice, the 6 second timer is too short, so people are just dragging pieces to whatever field is valid, without strategy. This leads into the next point:
-Second, playing randomly isn't a losing strategy. I wrote a pretty simple system to evaluate all possible locations for a piece placement, and so the "AI Players" pick the one with the best score. The result of this, however, is that since the AI player always gets good spots, most of the time the human player can send over random pieces and still be survive.
-But, on the flipside, the AI isn't smart enough to make thoughtful play be rewarded. As one player put it, "The AI vacillates between making reasonable decisions like clearing lines efficiently and really bad ones like covering holes or clearing lines it clearly should not take yet."
To be honest, the actual algorithm here isn't something I put a lot of thought into during the jam. Right now, the algorithm is:
-If there are any line clears possible, take one
-If a move creates any holes, avoid those
-Otherwise, pick the spot closest to the bottom, and near the walls, if possible.
It's pretty rudimentary, and it's enough for the AI Players to survive for 3-6 minutes as the player spins their wheels. But, it does have the problems I just mentioned.
So, the goal here is to have an algorithm which rewards strategic play, but doesn't do as well if they're just sent random pieces. I've been thinking about it for this week, and this is an intensely difficult, and fragile, problem. And at the time of writing this I don't really have a great idea of how to approach it properly.
Most of the best performing Tetris AI's I've found have knowledge of the next piece they will receive - but, since this game doesn't have a next piece, either it'll have to try every possible sequence of pieces, or, more likely, it'll only be able to consider the current piece. They also use different metrics - being close to the bottom isn't as good a reference as how high the stack is, and how close to the wall the piece is isn't as good a measure as the "bumpiness" of the topmost layer.
Aha, but remember: These metrics are for making the optimal Tetris AI. But the goal isn't to make an optimal AI, it's to make an interesting one. So, in all likelihood, I'll have to come up with my own metrics to measure that. Or, hopefully, I can get the help of someone who's smarter and better at Tetris than me.
I also want to briefly go into the context behind the game jam, because there's an important lesson behind it.
I wasn't planning on entering at all, because I've been working on another project, GOLFNADO, for a few months now, and my motivation has just been steadily decreasing. Even after taking a break and coming back, it took so much effort to anything. And, the last 2 jams I entered, I dropped out of for lack of motivation. But, I came up with an idea I was really excited about, and I had a great time making it! I've been trying to do more with my games for a while, and it's caused a lot of stress. It moved my motivation away from just for fun, which makes a more toxic attitude. It's important to keep a healthy outlook and recognize your feelings. I still want to make bigger games, but I want to do it sustainably, and more importantly I want to have fun doing it.
Finally, where is this going in the future? Well, I'm going to update it post-jam with a bunch of the feedback I've heard. I've got most of the easy stuff in the pipeline already, which leaves two large goals for the future:
-Rework the piece placement algorithm
-Let human players with controllers take over the AI, turning it into an asymmetric local coop game.
The second idea is a really great idea! It makes me want to take this further, but that may be hard to do because I can't monetize it while it still is using the Tetris name and mechanics. So, I could either remove all references to Tetris and have "The Inner Workings of Real-Time Block Falling Puzzle Game", or create my own puzzle system / find a different context that this will work in. Not sure what to do, just yet.
@NeuroDiversion for updates on my work!
@BeanBorg for smaller projects and sparatic content
Twitch, where I often stream dev work and do game jam feedback