Dominion Strategy Forum

Please login or register.

Login with username, password and session length

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - norkbes

Filter to certain boards:

Pages: [1]
1
Since isotropic is down, anyone interested can find the Avin (winner) game log at councilroom.com

2
Simulation / Re: Best strategy for a certain kingdom
« on: June 07, 2014, 03:19:45 am »
@ephesos: for comparisons I used the generic BigMoney strategy. As far as OBM Nobles is considered, you are right, SHIGH ties OBM Nobles.

3
Simulation / Re: Best strategy for a certain kingdom
« on: June 05, 2014, 04:31:54 pm »
The Kalkin's strategy looks roughly like this:

Code: [Select]
{
  name: 'VictoryDance-SHIGH' # by Samuel Kalkin
  author: 'norkbes'
  requires: ['Scout','Ironworks','Masquerade','Great Hall','Harem',"Pawn","Upgrade","Nobles","Bridge","Duke"]

  gainPriority: (state, my) -> [
    "Masquerade" if my.getAvailableMoney() < 4 and my.countInDeck("Masquerade") < 1
    "Ironworks" if my.countInDeck("Ironworks") < 1
    "Great Hall" if my.countInHand("Ironworks") > 0 and my.countInDeck("Silver") < 2 and my.countInDeck("Harem") < 1 and my.countInDeck("Scout") > 0
    "Scout" if my.countInDeck("Scout") < 2
    "Silver" if my.countInDeck("Silver") < 2
    "Province"
    "Harem"
    "Great Hall"
    "Duchy"
    "Estate" if state.countInSupply("Great Hall") == 0
    null
  ]

 trashPriority: (state, my) -> [
    "Curse"
    "Pawn" if my.countInHand("Pawn") > 1
    "Ironworks" if state.countInSupply("Great Hall") == 0
    "Estate" if state.gainsToEndGame() > 5
    "Copper" if my.getAvailableMoney() > 6 or state.countInSupply("Harem") == 0
    null
  ]

 playPriority: (state, my) -> [
    "Scout"
    "Great Hall"
    "Ironworks"
    "Masquerade"
  ]
 
  putOnDeckPriority: (state, my) -> [
    "Gold"
    "Silver"
    "Copper"
    "Scout"
    "Ironworks"
    "Masquerade"
  ]
}

One difficulty with implementing it properly in Dominiate is that there are many things you need to take about, e.g. trash or not trash with Masquerade, if trash: choose Estate or Copper, etc. Another tricky thing is how to optimally choose non-victory cards put on deck by Scout.. Anyway, it looks that the strategy above basically corresponds what Samuel had in mind.

One sad thing is that while VictoryDance-SHIGH strategy wins with BigMoney, it fails to do so with VictoryDance-GH or VictoryDance-PUB. Anyway it was good/beneficial to me to see how naugty might be a naughty interplay between both Scouts and Harems.

To sum up, so far at least four strategies seems to work for this kingdom: big money, Ironworks-Duke-Duches, Duke-Duches-Pawn-Upgrade-Bridge, and so far the weakest but nonetheless promising (I guess you always can tweak it somehow) Kalkin's Scout-Harem-Great Hall-Ironworks.


 




4
Simulation / Re: Best strategy for a certain kingdom
« on: June 04, 2014, 10:37:43 am »
@DStu: thank you very much. playPriority works like a charm.

One additional question: how can I make Masquerade to pass a chosen card to the opponent. I've got impression that trashPriority is not relevant in that case, i.e. it works for trashing not passing a card.

5
Simulation / Re: Best strategy for a certain kingdom
« on: June 04, 2014, 03:56:54 am »
What do you think of playing the combo: Ironworks-Scout-Great Hall, notably: the combo of the day #22. In comments to theory's article on that combo there is description of an interesting strategy: http://dominionstrategy.com/2011/01/11/combo-of-the-day-22-ironworksscoutgreat-hall/#comment-175516 which unfortunately I'm not able to implement in Dominiate, more specifically I cannot enforce correct actionPriority. According to comments in the Dominiate sources, actionPriority has been replaced by ai_playValue property of each card. Ironworks is considered a terminal action (115 (IW) < 270 (M)) and for that reason, if there are both M/IW in Hand, IW is never played. Below you will find my incomplete "translation" of Samuel Kalkin's strategy.

Code: [Select]
{
  name: 'VictoryDance-SIGH'
  author: 'Samuel Kalkin' # work in progress..
  requires: ['Scout','Ironworks','Masquerade','Great Hall','Harem']

  gainPriority: (state, my) -> [
    "Masquerade" if my.getAvailableMoney() < 4 and my.countInDeck("Masquerade") < 1
    "Ironworks" if my.countInDeck("Ironworks") < 1
    "Scout" if my.countInDeck("Scout") < 2
    "Great Hall" if my.countInHand("Ironworks") > 0 and my.countInDeck("Silver") < 2 and my.countInDeck("Harem") < 1
    "Silver" if my.countInDeck("Silver") < 2
    "Harem"
    "Province"
    "Duchy"
    "Estate" if state.countInSupply("Great Hall") == 0
  ]

 trashPriority: (state, my) -> [
    # my.getCurrentAction()
    "Curse"
    "Estate" if state.countInSupply("Great Hall") > 0
    "Copper"
  ]

 actionPriority: (state, my) -> [
    "Scout"
    "Great Hall"
    "Ironworks"
    "Masquerade"
  ]
}

