Dominion Strategy Forum

Dominion => Simulation => Topic started by: tko on September 21, 2011, 01:47:28 pm

Title: Simulation Challenge - Fishing Village+Envoy to beat BM - Envoy
Post by: tko on September 21, 2011, 01:47:28 pm
As I mentioned in this thread (http://forum.dominionstrategy.com/index.php?topic=698.msg9726#msg9726), I was using Geronimoo's Dominion Simulator trying to come up with a Fishing Village + Envoy combo that could compete against BM - Envoy.  The best I can get is 36% wins.  Can anyone approach 50%?

Code: [Select]
<player name="BM - Envoy/Fishing Village">
   <buy name="Province">
      <condition>
         <left type="countCardsInDeck" attribute="Gold"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Envoy">
      <condition>
         <left type="countCardsInDeck" attribute="Envoy"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Fishing_Village">
      <condition>
         <left type="countCardsInDeck" attribute="Fishing_Village"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Envoy">
      <condition>
         <left type="countCardsInDeck" attribute="Envoy"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Fishing_Village"/>
         <operator type="greaterThan" />
         <right type="countCardsInDeck" attribute="Envoy"/>
      </condition>
   </buy>
   <buy name="Fishing_Village">
      <condition>
         <left type="countCardsInDeck" attribute="Fishing_Village"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Silver"/>
</player>
Title: Re: Simulation Challenge - Fishing Village+Envoy to beat BM - Envoy
Post by: DStu on September 21, 2011, 01:58:48 pm
Just with FV+Envoy? Or may we add something else? Don't think that it will work without +buy (or attack), as BM+Envoy is too fast...

Edit: This one
Code: [Select]
<player name="BM - Envoy/("FV")">
   <buy name="Province">
      <condition>
         <left type="countCardsInDeck" attribute="Gold"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Envoy">
      <condition>
         <left type="countCardsInDeck" attribute="Envoy"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Silver"/>
   <buy name="Fishing_Village"/>
</player>
of course get's 50% against BM-Envoy :P
Title: Re: Simulation Challenge - Fishing Village+Envoy to beat BM - Envoy
Post by: Jack Rudd on September 21, 2011, 02:02:15 pm
Running a +Actions/+Cards deck with Envoy? That's, uh, an interesting challenge.
Title: Re: Simulation Challenge - Fishing Village+Envoy to beat BM - Envoy
Post by: DG on September 21, 2011, 02:07:28 pm
Are we allowed to come up with an ironworks/smugglers/philosopher's stone deck instead?
Title: Re: Simulation Challenge - Fishing Village+Envoy to beat BM - Envoy
Post by: tko on September 21, 2011, 02:16:29 pm
Just with FV+Envoy? Or may we add something else? Don't think that it will work without +buy (or attack), as BM+Envoy is too fast...
Sure, I'm interested in what's it take to beat BM+Envoy.  It's a difficult to beat strategy.  Lets imagine Goons and Wharf aren't in the kingdom due to their über nature.

Regarding +buy, I tried adding Festival and I get 41%.  Next, I tried Woodcutter... it wasn't effective but maybe it was poor buy rules.

Regarding attacks, maybe.  I tried Militia and that got me 42%.

Are we allowed to come up with an ironworks/smugglers/philosopher's stone deck instead?
Ehhh, if it's Envoy/Fishing Village driven, sure.  Maybe the problem is I imagine those cards are faster together than they really are.
Title: Re: Simulation Challenge - Fishing Village+Envoy to beat BM - Envoy
Post by: Geronimoo on September 21, 2011, 02:24:03 pm
I struggled a little while too getting the numbers right, but here's your winner (51-43 against BM-Envoy):
Code: [Select]
<player name="Fishing Village/Envoy">
   <buy name="Province">
      <condition>
         <left type="countCardsInDeck" attribute="Gold"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Gold">
      <condition>
         <left type="countCardsInDeck" attribute="Festival"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Envoy">
      <condition>
         <left type="countCardsInDeck" attribute="Envoy"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Envoy">
      <condition>
         <left type="countCardTypeInDeck" attribute="Terminal"/>
         <operator type="smallerThan" />
         <right type="countCardTypeInDeck" attribute="Village"/>
      </condition>
   </buy>
   <buy name="Festival"/>
   <buy name="Fishing_Village"/>
</player>

Unfortunately the sim does a few bad Envoy discards, so it's not clear if the engine will win in a real game.
Title: Re: Simulation Challenge - Fishing Village+Envoy to beat BM - Envoy
Post by: guided on September 21, 2011, 02:27:51 pm
Running a +Actions/+Cards deck with Envoy? That's, uh, an interesting challenge.
Envoy's sheer overwhelming card draw (50% more net draw than Smithy!) can sometimes make up for its obvious downside. It's important to play Envoy as soon as you have 2 actions (at least outside of rare weird circumstances) leaving the opponent to guess whether you're in more desperate need of card draw or actions when making discard decisions. The success of a draw engine that relies heavily on Envoy will typically need a little occasional help from a bad discard decision, but bad discard decisions owing to imperfect information will not be uncommon.

That said, don't even attempt to build an Envoy engine if you don't have a plan for how it will draw pretty much the entire deck every turn, and it's best to have some other source of draw (be it Smithy or even just cantrips like Great Hall) to supplement the Envoys. Ironworks is often a key adjunct in building the engine. Of course, +Buy is just about 100% necessary since (absent some extremely effective attacking side-effect of the engine) a single-Envoy deck will probably be much too fast against an engine that only buys one card per turn.
Title: Re: Simulation Challenge - Fishing Village+Envoy to beat BM - Envoy
Post by: Geronimoo on September 21, 2011, 02:55:56 pm
I added Ironworks and now the engine pretty much crushes (65-30) the big money deck:

Code: [Select]
<player name="Fishing Village/Envoy">
   <buy name="Province">
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="greaterOrEqualThan" />
         <right type="constant" attribute="16.0"/>
      </condition>
   </buy>
   <buy name="Province">
      <condition>
         <left type="countCardsInDeck" attribute="Province"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Gold">
      <condition>
         <left type="countCardsInDeck" attribute="Festival"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Envoy">
      <condition>
         <left type="countCardsInDeck" attribute="Envoy"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Envoy">
      <condition>
         <left type="countCardTypeInDeck" attribute="Terminal"/>
         <operator type="smallerThan" />
         <right type="countCardTypeInDeck" attribute="Village"/>
      </condition>
   </buy>
   <buy name="Festival"/>
   <buy name="Fishing_Village"/>
</player>

I want to stress this is NOT proof that the engine will beat the big money deck in a real game because the sim doesn't discard optimally for Envoy.
Title: Re: Simulation Challenge - Fishing Village+Envoy to beat BM - Envoy
Post by: DStu on September 21, 2011, 04:18:12 pm
Geronimoo's bot buying:
2 Ironworks: 70:26
3 Ironworks: 69:27

against BM, but 1 Ironworks beat 2 Ironworks by 56:42 and 3 Ironworks by ~2:1
Title: Re: Simulation Challenge - Fishing Village+Envoy to beat BM - Envoy
Post by: DG on September 21, 2011, 05:55:40 pm
70:25 against BM:envoy and 52:45 against Geromino's ironworks. I suspect there may be a better combination of our approaches.

Code: [Select]
<player name="DG Fishy Envoy with Sea Shanties">
   <buy name="Province">
      <condition>
         <left type="countCardsInDeck" attribute="Gold"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Envoy">
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="equalTo" />
         <right type="constant" attribute="7.0"/>
      </condition>
      <condition>
         <left type="countBuysLeft"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Gold">
      <condition>
         <left type="countCardsInDeck" attribute="Festival"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Envoy">
      <condition>
         <left type="countCardsInDeck" attribute="Envoy"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Envoy">
      <condition>
         <left type="countCardTypeInDeck" attribute="Terminal"/>
         <operator type="smallerThan" />
         <right type="countCardTypeInDeck" attribute="Village"/>
         <extra_operation type="minus" attribute="2.0" />
      </condition>
   </buy>
   <buy name="Festival"/>
   <buy name="Shanty_Town">
      <condition>
         <left type="countCardsInDeck" attribute="Shanty_Town"/>
         <operator type="smallerThan" />
         <right type="countCardsInDeck" attribute="Fishing_Village"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Shanty_Town"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Fishing_Village"/>
</player>