Monday, August 29, 2011

New Version

Forge has 300 new cards and a total of 8,764 cards.  That is an insane number of cards and it is great that it is in one free package.  Basically you could play Forge for the rest of your life without being bored.  (Well...if you are a card freak like me, you could.)

A listing of the new cards and be viewed here.  Scroll down to "Added many cards, including:" and next to "New Card List" click on "Open".

Some of the improvements that Chris H. mentions:

A new bug reporting system based on Mantis is being developed. When Forge crashes a new report form will appear that will allow you to send in a detailed bug report.

We would like to remove the old "Current Known Bugs" list topic on the forum. While this topic has been useful over the last two years it may be time to try another approach.

In the future bugs and other issues will be reported with the Bug Report form, the Mantis based Cardforge Issue Tracker or by posting a message on the then current forge beta release topic on the forum.

Some people that are using an early version of java 7 under the Windows OS have reported errors that state "Split must have > 2 children". Anyone having this sort of problem should de-install java 7 and install java 6 instead.

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

Many thanks to the faithful developers :*)  For a list of developers scroll to the bottom of this post.

Link - Forge 1.1.2 (Windows, Linux) 25 MB and can be unzipped with Winzip or 7-Zip (free, open source)

Link - Forge 1.1.2 (Mac) 26 MB - Use Keka to uncompress 7z files

Download - Card Pictures (160 MB)
These are most of the low-quality (LQ) card pictures.  You can download the rest of the LQ card pictures or the high-quality (HQ) card pictures using the menu on the New Game screen.

Here - Quest opponent and pet pictures can be downloaded.  Scroll to the bottom of the first post.

Java - Forge requires Java in order to run

You can move your decks files by copying them from /old forge directory/res/decks/ to your new deck directory.  You can also copy your pictures from /old forge directory/res/pics/ to your picture directory.

If you have any questions/comments, please post them to the forum.

---------------------------------------
Some of the awesome new cards include:



Forge has quite a number of people who have helped.  A special thank you goes out to them:

Friar Sol
Sloth
Dave
Rob Cashwalker
Braids
Max mtg
Jeff Wadsworth
Hellfish
ArsenalNut
Starcrash
Marc
Corwin
Chris H

Monday, August 22, 2011

Magarena - 918 Cards, Good AI


