Rough Draft of Proposed Release Schedule
----------------------

0.7	first snapshot under sourceforge development
	supports OMD format

0.8	Spectating of a live game
	    - including a "current game directory?"
	        - this is pretty tricky
	Replay a NetMage game
	    - able to back up
	    - able to jump ahead
	Replay an Apprentice game
	replace DeckChooser with OMD DeckMentor
	integrate OMD SetViewer
	display table immediately (i.e, before connection is established)
	    - can mess with cards, ..., before connecting or getting
	      connection

0.9	Can play Apprentice<->NetMage
        Beginnings of Scripting
	    - maybe a macro that draws 7 cards
	"Mana Pool" graphics
	    - a crutch
	    - shows how much you have to work with
	    - game config can require that you not use it

1.0	Functionally equivalent to Apprentice
	    - maybe without the skinning yet?
	    - is sideboarding easy?  i've never gotten that far in an 
	      appr game
	Successfully used by a Judge to resolve a dispute ???

1.1	the 0.6.7 look of NetMage is just one of many possible
	    "table descriptions/layouts"
	"Game directory/lookup" support
	    - don't have to arrange 
	JavaWebStart support
	    - esp. useful for spectators, who don't need to load/save

1.2	Graphical helpers with game state
	    - show a "+3/+3" card as "5/5" in some highlight color
	    - card that gained flying shows "flying" in highlight color
	    - show counters on cards

1.3	Draw lines from attacker to targets
	Draw lines for blockers

1.4	display hand as just another zone on table
	    - not a special window
	    - drag from library to hand to draw

1.5	"Live" introduction/strategy article
	    - like something you would see at magiccampus.com
	    - instruction/text, sprinkled with game snapshots that
	      you can play forward, or back up, ...
	    - this is a big one.  need to break it down some

2.0	Supports another game

3.0	Supports creating a game on the fly, from scratch (?)

  ------



0.7 tasks (details)

- finish the OMD loader

- release tool
    - tags CVS tree (so we can revert)
    - exports from CVS to netmage-.x.y.tar.gz



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

new ideas (since baseline)

- able to play with the new cards as the dribble in to the various sites
    - e.g. the PlaneShift cards



  ----


unsorted stuff (from "baseline")

- special cell for rendering a card line in DeckChooser:
    - Blah    1 2R 3B ...
    - with the right background color?
    - may not be necessary, if OMD has something

- netmage <-> apprentice
    - first step: may be easier to put bridge in in_between
      (until Game and GameWatchers is working)

- able to rearrange hand
    - drag/drop

- finish source reorg
    - really move stuff into different packages


game/model
----------

- separate gui from game
    - gui is just a view into game state
    - can have different types of views
    - required for a robot

- all changes to game are via Commands
    - makes replay much easier
    - helps robots


gui
---

- skinning, like apprentice

- display zones on table

- show effects on a card
    - e.g., +3/+3 until end of turn: show it as 5/5 in red
    - must add to network protocol

- show counters on cards


scripting
---------

- develop/update/debug scripts for cards right in the game


server/networking
-----------------

- multiplayer
    - including different "table layouts"


ai
--


card database
-------------

- web-based, down to card granularity
    - cache locally
    - check for new cards occasionally
    - allows "off-line" play

- can we make OMD decks self-contained?
     - no need for the deck database?


misc
----

- support judges
    - can stop a game, as a judge to hook in, replay
	- special chat area
	    - voice support, if everyone has microphones
	- can watch what judge is doing

- capturing/replaying game transcripts
    - my main goal is to learn by example
    - possibly with annotations, even discussions
    - note: not just complete games, but examples of using a specific
	    card, or illustration of a specific mechanic, or 
            solve puzzles, ...
    - note: the OMD folks are sort of discussing the same thing
           (at least the xml format for transcripts)

