"It can be completed" is never a good thing to have to write in your game. The prince is placed in a rectangular area with his three brothers surrounding him. The scroll explains that the way to win is to simply not be caught for about 20 seconds.
This is where DosBox's key repetition issues with ZZT get nasty. The brothers
all move at cycle 1, which is as fast as ZZT permits and is equal to the speed
of the player. Their code is simply to
always moving them towards the player. I don't think this is actually possible
with a keyboard.
ZZT does have weirdly implemented pause behavior which can let the player get extra steps in by mashing the P key while moving, but even this wasn't enough.
Eventually I opt for drastic measures and switch to mouse input. If you hold the P key and move the player with the mouse, you will take your step and instantly pause the game before anything else on the board gets to update. This lets you move off to a corner before unpausing to let the timer tick down a bit.
With this strategy of moving to corners and then waiting for the brothers to catch up I was able to survive the gauntlet and exit the running battle.
This brings the player to their next cutscene, the discovery of fairy land. The prince's quest is nearing its end already as he runs into the fairy kingdom in search of the flower that grows there.
The background here is a mess of color likely produced by detonating bombs all over the board and changing the breakable walls produced as an explosion into fake walls. Since bomb explosion colors are random per tile this can be used to paint a screen like this.
The scene ends, letting the player begin to explore fairy land, but there's not a whole lot to it.
There are some nice smelling plants scattered around, but none of them are the specific plant that the prince has been searching for.
There are a few shops like this where you can ask about the princesS (that's a single daughter, not several sons), offer to sell an item (which they'll be sold out of), and ask about being out of everything.
Remember the second half of the intro text? The princess of fairy land who wanted to travel the world finally comes into play here. She's been kidnapped by a djinn whose only weak spot is his tooth. He also eats people, and is otherwise invulnerable.
I was hoping the wand for sale would be a new weapon to use in the RPG battles, but you can't actually buy it. Another shop offers to sell arrows until you try to buy any. The shopkeepers cite that the army took all their supplies, perhaps trying to rescue the princess.
There is a shop that the player can make a purchase from. A statue seller offers an enchanted statue that will break your teeth if you try to eat it. Conveniently this sounds like something to use against the djinn. It also costs "experience"!
Lastly, there are a few guards outside the palace.
One of the guards mentions a lost key that the prince picked up earlier in the lion's cave. In return for the key the prince receives a magic spear that can be used in RPG battles, so that's something at least. There is no way to backtrack if the player skipped the cave so it can be missed if the player intended to explore the cave later and wound up triggering the cutscene for resting.
The fairy palace consists of a large throne room and a few locked doors. The path is lined with the king's advisors and the entrance is guarded by, well, some guards.
The prince speaks with the king to try and get the flower of light, but must rescue the captured princess first. Using a flying chair the prince can travel quickly to the djinn's lair.
Talking to the king opens a wall to let the player into the purple passage where they can continue their quest.
The other doors all block the prince by asking why he'd want to go inside. Alas the player has more information than the prince, so we're teased with the idea of a room full of gems that the prince has no idea about. The difference in knowledge of a board layout between the player at their computer and the ZZT player character in the game isn't something explored all that often.
The passage leads to another cutscene where the player and their flying chair are whisked across the screen away from fairy land.
Eventually the prince lands with one more cutscene. I am curious why this screenshot has a row of half normal half water characters? I don't recall any animation that could have flickered between cycles to cause it! It's strange!
The chair lands and the prince is once more put into danger. There are a few more snakes on each side of the river, but they're scattered enough that they can easily be avoided. There are also several more chairs littering this light forest.
The snakes here do demonstrate some new behavior though! They use a
technique where by having an object
#walk <dir> and
/<dir> to move two tiles in a single cycle. This lets them
move diagonally, a technique that's not used very often but one that always
stands out when it does show up. Enemies that move diagonally tend to be a pain
to hit since they'll never be lined up with the player for long.
The only place the player can travel to from the river is into the cave where the djinn lives. As soon as the player gets control, a message pops up explaining the the cave has been lit magically. Shujj is nice enough to spare us all of dark rooms.
As far as ZZT's creatures go, you probably come across slimes the least. They can't hurt the player, and just spread breakable walls everywhere. They sometimes work as a sort of puzzle element by restricting the player's ability to shoot on a board and using them as an obstacle to outrun before being trapped. Here they just make it easy to run past everything else since the breakables will be shot before the player.
Next we get some more classical ZZT puzzle design with sliders. Shujj's ability to design them is not that great.
It takes very little to untangle the sliders and get to the necessary keys, but with how frustrating these puzzles can get I'll take too easy over too hard any time.
Deeper inside the cave is a single large centipede. I had to wait and shoot it as I fumbled for my screenshot button, but I think it would be easy to get past it before it got close to the player in a normal playthrough.
Finally the prince arrives at the end of the cave where the djinn can be found along with some of his lackeys. Nobody attacks on this screen so the player is safe to approach the djinn king.
Using the statue to trick the djinn into breaking his tooth causes him to lose his powers. If the prince didn't buy the statue in fairy land he'll immediately be eaten and it's game over.
Now we get to the final series of fights, where the game unfortunately goes from being unusual to being a complete mess. The first fight is with one of the djinn's guards.
The magic spear uses the prince's health to attack, but since attacks from enemies usually deal 10 health of damage, only losing 2 health in exchange for three damage on the enemy.
And this is where the problems start. The #put error is from the enemy
object which is supposed to bleed by placing a slime in a random direction, but
the line is just
#put rndp red slime is only half a direction.
It's saying to put a slime in a random direction perpendicular to... red?
That's not the only bug though, the real issue is that the door is told to
#change blue paasage green passage where another
typo causes the object to halt execution and not disappear.
It's easy enough to ?ZAP your way out, but since the passage color you enter has a match on the destination board, the player is placed on top of it and winds up on the wrong side of the door.
I figured the game would be softlocked since the player is paused when moving into a passage, but it turns out all the dark blue on dark blue walls here are actually fakes. It's not possible to fight the second guard unless the player ?ZAPs around the passage to interact with the door that handles the attack selection.
The passage typo is fixed on the second guard board, but I just went for entering the passage immediately and skipping the fight. This continues the trend with guard number three.
And again with the djinn's advisor.
And again for the final boss! But here I felt like I should at least fight this one out.
Here the passage color changing works properly, though the blood effect is still broken. But now the djinn is defeated and the princess can be saved!
No, this isn't the wrong screenshot. The passage out of the djinn fight is linked to the wrong board and dumps the player back on one of the earlier guard fights causing the final battle boards to become an inescapable loop.
But that's okay because this is ZZT and we have an editor.
I do love the little announcements these messages give about what the next board will contain.
And so the princess is immediately freed because of another passage issue causing the player to spawn on the exit door. These puzzles at least seem a little more involved than the earlier slider puzzles in the cave.
Oh, and then the game softlocks again as you're put on top of the exit passage from the last board. Shujj!
Editing the game once more, the ending cutscene consists of the player and the now rescued fairy princess returning to the fairy king.
The reunion goes nicely, with the father and daughter crying as they're together once more. You get the flower of light and can cure your own father's blindness, and you also are given half of fairy land! Yahoo.
Your father is cured, and your brothers ask for forgiveness. And everybody lives happily ever after.
The game ends with the credits discussing the inspiration for the game's plot and giving thanks to those who contributed to the ZZT Encyclopedia, a collection of engines and tricks for ZZTers to use and learn from.
Flower of Light is just an odd game. The edge of board cutscene transition is a novel idea and one I'm surprised to not have seen before. The visuals early on are quite nice and create an interesting blend of early 90s and early 00s ZZT graphical work with their combination of bright trees and dark grass.
The visuals are probably the best the game has to offer. It's a treat to look at the forest at the start and outside the cave. Fairy land's rainbow coloring also does a great job of making the player feel like they're somewhere fantastical.
But the graphics can only take the game so far. The author's poor English is understandable (both as in you can comprehend it and you can understand why the English isn't the best), but doesn't really add much to the game other than direct exposition. As the game progresses the quality seems to worsen, giving a rushed feeling. This is most pronounced at the end where there's an obvious lack of testing with broken passages and programming errors.
Honestly this game feels like somebody discovering the ZZT Encyclopedia a third of the way through the game and deciding that engines are better than traditional gameplay. I feel like every ZZTer has a phase where having an RPG battle engine is the most important thing to make a game good. Sadly, the RPG battle engine on display here is very poor, coming off as rather tedious.
The story is cute, and while it's not an original one, it was my first time hearing it. It definitely seems like a very fitting story to create a ZZT game around. A nice hero's journey with a few perils along the way, some unique locations to visit, and a protagonist personally invested in their quest.
Overall though, the game just wears down as you progress. The sense of wonder it tries to instill eventually wears off as the sort of fairy tale thematics of the introduction give way to empty caves and repetitive fights. And I can't forgive the chase sequence where you have to avoid your brothers.
Shujj was just a quiet blip to the ZZT community. There are a few other titles under the name all released within a single year, and Flower of Light is Shujj's final release. This seems to be the most advanced of them, but ends up feeling lacking in the end. I can't really recommend Flower of Light to a wider audience, but if you want a look at an outsider's perspective of ZZT, it's certainly more novel in that regard.
The Worlds of ZZT project is committed to the preservation of ZZT and its history.
This article was produced thanks to supporters on Patreon.Support Worlds of ZZT on Patreon!