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