Monday, June 28, 2010

Other TCGs

I’ve only played a few other trading cards games but I’ll give my review of them. In the beginning, around the year 2000, I started playing Yu-Gi-Oh on Gameboy Advance. And while I know Yu-Gi-Oh is reviled in many circles it was a great “starter TCG”. The rules are very simple.

1. You can play a level 4 or lower creature once a turn.
2. The creature can be played face down in defense mode or face up in attack mode.
3. You can play as many trap and spells cards face down as you want.
4. Any creatures higher than level 4 require you to sacrifice one or more creatures in order to summon it.

The rules were very simple and understandable. I figured out that I should have only best level 4 creatures or other creatures that had “flip effects” when they were attacked. Penguin Warrior was insane, he could bounce 2 of your opponents creatures, even the creatures that required you to sacrifice other creatures in order to play them. Overall I didn’t think Yu-Gi-Oh had much tactical depth because the biggest creature always won. (As a side note I enjoyed the cartoon which added interest to the game. It was cool to play Swords of Revealing Light like the TV show.)

Then I stumbled upon a few 9th Edition preconstructed decks. I ended up playing only 3 games but it was enough to get me hooked on Magic Online. (Those 3 games were the only time that I’ve played Magic in the real world.) Magic Online was great except that I was on a very tight budget. I hated rare cards because I owned so few of them.

Some of the Magic Online games were good but others were pitiful, especially when the other guy would disconnect if he was losing. Nowadays “Peasant Magic” seems very strong and I would have enjoyed that format. (Deck construction allows commons and only 3 uncommons, I think.) Peasant Magic is ideal for me and other people who don’t have a ton of money to spend.

I also picked up the 2 starter decks from Marvel/DC Vs. The card art was great and I enjoyed rearranging my creatures depending on if I attacked first or second. You could arrange your creatures into 2 rows and your opponent had to attack the 1st row in order to attack your 2nd row. Marvel/DC Vs is different because you can play any card as a resource (aka. land) and you don’t have colors, instead you have numerous “team affiliations”. Marvel/DC Vs also didn’t have evasion like flying or fear.

In Marvel/DC Vs creatures could attack as a team if they had the same team affiliation which was cool, so you could take down a bigger guy. And in 1-on-1 combat, every creature dealt trample damage, so you were always whittling down your opponent’s life. Each turn you drew 2 cards so you usually had plenty of options.

I didn’t play Marvel/DC Vs much but it seemed like it had tons of potential. The only downside was that the cards seemed less flavorful that Magic. Most of the cards were very wordy and while the card art and name were great because they tapped in the comic geek gene, the cards didn’t really convey what they did like Shock or Giant Growth.

So my TCGs experience has been very limited. Once I learned that Magic was the best of the best, I sort of stopped looking for another great TCG. Magic has so much potential that it makes most other TCGs look downright puny.

p.s.
I discovered Shandalar, the old Magic PC game, and thought it was great. Playing sealed deck was phenomenal but the cards were very bad. I began working on Forge because I loved playing sealed deck so much.

I also played the horrible Marvel/DC Vs PC game. It didn't have a cancel button so if you clicked on a card, you had to play it. It was downright tortuous for a newbie like myself. No wonder that the online version didn't do well.


What TCGs do you enjoy? I've heard good things about The Spoils.

Monday, June 21, 2010

12 Outstanding Cards

Forge is filled with tons of interesting cards and while not all 3,000+ cards are outstanding, most are them are pretty darn good. Today I'm just going to point out 12 cards that you may or may not know about. (Basically this is just fluff piece but all writers write fluff occasionally. Even Earnest Hemingway wrote a few radio commercials.....I think.)

1. Holy Day, Fog, Darkness, and other similar cards that let you prevent all combat damage. I didn't code any of these cards but it is great to see them working. Forge doesn't really support skipping combat but like all good software, Forge can be hacked into submission.











2. Sengir Vampire has the ability "Whenever a creature dealt damage by Sengir Vampire this turn is put into a graveyard, put a +1/+1 counter on Sengir Vampire." This is an example where Forge actual implements this strange card 100%. I understand the ability lets Sengir Vampire "feed" off of his victims and grow larger but since the ability rarely activates, the card just feels like a cheap 4/4 flyer. When I actually do activate his ability, I do a little victory dance.






3. Fourteen "level up" creatures like Transcendent Master. I enjoy using these cards. The cards do feel sluggish at first but they have a great payoff. I like these new "level up" creatures more than planeswalkers.












