I've been thinking a little about Forge 2. One of the problems when designing the "2nd version" is that you have a tendency to add every little feature that you thought of while doing version 1. This tendency is completely wrong. Less is more. Programming takes time, so you should try to maximize the final result, which means cutting features.
At first I wanted version 2 to have a better user interface (UI). The UI is what every person sees and uses. The UI affects the user's "happiness index", how hard is it to use this program? My decision is that version 2 will have the same UI, so I can work on other features. (Of course the user interface will be separate from the rules engine and could be improved later.)
After saying "no" to the UI, I decided the single most important feature of version 2 would be a smarter, nastier computer opponent. The current AI is basically a knee-jerk reaction and the computer doesn't think ahead. Hopefully in version 2 the computer will think ahead and it will be awesome.
At first the AI will only attack, block, and play cards/abilities during his main phases. This restriction is here because it is realistic. I will encounter many unforeseeable problems while coding an improved but scaled-back AI. After I have the AI working, I can make it more complete and able to respond to spells/abilities on the stack and play abilities/instants during combat.
Programming a Magic AI is hard and for proof here is an excerpt from the Moxdev blog which aims to implement Magic in C#.
Attempting to program AIs for MTG can be dangerous to your health. If you suffer from any symptom, stop reading immediately. Symptoms may include
--Extreme fatigue, with insomnia
--Seeing min-max trees in your cereals
--Sudden urge to stop programming forever
--Starting to talk to your AI
--AI programming is not recommended for pregnant women and children under 5.
That post really made me laugh because coding a good AI can be very frustrating. If you set you expectations too high, you will never get your program up and running (because you will be too exasperated and just quit). The only perfect computer program, is one that never gets written.
The good news is that even if the AI only does basic actions like attacking/blocking/playing cards during his main phases, the AI will be better because it will be thinking ahead. Hopefully the AI should be able to make good decisions like using two Shocks to kill a flying 4/4, something the current AI cannot do.
And don't worry, if I get a few cards working in Forge 2, I will post it (and probably brag on myself). My goal isn't to develop the greatest Magic program in the universe and then keep it a secret.
On a side note, people seem to want the convenience of playing Forge in the browser because you don't have download anything, so I'm keeping that in mind. Forge 2.0 will come in two flavors: browser version and a downloadable, offline version.
See you next Monday,