- scripting
    - simple
	- macros (like drawing seven cards to start)
	- maybe create them by example? (hard)
    - effects of/on cards
	- when you play "target gets +3/+3", pick a target, and the
	  gui actually changes from "2/2", to "5/5" (in a different
	  color, to show that it's temporary).
	- as a first step, players will have to undo these effects
          themselves.  (in my python experiments, i have a nice 
	  event/turn-based scheduler, so you can have such effects
	  canceled automatically.  that may take a while to migrate
	  to NetMage)

- "Magic lessons"
    - small snippets of games, where an author can demonstrate how
      to use a particular card/combo, or how to defend against something
     (note that, since these lessons would be live, you could
      also use them for daily puzzles, judge certification,
      etc.)



misc crap from previous version
-------------------------------


Network Play/Multi-Player
--------------------------

- draft the xml for a multiplayer game


Game Play
---------

- call player.game_over()

- turn-track-test: make sure the only events that we learn about are 
  from either actions on our objects, or through another players event
  stream
    - i.e., no direct manipulation by another player

- trace out full path
    - game turn event -> player
    - player transfer
    - player calls scripts
	- note: not everyone can exeucte the script
	- player must execute, and distribute the effects
    - scripts get stuff from other players, or from their player
    - ManagedGame, Game
    - Player, MagicRobotsPlayer, magic-robots-test

- capture full game in xml
    - spit out results of running magic-robots-test
    - game scribe is a listener on the game state/player states
	- need to capture everything

- switch cards.py to xml
    - write out the CardDB

- transcripts/replay:
    - able to annotate transcripts after a game
	- player can add commets
	- anyone can criticize/comment
	- can nest them, start conversations
	- note: the basic transcript is immutable
    - xsl, to render to a pretty report


GUI
---

- ui/tests/turn-tracker-test
    - illustrate choices
	- both the choices available, and the choice made
	- coercion
	    - choose player
	        - don't even display in two-player case
	    - choose cards:
		- display the choices in a new "window"
		- flash the choice made
	- angelic blessing
	    - "activate" the possible choices
        - gigantic growth

- run turn-track-test as two clients
    - player b is non-gui, just waiting to connect
    
- incorp apache batik
    - SVG-based cards



AI
--

- baby step: rank cards in hand

- baby step: pick best card that is currently playable, see if 
             its prereqs are meetable

- prototype a spaz player
    - plays the first card playable


Flexibility/Multiple Game Support
---------------------------------

- framework for library of common scripts
    - even across game systems, probably

- develop a prototype l5r schema, and sample game

- develop a prototype Pokemon schema, and sample game

- develop a prototype starwars schema, and sample game



Card Databases
--------------

- support using web-based "databases"
    - may even be html pages, that we internalize
    - our database may be a cached "join" of multiple pages
	- e.g., basic data from wizards
		cost from somewhere,
	        scripts from somewhere else

- takes a really long time to load a fairly small card db
    - need to use mysql or bsddb

- handle card-name conflicts with extensions
    - forestTE, forestPR, forestFOIL (???)
    - cards can have aliases in CardDB
	- forest points to the whatever newest version of forest there is




Deck Building
-------------

- tool to convert typical deck text/html to xml
    - cut/paste (or drag/drop)
    - problem: there appears to be several pages that you cannot do a 
               simple cut/paste from - can't select the text
	- to automatically parse html might be a pain, if there are no
	  standardized deck html formats
	- could make the tool resilient to html noise, and cut/paste from
          the html source ???

- find decks that you can really build, or come close
    - i.e., with the cards you currently own
    - how much would finishing the deck cost?
    - report the "distance" from any deck
    - requires interface with a card manager database
    - then, develop a trading strategy to get the rest of the way

- tool that adds missing info to a deck description
    - and, presents it in a uniform way
    - probably stuff that an expert already knows, but i have no clue
    - options:
	- text (either below, complex-row-style, or ballooning)
	- what set/block did the card come from
	- mana cost
	- price
	- categories

- augment ide, support arbitrary tools
    - mana curves, mana %, ...


Drafting
--------

- support the different formats within the game
    - part of schema

- drills



Skill Building
--------------

- specific quizzes, ...

- allow user to turn on hypothetical mode, play into future, without
  committing changes
    - 

- robot opponents can use "unfair" shuffles of decks
    - user can specify


Game Workshop
-------------
    Adding new cards within the ide
    Rule Modification
    New Game Mechanics, ...

- need a good debugger

- gui: add a live inspector
    - for debugging

- card editor
    - choose type first
    - name, cost, text, scripts
    - maybe even picture

- IDE for prototyping/debugging cards
    - show the card, with the text
    - allow easy setup, ..., for testing

- try out a new game mechanic - progeny?
    - certain cards can breed
    - requires identifying the genetics of mtg
    - maybe not even possible without software?



Judge
-----

- sits in the middle of a game, can reject a play
    - supplies reasons for rejection
	- rule #
    - (rather than sitting, can tap in and replay)

- baby step: play willow elf, by the rules
    - elf can't attack the turn it is played
	- constraint:
	    can_attack(card?)  <- turn(game?) = turn_played(card?) + 1 
	- needs to know when the turn

- automated judge

Misc
----

- 365-day magic quizzes, puzzles

- all games captured as a set of rules, contraints, scripts, and effects
	- hopefully i can use a language with declarative semantics,
	  so that the rules are executable without "situated logic"
	- the logic/rules have multiple uses:
	    - actually run the game ("whose turn is it, ...)
	    - decide if a move is legal
	    - AI can search through sequences

- incremental
    - easy to make games deltas off of other games, or slowly turn
      on the more complex rules

- deck building/analysis/trading/validation
    - skill building
	- quizzes
	    - trade
	    - rules
	    - strategy
    - view/replay games
    - generic AI to compete at any game
    - play over internet
	- incl chat, ...
    - rule testing/balancing
	- create new rules, new cards
    - print proxy cards

- experiment with viewing deck xml in mozilla

- watch dojo's decks to beat
    - http://www.thedojo.com/backpage-deckstobeat.shtml
    - seems to change every month

- play with integrating xml into a full publishing package
    - use xslt to make pretty rendering
    - i.e., a point/lesson
    - e.g., goal is to reproduce the glossy magic strategy books
    - can do much prettier cards than on screen, ...

- handle funky rules
    - blocking sorcery/instant can block unblockable creatures
        - e.g., Fog Patch (from Nemesis)

- ideas from microprose
    - shandalar: buy/sell/trade cards
	- "super-game"
	- good way to slowly learn about cards/powers/...

- find the magic-based (email?) game where you have to buy cards at a virtual
  shop, only get more money by winning
    - can you trade?
    - you start with $26, can buy cards
    - sounds like chaos/x, sort of

- sealed deck practice
    - pull from net
	- http://www.meridianmagic.com/sealed/
	- but also support:
	    - choosing some amount of land
	    - using a complete well known starter deck
    - argo-style critics

- other games to support
    - sanctum: digitaladdiction.com
    - dragonelves.com
	- make up your own cards

- palm pilot as a tool for trading cards
    - has current prices
    - has your current wish list
    - challenge may be that you cannot store all cards
        - have to do a per-event sync

- palm/gesture based transcription tool
    - while you are at a tournament, capture what's going on quickly
	- probably need deck lists ahead of time