June’s Program: Fly
Can you catch the fly in this ZX81 video game.
Fly is a simple program that, in the end, is both baffling and intriguing. Looking at first like a simple shooter, it acts very differently then one and, if you don’t know the rules, will make you crazy. Once you do know how to play, though, Fly becomes simple and repetitive. Our Program of the Month shouldn’t be in this place, but it is.
This duality shouldn’t come as a surprise. This problem didn’t just pervade my games, but could be seen in many of the games written at the time. I’m not just saying in mine, but in the overall lack of maturity of the market. It wasn’t my age, but the market that influenced my designs.
Difficulty then was often created by speeding up the game. Usually, this mean making it faster than most humans could react. In my case, ZX81 BASIC was way to slow with a horrible keyboard to use speed as a difficulty ramp. Fly obviously doesn’t try to use speed, there is no variance in it. Fly does make use of time. The fly buzzes by multiple times, requiring you to time any hits you want to get in.
Another common way to add difficulty was to put in some sort of secret. If you knew the secret, the difficulty goes away. Unlike speed, I used this a ton. A lot of games did as well. In some games, it meant memorizing the not-so random things that occurred. In others, it meant exploiting bugs or tricks that made things easier. For me, it often meant providing a shortcut you had to find. In this case, though, it meant knowing how much of the screen to destroy.
Let me back up a bit and talk about how to play Fly. Fly divides the playing field into three parts. At the top, you can move back and forth using the “Z” and “.” keys. In the middle is a screen which you can cut holes in using the “M” key. Below the screen a fly which buzzes from left to right across the screen. You can, if the there is a hole in screen, hit the fly for more points.
Talking about points, Fly never really tells you how you score. It tells you how much you earned at the end of the game, but there aren’t any clues along the way. In a way, this is the first secret. Destroying the screen earns you two points for each hole. However, if you get that fly you earn another ten points, plus up to two more random bonus points. The points may seem random, but if you time things well you can actually rack up a bit more once you know that the fly is worth going for.
Oh, but that is, or was, another secret. In the original game, there was no sign that you hit the fly. Unless you were counting blocks throughout the game, you probably would never guess that the fly was worth hitting. In fact, given the fly keeps going on its way, you’d probably assume you just missed it and keep trying. If you don’t believe me, check out the code.
Because the original printout was so badly faded, I actually did some testing on that routine by printing an asterisk when you hit the fly. The originally check was actually a bit silly. It added a 1 to the variables, which wasn’t really needed. When I added the hit routine, I trimmed it to show what it would should have been. This worked so well, and actually made more sense, I left the routine. The only other change was to make it start over instead of the original exit routine.
The last secret, once you know it, makes the game pretty easy to win. In fact, it’s really two secrets. The first, which may come as a surprise given the name of the game, it that the fly doesn’t matter. Nope. Nada. You can safely ignore the fly and win every time. Although it does help to add a few points to your score, you don’t really need it. Instead, you just need to create between 19 and 21 holes in the screen. No more. No less.
And that is it. Know the secret and the game is easy and, sadly, quickly boring. Don’t know the secret and you just flounder around until you give up. Either way, they are poor choices. But, as I noted, that was the way things worked in many games. In fact, some of the best games work the same way. Do you think modern games are better, or just do a better job of concealing their real intent?