I started Forge, which is an open-source, free project that lets you play Magic: The Gathering against the computer. Currently other people are updating Forge and there will be no more posts to this blog.

Monday, July 7, 2008

Undo

Mmmm…Mountain Dew is very good. Maybe I could code without it, but I would hate to try. I have this idea for a story: the whole world blew up and there is only one can of Mountain Dew left. I don’t know what the plot would be but it still sounds cool.

Ok, back on topic, undo. The undo feature is probably the most important computer invention since the mouse. Undo is easy to understand but hard to program. I’m not saying that undo is impossible but it is certainly tricky at best. Adding undo is like saying, “Let’s redo the foundation of this house.” You can redo the foundation but it basically means that you have to tear down a lot of stuff in order to do it.

Undo is one of those thorny features that effects the whole program, a program has to be written from the ground up with undo in mind. Hopefully MTG Forge version 2 will have undo. Undo would also help the computer AI. The AI could play a few cards and then determine which card would be the best to play.

And while MTG Forge currently doesn’t have undo, it does let the user cancel most actions. Even though the cancel button seems unnecessary, I often use it. I played through the Marvel Trading Card Game on PC and would you believe it, there was no cancel button. If you clicked on a card that had a legal target, you HAD to play it.

Needless to say this was very, very annoying. It was like the game was working against me. I played on despite the annoyances and then got stuck on the last boss. He started with a huge creature in play and I had no idea how to defeat him. I wanted to Terror it but couldn’t. Anyways, keep tapping those cards. --Forge

p.s. I posted a picture of a Japanese card just for fun, the English picture is here.

6 comments:

I am very glad you put cancel buttons in your game. Not being able to change your mind after clicking a card makes it a lot less fun, since you can always click a card unintentionally.

That "Spitemare" is a real nasty creature.Reminds me of the classic "Mogg Maniac".The nasty things you could do with that!Of course, these days you use "Stuffy Doll" for that.But "Spitemare" can also target creatures, so that opens up a whole box of new tricks! (combo "Spitemare" with "That Which Was Taken" and let the fun begin!)*evil grin*

Official request: Please put "Spitemare" in the next update of your game. Thank you.

Forge,It would be cool if you made a generic player API. I'm no Java programmer, but I did run the game and look at some of the code. I got the impression you haven't done this yet.Such an API would be used by your human-player code, and by your computer-player code, and other people could build their own Magic-playing AI. People could then pit AI against AI, or just play against different AIs when they wanted to.

Maybe this will be in version 3. :^)

Like Undo/Redo, that is something that is easiest to design into an application before you code it.

Well in version 2, which I'm trying to work on, a person should be able to build their own AI. The problem is that building your own AI from scratch is probably too much work, so then there needs to be "helper" functions that simplify programming a different AI.

Version 2 will hopefully have a few custom AI's for specific decks like aggro or Wrath of God. I think that a custom AI playing a prebuilt deck will be a pretty good opponent.

Even though people should be able to build their own AI, there will be no AI versus AI battles. MTG Forge will only get setup for one AI to play against a human player, it just makes the programming a lot easier.