Forge is great but sometimes a little variety is good.  Magarena has rules enforcement like Forge and has a great AI.  Magarena's AI is the best that I've every seen.  (And I've heard that it is better than the new Duels of the Planeswalker.)  Magarena has a great user interface and looks like a real videogame.  Magarena lets you pick your theme from a variety of user created skins.

It is hard to describe Magarena's AI.  It feels like there is a little guy in the computer that is purposefully trying to destroy you.  The AI will play as hard and as smart as a human.  Sometimes the AI will hold back and you may think that it may think that it is a glitch but then the AI will play some uber-powerful card that changes the whole game.  Most games will be grueling 20+ turns. 

Magarena only has 1-on-1 matches and doesn't have any sort of quest mode.  Magarena features high-quality card scans so you can sit back and enjoy the great the great art.  While Magic is a great game, it also features some great artwork. 

Magarena-1.16b.zip  - Runs on Windows, Mac, Linux and requires Java 1.6

Magarena_1126.exe - Is a small update for Windows users and should be put in the same directory that you unzipped Magarena-1.16b.zip  

Link - Magarena Download Site for all future versions


Everybody loves screenshots.
p.s.
Working on an open source project is hard and thankfully other people step up to the task.  I, the original author of Forge, no longer work on Forge and ubeefx, the original author of Magarena, no longer works on that project.  Thanks to melvin who continues to work on Magarena and thanks to the Forge coders who have added more cards than I ever thought possible.

Forge Coding Team:
Friar Sol
Sloth
Dave
Rob Cashwalker
Braids
Max mtg
Jeff Wadsworth
Hellfish
ArsenalNut
Starcrash
Marc
Corwin
Chris H

Monday, August 15, 2011

Card Uniqueness - A Thorny Problem


Forge has a problem.  Technically Forge has many problems but today we are going to investigate one of them.  "Why does Momentary Blink not work?"
Let me briefly explain how Momentary Blink is supposed to work.  (Basically Momentary Blink saves your creature from damage or destruction.)

1. You play Elvish Piper, a puny 1/1 creature
2. Your opponent plays Shock and targets Elvish Piper
3. You play Momentary Blink
4. Shock is countered, aka fizzles, because it does not have a legal target

The problem is that Forge doesn't process Momentary Blink correctly and Shock is perceived to have a valid target thus putting your Elvish Piper in the graveyard.  The reason that Forge does this is because it sees both Elvish Piper's as being the same.  And you may ask, "Why?"

Forge uses card objects (Java source code) to represent physical, cardboard cards.  Card objects are used everywhere that a physical card is used: in hand, in the graveyard, on the battlefield, exiled or in your library.  Card objects are equal if they have the same unique number. 

The problem is that Forge doesn't assign a new unique card number to Elvish Piper after Momentary Blink resolves.  This error can be easily solved by giving each creature (and permanent) a new unique card number when it enters the battlefield.  But the issue of "card uniqueness" continues to be a complicated, thorny problem.

Keep on forging,
mtgrares

p.s.
--Ideally the user interface wouldn't show each card's unique ID number but I didn't know how to draw fancy pointing arrows like Magic Online.

--I thought this was a great card picture from Magic upcoming set Innistrad and I wanted to show it off.


Monday, August 8, 2011

Another new version of Forge, oh wonderful, frabulous day.  (Some people might quibble over the word "frabulous" but let them quibble away.)  Forge has a staggering 8,688 cards.  I posted pictures of some of the new cards below.

This is the 07-29-2011 version.

forge-1.1.1-SNAPSHOT.tar.bz2 (15 MB) - Windows and Linux

forge-1.1.1-SNAPSHOT.osx.tar.bz2 (15 MB) - Mac OS

Download - Card Pictures (160 MB)
These are most of the low-quality (LQ) card pictures.  You can download the rest of the LQ card pictures or the high-quality (HQ) card pictures using the menu on the New Game screen.

Java - in case you need to update or download Java

Many people helped with this version. A special thank you goes out to them:

Sloth
Slapshot5
Friar Sol
JenDave
Braids
Rob Cashwalker
Snacko
Jeff Wadsworth
ArsenalNut
Jaedayr
Marc
Chris H

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

Monday, August 1, 2011

How to Code a Trading Card Videogame


This article is all about the wide world of programming so if your eyes start to glaze over…sorry…come back next week when I cover something more exciting.

from Magic's multiplayer Commander set

Maybe there is a trading card game (TCG) that you want to play.  Maybe you love this TCG with all of your heart but no one else has ever heard of it and you bought a couple of starter decks and you just fell in love with it.  Here are 7 steps that will get you started in the right direction.

1. Learn one programming language well.  It doesn’t matter if you know C, C++, C#, D, Java, Perl, Python, Ruby or Lua.  I would suggest studying for a certification test in your language which will force you to learn all of the tiny details that you otherwise might gloss over and those details become VERY important when you start to program anything over 1,000 lines.  If you want a great book on good coding practices, I would suggest “Code Complete” by Steve McConnell.  This one book taught me more about coding than my four years in college.  (OK, it was really 6 years because I spent 2 years majoring in music which was really “fun” practicing 2 hours a day.)

--If you want to get started right away, you can start programming in a language that you don’t know but it can be frustrating since you have to look everything up in a book or online.

2. You have to become a rules lawyer.  If you don’t know the rules, you obviously can’t program them.  Learn to read the “comprehensive rules” that come with many TCG’s.  Reading the comprehensive rules will open your eyes and will answer many of the details when programming like when your search your deck for a card can the player choose to not find a card even though it is in the deck.  The usual answer to this is yes because otherwise you have to prove to your opponent that the card isn’t in your deck, which is annoying and time consuming.  Many TCG’s share the same nomenclature such as zones.

--A quickstart idea is just to code two starter decks and let other people verify that your program implements the rules correctly.

3. Write the program for only yourself.  By tailoring the program specifically to yourself, you are making many good design decisions.  Not everyone will agree with you 100% but that never happen anyways.

4.  Don’t expect anyone else to help or support you.

I know this sounds a little rough but if you are coding something that you think will make other people happy, you are in for a world of hurt.  By programming something specifically for yourself, you are (hopefully) guaranteed to make yourself happy.  And if you are happy, it will make the work that much more enjoyable.  Internal motivation is much better external motivation, aka writing the program for somebody else.

Coding is really a one-man activity.  And yes you may be working on a team but you will spend most of your time by yourself.  Many open source projects are supported by only one-man so you have to learn to rely on yourself.  (Yes, you can ask other people questions but don’t expect them to do the grunt work, you have to do your own grunt work.)

5.  Spent a lot of time working on the user interface.  People will make snap judgments about your program after using your program for only 30 seconds.  The user interface is what people will be using and it will affect their enjoyment.  With that said, I know that working on the user interface can be hard/annoying.  Making your program look halfway decent is a big challenge.  The reason that Forge has a fantastic, boring gray background is because that is the best that I can do.  Programming the user interface can easily take half of your time.

6. Don’t be afraid to fail.  I didn’t get Forge right the first time.  The current version of Forge is probably by 3rd or 4th version.  I would start coding the best that I could and eventually the project would just crumble right before my eyes.  I would pick up the pieces and confidently try again.  And now if I started Forge again, I think I could program it 80% better because I’ve learned so much.  I’ve read that you learn more from your failures than you do from your successes.

7. Have fun.  If you aren’t having fun programming something…then stop.  Find something that is easier and work on that instead.  By working on easier projects you are flexing your coding muscles so that you can handle that harder stuff later.

Hopefully that helps point somebody in the right direction.  Obviously I left out many subjects like writing the AI, which is a whole book by itself, or stressing that automated tests are your friend (although I admit that I didn't write any).   Coding can be fun, especially if you are working on a videogame.

--mtgrares