4. Huge Eldrazi creatures, move over Darksteel Colossus and 11 mana, that's nothing when compared to Emrakul, the Aeons Torn which costs 15. Forge has 5 huge eldrazi creatures that all have the devastating annihilator keyword which makes your opponent sacrifice permanents.











5. Pirate Ship which says, "Pirate Ship can't attack unless defending player controls an Island. When you control no Islands, sacrifice Pirate Ship." Both of these abilities are miscellaneous but quirky. Forge even has Dandan (UU, 4/1) "Dandan can't attack unless defending player controls an Island.When you control no Islands, sacrifice Dandan."










6. Forge has only 3 dredge cards but they are fun to use: Greater Mossdog, Moldervine Cloak and Dakmor Salvage. It is great just keep dredging Greater Mossdog.













7. Valakut, the Molten Pinnacle which is a land AND deals damage, sign me up!















8. Dark Depths lets you put a 20/20 creature into play. That sounds like a winning game plan. (I'm beginning to sound like a sport's announcer.)













9. I didn't know that Forge supported rampage but it does. (Hey, I didn't play Magic 10 years ago.) Forge has 10 rampage cards like Balduvian War-Makers (4R, 3/3) haste, rampage 1 and Wolverine Pack (2GG, 2/4) rampage 2.

Taken from the comprehensive rules: Rampage is a triggered ability. “Rampage N” means “Whenever this creature becomes blocked, it gets +N/+N until end of turn for each creature blocking it beyond the first.”






10. Time Vault and Time Walk are two of Magic's greatest cards. Time Vault lets you skip a turn now in order to get another turn later. While Time Walk is utterly insane and lets you have another whole turn to annihilate your opponent. Kudos to anyone who actually owns a real, cardboard Time Vault or Time Walk.










11. Necropotence lets you exchange cards for life. At first most people considered this a crap rare but after it won a tournament or two, people realized how powerful this card really was. Do yourself a favor and build a deck around Necropotence.












12. Goblin Charbelcher is an odd "build a deck around me" type of card that gives red decks a way to repeatedly deal damage.

And the list could go on and on...












p.s.
Time Walk's art is well...bizarre. Who knows what Amy Weber was thinking back in 1993?

p.p.s.
What topics do you want me to write about? It seems like I've covered everything about Forge.

Friday, June 18, 2010

E-Book – The Art of Unix Programming

The Art of Unix Programming PDF
download
(2 MB)

Eric Raymond is a great author who is technical and yet funny, a rare combination. His book, The Art of Unix Programming, is filled with interesting tidbits about programming and the Unix culture.

Eric talks about mini-languages like Javascript, which is another name for “domain specific language”.

He has a number of rules which he explains in greater detail:

Rule of Modularity: Write simple parts connected by clean interfaces.
Rule of Clarity: Clarity is better than cleverness.
Rule of Composition: Design programs to be connected with other programs.
Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
Rule of Simplicity: Design for simplicity; add complexity only where you must.
Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
Rule of Transparency: Design for visibility to make inspection and debugging easier.
Rule of Diversity: Distrust all claims for one true way.
Rule of Extensibility: Design for the future, because it will be here sooner

I chuckled when I read his opinion about Java.

“Java’s class-visibility and implicit-scoping rules are baroque. The interface facility avoids complex problems with multiple inheritance at the cost of being only slightly less difficult to understand and use in itself.”

And some of the funniest stuff is at the end of the book in appendix D, Rootless Root: The Unix Koans of Master Foo. While this koan isn't in the book, I found this one by googling "Master Foo and the End User". I laughed at this koan even though it bashes Windows.


Master Foo Discourses on Returning to Windows

A student said: “We have learned that Unix is not just an operating system, but also a style of approaching problems.”

Master Foo nodded in agreement.

The student continued: “Then, the Great Way of Unix can be applied on other operating systems?”

Master Foo sat silent for a moment, then said: “In every operating system there is a path to the Great Way, if only we can find it.”

The student continued: “What, then, of Windows? It is preinstalled on most computers, and though its tools are mostly far inferior, they are easy to use for beginners. Surely, Windows users could benefit from the Unix philosophy.”

Master Foo nodded again.

The student said: “How, then, are those enlightened in the Unix Way to return to the Windows world?”

Master Foo said: “To return to Windows, you have but to boot it up.”

The student said, growing agitated: “Master Foo, if it is so easy, why are there so many monolithic and broken software packages for Windows? Elegant software should also be possible with a GUI and fancy colors, but there is little evidence that this occurs. What becomes of an enlighted one who returns to Windows?”