6
Simulation / Re: Best strategy for a certain kingdom
« on: June 03, 2014, 03:38:43 am »
Well, i'm certain that putting "Masquarade" in the list makes no difference, since that's not a card that exists.

Typo fixed. Thanks for pointing at it.

Somewhat surprisingly, the occasional presence of Masquerade seems to be benficial to the deck. Adding Bridge to the end of the gainPriority list and removing from trashPriority list $4 cards doesn't improve performance of VictoryDance-PUB but nonetheless makes it simpler.

7
Simulation / Re: Best strategy for a certain kingdom
« on: June 02, 2014, 11:34:20 am »
While Duke/Duchy slog is difficult to beat, I've thought I might think about making actions more versatile, i.e. to find a way to gain treasure cards, possibly without IW. Below is a simple strategy which has a slightly worse performance compared to the BigMoney but on the other hand it beats VictoryDance-GH  in almost 63.5% (10k games). VictoryDance-PUB seems to more "reasonably" spend income from treasury cards by playing proper action cards.

Code: [Select]
{
  name: 'VictoryDance-PUB'
  requires: ['Masquerade','Pawn','Nobles','Duke','Bridge','Harem','Great Hall','Scout','Ironworks','Upgrade']
  author: 'norkbes'
 
  gainPriority: (state, my) ->
    [
      "Pawn" if my.countInDeck("Pawn") < 3 and my.getAvailableMoney() < 3
      "Bridge" if my.countInDeck("Bridge") < 1 and my.getAvailableMoney() < 5
      "Upgrade" if my.countInDeck("Upgrade") < 1
      "Province" if my.getAvailableMoney() > 7
      "Duchy"
      "Duke"
      "Province"
      "Nobles"
      "Harem" if state.gainsToEndGame() < 5
      "Great Hall" if state.gainsToEndGame() < 5
      "Silver"
      "Estate" if state.gainsToEndGame() < 4
      "Bridge"
    ]

  trashPriority: (state, my) ->
    [
      "Curse"
      "Pawn"
      "Estate"
      "Copper"
      "Bridge"
      "Upgrade"
    ]
}

I don't think the above strategy is optimal but it shows nice cooperation of Pawn/Bridge/Upgrade cards. A short summary on performance (win rate of the first strategy is given) of various strategies (results for 1k games):

 VictoryDance-GH vs BigMoney: 97.7%
 VictoryDance-PUB vs BigMoney: 87.0%
 VictoryDance-PUB vs VictoryDance-GH: 63.8%

The cards used in trashingPriority which are not in gainPriority have probably no influence how the strategy works but for some reasons limiting trashingPriority set only to gainPriority cards results in slightly lower win-rate (2% or so).

8
Simulation / Re: Best strategy for a certain kingdom
« on: June 01, 2014, 04:27:42 pm »
@ephesos: thx for pointing out the counter strategy here. The Duke/Duchy slog with IW Silver gainer seems to be hard to beat for this particular kingdom, so keeping track on piles might actually give you advantage.

@DStu: uff, that's deep. I've just realized I need to read more to actually understand fully what you mean :) Your analysis of the potential application of Bridge with Nobles in a megaturn strategy explains why I failed to construct a successful engine with them.

9
Simulation / Re: Best strategy for a certain kingdom
« on: May 31, 2014, 04:26:28 pm »
The best so far:

Code: [Select]
{
  name: 'VictoryDance-GH'
  requires: ['Masquerade','Pawn','Nobles','Duke','Bridge','Harem','Great Hall','Scout','Ironworks','Upgrade']
  author: 'norkbes'
  gainPriority: (state, my) ->
    [
      "Ironworks" if my.countInDeck("Ironworks") < 3
      "Duchy"
      "Duke"
      "Province"
      "Gold"
      "Great Hall" if my.countInHand("Ironworks") > 0
      "Silver"
    ]
}

The number of IW seems optimal, i.e. better than 2 or 4.

I think the strategy involving IW, Silver, Duchies/Dukes, GH works very well but I'm wondering whether an experienced player could suggest an alternative engine, rush or big money strategies so that beginner players like me could grasp some ideas between various game playing styles. The series of posts by WanderingWinder (http://dominionstrategy.com/2013/01/21/the-five-fundamental-deck-types-introduction/) is excellent but I think it's adventurous to match theory with practice.. My idea with Victory Dance is not original, it was hugely inspired by the excellent post of Geronimoo on building the first dominion engine: http://dominionstrategy.com/2012/07/30/building-the-first-game-engine/.

10
Simulation / Re: Best strategy for a certain kingdom
« on: May 31, 2014, 04:12:23 pm »
@amalloy: Gold gives a slight advantage. A bot without Gold vs. the one with Gold for 1000 randomized games gives 47.3% to 52.7% win rate.

