All cards from the Seaside expansion are supported
Updates to the lobby page:
Games are now ordered by creation time
Games are colour-coded to show Finished (red), Running (green) and Waiting (blue)
Finished games display the order players finished
Running games emphasise the player(s) currently to act
Updates to the "New Game" page:
The card-selector drop-downs will display the card-text for the selected card (I know this is slow at the moment. I'll speed it up for the next version)
After choosing a random cardset, the choices are displayed for tweaking
Updates to the in-game display:
The "Watch" page for a "Waiting" game with space remaining now has a "Join game" button
The "Play no more" button has been relabelled "Leave Action Phase"
The game-log displays the total cash and number of buys (if greater than 1)
Game-end decklists display the VP value of each Victory and Curse
The game-end decklist box is better-sized
The game-log has been restyled:
Each player gets a different background colour
Card gains (as well as Buys) are coloured yellow
Actions you took or which affected you are prefixed with '->'
The turn-separator line is now after the card-draw entry immediately following the end-of-turn entry (instead of between them)
Gameplay improvements
Order-relevant attacks (such as Witch) know when the attack order is relevant (e.g, for Witch, only when there are fewer Curses than Attackees)
If you are redirected to a Login page, after logging in you will be redirected back to your original destination
Bug Fixes
I've attempted to fix a number of concurrency bugs. This may include:
Autocrat-revealing your hand twice to a single attack
Button clicks not apparently going through, but failing on second attempt
Button clicks not apparently going through, but actually succeeding twice
Secret Chamber no longer lets you react to your own Attack
Masquerade no longer displays gobbledegook Pending Actions
Scout no longer displays the order in which the cards were replaced
Bugs with Saboteur and Swindler were apparently fixed, although I can't remember what they were
Throne Room now behaves correctly with +Action cards and self-trashing cards (it also works correctly with Durations, but that's a feature not a bug-fix)
Minor rounded-corner graphical glitch is fixed
Waiting-to-start games now auto-refresh
Discard piles no longer reorder with each refresh
Game and User names are now sanitised on input:
Games can now have quotes in their names. Also, as long as we're on ToothyCat (and therefore have a Latin1 database), game names and usernames will be converted to Latin1 on save. This will munge any non-Latin1 characters (including accents).
Minor grammar / style standardisations. A few more are still needed.
Previous versions
Beta 0.2.0
New Features:
Automoat, Autocrat
Auto-end-turn
Better record of who's waiting, who's turn it is
Autoupdate improvements
CSS classes on histories.
Beta 0.1.0
New Features:
User control - before you can do anything except watch a game, you will need to create a user (or login).
Display of decks at game end
Record treasures played in Buy phase
Display starting count of cards in Buy piles
Next Release
The next release will be a targeted release to migrate to Heroku.
A minimal set of changes, limited to bug-fixes and enhancements required for effective hosting elsewhere, will be made. Ratings history will be lost.
Bug-fixes
Done
User preference for update interval
Done
Automatically delete the oldest game (over 5, and at least 3 days old, say) when a new game is created.
Done
Use of static JS dictionary instead of AJAX to get card-texts on new-game page. Plus internal tool for generating such!
Done
Confirmation box on the Curse "Buy" button
Done
Rankings - hide accounts that have never played a game.
Done
Rankings - Fade rows for accounts that haven't played in ages.
Done
Rankings - Display logged-in user always.
Done
Explain rankings
Email-linked user accounts, and all that entails (including "Forgot password?" links)
Cookied login
About, How to Use, Contact etc. pages
Limits on game / user name lengths
Rename the main controller from "games" to "dominion"
Done (by adjustment of routes)
... and upload to Heroku!
A second tier of WIBNI enhancements plausible in this update is:
Randomise seating order
Add gradient backgrounds to history lines involving multiple players.
Colour code attacks (red text) in pile-list.
A very basic chat box, to be able to exchange comments such as "Awesome turn!" or "Unlucky!" with people who aren't on ToothyChat.
If I do this for the stated purpose, it'll need to tie chat lines to game events. I can think of two ways. The simpler would be to have chat lines become history lines with a CSS style that calls them out (perhaps shifting them leftward to protrude from the flow?). The alternative would be put turn counts into the history and associate chat comments (separate from histories) with turn numbers, displaying them somewhere else in a more conventional style. Preferences?
Bugs
Just doesn't work in Chrome.
Works WikiNow on my localhost dev server on Chrome. Would be interested in a report on whether it's playable on ToothyCat on the latest Chrome.
Wrong CSS class on Lighthoused attacks (ply and player wrong way around)
Fixed - but likely to be enhanced away with stripes
End-of-turn line is absent if a Treasury was used.
Fixed - now there's a hidden "start of turn" line with the border on
Normalised position and the wins count don't take draws into account. --qqzm
The text by the checkboxes for Pawn isn't labels for those checkboxes, which is pretty inexcusable these days. --AC
Fixed
Ambassador should be an Attack
Fixed
Fishing Village, Wharf, Wharf coming off duration results in a Buy action available at turn start.
Fixed - caused by Rails caching; updating the parent of the play_treasures pseudo-action doesn't update its parent's record of its children.
Watching a waiting game appears not to autoupdate correctly
Fixed - getting 500 due to @player being nil
Navigator doesn't allow you to put cards back in an order of your choosing --MD
Fixed
Under certain circumstances, the game doesn't immediately notice that it's due to finish
Probably fixed. I check in more circumstances
Multiple Treasuries produce confusing controls. Need explanatory labels.
Fixed
Outpost is a duration and hence should be orange (it might also behave incorrectly wrt being shuffled in slightly earlier than it should in some cases if it is not coded as a duration). --qqzm
Fixed
Mean score is incorrectly an integer.
Fixed
Library tells other players what the library owner is considering setting aside
Fixed - although not as you might expect. The card identity is now hidden, but there is a line in history about it.
Leave yours here! 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
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:
Randomise seating order
Priority:
User preference for update interval
Priority:
Automatically delete the oldest game (over 5, and at least 3 days old, say) when a new game is created.
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:
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.
An item in the history along the lines of "turn 1" etc.
Priority:
Moneylender's "Trash a copper" isn't optional, so it doesn't need to ask you which copper to trash from hand, because once they're in hand they're all equivalent. Similarly, when a Thief hits no treasure, it doesn't need to ask you to confirm "trash neither card", as that's the only option.
Priority:
CSS classes for whose turn it is, separate to the current ones for which player's affected
Priority:
Cookie your login
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:
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)
Priority:
Use of static JS dictionary instead of AJAX to get card-texts on new-game page. Plus internal tool for generating such!
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?
Rankings - hide accounts that have never played a game. Maybe an option to hide accounts that haven't played in ages, too.
Priority:
A very basic chat box, to be able to exchange comments such as "Awesome turn!" or "Unlucky!" with people who aren't on ToothyChat. (You mean, like me? --CH) (Yes - we miss you :) --AC)
Priority:
A "Forgot Password" link
Priority:
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
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.
An undo button. Please? --Vitenka (Both in general, and specifically, right now)
That could be really difficult, but I'll have a think.
I may at some point (requiring me to get Git working on one of my machines) move my hosting to [Heroku], in order to both a) get an up-to-date Rails, and b) ease MoonShadow's load.
...although the 5Mb database limit on the free version is a bit stingy. The one completed game hits that already, so perhaps not.
''On third thought, I suspect that much of that was Postgres's framework bloating. Might be worth a go.
Using secret chamber against a spy is WAY too technical. Playing with physical cards I can play around with the order until I can get it right, being forced to do it step by step makes me make stupid mistakes.
What would you prefer? "Place a card on top of your deck" followed by "Place a card on top of your deck" is pretty clear. Do you want a subtitle "(This will end up second from top)" on the first one? --AC
That might be enough, actually. It was that ordering, plus the spy then letting me discard the top one once I'd finished arranging them confused the heck out of me. --Vitenka
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
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
Hacking [Ascension] onto the same engine and framework. --qqzm
Looks like an interesting game, but very unlikely to happen. --CH
Don't display users who've completed zero games on the ratings page? --qqzm
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
MoonShadow - am I right in thinking that my app runs as my user account, so you're happy for it to run (within reason!) arbitrary Ruby code local to its directory? I ask because I've just realised that - by design - Rails looks for its own code, and the code for any add-ins, locally in the app directory before the system path; and it comes with little routines to freeze the current version into the app.
The upshot of all of which is that I can effectively upgrade Rails as far as it's compatible with Debian's Ruby version simply by freezing the version I have on my own computer into the app.