This is a critique of Pico Checkmate by Krystman. Its another implementation of chess for Pico-8.

Part 1: Things I Like

Pico Checkmate does a lot of things well. According to Krystman’s description, he aimed for the game to be “pretty, readable and fun to play”, and I think he accomplished that very successfully. The animations are at a smooth, which is due to him using update_60(), which draws frames 60 times per second instead of the normal update() which is what I used. The shadows and sprite work give the game a 3D feeling, which I feel is much prettier when compared to the flat sprites I have.

PicoCheckmate

Smooth, beautiful animation in Pico Checkmate, notice how the shadows move with the pieces, and the pieces are taller than each square, to create a 3D feeling

Source: Krystman https://www.lexaloffle.com/bbs/?tid=31213

In addition to good animation, the sound design in Pico Checkmate is great was well. The sounds for each action are unique; moving the cursor and selection pieces has a short, simple blip noise and, in contrast, the loud thud denoting check(mate) gives it a greater impact. This contributes greatly to the readability of the game, by giving the player greater feedback on their actions. I find the sound to be even more impressive when I think about the attempts I made myself at implementing sound effects. The Pico-8 has a very limited sound font, so creating and designing good effects like the ones in Pico Checkmate is difficult.

While both the animation and sound effects help make the game more enjoyable and user-friendly, I think the best aspect of Pico Checkmate, is a functional one. That aspect is the implementation of a simple chess AI. Doing so in Pico-8 is an amazing feat, and to explain why I have to give some context. The Pico-8 is designed to be a limited system, in order to encourage creativity through simplicity. This reasoning is why the Pico-8 has only 16 colors, 4 sound channels, and, most critically, a 8192 token limit. A token in Pico-8 is any “word” in code. For example, when setting a variable, x = 1, three tokens are used: x, =, and 1. Essentially, this limits how much code can be written, and requires Pico-8 programmers to be more creative in how they write code in order to have the same functionality in less tokens. This token limit is what makes the inclusion of a chess AI in Pico Checkmate the most impressive to me. Krystman managed to fit in code for the rules of chess, the animations, the sound effect triggers, and an entire chess AI inside Pico-8’s very strict constraints! It is incredible, and I can see by examining the Pico Checkmate’s code, requires advanced skill and knowledge particular to the Pico-8.

Part 2: Things I don’t like

Though Pico Checkmate is amazing, I still have some issues with it. The main one being that on either players turn, any piece can be hovered over and its possible moves displayed. Though this may help with identifying what pieces are under attack, I found it mainly led to confusion over whose turn it was when I was using it. If only the player whose current turn it was could have their pieces show their possible moves, it would be much easier to know whose turn it was.

Another issue I had was the cursor size. The cursor’s size and animation means it visually obscures some of the pieces around it, which can make it harder to read the game state, especially if a piece is being moved to or from a bunched up group of other pieces.

Besides these two issues, I find Pico Checkmate to be a great implementation of chess, which fully accomplishes it’s goal of being “pretty, readable and fun to play”.