11
Simulation / Re: Best strategy for a certain kingdom
« on: May 31, 2014, 03:36:27 pm »
@DSTu: Indeed Nobles/Harem seems irrelevant in this strategy. Nonetheless, your earlier remark with advantages of GH over Silver actually improves strategy, i.e. the one below is better then the pruned one and BigMoney. Bridge on the other hand doesn't work well since playing IW and gaining Duchy gives you the additional card which seems to improve the way this slog works..

Code: [Select]
{
  name: 'VictoryDance-GH'
  requires: ['Masquerade','Pawn','Nobles','Duke','Bridge','Harem','Great Hall','Scout','Ironworks','Upgrade']
  author: 'norkbes'
  gainPriority: (state, my) ->
    [
      "Ironworks" if my.countInDeck("Ironworks") < 2
      "Duchy"
      "Duke"
      "Province"
      "Gold"
      "Great Hall" if my.countInHand("Ironworks") > 0
      "Silver"
    ]
}

12
Simulation / Re: Best strategy for a certain kingdom
« on: May 31, 2014, 02:35:09 pm »
@amalloy: You are absolutely right. Thanks for great explanation and a possible Duchy/Duke scenario in the end game.

To somehow summarize discussion on Duke/Duchies I provide below the modified/pruned version of my initial strategy. It is almost as good as the initial one (a slightly worse performance seems to be the consequence of getting rid of Harems in the constructed deck):

Code: [Select]
{
  name: 'VictoryDance'
  requires: ['Masquerade','Pawn','Nobles','Duke','Bridge','Harem','Great Hall','Scout','Ironworks','Upgrade']
  author: 'norkbes'
  gainPriority: (state, my) ->
    [
      "Ironworks" if my.countInDeck("Ironworks") < 2
      "Duchy"
      "Duke"
      "Province"
      "Gold"
      "Silver"
    ]
}

13
Simulation / Re: Best strategy for a certain kingdom
« on: May 31, 2014, 02:09:57 pm »
@Awaclus: Actually my initial strategy prioritizes buying Duchies first. I've just inspected Dominiate logs which confirm that. I must admit it was unintended by me but buying the highest possible number of Duchies results in huge bonus in VP earned by Dukes. While inspecting simulations logs I also discovered that the second part of my strategy comprising Harem/Nobles does not come into play, since the game terminates usually with Dukes/Duches/Estates piles empty. Thus, one possible strategy which might exploit this vulnerability would focus on buying Duchies instead Provinces.

14
Simulation / Re: Best strategy for a certain kingdom
« on: May 31, 2014, 01:38:39 pm »
@DStu: thanks for the preliminary analysis. Indeed, I'm already aware that it all depends on your opponent. My initial virtual opponent was BigMoney strategy based on WanderingWinder's forum posts http://forum.dominionstrategy.com/index.php?topic=625. I also know that the expected success rate of a particular strategy usually decreases when the number of opponents increases.

I chose IW as one of my first buys since it allows to perform useful gain [treasury] actions. This choice seems to be confirmed by Dominiate simulations against the (one I tested)  BigMoney strategy. When IW is not bought, the success rate drops from 93.5% to 66.5%. Let me also explain this condition on the number of Duches: I find it more profitable to buy Dukes once they bring me more VP than an equally-priced buy of a Duchy.

I must admit that I also tried several combinations with Scout, GH and Nobles but I was unable to discover any working engines with them.

15
Simulation / Best strategy for a certain kingdom
« on: May 31, 2014, 12:56:26 pm »
Hello,

I've played just a couple of Dominion games but I already find it increasingly addicting. Recently I discovered Dominiate  at http://rspeer.github.com/dominiate/play.html - a wonderful tool for exploring intricacies of alternative strategies. Since my first buy was Dominion: Intrigue, the obvious choice for the first game was Victory Dance. One question which occurred to me is can we find an optimal or at least suboptimal strategy for any arbitrarily chosen set of 10 kingdom cards? I know it is a newbie question, it can be considered, however, also a challenge. This is the strategy which I discovered in my 3rd game and then reimplemented in Dominiate:

Code: [Select]
{
  name: 'VictoryDance'
  requires: ['Masquerade','Pawn','Nobles','Duke','Bridge','Harem','Great Hall','Scout','Ironworks','Upgrade']
  author: 'norkbes'
  gainPriority: (state, my) ->
    [
      "Ironworks" if my.countInDeck("Ironworks") < 2
      "Duchy"
      "Duke" if my.countInDeck("Duchy") > 4
      "Province"
      "Nobles" if my.countInDeck("Harem") > 3 and my.countInDeck("Nobles") < 2
      "Gold"
      "Harem" if my.getTotalMoney() > 10
      "Silver"
    ]
}


It beats BigMoney@WebDominate strategy (94% victory rate), but my question is are there any better strategies?

Regards,
nork

Pages: [1]

Page created in 1.515 seconds with 19 queries.