Sunday, July 9, 2017

Shift

Published on Magic Disk 64 02/90

Shift is a puzzle game in the vein of Sokoban with lots of additional elements that mix up the age-old formula of pushing boxes around. I remember being quite enamored with this title, though at the time I had not been familiar with Sokoban or any of its numerous clones. Let's see how well it holds up today:

You PROULY should have proofread this screen before calling it done...
Shift starts with this rather plain title screen which uses nothing but the C64's standard character set (commonly known as PETSCII, Commodore's version of the ASCII standard). There is nothing special going on here, except for the fact that the company logo is about seven times bigger than the game's actual name. Talk about getting your priorities straight.

What the title screen lacks in graphical fidelity, it makes up with its energetic music that achieves the remarkable feat of using a polka beat without sounding overly cheesy.


After a brief wait during which the high scores are loaded from the disk, we get presented with the game's main menu. By now, Shift has switched to a custom font and displays some graphical elements in multicolor. It's still not much of a looker, but let's not prematurely judge a game by its graphics.

Except for Ilja Weis, nobody else is credited working on this game, so I must assume that he did everything himself, which is quite impressive. Especially the music is of a constant high quality throughout the game.

I could start the game by pressing fire now, but let's look at some of the other menu options first:


INFOS AB. SHIFT opens a window that lists all the game's elements. Curiously, the list is in German, even though the main menu is in English. Let me remedy that by translating the screen, like so:


The given information is only partially useful anyway, as you get to know what the elements are called, but not what they do. For instance, it's not evident how WALL 1 differs from WALL 2 until you play the game for a while.

I find it interesting that the player symbol is referred to as a spaceship. There is no background story, not even in the game's article on the diskmag. Considering how the different elements kind of clash together, I'd wager that the author didn't lose much thought about coming up with a consistent plot. It's a puzzle game, after all, a genre rarely known for its rich, overarching storylines.


The HIGHSCORE MENU is a surprisingly detailed affair that allows you look at the top 100(!) players. You can load/save/clear the high score table and search for specific names to list only their entries. If you're especially proud of your Shift achievements, you can even print the high scores.


The game also comes with a music menu. Excuse me, I meant MEGA MUSIC MENU, because alliterations are fun. While this feature sort of established itself as a standard in console games, it was rarely seen in C64 titles at the time. I appreciate the attention to detail, especially because Shift's soundtrack is worth a listen outside the actual game.

Which brings me to... the actual game! Let's buckle up and get this ride off the ground!


Literally, as the game starts with a brief cutscene showing the launch of our tiny spaceship. Just watch with how much grace and determination it hobbles out of the, um, space station? Let's call it that. Ready to face the dangers of space! Ready to...


... push hearts into pits? Inside a maze of brick walls? Alright, I'm not sure how a spaceship fits into that scenario, but let's just roll with it.

Each level has a name which is displayed at the start with this rather unsettling effect. It's as if the text is fighting a demon that has possessed it and is now trying to forcefully take form.

Here's what is going on with the level name: Evidently, the line of text is quickly cycling through various colors, but it also briefly morphs into blocky pixels from time to time. The reason for this is because the game is in multicolor character mode.

This is a screen mode that allows for individual characters to be either in standard (single color) mode or in multicolor and thus have four different colors. Of the four colors, three are shared among all characters, while the fourth is set via screen RAM for each character. This fourth color also determines whether a character is displayed in standard or multicolor. For this to work, the selection of possible colors is halved for the fourth color, meaning you can only set it to eight different colors. If you set a character's fourth color to a value from 0 to 7, you get the expected color and you also set the character to single color (i.e. with full horizontal resolution). If you set the fourth color to a value from 8 to 15, you get the colors from 0 to 7 again, but this time the character is in multicolor (easily recognizable by its blocky appearance because the horizontal resolution gets halved).

The level name switches between single color and multicolor because it goes through all 16 colors, not just 0 to 7, which would be single color only.

This effect comes up more than once in the game and in many cases as a bug rather than an intentional feature.


While the game plays a lot like Sokoban, there is an essential difference: Pits act as obstacles that I can't get past until I push hearts into them. They then turn into jewels that I can pick up.

There are 32 levels in the game. I'm not going to cover all of them, but I'll go through the first five in order, as they work like a tutorial, and each of them shows off additional gameplay elements.

The first level is a good introduction to the game's main principles, making the player familiar with the rule that hearts can only be pushed and not pulled. The penultimate heart has two pits to push it into, and if I select the wrong one, I can't continue to the last heart.

My score briefly goes into the negative at the start because moving a heart around detracts one point per push, probably as a motivation to solve levels with as few pushes as possible. Collecting a jewel yields 100 points. Unfortunately, the last jewel can't be collected because the level ends as soon as the last heart is in a pit.

