Automatically choose the only available choice if an action offers the player choice from precisely one choice. (Eg Swindler / Upgrade / Smugglers if 0 or 1 choices; Baron / Explorer / Moneylender if none of the relevant card type in hand; Thief if no coin revealed for a player; Mine if only one treasure in hand)
Complete
Replace two-tone card backgrounds with Gradients (with appropriate fallback, possibly through use of Modernizr). Chrome is now (largely) supported, and it suffers a 1-pixel glitch on odd-pixel-wide cards.
Done
Display when decks get shuffled (preferably interspersed into existing history entries as "drew 2, shuffled, drew 1")
Done
Extra columns on Ratings table showing "immediately-previous" value
Done
Add gradient backgrounds to history lines involving multiple players.
Done. Not convinced about the look, but it's a fairly rare occurrence
Red text for attacks (wherever cards get coloured backgrounds)
Done
Add 'autocomplete="off"' to the chat box
Done
Tests!
Add email interface
Full random start
Done
Possible for next release (no longer under consideration):
Customised options for the randomly generated sets, similar to those that [this randomiser] offers
Ratings history (probably a box on Ratings page which is filled by AJAX with dynamically-generated content when a row is clicked in the table)
Some security on game deletion - only creator should be able to delete a game; possibly only if it isn't currently running?
I intend to implement the following as settings or automatic actions. Do the lists below look complete? Would you like any of the rejected Settings implemented? Would you be confused by any of the proposed Automatics happening automatically?
I think the auto-Treasury-on-top-of-deck definitely should be added, because many people switch away from the game having clicked their buy, and fail to notice the game prompt them about Treasuries until an hour later or more. I think Upgrade should also auto-gain-nothing if *no* replacement exists. It feels to me like Baron shouldn't prompt you to discard an Estate if there is one in your hand - there's really nothing being chosen at all there, it *should* be automatic. Otherwise, the lists look very good; I'd be very happy to see these go in. --AlexChurchill
Sounds fair enough. And yes, wherever it says "only card" below, you can read "or no viable". --CH
Something that springs to mind (although I'm not sure if there are any such examples where it would happen): sometimes you want to play an action (that says "you may...") and not do anything with it. e.g. If you have Conspirator. So you wouldn't want it necessarily to automagically go ahead and do the action. As say, I can't think of any such examples, but they could potentially exist. Other than that, it looks very nice. --qqzm
This covers your Bishop point below, but my line has been that if you have no choice then it's automatic; if there's a choice you'll usually want to take it's a candidate for a setting. --CH
Automatics Bureaucrat: Show hand devoid of Victories Moneylender: Trash copper if present. Remodel: Trash card if only one type in hand Thief: Discard both revealed cards if neither is treasure Throne Room: Choose only action card in hand Mine: Trash treasure if only one type in hand Baron: Proceed when no Estate in hand Scout: Place last card once second-last chosen Upgrade: Trash card if only one type in hand; gain replacement if only one exists Trading Post: Trash if 2 or fewer cards in hand Haven: Set aside if only one type in hand Pearl Diver: Just look (no move) if only one card in deck Ambassador: Reveal if only one type in hand Lookout: Trash if only one card in deck (already implemented) Warehouse: Discard all cards if 3 or fewer in hand Smuggler: Gain if only one viable card gained last turn
This doesn't seem to be happening (while all the others here do). --AC
You're right - I noted it on the bugs list yesterday. --CH
Cutpurse: Discard or reveal empty Island: Set aside if only one type in hand Treasure Map: Fully auto Pirate Ship: Trash or not if 1 or 0 Treasure types revealed Salvager: Trash if only one type in hand Navigator: Place last card once second-last chosen Trade Route: Trash if only one type in hand Bishop: Trash if only one type in hand
Do you mean just for your own Bishops, or everyone's? Yours is fine, but it should probably be optional for when somebody else plays Bishop. --qqzm
Expand: Trash if only one type in hand King's Court: Choose only action card in hand Forge: Gain if only one legal choice
Settings Moat: Automoat Bureaucrat: Autocrat - place victory if only one type Torturer: Autochoose Curse (no, I can't see many people turning this on!) [No point autochoosing Discard, since it needs further input] Mountebank: Autodiscard if Curse present
Things which could be settings but which I won't implement Chancellor: Autodiscard deck [Occurs on your turn, so no significant speed-up] Secret Chamber: Autoreact [Needs further input, so no significant speed-up] Baron: Always discard if Estate present [Occurs on your turn, so no significant speed-up] Explorer: Always reveal Province if present [Occurs on your turn, so no significant speed-up] Treasury: Always keep on deck when possible [Occurs on your turn, so no significant speed-up] Mint: Always reveal Treasure if only one type [Occurs on your turn, so no significant speed-up] Planned Features The following are intended to go into a future release. Please help me prioritise by voting! I'll leave an empty Priority: bullet with each - add +or- if you want to indicate a desire for a feature to be done soon, or relative apathy regarding a feature. Please don't cancel + with -; ++--+ is much more interesting that just +.
You can also leave English comments below.
Expansions
Support for the Envoy, Black Market and Stash promo cards
Priority: -; +(Black Market only)
Support for the Alchemy expansion (requires me finding card images)
Priority: +
Support for the Prosperity expansion
Priority: ++
Support for the Cornucopia expansion
Support for the Hinterlands expansion
Priority: +
Engine
An option on the Preferences page for "skip my buy if I can't buy anything other than Curse/Copper?/Estate?" with it"
Priority:
Queueing of choices/inputs. Could happily be restricted to ones that are already in the tree. See below.
Priority:
Automatically choose the only available choice if an action offers the player choice from precisely one choice. (Eg Swindler / Upgrade / Smugglers if 0 or 1 choices; Baron / Explorer / Moneylender if none of the relevant card type in hand; Thief if no coin revealed for a player; Mine if only one treasure in hand)
Priority: +
Automatically select "Play no more" actions when no actions in hand (or is this a deliberate decision not to do this?)
Priority:
Interface - Notification
Opt-in emailing when your input is required
Priority: -
Opt-in emailing when a new game is created waiting for players
Priority:
Interface - Other
Card images instead of text
Priority: -
Note that using images would definitely put me on the wrong side of Copyright. Games rules themselves are not copyrightable, so at present I believe I am just legal.
Fallback support for no javascript
Priority: --+
Don't show the Autocrat checkboxes in games without 'Crat (and similarly Automoat/any reactions)
Priority:
Customised options for the randomly generated sets, similar to those that [this randomiser] offers
Priority:
Minor standardisations: standardise capitalisation of Steward buttons ("Two Cash" vs "Two cards"); standardise whether history lines end with a full stop or not; "choose steward's effect" vs. "choose minion mode"; stick with one or other of "his or her" and "their"; equal spacing either side of hyphens in results (currently "Alex - first" but "Rachael -second"); standardise card wording (Masq - "Draw 2 cards", Village - "Draw 1", Market - "Draw 1 card", Upgrade - "Draw a card")
Priority:
Pop-up card text for card names as they appear in the history, and other places like discard piles. Possibly also coloured backgrounds on card names in the history.
Priority:
Support for the "end of Governorship" house-rule - where once the game has ended, play continues until all the players have had the same number of turns each. Additionally, during this extra time Provinces may be bought even if the pile is empty. (As an option when starting a new game).
Priority:
When you've got multiple abilities simultaneously (such as choosing which players cards to keep and trash with spy) could we be able to keep choosing whilst the previous one is being sent? Locking it up is minorly irritating.
CSS classes for whose turn it is, separate to the current ones for which player's affected
Priority:
Replace two-tone card backgrounds with Gradients (with appropriate fallback, possibly through use of Modernizr). More important if Chrome is now supportable, since it suffers a 1-pixel glitch on odd-pixel-wide cards.
Priority:
Allow users to specify their gender, so I can get rid of the nasty third-person-plural pronouns in histories
Priority: -
Display when decks get shuffled (preferably interspersed into existing history entries as "drew 2, shuffled, drew 1")
Priority:
A display of the current contents of your entire deck. (Possibly with the option to run it off when creating the game).
Priority:
OR: Limit history displayed
Priority: -
Ratings history. This item consists of multiple subitems:
Extra columns on Ratings table showing "immediately-previous" value
Priority:
How about a +/- change instead (possibly just bracketed after current rating rather than new column?) --qqzm
Ratings history (probably a box on Ratings page which is filled by AJAX with dynamically-generated content when a row is clicked in the table)
Priority:
Ratings graph (as for history, but drawn in some way. Probably either need to learn HTML5 Canvas or find a JS graphing lib)
Add gradient backgrounds to history lines involving multiple players.
Priority:
I know that the card game doesn't, but could we colour code attacks?
Priority:
Certainly. In the history, their text is red (in addition to Bold, since it's an Action). Would red text do?
Comments / Feature Requests Can we get a plain old cardlist page? Not particularly for the game itself, but for the inevitable dominion discussions. --Vitenka :Seems like the Wiki would be a good place for that. How about Dominion/CardList? --AC :Actually, there's a pretty good one already at http://dominion.diehrstraits.com/?set=Prosperity&f=list . --AC
I think queueing of user inputs/choices might be one of the biggest usability enhancements possible, and it occurs that it might actually be quite doable. E.g. I play Bureaucrat, and know what I'm going to want to buy; the Alex:buy is in the tree already, so I'd like to be able to say "I'll buy a Silver" and have the rest of my turn take care of itself once the other players do their Crat actions. Thing is, the engine and UI already have a reasonable guess what the inputs for each element in the tree will be. I propose that you could let me select any action in the tree that's waiting on me, and specify what I hope to do when that option resolves. It will obviously only show me options that it currently knows about, and those options will need checking when the engine comes to actually process that element, but it could save a *lot* of time. --AC
It would probably be sufficient to be allowed to just move the "Wait for everybody else" task to the end, for those tasks which can't change your hand. --Vitenka
Will require thought, but is probably doable. Don't expect it in the next release.
I'm starting to actively think about this. I think Alex's idea works, more or less. The tree of actions is gone (unless you're me! MuHaHaha?! It's useful for debugging), but I could present a UI for "Later this turn, you will be asked to do the following. Click any of them to queue up an action which will be taken unless it has become illegal". The choice made then gets stored on the PendingAction? object and is acted upon when the time comes. It's tricky, but it ought to work, given care to make sure that choices made now map to the same choices later (for instance, when playing an Action, you tell the game the position of the card in your hand; that's not guaranteed to stay the same - but it should be possible to move to sending the card ID instead). --CH
An undo button. Please? --Vitenka (Both in general, and specifically, right now)
That could be really difficult, but I'll have a think.
No, I think I can't really do that. I do have one in my half-complete ThroughTheAges server (which is now not going to get finished, due to http://boardgaming-online.com), but far fewer actions in TtA? result in you gaining previously-hidden knowledge. Bear in mind that an Undo button has to be disabled as soon as you gain any information you didn't have before (through drawing cards, looking at cards, even just seeing whether anyone reacts to an attack).
A somewhat controversial feature request: display the current contents of your entire deck. Thing is, in the current interface you can always laboriously reproduce the contents by searching the history anyway. I've found myself searching history for "How many times does it say "Alex bought Gold"? And there's one in my discards, which means there are two left in my deck. Right." Since it is possible to calculate it (or keep notes) anyway... --AC
I'm actually pondering going in the other direction, and displaying only - say - the last two complete turn rotations of history. So then you can't deduce your deck from the history. --CH
I've decided that limiting history is silly; deck lists are likely function at some point (when I've worked out where to put them, for instance...)
Support for bots. Possibly as defined by a script on a wiki page. --qqzm
There's always someone who wants bot support, and it's usually you ;-p. I could see this happening, but obviously we need a good API, which in turn means we need a good definition of what you'd need the API to provide in terms of enabling bot implementation. That will need discussion and heavy input from you. I'd make a subpage, but ToothyWiki doesn't allow two-level hierarchies. Perhaps I'll ask to move this to a root DominionServer? page...
How I was thinking of it working was that the bot script would define 3 methods. Each of these would take a readonly game state object parameter and return a result defining it's current decision.
The engine could then call the procedure in much the same way as it displays the game state to the user, and handle the result in the same way it handles a user making decisions. The major work, of course, is in building a script interpreter - it's possible that Ruby has one built-in or available? I think you'd probably want the script language to be Ruby or Ruby-like so that you can reuse your existing code. The three methods I was thinking you'd want to have would be:
chooseAction - called whenever it is the bot's turn to take an action and it has one or more action cards in hand. The return value is either the id of the action (and the mode to use it in if applicable) or some special value indicating "play no more actions".
buyCard - called whenever the bot has a buy to use. Given that it knows the game state (including which cards it has in play) then it doesn't need to have total cash and number of buys explicitly spelled out for it, but it would make it easier for bot writers if you were to provide such information. The return value is either a card to buy or skip.
makeChoice - called whenever the bot has to make a choice for a card (not necessarily its own). This one is obviously the most complicated and I'm not sure how best to implement it. There are so many different choices that come-up on different random cards. I think the best thing to do would be to say that the bot just has to implement each individual card that causes a choice, and have some sort of metadata on the bot (probably need this for name, description etc. anyway) that defines which cards it can be used with (so you can stop people from selecting the bot in a game with a card it doesn't know about). I don't know. It might be possible to distill the choices down to a well-defined set of atomic ones but I don't think it is, unfortunately.
Hee. This would be lots of fun. I think I'd want to program a bot to do a particular strategy. The Goldfish-bot (which buys Prov/Gold?/Silver?/nothing, and makes random choices in all other cases) would be fairly easy to program. I however point out that Mint, or Mining Village, show that total cash can't just be deduced from what's in play. --AC
I was pondering this; and bear in mind that the Request-Response nature of FreeDom means that a bot must be a MarkovChain?. While it wouldn't be hard to convey all game state info (that the bot should know), it wouldn't necessarily be easy either; and some interesting information (say, has anyone reacted with a Moat this round) is unavailable. So what I need is to provide filtered access to the database. If a bot could query the history, formatted to hide private information of other players; and could query its own state, hiding hidden info (like position of cards-in-deck), then it'd be able to make decisions. I'd still probably include "cards in hand / actions / buys / cash" as "normal" arguments to chooseAction calls, of course. Now I can subpage, I will soon. --CH
Hacking [Ascension] onto the same engine and framework. --qqzm
Looks like an interesting game, but very unlikely to happen. --CH
On the game start screen, have options for "Random, force 3/4 split, force 2/5 split" so that the game creator can choose to give everyone an equal start - useful if picking a set that's particularly polarised one way or the other e.g. the game which was all 3s and somebody (Vitenka?) was severely hampered by starting with 5/2. --qqzm
Could we have envoy (and maybe even black market) implemented? It could usefully also have an automatic decision of discard in the most common case (no actions remaining, so discard highest value coin) Played it last night, was a surprisingly interesting little card. --Vitenka
Allow "goldfishing" - playing 1 player games (which should not affect rating). --qqzm
When you mouse-over a card in your hand, the popup could display some statistics about that *specific* card - e.g. which turn you bought it, how many times you've drawn it, how many times you've played it etc. --qqzm
Before a match starts allow players to leave the match --WeirDoe