The Closer Look poll for July was split like a billion ways, which worked out in my favor because I settled on Appliance's Card Prime, which I had never actually played, and found something really... interesting. The previous article on Caves of ZZT sounded like I was unsure if I had just played a really good game or a really bad one, and this is going to be much the same.
Card Prime is an incredibly simple trading card game done in ZZT, with some excellent programming, but also some terrible programming. It has some battles which are a complete joke, and some battles where if you do not have the AI's randomness work in your favor, you'll get destroyed. It's a game where the engine shouldn't be something that can really be handled by ZZT, and yet it's handled quite well. I really don't know what to make of it!
Well, I can say one thing, it is _very_ ugly to look at. Visually, the game is a mess, but poor graphics in a ZZT world can easily be overlooked if the gameplay holds up, which it maybe does? I don't know!!
The gameplay itself is quite simple, and conveniently explained on the main menu. You'll be unable to access this information again, but there's so little to know about that it won't matter.
Welcome to Card Prime!
In this game you will battle people using
cards. This game uses and Inventory
Engine to keep track of your cards. To
acess it press shift+? to open the cheat
box, then type "+in". This will bring up a
list of the cards you are holding. Select
a card to veiw a description of it. You
cannot acess this in battles or in the
The battles are turn based, RPG style,
battles. You will go first, your arrow is
on top. select a card (veiw in the
inventory) and press ← to use the card.
The green bar below it is how many times
you can use a card. Once all the green
has gone away, you can't use that card
anymore for that battle. The card's
energy is healed after every battle. Your
torches count is your enemy's HP. Once it
hits 0, the enemy will die.
There are several effects to watch out
for while battling...
A little green circle above your player
means that he is poisoned. When poisoned,
you will lose 5 health every turn.
When surrounded by a green barrier, you
are in half. In half, you take half the
normal damage. You can still be affected
by statuses. You can check half damage in
the inventory. Lasts for 1 turn
When in wall, your player will not take
any damage from attacks or effects. The
player will have a solid green wall
around him. Lasts for 1 turn.
turn. There is no visual sign that he has
been stunned other than a messege box
explaining that you have been stunned.
On the world map you will have a "Card
Room". In the card room you can see all
of the cards you have collected during
the game and make changes to the cards
you are holding.
Note:If you have problems with runtime
errors, try running from KevEdit (load
the game and press "r"). Mysteriously,
this seems to work.
• • • • • • • • •
The core gameplay is that you build a deck of three cards, and challenge opponents to drain their health faster than they can drain yours. You can play any card on your turn, and each card has its own stats for how much damage it deals and how many uses are allowed per battle. A few cards inflict special statuses which can cause turns to be skipped; damage to be reduced or negated; or a slow continuous drain of health over the battle.
Your general strategy is to be able to find a way to inflict damage faster than your opponent, with enough room for error in case they play cards that make you waste your own attacks. If either player is unable to play a card, they forfeit the match.
Card Prime gives the player just 3 cards to begin with, but has a grand total of 25 available to collect (though a few are mutually exclusive choices). Easily, the most impressive thing about it is that card count because the nature of ZZT means that every single battle in the game has to have code to play all 25 possible cards even though at maximum, six will ever be needed. This causes board sizes to swell up immensely, with nearly every single one of them breaking the recommended safe threshold of 20 kilobytes. It's kind of miraculous the game doesn't just crash during gameplay, and it does in fact crash frequently when quitting the game.
Even cooler is the second file which contains a 2-player mode where each player picks how much health they'll have and inputs a 3 letter password that encodes their decks. It's very easy to play this game with a friend by streaming ZZT and just putting the second player's input in for them.
The game was created entirely by one person, as is the case of most ZZT worlds. Appliance's coding here should be lauded, and he put in an excellent effort at scaling down the core mechanics you'd find in trading card games into a form ZZT can just barely support. So of course, this means that he was ostracized relentlessly in the ZZT community for "reasons" which I can't even remember a decade later. There's definitely a rap song sung by a cool teenage ZZTer which features a verse about why he's terrible because this is somehow how we lived our lives.
There were also a few testers, and a helpful sister who found a spelling error. I don't want to be harsh on her or Appliance, but there are so very many spelling errors that were very much not found when making this game.
The game begins in this ugly red room that serves as a hub. Each of the objects along the top row is an available card to include in your deck.
The first three cards are used to make the starter deck. Fireball serves as your main offense dealing what for now is reasonable damage. The poison card doesn't hit as hard, but inflicts the poison status on the enemy, adding an extra 5 damage every round, with only one card in the game capable of curing it. It sounds good (and in the early game it really is), but later on, most cards hit so hard that they'll do more damage than poison would over several turns.
The third card, Half, doesn't do any damage, and gives the player the "Half" status, which... halves damage. It only lasts for a single turn, and since the AI is completely random, it's very difficult to actually use it effectively. Fortunately, later cards will do damage and give the half status, making it a bit more useful.
There's a second part of the main card hub which houses a later set of cards and will also display the code for your deck. The information screen mentions that you can use ?+in when not in combat or inside the card hub to read the relevant information on your current deck. Unfortunately for me, I misread it and thought it could only be used during battles, and then got annoyed when it never worked. My bad.
The other passage leads to the overworld, which consists of 5 boards arranged in a plus shape with a few NPCs and passages to various fights.
The first person I talked to tried to justify a weak card that can used a lot. She's lying. You get that card maybe three-quarters through the game, and by that time a card that stalls without giving you half or barrier status is a death sentence.
While I will vouch for the game's engine, the opening board starting off with a locked door and two passages to 4-star challenges that will get you killed almost immediately is not a good look. One extremely frustrating part of this game is just finding the correct battle to play next as deviating from the order almost always goes very poorly.
Card Prime has all sorts of glimpses of strategy like this. Heal Spectrum is a card that will heal the player and cure poison. Deathray is the only card that can penetrate wall. The game wants you to build your deck as needed, but against AIs, there are a few strategies which work drastically better than others.
To the north is the final area in the game, as well as the very first. The "Begginer's Igloo" is probably the only location that won't get the player killed with the starting deck. An NPC wandering the area explains that you can get the card "Ice Spire" if you beat your opponent there.
The Igloo Man is the first opponent, and our first opportunity to check out the engine. Every fight starts with the player going first. Their health is the health value, and the enemy's is represented by torches. In addition to better cards, the game makes things more difficult by giving opponents more health than the player (though the player will get upgrades throughout the game).
Appliance was kind enough to provide text listing the enemy's cards, but due to the dynamic nature of the player's own set, he couldn't do the same for them. It would make this game immensely easier to play if highlighing a card would make its name display a single line message. Instead, you have to memorize your deck before each fight. In my case, I have "Half", "Poison", and "Fireball".
Our icy opponent shares a similar deck, but with the superior "Wall" card which will negate all damage.
There's honestly so much going on in these boards, every card has an animation that plays when used, and they all have background music. The music is abysmal and I couldn't even put up with it for a single fight before muting it.
Enemy attacks are also announced, letting the player observe just how much damage something does, or note when a status effect is inflicted.
Still, right away it's impressive how even with these three basic cards it feels like there's some choice with what to do. With the enemy being invincible due to the wall, the player might opt to use Half to reduce the damage they take next turn, or as in my case, they may instead decide to use poison as even though no direct damage is inflicted, the poison status still lands and harms the enemy regardless of any defensive barriers.
The enemy of course can poison the player as well. While the game will feel strategic one moment, it doesn't take long before you realize that a lot of the game boils down to hoping the enemy picks attacks that do less damage than the attacks that you'll pick. Use poison, and then hope the AI spams Wall, ensuring you take no damage while slowly whittling them away.
The AI, is what you'd expect from ZZT as well. It is entirely randomized. If a card runs out of uses, it will still try to play that card, and code is in place to tell the AI to try again when this happens. Fortunately these slightly longer turns aren't all that common. While a generic AI that can play with any deck would be way too much for ZZT to handle, I could see an alternate version tuned to the specific decks (avoiding cards that won't do damage when the player has Wall status, or maybe always opening with a specific combo). The randomness of it all makes it feel like you're beating the system more than an opponent when you win.
I eventually persevere over the now correctly spelled Igloo Man, and receive the previously mentioned Ice Spire card.
My collection grows! Appliance didn't have the space to explain the new cards as the player receives them, so dumping them directly to the hub where they can check out their new cards and adjust their deck accordingly was a wise decision to make.
Ice Spire seems pretty good. It's a modest increase in damage from Fireball, and stuns the opponent. Stunning is a very good status, as it forces the opponent to lose their turn. Cards that inflict stun get their balance by being very limited in uses (just 2 here compared to Fireball's 8).
Seeing as one of the cards in my deck is the very useless Half, I promptly replace it with Ice Spire.
Next up is searching for the next challenger to fight with. Heading east leads to another restricted building, Rito Tower, which I assume is named after the race of bird-folk from The Legend of Zelda: The Wind Waker, which came out a few months prior to this game.
Most importantly, it's also the location of the card shop, which isn't really a shop in the traditional sense. As you win battles, you'll receive gems, and if you have 20 you can exchange them for a card and more health. You don't get to pick which card you get, which is a big let down as it means any playthrough of the game is pretty much going to have the same progression. You can't focus on an aspect you like, such as opting for high damage cards or status effects.
The hut is the third level, and I figure being off by one can't screw me over that hard. So I challenge my next opponent.
This next opponent immediately gets assaulted by my brilliant strategy of spamming Ice Spire. (Astute readers will realize this is actually not a brilliant strategy.)
Half Flood is the AI's response to being stunlocked, and it gets a really cool animation that puts ZZT's limits to its advantage. By changing empties to tigers, ZZT will begin to make the replacement, but eventually run into the 151 stat-element limit and stop. The tigers are then changed to water, and then the empties are changed to tigers again. This creates a staggered animation of water slowly crashing down from the top of the screen!
The "Flood" part of Half Flood deals damage, while the "Half" leaves the enemy with the half status, bolstering their defenses for the next turn.
A Fireball barely scratches the foe, and I soon find myself on the receiving end of an Ice Spire stunlock. The fight ends with my defeat and a game over. Going out of order for opponents is extremely dangerous.
The correct next fight is in the pyramid. I really like the shadow and shading on it.
It literally says "Anubis" up top! Why all the typos!
This time, I realize my mistake, and inflict the poison status right away, before following that up with Ice Spire, ensuring I'll benefit from the stunlock further by also having Anubis suffer from poison each turn.
Except it hardly matters due to Blitz, which deals a massive 50 damage. I have no counter to this, and the only way I can win is by hoping the AI doesn't play it. Anubis's other new card is Lucky Stars, which only deals 10 damage, but also heals 10 health as well.
After a few attempts, the stars luckily align and I'm able to score victory via poison damage.
As a reward, the player receives both Lucky Stars and Blitz for their own deck. Lucky Stars is promptly forgotten, and Blitz promptly replaces Fireball as the damage dealer. The numbers are going up quite rapidly.
The desert has its own three star fight as well at the oasis.
This one is the best typo.
The desert man doesn't bring anything new to the table.
The battle is pretty darn quick due to the huge influx in damage I can deal after using my initial Poison + Ice Spire combo.
Half Flood is a good alternative to Blitz due to it providing the half status as well, but for the time being I opt to not use it. The way HP counts have been increasing, I want to make sure I don't run out of attacks, and Blitz provides a few more turns if needed.
What seems like the next location is the "Boulder Room" accessible from the center overworld board. It differs in that there are actually two opponents to battle here.
It goes very poorly due to the presence of the extremely powerful Serpent Slash card. With 6 uses and 70 base damage, it's already a force to be reckoned with, but as if that wasn't enough, it also has a 50% chance of inducing stun.
If a stun lands, I'm just immediately dead. The other cards are Darkness Nova, a straight up 90 damage attack, and Gaea Punch, a 40 damage 50% stun chance card.
Needless to say I scour for an alternative, and finally remember to visit the card shop. With the 20 gem fee my health increases to 120 and I receive Wall.
While Half is utter garbage, Wall will prevent all damage (other than poison and a specific card that's allowed to break through it), which can give it some tactical usage if you manage to get lucky with RNG and use it to avoid way too powerful attacks.
Because the level rating is meant to be difficulty, it's easy to miss locations thinking that after you beat a 3-star fight you should move on to a 4-star one.
The Caveman has significantly less health than what we've seen so far, and can be beaten without getting an attack off thanks to Ice Spire taking off nearly half his health.
Two cards are received for this battle.
A not that useful healing card. It's very easy to not notice a card is meant to heal since it still lists "Damage", but the + indicates it's supposed to be a heal. Healing 20 damage probably won't even heal all the damage that was taken before using it, and then the opponent gets another attack in to wipe out that 20 that was just regained.
Black Fury, however, is a nice improvement over Poison, though the game is rapidly reaching the point where poison damage can't compete with brute force.
Now it's time to try out the Boulder Room again, but the other fight first this time, with my new deck of Ice Spire, Black Fury, and Blitz.
This opponent has an alternative strategy going on here. Energy Saver does almost no damage but can be used the maximum amount of times. Nuclear Blast does a lot of damage (65), and also inflicts poison, helping to cement the stalling strategy. Heal Barrier puts up a wall, and restores 40 health.
It actually worked! Most of my cards are of pretty limited uses and I was unable to keep up with the healing and walls blocking so much of my damage.
I slightly retooled my Deck to Black Fury, Blitz, and Half Flood. Half Flood added some defense, while still contributing damage and adding plenty more uses so I couldn't stall out so easily.
It worked out much better, though mostly due to the RNG spamming Energy Saver more than anything else.
Victory offers mutually exclusive choices for a reward. Heal Barrier is so very clearly the superior choice here.
Winning the fight also gives the player a key to Rito Tower.