You may have noticed that there is something screwy going on with the colors when I'm pushing hearts around. Here's a bit of the above animation slowed down:


The game doesn't use sprites, so all the animation you see is character-based. That's why the spaceship immediately flips from one tile to the next without any smooth movement. Updating a character's graphic usually involves two steps, namely changing the screen RAM and color RAM. Shift's main code is written in BASIC which is a notoriously slow programming language. The delays between updating screen RAM and color RAM are long enough that you can actually see the in-between stages where symbols or colors aren't quite right yet.

There's also a visual bug with any jewels that spawn from pushing hearts into pits: They are displayed in single color, even though they are clearly intended for multicolor:

single color | multicolor

CHARACTERS IN MULTICOLOR

Why does setting a character to multicolor cause elongated pixels and essentially half its horizontal resolution?

This has to do with how the color information is integrated into the character's bitmap. When it's set to multicolor, a character can have up to four different colors (one set by color RAM, three set by registers $D021, $D022, and $D023). With one pixel (one bit) we can only encode two values (0 or 1). For four values we need two pixels (two bits) so we can encode four colors (00, 01, 10, 11).

For this reason, a multicolor character's horizontal line has four paired bits instead of eight individual bits, thus it only gets half the resolution. Here's how the jewel's pixel information is interpreted in multicolor:



Level 2's name is in German and poses the deeply philosophical question WHERETO WITH ? It's a subtle hint that this is another stage where it's possible to push hearts into the wrong pits and thus make it impossible to complete without a restart.


Watching my playthrough above should give you a good idea how the newly introduced elements in this level work. What isn't evident, though, is that the light gray walls are deadly to the touch, and so are the white crosses. Neither the gray walls nor the solid blue ones can be destroyed with the bomb, that's why I had to push it to the crosses.

Arrows allow the spaceship to skip over them in their indicated directions only. Anything else is blocked, e.g. it's not possible to push a heart across any arrows. Also, if an arrow points at a tile that's already occupied by something, the player cannot pass.

The locks open with keys, as one would expect. Opening a lock uses up a key, so it's necessary to pick up more than one.

Once again, some objects are displayed in single color, even though they should be in multicolor, like the keys listed in the player inventory, or the bomb, once it's being moved around.

I skipped the question mark on purpose, as touching it can prematurely end the level. The question mark randomly triggers one of several possible effects when the player's spaceship flies into it. Among them are bonus points, a bonus life, a jump to the next or previous level (yes, seriously), no effect at all, or, the most interesting one, BONUS SCREEN!


This is a maze of invisible walls and collectible bonus items that reward you with extra lives and points. I start out with 30 energy, and each time I bump into an invisible wall, it turns visible with a violent flash at the cost of one energy point. I took a screenshot of such a flash which briefly reveals the entire maze:


If I run out of energy before reaching one of the exits (denoted by Es), the bonus screen ends prematurely. If I make it out before that, the remaining energy is multiplied by 100 and added to the score. After the bonus screen is done, one of two things can happen: The game either skips to the next level or it restarts the previous level. This can lead to situations where you can trigger the same question mark several times, if the Random Number God feels generous enough.


Level 3 is not hard to figure out. I just have to visit the rooms that contain keys first. The green walls in the top right (which should be in multicolor) can be pushed around like hearts. They can also be destroyed by bombs.


Level 4 features lasers, which are represented as purple stars. Pushing one of them fires off a beam that travels away from the spaceship and explodes like a bomb when it hits something. I have to use the first laser to destroy the brick wall to the right. For the second laser, I first have to move the green wall away, otherwise, the explosion won't reach the blue brick wall below. Other than that, this stage's main challenge is to make it through the maze of crosses without walking into any of them. This can be harder than expected because the joystick controls are not always as responsive as one would wish. Again, it's a BASIC program which makes everything feel a bit sluggish.


Level 5 is the last stage that introduces a new element. We've already "seen" invisible walls in the bonus screen, but in regular levels they act a bit differently: If I walk into an invisible wall, it briefly becomes visible and then disappears again. I have to memorize their positions if I don't want to accidentally get stuck. This level is called OTTIS CREATION![sic], presumably because it was created by someone named Otti. There are several levels in the game that were made by him. I kind of learned to loathe them, because they all contain invisible walls, and their placement gets increasingly unfair. This stage isn't too bad, though, and with a bit of clever maneuvering, it's even possible to gather the jewels in the bottom left without getting stuck.

Let's jump ahead and look at some of the later levels that I think stand out in some way:


LEVEL 08


Aptly named VORSICHT FALLE! (BEWARE OF TRAP!), this level can trip you up right at the start and make it impossible to complete. The jewels at the bottom are placed like bait, luring you into the idea of pushing the nearby heart into the bottom right pit. If you do that, you'll eventually realize that one of the hearts in the upper half of the stage needs to go into that pit instead.


