Monday, December 12, 2011

The Accidental Creation of Forge

In many ways Forge was a happy accident. I was bored and looking for something “interesting” to code. People can go there whole lives without programming something “interesting” and most code is as interesting as a phone book.


Magic: The Gathering had a number of hard problems, such as how to code many different types of cards. Obviously the more card text meant that the card would be tougher to program. Some of the thorny problems were, “How to encode a Magic card into Java?” and “How you do allow a card to override almost any rule?”

Forge uses two mechanisms for the card code. Readable “scripting” and Java code, which is much longer but infinitely flexible. The scripting is very useful that it probably accounts for 90% of all of the cards in Forge. The scripting has also become more complicated, which is a good thing, because it can be used to add more cards.

Forge allowed me to witness the trials of a “real program”. Once a program is over 10,000 lines of code, then you start to see all of these tiny problems that you may or may not be able to fix. A “real program” is like a concrete building which is set in stone. Although buildings can be moved and overhauled, they take an enormous amount of effort. (When I began writing Forge I purposefully ignored “protection” because it was too complicated. I was amazed when Dennis changed hundreds of lines of code just to get protection working.)

The graphic user interface (gui) is also a hard problem, with no clear solution. There is a ton of information that the player would like to have at his fingertips and the screen quickly become full. I took my stab at Forge’s gui design and it was functional but sparse. More and more gui details have been added, such as attacking and defending icons, which makes the game easier to play.

The gui continues to evolve. Here is a beautiful screenshot to wet your whistle. (Please note that this gui is not currently available and is a work-in-progress.)


Devoted Magic Player,
mtgrares

7 comments:

KamiKazeKenji said...

I love Magic, and I love Forge. I hope it continues to evolve for the better. I'm excited for that new GUI!

Chris H. said...

The included screen shot was taken when the window displaying the battlefield had been minimized to the smallest possible size, 800 x 600 pixels. This window will scale up to much larger sizes when played on computers using a monitor with a larger resolution.

KamiKazeKenji said...

My screen resolution is 1024x768, yet the current GUI feels cluttered to me. I've been hoping for a new, more compact GUI so my masses of lands and permanents aren't tiny bits on the screen. I hope this one delivers! It looks very nice indeed.

Hayden said...

I'm having issues with the download, the download site brings me to a placeholder site. Is the download site down at the moment or something?

Forge said...

Hayden,

Downloads fixed, thanks for mentioning the problem.

---------------------------------
KamiKazeKenji,

The user interface will be skinnable, so you should have a variety of skins to choose from. Hopefully you will like one of them or you will be able to create your own.

Anonymous said...

The new GUI looks pretty. I hope that there's a bunch we could choose from so we could get a variety throughout the game experience.

Doublestrike said...

@Anonymous - the new UI is actually skin-able, so you'll be able to make your own skins (backgrounds, colors, fonts) and play with the feel you like.