Monday, August 30, 2010

New Version

Forge is a great program and advertising the new version each month is pure joy (really it is since the article practically writes itself.) Forge has 417 new cards (insane I know) which brings the grand total up to 3,989 cards.

There are now a large number of counterspells, around 48, and range from "big powerhouses" like Assert Authority (5UU, Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard) to regular control cards like Annul (U, Counter target artifact or enchantment spell). Avoid Fate which is an odd green counterspell costs G and says "Counter target instant or Aura spell that targets a permanent you control". On a side note, Avoid Fate is one of the more complicated cards that Forge can handle. (Forge only enforces the "simple rules" and does not do anything very difficult like "last known information".)

Other snazzy cards include the red powerhouse Wildfire (4RR, Sorcery, Each player sacrifices four lands. Wildfire deals 4 damage to each creature.) and the blue reset switch Upheaval (4UU, Sorcery, Return all permanents to their owners' hands.). Another new addition is a rather curious blue creature called Timid Drake (2U, 3/3, flying) and says "When another creature enters the battlefield, return Timid Drake to its owner's hand.", I guess he really is shy, ha.

Thran Golem (5, artifact creature, 3/3) is cool because he wants to be enchanted, "As long as Thran Golem is enchanted, it gets +2/+2 and has flying, first strike, and trample." Ruination (3R, sorcery, destroy all nonbasic lands) lets you deal with "problem lands" that your opponent may have.

Deckbuilders will love Parallel Evolution (3GG, sorcery) which makes duplicates of all of the tokens on the battlefield and puts tokenless opponents at a big disadvantage. Deckbuilders will also love Oyobi, Who Split the Heavens because you have two problems to solve. One, how do you get him onto the battlefield because he costs 6W (3/6, flying). Two, how do you maximize his ability "Whenever you cast a Spirit or Arcane spell, put a 3/3 white Spirit creature token with flying onto the battlefield."

And lastly, Mirror Gallery (5, artifact) is just cool because it says "The 'legend rule' doesn't apply".

Forge 8-20 (10 MB) - works on Windows, Mac, Linux. This is the 8/20 version because that is when it was first released on the forums. (On the forums you can upload/download decks and rant/rave about Forge.) If you need Java you can get it from here.

Card Pictures (100 MB) - low resolution card pictures, put in the /res/pics/ directory

How do I download the cards pictures?
When Forge starts, click on the menu option named "menu" (ok you got me, I didn't know what to call it.) Now you have two choices: "Download Card HQ Pictures" which downloads high quality card pictures, around 800 MB and "Download Card LQ Pictures" which is around 100 MB. (HQ stands for "high quality" and LQ stands for "low quality".)

High Resolution Card Pictures:
Thanks to Kersed (from the forums) for uploading his pictures. The pictures are compressed using rar so you need to have a newer version of Winzip or Winrar.

Part 1 (180Mb):
http://www.mediafire.com/?z3cwckz8i5ccq35

Part 2 (180Mb):
http://www.mediafire.com/?kxeb01o8rv723m2

Part 3 (180Mb):
http://www.mediafire.com/?ufmsg9frsdbgewi

Part 4 (80.36Mb):
http://www.mediafire.com/?f3m9yts5h4mmwy3

p.s.
Many people have helped to make Forge the great program that it is today. These are the guys that spend hours fixing bugs and programming new cards.

Dennis Bergkamp
Rob Cashwalker
Snacko
Friar i Sol
Sloth
Hellfish
Saint Waldo
Almost Clever
Chris H

Monday, August 23, 2010

Background Info About The Developers

Forge has a growing number of people who contributed new cards and code. Thanks to “the power of the Internet” programmers from all over the world can help. People from Sweden, Austria, Germany, and other countries are currently working on Forge.

I wanted to introduce a few people who have contributed to Forge, so I asked them a few questions on the forums and here are their answers. These are everyday guys who work regular jobs and then decide to do some programming, and we all get to reap the benefits.

On a side note, I was surprised that nobody played Magic Online since it also Magic + computers also. People seem to enjoy playing against the AI, even though it makes many beginner mistakes.

This first guy, DennisBergkamp is now the “lead project programmer” and oversees everything. This guy has put in a huge number of hours in the development of Forge.
-------------------------------------------------
What is your username or forum username?
DennisBergkamp

What country are you in?
USA

When did you start programming?
Around 2000-2001.

When did you start playing Magic?
In 1997 when a friend of mine showed me Shandalar. I bought some cards in the following years, but I haven't played a real game of magic in ages.

Why do you contribute to Forge?
I remember trying out MTGForge (back then) for the first time, and I loved its simple interface immediately. It only had about 900 cards, so I just wanted to add some of my favorites. Besides, it was open source and written in Java (and I had played around with Java a little bit already). Since then, I've really been enjoying messing around with and adding to Forge's code.

What cards have you created?
Lots!

What bugs have you fixed?
Also lots, there was a time where it seemed all I would do is fix bugs It was like playing a game of never ending Whac-A-Mole though, whenever I'd fix a bug, new ones would pop up almost immediately.

Do you play Magic Online?
Nope.
--------------------------------------------------------

Rob is a great guy and has added numerous "keywords" to Forge that allow a bunch of similar cards, like Shock, to be added without programming each card individually.

--------------------------------------------------------
What is your username or forum username?
Rob Cashwalker is a name I've been using for a long time.

What country are you in?
US - New York

How old are you?
32

When did you start programming?
Around 16, I started messing around with DOS batch files and QBasic. When I started college, a friend gave me Visual Basic 4.

When did you start playing Magic?
Around Mirrodin. A friend had just gotten back into it after stopping around 5th edition.

Why do you contribute to Forge?
Because it needs to be done.

What cards have you created?
All cards using the Pump keywords, RegenerateMe keyword, Discard keywords, Draw keywords, DestroyTgt keyword. Very few individual cards - Kulrath Knight and Gwafa Hazid, Profiteer.

What bugs have you fixed?
A small handful, mostly in code I've submitted.

Do you play Magic Online?
I've played it in free demo mode, a long time ago, but not in v3.
--------------------------------------------------------

Even though I've never met Chris, I know he is a nice guy. He has been updating the rarity for all cards added to Forge. This is also the guy that organized all of the computer decks for the quest mode AND renamed all of the decks, in order to make them more useable. Chris seems to really enjoy building decks and is a primo deckbuilder at heart.

--------------------------------------------------------
Chris H.

On the forums I use the name Chris. I live in the USA, east coast. I completed several introductory computer language classes in college many, many years ago. In those days the students had to use keypunch machines. I did not obtain a degree in programing, nor am I a professional coder.

I started playing mtg while unlimited was in print. A friend had befriended the owner of a local gaming store and was giving away boxes of unlimited booster packs to the guys in our circle. I purchased several more boxes of boosters as the next several sets were released.

I had no idea that my Mox, Ancestral Recall, Timetwister, dual lands, etc would become so valuable in the future. I made decks using these "power" cards and would play them at the gaming store. For a couple of years there were over a 100 people showing up for the once a week night devoted to mtg. During the third year the popularity had waned to the point where it was just me and the owner. The owner sold his store and I sold my cards and moved on.

Over the years my health has deteriorated and I had a stroke 3 1/2 years ago. I needed some form of therapy to exercise my brain in order to regain some of it's lost function. The Forge project has been very helpful in this area and I am having a blast.

I created some of the newer auras including Animate Artifact, Dwarven Demolition Team and several of the X cost spells. I contributed some of the AI decks used by the computer in quest mode and have added some AI code to a few of the cards.

I fixed some bugs associated with Crib Swap, Visara the Dreadful, Avatar of Woe, Reprisal, Hidetsugu's Second Rite, Akroma's Memorial, Basking Rootwalla and the Changeling bug with the cost change cards.

I believe that I am 56 years old, although I stopped counting after 21. I no longer play paper mtg and I never tried Magic Online. I have never had an interest in playing online games as I hear it tends to attract immature individuals.

I enjoy beating up the computer in Forge (quest mode) and I also enjoy engaging in conversation with my the many riends that I have made on our forums here at CCGH.
--------------------------------------------------------

I don't know much about Hellfish. He is working on a very ambitious rules engine for Magic and you can read more about it on his blog called The Sharpening.

--------------------------------------------------------

What is your username or forum username?
Hellfish.

What country are you in?
Sweden.

When did you start programming?
Um, let's see... I first started with Blitz Basic (Not the Amiga version, I'm not THAT old) being hot stuff so... I was 14 or so, maybe.

When did you start playing Magic?
Microprose's old gem was my first stint with Magic, and I had found that in a bargain bin so I'm guessing 1-2 years after '97.. Let's say a nice and even 2000. I drifted away from it when I probably lost or had trashed the CD of that game and got reaquainted with it thanks to Forge, actually! That was probably mid-late '09, I think.

Why do you contribute to Forge?
Because I love playing it and coding for it is almost equally fun.Plus, I get to attempt to add any cards missing for my own favourite decks.

What cards have you created?
Almost all the ones that use the HandSize or spCounter keywords and a couple of one-offs. (Oh, and paintap, can't forget paintap)

What bugs have you fixed?
*Besides* the one's I've introduced myself *cough*letsnotgothere*cough* I havn't done much. I have a one-line fix ready for Mad Auntie being able to regenerate herself if that counts?

Do you play Magic Online?
No, I can't afford it. I would love to but hey, them's the breaks.I'll just enjoy Forge for now.

Do you play paper Magic?
No. I have cards and decks and all but beyond a couple of matches against people I tried in vain to sucker in I can't play much. There's just not much paper Magic action in Sweden, though I will try to get to one of the 3 cons I know that runs it next year.

How old are you?
I'm 24 years young!

-------------------------------------------------

What is your username or forum username?
Friarisol (the second 'i' is a typo).

What country are you in?
New Jersey.

How old are you?
27

When did you start programming?
1997.

When did you start playing Magic?
A little bit before Alliances came out, and stopped around Invasion. I'm familiar with the newest sets but no longer collect cardboard.

Why do you contribute to Forge?
I was a huge fan of Shandalar and enjoy having something to occupy my recreational programming time.

What cards have you created?
I wrote a handful of individual cards that I needed for one of the few decks that I still own. I also wrote up the Spike keyword, Madness keyword, and Suspend keyword along with some other stuff.

What bugs have you fixed?
The biggest one I fixed so far was redoing the Mana Pool, which I believe has fixed some problems with infinite mana abuses with snow mana. I've also done some script migration stuff for unifying the cards text files. The one I'm tackling next is a unification of the cost object, so ideally activated abilities will just setup a cost object and then they will be paid all in the same way/order.

Do you play Magic Online?
No.

-------------------------------------------------

Silly Freak is also working on his own version of computertized Magic and you can read more on his blog Laterna Magica.

-------------------------------------------------
What is your username or forum username?
Silly Freak

What country are you in?
Austria (not the one with kangaroos )

How old are you?
I'm 18, still one year of school to go. the technical school I go to is one year longer than normal education in Austria.

When did you start programming?
My mother had an excel spreadsheet for basic math training which I used in primary school, and I was around 12 or 13 when I asked her how it worked and she told me. We did one simple program together, and afterwards I started to practice myself with the help of a book. In the age of 14, I attended a technical school, and since then I'm fully into it.

When did you start playing Magic?
About the same age, 12 or 13. I started with an 8th starter pack, shortly before Mirrodin came out. I was actually introduced by my younger brother. We still play the occasional match, but he mostly quited.

Why do you contribute to Forge?
I don't have many friends who play magic and don't want to spend money on a virtual card collection, so I looked for free alternatives on the Internet and found forge. After some time, I got annoyed by the fixed size of the game area. This was the first time I contributed.

What cards have you created, what bugs have you fixed?
Not one, really. While creating cards might be interesting, I never took the time to dive in the code. I did some foundation work; the configuration files and the new text-based deck format were my fault, as was the error viewer. And even though some might find it annoying, I think it was a very vital addition; I haven't heard of a "Computer is thinking" bug in months, and though I didn't fix it/them, I believe I helped a lot in tracking them down.

I didn't contribute to forge for some time, mostly because of school and my own project. *pushing the microphone away* may I mention my blog?

Do you play Magic Online?
No, but I own a reasonable collection of physical cards. I'm particularly proud of owning Doran, my favorite card ever.

-------------------------------------------------

What is your username or forum username?
Sloth.

What country are you in?
Germany.

How old are you?
28.

When did you start programming?
I started with Turbo Pascal when I was 16.

When did you start playing Magic?
I got my first magic starter in 1995. 4th Edition, Ice Age and Homelands just came out.

Why do you contribute to Forge?
I love the game and I really like the way it is developed.

What cards have you created?
I started with adding functional reprints of existing cards and keywordable cards. Later I wrote the keywords spBounceTgt, spDestroyAll and spBounceAll. The only really unique card I added is Mirror Gallery.

What bugs have you fixed?
I've fixed the bug, that two copies of indestructible legends won't die and some others that didn't get reported. I still have no clue about most parts of the code, but hopefully I can change that in the future and be more helpful in fixing bugs.

Do you play Magic Online?
No, I don't like playing against people online.

Do you play paper Magic?
I have a huge (but not valuable) collection of paper cards, but I don't play very much any more. I never played in official tournaments (other than two prereleases).

-------------------------------------------------

And last but not least, myself. Nothing below is a shocker. I code therefore I am. Truthfully, I can't seem to get a job coding (since I have no experience) so I started working on Forge just to prove to myself that I really could code something useful.

-------------------------------------------------
mtgrares (the guy who is writing this blog)

What country are you in?
USA, Florida

When did you start programming?
When I was 20, I taught myself C. Later I graduated with a bachelor's degree in Information Science. (Computer Science has too many math classes for me.)

When did you start playing Magic?
After college, so I was around 25 when Mirrodin first came out. I remember reading some of the rare cards and wondering, "What the heck does that do" because it was so convuloted. After reading months of Wizards "Saturday School' that answered rules questions, I finally thought I had a firm understanding and proceeded to start work on Forge.

Why do you contribute to Forge?
Well I started Forge because I wanted to play against the computer because for various (uninteresting) reasons I spend most of my time offline.

Do you play Magic Online?
I played Magic Online (version 2) from about 2004-2005. I was always disappointed because I couldn't afford the best rare cards and would have really enjoyed the Peasant format that only allows commons and a few uncommons. "I only programmed Forge to use rare cards that I don't use" which I say in jest but it is partly true.

Using Magic Online I didn't really mean people who just wanted to play for fun. Everybody just wanted to win, even if they were in the casual room. Forge tries to put the fun back into Magic because you can abuse the computer as much as you want to and it will never whine or disconnect during a long game.

Do you play paper Magic?
No, I guess I'm just too cheap. I own a random asortment of Magic cards but nothing valuable. I've only played 3 Magic games in real life.

How old are you?
31, yeah. Age seems to mean less and less as I get older.

Monday, August 16, 2010

Forge is a “Work in Progress”

Forge is a great program but it is very rough around the edges. Occansionally it will show you an ugly error message, cards will malfunction (or not work at all), and the AI will make stupid mistakes. These problems arise because Forge is a completely free computer program written by people in their free time.

Forge doesn’t have a quality assurance or testing department. Additionally Forge does not have a bug database and does not assign bugs to individual programmers. Coders are free to work on whatever card or bug that they want to. While this sounds willy-nilly and a little crazy, overall it works out well. Most programmers work on new cards and occansionally try to fix a bug or two. Since the coders are avid players of Forge, the most annoying bugs get fixed.

There are thousands of little things that commercial developers do in order to make their software or videogame easy to use. And Forge does none of those things, Forge is litterally cobbled together by random coders over the Internet. There is no one directing. Each person works on his little bit of code and then uploads it to the server.

While Forge will never have the sheen of a shrink-wrapped, commercial product, we try to make Forge easy to use. Forge’s user interface is simple (but gettting better). Errors still pop-up but hopefully they aren’t too annoying. Since Forge is a “work in progress” there is not a stable, release version. All versions of Forge are equally buggy.

Even though Forge is buggy and rough around the edges, many people seem to enjoy this style of Magic. I’m glad that Forge allows you to enjoy Magic (the world’s greatest card game) in different flavors. Go Fantasy Quest Mode!!! (Which allows you to have more than 20 life and various pet creatures that you start the game with.)

p.s.
The easiest way to have a stable version is to restrict Forge to only the cards that work 100%. Awhile ago I coded a “remove card” feature, that removed specific cards from Forge which could be used to remove buggy cards.

You can also remove buggy cards by deleting them from the file “cards.txt” although this will cause as error if you try to load a deck that uses the removed card. “cards.txt” can be difficult to edit because Forge does do error checking on it. So if “cards.txt” has an error, Forge will just start, then shut down, so always make backup copies.

Monday, August 9, 2010

10 Complicated Cards

Magic is has a ton of complicated cards that break the rules and Forge implements quite a few of them. Here is a random or not-so-random list. (As you may see, a number of cards start with the letter "A", hm...I wonder why? The answer is a short attention span.)

1. Adarkar Valkyrie - Her "resurrect" ability was one of the early cards that I added myself. At first I didn't think I could program the card but with a little bit of thinking (and hacking) the card works exactly as printed. (Sometimes Forge takes a few liberties and doesn't implement the card exactly as it was printed .)









2. Ageless Entity - Altering a "global effect" like "whenever you gain life" can be complicated since everything in the program has to work together.













3. Ali from Cairo - Similar to Ageless Entity, Ali modifies damage. Technically Ali modifies player damage but that is jargon for "pain in the ass to program".












4. Amulet of Vigor - Events in life are simple but when programming Magic, events can become sticky and complicated. Vigor sounds simple but when does a card become tapped? After it resolves off of the stack and before it is added to the battlefield? If you programming is off, Vigor can become a nightmare to code (and maybe it was).









5. Andradite Leech - "Black spells you cast cost B more to cast" is another example of what I like to call a "global effect", i.e. a card that modifies or changes something in the future. These types of "game changing" cards are the hardest to program. (Take for example the mythological card "Giant Rage" who gives all of your creatures haste in 3 turns AND whenever you play a red spell that is countered.)









6. Anowon, the Ruin Sage - Upkeep effects are simple if they don't allow the player a choice, such as Howling Mine. Anowon is complicated since it requires coding the AI for when the computer has to make a choice. (And the AI tries to make a good guess but will always fail in tricky situations.) Allowing the human player to make a choice is convoluted because you have to understand the Input class that Forge uses. (The Input class process all mouse input but can be hard to understand.)









7. Apocalypse Hydra - This is an X spell which I'm glad that Forge has. Hydra also has a ton of card text but at least it doesn't require any choices. Choices = headache (when it applies to programming)











8. Ardent Plea - Has both exalted and cascade, two fairly difficult effects. Exalted sounds simple to program until you try to code the AI for the computer. Cascade is even more problematical but at least it has a great effect, playing a free card.












9. Elspeth, Knight-Errant - Her ultimate effect creates an ongoing, state effect and all ongoing state effects are complicated. At least the effect is explosive and unusual.












10. Witch-Maw Nephilim - Forge has 4 nephilim and they are all convoluted and ugly. Witch-Maw likes spells and grows every time that you play a card. Additionally if he is big enough, he gains trample, which is another unique effect to code.

I don't think I've never used any nephilim, so I'm going to go build a deck around them right now, bye bye.

Monday, August 2, 2010

New Version

It's a new month and you know what that means....well it means that there is a new version of Forge. A whole month has passed us by without war, famine, or Pinky and the Brain taking over the world. (Yes I still watch cartoons, eat it.) If I seem more random than usual it is because it's 2 am, the time that all "normal" people should be sleeping, slackers.

OK the real stuff, Forge has 150 new cards with a grand total of 3,572 cards. (You can view the new cards by opening up the Deck Editor and selecting "Sort By" then "Most Recently Added".) The first card I see is Dread Reaper (3BBB, 6/5, flying), a random card from Portal. Please note that the card text says, "When Dread Reaper comes into play from your hand, you lose 5 life" while the oracle text in the Deck Editor's upper window says, "When Dread Reaper enters the battlefield, you lose 5 life" which explains why you will lose 5 life if you use Zombify.

Other great new cards include: Leonin Elder (W, 1/1) which has the ability "Whenever an artifact enters the battlefield, you may gain 1 life." Auriok Champion (WW, 1/1) has protection from back and red and has the same life-giving ability. White also gets the flying beauty Admonition Angel (3WWW, 6/6) that lets you exile a nonland permanent each time you play a land, sweet!!!

Midsummer Revel (3GG, Enchantment) is just begging to be abused. You add a counter during your upkeep and you can sacrifice it to make X 3/3 creatures, X being the number of counters on it. Ifh-Biff Efreet (2GG, 3/3) finally gets its Pestilence like ability to damage each flyer for G. (I added it years ago with its damage ability because green doesn't get many flyers. I also love the name for some reason, Ifh-Biff Efreet.)

Delusions of Mediocrity (3U, Enchantment) is likely to pique somebody's interest: "When Delusions of Mediocrity enters the battlefield, you gain 10 life. When Delusions of Mediocrity leaves the battlefield, you lose 10 life." WorldSlayer (5, Artifact Equipment) is truly insane because when the equipped creature deals damage to a player, everything except Worldslayer is destroyed. (Talk about being a hard way to win, sheesh. I owned this horrible card online and never used it, nothing like a crap rare to make you question Wizard's sanity.)

Niv-Mizzet, the Firemind (2UURR, 4/4, flying) also has the ability "Whenever you draw a card, Niv-Mizzet, the Firemind deals 1 damage to target creature or player". (This card was coded differently so it should work better.) Psychatog (1UB, 1/2) is a (in)famous card that lets you discard or exile cards to pump it up. I say that Forge doesn't have many complicated cards but it really does, Mishra, Artificer Prodigy (1UBR, 4/4) is insane. When you play an artifact, you can also search your hand, graveyard, and library for a card with the same name and play it for free.

I remember this next card from years ago when I first saw it previewed in a magazine, Crucible of Worlds (3, artifact) which says "You may play land cards from your graveyard." Forge also has Roc Egg (2W, 0/3) from M11 that transforms into a flying 3/3 if you can somehow get it into the graveyard.

Thanks to the following list of people for their hard work and patience.  These are the guys that are coding the new cards and squashing bugs.

Dennis Bergkamp
Rob Cashwalker
Snacko
Beached As
Friar i sol
Sloth
Hellfish
Slapshot5
Chris H
 
Computer programming is like trying to tie your shoes while driving 65 mph. Computer programming is like making a movie, people watch it without appreciating the thousands of tiny details. And computer programming is all about details, that is why 1 / 2 = 0.

Usually programming only deals with integers or whole numbers and 1 / 2 does not have a whole number answer. You have to make one of the numbers not an integer: 1 / 2.0 = 0.5 which is why dividing by 2.0 gives you the right answer. And yes I'm sure that somewhere a student programmer has lost an hour or two on the problem I just described.

Now its 3 am and time for knightly night, bye.

p.s.
I love the new pretzel M&M's. Go to Walmart and buy them in the box for $1, which are twice the size of the regular, squishy "paper" version.

p.p.s.
From the cartoon Futurama: "The package delivery business has nothing to do with packages."

Downloads:
forge-07-16.zip (13 MB) - uses Java and runs on Windows, Mac, Linux.  7/16 is when it was first released on the forums.

Low Resolution Card Pictures (100 MB) - put in your /res/pics directory

High Resolution Card Pictures:
Thanks to Kersed (from the forums) for uploading his pictures.  The pictures are compressed using rar so you need to have a newer version of Winzip or Winrar.

Part 1 (180Mb):
http://www.mediafire.com/?z3cwckz8i5ccq35

Part 2 (180Mb):
http://www.mediafire.com/?kxeb01o8rv723m2

Part 3 (180Mb):
http://www.mediafire.com/?ufmsg9frsdbgewi

Part 4 (80.36Mb):
http://www.mediafire.com/?f3m9yts5h4mmwy3