Master Foo: “A broken mirror never reflects again; fallen flowers never go back to the old branches.”

Upon hearing this, all present were enlightened.

Monday, June 14, 2010

Magic Doesn't Need Land

As you may or may not be able to guess, this article has nothing to do about programming. (Yes, I know all 3 of you are disappointed.)

Land is a very outdated concept. Being mana screwed or mana flooded isn't fun but it is a necessary evil since Magic requires land.

OK, I know what you are thinking, "How would we play Magic without land?" Similar to the Marvel/DC VS card game, you could play any card as a land. The mana symbols on the card would dictate which land the card becomes. If the card is Elvish Piper, which costs 3G, it could be played as a forest. If the card was Lightning Helix which costs RW, it could be played as either a mountain or a plains. And artifacts could be played as lands that generate colorless mana.

Think about it, your deck of 60 cards would consists of all playable spells and it wouldn't have 24 or so dead cards. Looking at your opening hand, you would never worry about being mana screwed. Yes you would still consider your mana curve and wonder should you play that 6 mana spell now as a land or later as a game finisher. Not having land frees up the player to make more interesting decisions.

Since each card would always represent 2 choices (to play as a land or as a spell) this actual increases the number of decisions that a player has to make. Games are all about "making interesting decisions" and I think removing lands from Magic would revolutionize the game. I'm actually thinking about tweaking Forge so people could actual test what I'm saying.

And yes I know what you are saying to yourself, "What about cards that let you fetch land? Aren't those cards going to be worthless now?" The answer is no. You still have the option of including regular, basic lands into your deck.

I'm not much of a "Magic theorist". I'm an avid player but most Magic players would put themselves in the "rabid" category. (Insert funny mad dog joke.) And I know that there are a ton of people who literally worship Magic. (I only worship Tuesday through Thursday.) So I understand that my idea of removing lands from Magic is heretical. Personally I don't see any downside but then again I think I'm genius, ha.

As Mike Myers would say, "I'm feeling verklipted. Feel free to talk among yourselves." -an old Saturday Night Live reference

Monday, June 7, 2010

User Interface – Simple but Good

Forge’s user interface is basic but useable. The gray background isn’t fancy but at least it uses the card pictures for cards on the battlefield. (Man, I’ll never get used to this new fangled terminology. My head still calls it the “in play” zone. I sound like a crufty 65 year old but I’m only 31.)

Forge’s user interface doesn’t even have fancy little arrows to show you which creatures are attacking and blocking. It uses a plain old text box which shows the defending creature “tabbed” and underneath the attacker. While this is far from optimal, I don’t think I’ve ever received a complaint about combat.

The same thing goes for the deck editor. It is very basic and just shows the card’s stats. The deck editor allows you to sort cards based on color, card name, mana cost, attack or defense. I’m sure a better deck editor exists but at least this one works pretty good. Additionally it can filter cards based on the cards text which is great. (For some reason the filter is slow but maybe we can speed that up later.) (By the way, I have built decks in Yu-Gi-Oh for Gameboy Advance which was a huge pain in the neck since it didn’t have a mouse. While Yu-Gi-Oh isn’t great, it was a good “intro” card game.)

Forge’s main screen which shows the battlefield and the cards in your hand doesn’t have any eye candy but it still works well. Forge even works if you don’t download the card pictures. If the card picture for a card is missing, you will see just a colored textbox.

Originally Forge didn’t show the card pictures on the battlefield and all of the cards were represented using the colored textboxes. That is harkening back to the time when I received complains about the user interface. After it was prettied up a little, the complaints stopped.

And while Forge isn’t the prettiest, it is still #1 in my mind.

p.s.
I found this quote which is great summary of the trials of computer programming. It is by Frederick Brooks author of the Mythical Man-Month,

“To avoid bugs one must perform perfectly. If one character, one pause, of the incantation is not in the proper form, the magic doesn’t work. Human beings are not accustomed to being perfect and few areas of human activity demand it. Adjustment to the requirement for perfection is, I think, the most difficult part of learning to program.”

Human beings are far from perfect. I made about 4 errors just typing the quote.

Monday, May 31, 2010

New Version

The easiest column to write each month is this one. I describe the great features of the latest version of Forge. This version has 259 new cards, which means that it supports a grand total of 3,220 cards. All of the credit goes to Dennis, Chris, Slapshot5, Jim, Snacko, and others who have contributed making Forge the outstanding program that it is today.

