In the last two weeks I haven’t worked much on MTG Forge version 2.0. First, I need to write a decent graphical user interface (gui) and then I’ll work on creating cards, etc… I thought about trying to use a video game library for the gui but I get really tired of trying to write my own dialog pop-up boxes (Do you want to mulligan? Yes or No) and other things.
So I’ll use Java and just write a very simple sprite class that will let me draw and moves cards. The gui will be very basic, mana pool and life totals on the left and the rest just shows the game play area.
While I have some great ideas for programming complicated cards, I will start programming 10th Edition. 10th Edition isn’t the most complicated set of cards, it is a good starting pointing. I could try programming a whole block like Shadowmoor that would be a like a beginner trying to climb Mount Everest. First I need to program relatively simple cards and then I’ll do the crazy, insane ones. But this does not mean that I’ll randomly add some cool cards from other sets.
p.s. Hopefully I can program Warp World but I'm not sure.
I think you shouldn't start by forcing yourself to programming an entire set, especially Xth, since it's a more complex base set than most others. You should start with a bunch of basics, and then release the code structures for the card code files, then we can fill in most of the blanks!
ReplyDelete10th isn't too bad. It is a lot easier than Shadowmoor. Like in MTG Forge 1.0, I just needed to add cards so I can figure out where I have problems. I have some vague overview of the whole program but there are always specifics like writing files that always causes some confusion.
ReplyDeleteOne of my main goals is to be able to add sorceries/instants like cards.txt
Shock
R
Instant
Deals 2 damage to target creature or player.
Target: Creature or Player
Effect: Damage creature or player, 2
Well, the only reason it's easier is because there's no hybrid in Xth
ReplyDeleteYou should probably replace the line:
ReplyDeleteEffect: Damage creature or player, 2
With:
Effect:Damage, 2
Since you already defined the target in the previous line. I am pretty sure you want to avoid redundancy, especially if you write a parser.
This would be a difficult card! Unless your program already had all the pieces working...
ReplyDelete(just thinking out 'loud'...)
- Count # of permanents each player owns. (This includes tokens)
- Put all permanents into Library (tokens go away).
- Reveal N cards determined above. (Not draw as I first thought, so players don't lose if they don't have N cards in their library, I guess. Gatherer doesn't say.)
- Sort cards into the stated groups.
- Each player plays all artifacts, creatures, and land cards.
- Each player plays all enchantments, choosing targets for Auras.
- Let players choose an order for the remaining cards, and place them on the bottom of players' libraries.
- Add comes into play abilities onto stack with players choosing order.
- Handle things like removing multiple Legendary creatures.
- And proly a bunch of stuff I missed.
If you can do all that, you've got an awesome program! And you're a darn good programmer to boot. I hope you can do that with version 2. Good luck!
Hey, do you have a separate place to report suggestions and bugs?
ReplyDeleteI've tried Forge and it's definitely a great resource - thanks for putting it out there. But I've found some problems.
I'll just list them here:
* there's no step for instants once computer declares attackers - should be able to play instants then since can enable blocks that would otherwise be impossible - this makes some cards much less valuable
* computer seems to selectively ignore Fear
There's more, but that's what I remember right now.
Matthew as Forge has said previously, MTG Forge 1.0 is in its final version. He does accept bug reports though...I usually email him at mtgrares@yahoo.com with any and all bugs Ive found (many so far :P). Forge has said that 1.0 was kind of a Prototype for how to do it. 2.0 will be vastly improved according to the rumors. :) Stay posted.
ReplyDelete