LEVEL 09


This is the closest Shift gets to a level that looks more like work than a fun challenge. Despite that, it's such an iconic stage that whenever I think of Shift, this is one of the first levels I associate with it.


LEVEL 13


I like the use of space in this level and how it makes me tense up just by looking at the number of deadly walls. The main problem that requires solving is the order in which the locks have to be opened. The bombs need to be moved through several rooms to remove the blue arrow barriers. Unsurprisingly, there is no way to get the nine jewels at the top without making the level unwinnable.


LEVEL 14


This stage should be quite obvious why I chose it as a standout. To determine the correct route through the arrow maze, it's easier to look at the exit and mentally find a way back to the entrance.


LEVELS 24 & 25


Level 24 is the first instance where there is only one heart to put in a pit. Naturally, there is a lot maneuvering involved. Level 25 offers the same gimmick, but with the added "thrill" of all walls being deadly to the touch. Luckily, there's an easy to reach extra life to pick up, which essentially gives the player infinite tries.


LEVEL 32


There is a game design philosophy which suggests that the final boss of a game should not be exceptionally hard to beat since at that point the player is anxious to win. Maybe that is why Shift's ultimate level is actually not that hard to figure out. I'm not complaining, though, as it's still an enjoyable last puzzle, and the spiral structure of the stage feels like the spaceship is homing in on the game's exit.

Finishing all levels doesn't trigger some ending cutscene, unfortunately. Instead, the game wraps back to the first level, seemingly ignorant of the player's achievement. A short congratulatory message would've been nice.


But what if you've played all the stages and can solve them blindfolded by now? What if your heart is yearning for more heart-pushing goodness? Fret not, as you can extend the game by making your own levels with the built-in editor:


I played around with it for a while and created a 33rd level, just to get a feel for the editor. I'm glad to report that it is very straightforward and easy to use. With the joystick, you can move a cursor around and place the currently selected tile element. If you want to place another type of tile, you can press space to switch to the row of tiles below and select a different one. As it's often the case with these level editors, it's fun to experiment and come up with new puzzles. You can create an entire campaign, if you feel so inclined, and save the levels onto a disk for others to enjoy. Just remember to write "Please don't fold!" on the envelopes if you send floppies to your friends per mail.



CONCLUSION

Shift is probably one of the best Sokoban-inspired games I've played on the C64. I'm hesitant to call it an outright Sokoban clone, as the puzzle mechanics are quite different, and you can't just recreate levels from the original box-pushing game in Shift and expect them to work.

This isn't a game to show off the C64's graphical capabilities to your friends, but it's functional and the different elements are easy to recognize, even though they are pretty small. I'm a bit puzzled (no pun intended) why there are so many cases where objects are accidentally displayed in single color when they clearly should be in multicolor. Fixing those visual bugs would've been a matter of a few minutes, so I must assume the author simply missed them.

The music, on the other hand, is very well done. It may not sound quite as polished as tracks from the likes of Markus Schneider or Thomas Detert, but the melodies are catchy nevertheless. As far as I can tell, the game's author also composed the music.

When it comes to gameplay, my main criticism is the lack of responsive controls. There is a noticeable delay between moving the joystick and getting a reaction on screen, which can sometimes lead to accidental movements that ruin the progress in a level. Pushing a heart or a bomb around makes the game even slower. As I mentioned before, this is likely due to the game being written in BASIC.

There is a worrying number of levels that have German equivalents of the words "trap", "frustration", or even "agony" in them, but most of them are solvable with a bit of thinking ahead. Only the stages with invisible walls can be irritating, at least until you know where the unseen obstacles are.
Overall, the puzzles are well designed. There is a tendency for Sokoban-style games to go overboard with the number of boxes and present the player with levels that are just laborious to solve. Shift's gameplay twist (hearts disappear once they fall into pits) makes this way less of an issue, as the playfield becomes more spacious the further you get in a level. The difficulty doesn't come from having to push lots of crates past each other, but from figuring out where each heart has to go.

The game has a high score table that gets saved to disk, which is a neat feature. However, the scores can be easily manipulated as soon as you reach a level that contains an extra life: Just gather as many points as you can, get the extra life, then hit X to restart the level (and lose the life you just gained). Repeat ad nauseam until the score counter doesn't work anymore. The score still functions when it reaches a million points (yes, I tested that), so making it overflow might take a while.

All in all, I recommend giving Shift a go if you are looking for a puzzle game that does its own thing, despite the obvious inspiration. For a BASIC program, this game has an inordinate amount of features. The fully functional editor alone is quite a remarkable feat.

Shift was one of those titles that inspired me to start programming my own games in BASIC, especially because it didn't do anything extraordinary on a technical level. It made me realize that it's still possible to make something fun without the need for impressive graphics or machine language wizardry.

No comments:

Post a Comment