There is a lot of new stuff. Now the quest mode has another other option, you can either choose “Realistic” or “Fantasy”. Realistic is the old quest mode where you win cards and can buy cards from the card shop. The fantasy option is similar to an RPG because you build up your stats.

The fantasy mode features a “bazaar” where you can buy upgrades for your character including: buying various creatures that you have at the beginning of each game, buying more life (because you start out with 15 but you can have more than 20), or buying a free mulligan (you mulligan and you draw 7 cards). After 25 wins various other “quests” open up for you that feature harder AI opponents. For a taste of the new fantasy quest mode unzip Forge, click on the “Quest Mode” button, and then click on the “Continue Quest” button.

Another cool feature for both quest modes is that each computer opponent now has a small picture next to its life points. Even though this is just a small change, it really improves the “fun level” since the computer opponents vary from Abraham Lincoln to Lisa Simpson.


Forge is all about the cards, so let me list a few of the new ones. A few cards from Rise of the Eldrazi, like the huge artifacts Artisan of Kozilek and Ulamog's Crusher as well as the level up creature Kargan Dragonlord, Valakut, the Molten Pinnacle and the classic Mana Vault which helps you accelerate your mana.

05-16 Forge (9 MB) - Requires Java and runs on Windows, Mac, Linux, etc... This is the 05-16 version because that is when it was released on the forums.

Download Pictures (78 MB) - The card pictures can be downloaded by the Forge program or you can just grab this file. This includes most but not all of the pictures, it doesn't have the newest 259 card pictures.

Have a great Memorial Day! Cookouts for everybody!!

p.s.
The fantasy mode has one more rule that I want to explain. Usually there is a 500 credit limit for cards that you sell but that limit is removed after you win 50 games. (The correction is that you have to win 50 times, my mistake.)

Wednesday, May 26, 2010

How Forge Processes the Mouse - most boring post ever

(This is probably my least exciting article ever. Processing the mouse is very important but very boring. This post is more likely to be interesting to people who want to write a program like Forge.)

Handling the mouse can become very complicated since a "mouse click" can do many different actions depending on the context: choose targets for a spell or ability, advance to the next phase, or is used to declare attacking creatures. Forge uses the state pattern to process all of the mouse input. Without the state pattern I have no idea what I would have done. I think it works well but it can be tricky to understand.

Below is the Input class that handles the mouse. To better understand the Input class let me briefly explain how Forge implements different phases. Each phase extends Input and shows the name of the phase to the user through showMessage(). Usually a phase will let a user do a specific action like the Main phases allow the user to play any type of card or a land. MainInput.selectCard() handles the processing of playing a card or land.

Input class is also used whenever a spell or ability needs to choose a target. The Input for Shock would use showMessage() to show the user a message like "Select target creature or player to receive 2 damage." If the player clicks on a card, selectCard() checks to see is that card a creature. If the user clicks on a player, selectPlayer() is called.
class Input
{
//showMessage() is always the first method called
public void showMessage()
public void selectCard(Card c, PlayerZone zone)
public void selectPlayer(String player)
public void selectButtonOK()
public void selectButtonCancel()
}
There are a few details that I have left out. First, how does an Input tell the rest of the program that it is done and the next Input should be processed? Forge handles all of the Inputs using a stack and the Input class has a method called stop() which just pops the stack. Second, how do the phases advance? I just hardcoded them, nothing fancy. Main 1 always advances to "Before Declare Attackers". When the Main 1 Input method selectButtonOK() is called, it pops itself and pushes the next Input onto the stack.

Since the method showMessage() is always the first method called, I can put code in there that I would usually put into a constructor. Another trick that I do with showMessage() relates to planeswalkers. Forge was written before planeswalkers were added to Magic so it didn't have the concept of "you can only use one of these abilities once a turn" or loyalty counters but I used showMessage() to fake it. I won't show you the code since it is very crufty and hacked-together even by my standards. Where there is a will, there is a way. :--)

Random quote, “Time is a great teacher, but unfortunately it kills all its pupils.”

p.s.
I lied when I said that "Forge handles all of the Inputs like a stack". In reality Forge doesn't stack inputs. It has a stack but it is only one deep. This can be seen if you play two legendary creatures that have an effect when they go to the graveyard like Keiga, the Tide Star. If you play a 2nd Keiga, you only get to steal one creature. And knowing is half the battle. (Yes, I pretend to be funny even though I'm not.)

p.p.s.
The Input class is also used for mulligans.