ďJealous of Vargenís accomplishments, a rival kingdom has attacked and kidnapped your king. As head Knight, you mount a quest to return the King, hidden somewhere in the forest by his captors. But hurry! The King's ransom has a time limit. Can you find the King in time and restore the Vargen Crown?Ē
Sounds great right? An adventure game set in a single screen. I had high hopes for Vargen Crown. Castles, keys, and puzzles, our program of the month covered the basics of adventure. Using just the ZX81 cursor keys, playing it will leave you unsatisfied and, I suspect, quite frustrated. Itís too bad as the game has a decent look to it. I chalk it up to being a young programmer, but that's not an excuse. Still interested? Letís dig in and see what makes this game tick.
Although I want to start by getting telling you why this game is bad, I also donít want to spoil it yet. Instead, I first want to tell you why I designed it this way. Bear with me and, if youíre still lost getting into the castle, Iíll explain it all in due time. If youíre still impatient, jump to the end for the spoilers.
Itís about discovery.
Itís hard to call Vargen Crown (VC for short) an open world game, but in many ways thatís what it is. Presented with a pair of castles and a timer, it should be obvious where to start. But something is blocking that castle door. What do you do now? Where do you go? Better figure it out as that timer is ticking down.
Much like more modern games, I wanted the player to experiment and figure out what to do. Sitting down to play it all these years later, it didnít take me long to figure out how to move. Yet, I had no clue what to do next. Wandering aimless around the screen, it didnít take long to get frustrated. And I wrote it!
Öplaying it will leave you unsatisfied and, I suspect, quite frustrated
To be fair, this was 1984. A year before I was punching programs on a PDP-11ís teletype. My first programs just printed pictures or calculated your age. Now, I was designing an adventure game that would play out on a single screen. Limited by age and experience, I did my best.
Good intentions aside, VC just doesnít have much to do. Once you know how to play, there isnít any replay value. Besides bad design decisionsómore on that lateróI didnít make good coding decisions either. The game is horribly slow.
The making of a slow game.
Given the relative simplicity of the game, I am surprised at how unresponsive it is. What there is to do is stuffed into each move, causing the game to bog down. To compensate, I turned to the FAST command. Although it speeds things up, it causes an annoying flicker on a real ZX81 and is best avoided.
The code itself is pretty difficult to read, even for ZX81 BASIC. This is due to two reasons. First, it will help you to know that the game changes when you bump into things. For example, touching the key will open the castle. To determine what you touch, I grab the value of what is at the location you are trying to move to as follows:
360 PRINT AT X,Y;
370 LET P=PEEK (PEEK 16398+256*
The problem is that I have to then compare that number to what you hit. For example the inverse ďOĒ of the key has the code of 168. Thatís pretty cryptic and it wouldnít have been hard to use
CHRto convert to a string. Doing so would not only have made reading VC easier, but it would have been faster too.
The second problem is that I crammed all the logic into a single
FOR loop. Lines 250Ė480, almost half of the program, take up all the game logic. Only nine lines, the puzzle code at 510Ė590, is done outside of the loop. No wonder I had to use
Remember to simplify.
VC uses a variable, O, to maintain the state of the game. Iím either checking it or changing it. Hind sight is always better and I can definitely see ways to drop those
IF statements. The easiest would be to move the logic into the code that tests for changes. Doing so would remove five lines of code.
On the changing state front, I actually modified it in 1998 when I first entered the program. In the original version of VC, I had put all the logic into a single line using ZX81ís boolean logic. Tight as that code was, it was fraught with errors. I broke that code out into separate IF statements. This not only got rid of the bad logic, it also made VC easier to read.
That said, I could have even done away with that change. Since each state is linear, I could change the test for what you touch into a variable. That way, VC is only taking action when there is something worth doing. This change would add a bit more complexity to the program, but speed is king here.
These and a few other improvements would have improved the programís speed. As a bonus, none of the changes would compromise game play. Now, if only that was better.
Improving the game play.
Speaking of game play, I still owe you how to beat the game. trying to find that elusive key? Hereís a hint: you need to be on line eight. Yes, you need to be on a specific row or column when moving to expose the key or the crown. For whatever reason, I thought that moving a specific way would be a great way to hide things. It isnít. Instead, it is a gimmick that at best is time consuming. At its worst itís annoying.
Still trying to find that elusive key? Hereís a hint: you need to be on line eight
If you think that is bad, the next part is worse. I print a random sequence of charters at the top of the screen. Okay, go touch them and they change. Ah, youíve found the puzzle! So, keep touching them, in different orders, to see if you can figure out what the sequence should be. Itís random each time so I canít tell you what it is.
Worse, with each touch I change other characters in the puzzle. Because of that, you canít just try all the sequences. There arenít many. Mind you, I had taught myself how to solve a Rubikís Cube back in the 5th grade so I thought I was being clever. Instead, it too is annoying. Even worse, you can change the sequence in a way that will prevent you from solving the puzzle. Also not fun.
Later, I did make the crown a bit easier to find. Originally you had to be on line 17 which isnít easy to count out. I moved the test to be along the floor. Just move all the way south and traverse east and west until it appears. Touch the tip and you can head home for the win.
Oh, just in case you are still looking for the key, hereís how. You count out 8 from the left side, about three spaces past the castle, and move north and south to reveal it. Unlike other games Iíve used this shortcut in, running over the key or crown wonít expose it. Yeah, I told you this would be frustrating.
One more thing. There is actually a score. The game repeats until you dieóapparently for failing to save the king. When you do die, I tell you the score. Given nothing about the game changes, not even the time, I doubt youíll ever see a score. Even I gave up after my first win.
Oh, and that score, itís bogus. Each moves gives you from 0Ė2 pointsóyes zero. When you complete the story, VC awards you the time left on the clock, adding it to your score. That is actually a better scoring mechanism. To be honest, though, I could have left the score out and no-one but me would have noticed.
Making it better, again.
Although flawed, there is still hope for VC. Besides the fixes mentioned, there is also plenty of memory left to work with. For example, adding a combat system would help. I mean, it just makes more senseóreally you just wander around to find the crown?
Plus, if done right the open world concept starts to make sense. You now would have something else to do in the world and could, theoretically, ignore the main quest. In fact, if the combat actually dropped items or added time, it would propel the game forward.
Iíd rather add the combat above and find another way to introduce objects.
If I still wanted to keep the hidden object puzzle, adding a ďglintĒ to the game as a clue would help. Perhaps blinking on a row or column to show where to go. That would, unfortunately, slow the game down. Iíd rather add the combat above and find another way to introduce objects.
Iíd also remove the object puzzle, relying on other ways to find the crown. Besides being buggy, it just disappears without any clues telling you want to do next. The puzzle should fit into the story. As it is, the puzzle feels thrown in just to give you something to do.
Although I can think of some other ways to improve the game, I actually like the single screen design. VC just needs more to do to make it fun. If I had to, I could use MCODER to improve the speed, but without better game play it isnít worth the effort.
And that, my friends, is Vargen Crown. Do you agree with my assessment, or am I being too harsh? Let me know in the comments!