Okay, I’ll admit that I was a Star Trek junky. As a kid, I remember eagerly waiting each week to watch reruns of the original series with my family. When 1983 rolled around, I’d watched both of the original movies and owned the comic books that bridged the two. As such, creating a Star Trek game on my ZX81 should come as no surprise.
A short homage.
Star Trek is a cross between a text and a “choose your own adventure” game. Filled with references to Klingons and space travel, atmosphere of the game is there. You start near the Klingon boarder with a decision to make. Summing your inner Captain Kirk, your adventure begins.
Star Trek, ZX81 Screenshot by Steven Reid, 1983
Although nostalgia helps start the game off, actually playing it is disappointing. In short time, you’ll run through the canned moves, wanting more. Some, such as moving, do little to change the game. The ZX81 may have had little memory, but the game could have done so much more.
In the end, there is only a single move that matters, and that one is completely random. The iconic space combat boils down to hits and misses. After several test plays, I still haven’t completed the game. Written early in my programming career, I can blame my 13 year old self and my short attention span. That isn’t an excuse. I could do better.
Convoluted code underlies the game.
The code, much like the game, is oddly structured. As a text game, it tries to set up sequences and selections that fill the screen. As you complete sections, the screen is cleared for the next one. Although the presentation works, the formatting and pacing could be better. I fixed some minor spelling and break issues, but otherwise left things the same.
For some reason, I jump between different input methods. The start of the game uses numbers. The rest uses letters. To be fair, there are only two sequences, leading to the uneven game play noted above. As I was entering the game, I kept wanting to change the input to
INKEY$ to clean this up. Fixing this would be a big user experience improvement.
Digging into the logic, you’ll find the game jumps around. The
IF statements leverage
GOTO to redirect all over the game. But they aren’t always in sequence and it is easy to get lost. There is a
GOSUB used to that acts a reusable screen clearing routine. But tracing the logic is a chore.
To my surprise, this wasn’t a one in done game. The combat was shoe horned into the original code. Even after cleaning up some of the line numbers, it is clear I added that code later. My guess is the game would end when you hit the Klingon. Thinking it too short, I added more ships to stretch the game out. Instead, it makes the game almost unwindable without adding much to the length.
Perhaps a poor choice, the combat does offer opportunity. If anything, enhancing it would have improved the game. Given the movement doesn’t add much, I would like to have incorporated it into the combat. One thought is moving at low speeds could allow you to improve your shot or reduce the chance of them hitting you. Even better, it could cause the Klingons to shoot each other.
Of anything, though, the lack of variety is the biggest weakness. Given it is a text game, there is no sense of space. In away, this mimics one of my favorite episodes, the “The Balance of Terror.” In that episode, the Romulan ship couldn’t be seen. A nod to submarine battles, my game tries to emulate it if only by accident. A positive change would be to capitalize on that idea more, expanding the game into something worth playing.
With the kicking off of a new Star Trek series this month, it seemed fitting to share a game from my fandom days. My only wish is that I had a better game to share. Instead, I’ll go watch “Picard” which should be a whole lot better.