Dominion Strategy Forum

Please login or register.

Login with username, password and session length
Pages: [1] 2  All

Author Topic: Simulation Challenge: Make Scout useful  (Read 11086 times)

0 Members and 1 Guest are viewing this topic.

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4386
    • View Profile
    • WanderingWinder YouTube Page
Simulation Challenge: Make Scout useful
« on: March 01, 2012, 02:19:43 pm »
+1

Increasingly I'm becoming convinced that scout is the worst card in the game. I want you to find me a place where it shines. Because I think there's almost none. Here are the criteria:
It needs to buy scout a non-trivial amount of the time. Maybe not more than one a game, but it should come up in most games.
It needs to be a significant improvement over every bot you can make with the same set of cards not using scout. I'm not looking for .2% here.
The fewer different cards you use, the better. I'll be impressed with a 7 card combo where scout is the centerpiece, but I'll be more impressed by a 2-card combo where scout gives you like 7% or something.
No using scout as just a swindler target! I also don't really want to see you using it as masquerade or ambassador fodder, though I guess I'd be sorta surprised if you could make that effectively work, so go ahead and try if you feel like it.
I'll judge the submission by how much of a winning percentage increase you get, how few cards there are, and how important having specifically scout is.

Good luck - you're gonna need it.

theory

  • Administrator
  • *****
  • Offline Offline
  • Posts: 3603
  • Respect: +6125
    • View Profile
    • Dominion Strategy
Re: Simulation Challenge: Make Scout useful
« Reply #1 on: March 01, 2012, 03:19:28 pm »
0

theorycrafting: maybe a Crossroads/Vault/Ironworks/Great Hall engine could get powered up with Scouts if you go early mass greening?
Logged

blueblimp

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2849
  • Respect: +1559
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #2 on: March 01, 2012, 03:34:17 pm »
0

It needs to be a significant improvement over every bot you can make with the same set of cards not using scout.

I think this is going to make it tough for the Scout bot. Scout can only be good with a high density of hybrid victory cards, but if your opponent is also massing those, it will be hard to achieve the density you need. In some sense that means Scout is bad (since your opponent can block you), but in a real game your opponent might underestimate the strength of your strategy and not try to block.
Logged

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4386
    • View Profile
    • WanderingWinder YouTube Page
Re: Simulation Challenge: Make Scout useful
« Reply #3 on: March 01, 2012, 03:52:47 pm »
+1

It needs to be a significant improvement over every bot you can make with the same set of cards not using scout.

I think this is going to make it tough for the Scout bot. Scout can only be good with a high density of hybrid victory cards, but if your opponent is also massing those, it will be hard to achieve the density you need. In some sense that means Scout is bad (since your opponent can block you), but in a real game your opponent might underestimate the strength of your strategy and not try to block.
But the problem here is that your opponent will just play the same strategy as you and then not buy scouts, thus winning. And this just goes even more to show that scout is dreadful.

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4386
    • View Profile
    • WanderingWinder YouTube Page
Re: Simulation Challenge: Make Scout useful
« Reply #4 on: March 01, 2012, 03:55:46 pm »
0

theorycrafting: maybe a Crossroads/Vault/Ironworks/Great Hall engine could get powered up with Scouts if you go early mass greening?
Maybe? But it's going to be tough. It has to beat BM/Vault, which is pretty strong. And that's going to be further exacerbated by the fact that the simulator plays pretty badly against vault, and this is no exception. However, I'll give it a spin.

blueblimp

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2849
  • Respect: +1559
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #5 on: March 01, 2012, 04:28:15 pm »
0

It needs to be a significant improvement over every bot you can make with the same set of cards not using scout.

I think this is going to make it tough for the Scout bot. Scout can only be good with a high density of hybrid victory cards, but if your opponent is also massing those, it will be hard to achieve the density you need. In some sense that means Scout is bad (since your opponent can block you), but in a real game your opponent might underestimate the strength of your strategy and not try to block.
But the problem here is that your opponent will just play the same strategy as you and then not buy scouts, thus winning. And this just goes even more to show that scout is dreadful.

Even so, Scout might be still relevant, since without Scout, the hybrid cards might not be worth pursuing in the first place.
Logged

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4386
    • View Profile
    • WanderingWinder YouTube Page
Re: Simulation Challenge: Make Scout useful
« Reply #6 on: March 01, 2012, 04:55:49 pm »
0

It needs to be a significant improvement over every bot you can make with the same set of cards not using scout.

I think this is going to make it tough for the Scout bot. Scout can only be good with a high density of hybrid victory cards, but if your opponent is also massing those, it will be hard to achieve the density you need. In some sense that means Scout is bad (since your opponent can block you), but in a real game your opponent might underestimate the strength of your strategy and not try to block.
But the problem here is that your opponent will just play the same strategy as you and then not buy scouts, thus winning. And this just goes even more to show that scout is dreadful.

Even so, Scout might be still relevant, since without Scout, the hybrid cards might not be worth pursuing in the first place.
I find it immensely hard to believe that scout is enough to tip this balance. Tell you what, find a board that that's true for (wins with scout, loses without against something halfway decent) and I'll give you partial credit.

DG

  • Governor
  • *****
  • Offline Offline
  • Posts: 4074
  • Respect: +2624
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #7 on: March 01, 2012, 05:07:37 pm »
0

Noble + rabble should give a stone cold scout deck.
Logged

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4386
    • View Profile
    • WanderingWinder YouTube Page
Re: Simulation Challenge: Make Scout useful
« Reply #8 on: March 01, 2012, 05:33:12 pm »
0

Noble + rabble should give a stone cold scout deck.
I can't get it to work....

blueblimp

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2849
  • Respect: +1559
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #9 on: March 01, 2012, 05:51:07 pm »
0

I tried out Ironworks/Chapel into Great Hall/Scout/Harem into Colony in solitaire, and it seemed decent. I'm trying to code it in Dominate so that I can use custom play rules, but I'm running into some trouble getting the bot to use Ironworks correctly.

The basic idea though seems sound: the almost-all-green deck makes Scouts on average into something like 3 card non-terminal draws, and the Great Halls pull in whatever the Scouts miss. Once you have 6 Harems, that's enough to buy a Colony if you can draw your deck (which you can). 4 Harems + Gold or 3 Harems + Platinum would work also. Unlike some Chapel strategies, the deck keeps humming even after greening for a while, but that isn't a big advantage unless your opponent isn't contesting Colonies for some reason.

Crucially, none of the cards above seem that great for BM in a Colony game, so I'm hoping that can give a Scout strategy an edge.
« Last Edit: March 01, 2012, 05:56:21 pm by blueblimp »
Logged

chwhite

  • Saboteur
  • *****
  • Offline Offline
  • Posts: 1065
  • Respect: +442
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #10 on: March 01, 2012, 05:57:18 pm »
0

My first thought is something with Vineyard, Scrying Pool, Great Hall, Hamlet, and Rabble.  And probably nothing else worth thinking about- though, heck, let's throw in Transmute too as our one trasher because why not.  Aim to three-pile the Vineyards/Hamlets/Great Halls; presumably this is still the best plan even without Scout, but adding buy rules for Scout ought to provide some advantage over the non-Scout deck.  I've found that Scout can provide consistent, if marginal, benefits in both Scrying Pool and Vineyards decks, combine the two ideas and those benefits hopefully become actually significant.

I hesitate to put Ironworks in because then the piles are rushed too fast for Scout to be useful.
Logged
To discard or not to discard?  That is the question.

Geronimoo

  • Saboteur
  • *****
  • Offline Offline
  • Posts: 1059
  • Respect: +868
    • View Profile
    • Geronimoo's Dominion Simulator
Re: Simulation Challenge: Make Scout useful
« Reply #11 on: March 01, 2012, 06:26:07 pm »
+1

Blueblimp's idea in action (finding a good time to buy/gain Scouts wasn't easy, but they clearly make the bot better!):

Code: [Select]
<player name="Ironworks/Great Hall with Scouts"
 author="Geronimoo"
 description="No description available">
 <type name="Optimized"/>
 <type name="BigMoney"/>
 <type name="Province"/>
 <type name="TwoPlayer"/>
 <type name="Bot"/>
 <type name="UserCreated"/>
 <type name="SingleCard"/>
   <buy name="Province">
      <condition>
         <left type="countCardsInDeck" attribute="Harem"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Harem"/>
   <buy name="Scout">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="countAllCardsInDeck"/>
         <extra_operation type="divideBy" attribute="3.0" />
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Scout"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Chapel" strategy="aggressiveTrashing">
      <condition>
         <left type="countCardsInDeck" attribute="Chapel"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Silver">
      <condition>
         <left type="countCardsInDeck" attribute="Harem"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Great_Hall"/>
   <buy name="Silver"/>
</player>
Logged

blueblimp

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2849
  • Respect: +1559
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #12 on: March 01, 2012, 06:51:43 pm »
0

Blueblimp's idea in action (finding a good time to buy/gain Scouts wasn't easy, but they clearly make the bot better!):

Code: [Select]
<player name="Ironworks/Great Hall with Scouts"
 author="Geronimoo"
 description="No description available">
 <type name="Optimized"/>
 <type name="BigMoney"/>
 <type name="Province"/>
 <type name="TwoPlayer"/>
 <type name="Bot"/>
 <type name="UserCreated"/>
 <type name="SingleCard"/>
   <buy name="Province">
      <condition>
         <left type="countCardsInDeck" attribute="Harem"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Harem"/>
   <buy name="Scout">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="countAllCardsInDeck"/>
         <extra_operation type="divideBy" attribute="3.0" />
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Scout"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Chapel" strategy="aggressiveTrashing">
      <condition>
         <left type="countCardsInDeck" attribute="Chapel"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Silver">
      <condition>
         <left type="countCardsInDeck" attribute="Harem"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Great_Hall"/>
   <buy name="Silver"/>
</player>

Thanks! I've got this working in Dominate now also, although I haven't implemented intelligent Scout/cantrip interleaving, which should make it better. (The idea is that if you know the top card of your deck is not a victory card, you should draw it with a cantrip such as GH or Ironworks-gaining-GH, whereas if you don't know what it is, then you should play Scout because then maybe you draw it for free.)

I don't know what's the best non-Scout baseline to compare this to. I tried vs Colony BMU and also against the same script minus Scout-buying (which is certainly not the best non-Scout strategy in this kingdom).

Against Colony BMU: terminated at 80.8/19.2 after 26 games
Against same minus Scout-buying: terminated at 70.5/29.5 after 56 games

Code: [Select]
# Make Scout useful.
# Non-resiliant version (i.e. tries to get all GH's and more than half of Harems).
# Right now, does NOT order Scout/cantrip plays optimally.
{
  name: 'UsefulScout'
  requires: ['Chapel', 'Scout', 'Ironworks', 'Great Hall', 'Harem', 'Colony']
  gainPriority: (state, my) -> [
    # Open Ironworks/Chapel.
    "Ironworks" if my.countInDeck("Ironworks") == 0 and my.turnsTaken <= 2
    "Chapel" if my.countInDeck("Chapel") == 0 and my.turnsTaken <= 2

    # Gain Great Halls with Ironworks, but don't buy them.
    # Once we run out of Great Halls, use Ironworks for Scouts.
    "Great Hall" if state.phase isnt "buy"
    "Scout" if state.phase isnt "buy"

    # Colonies are always good, since Scout keeps our deck running.
    "Colony"

    # Lots of Harems are good.
    "Harem"

    # Consolation prizes if Harems are gone.
    "Platinum" if my.countInDeck("Platinum") == 0
    "Province"
   
    # Early on, we need to bootstrap to Harems via Silver.
    # We don't want too many of these though.
    "Silver" if my.countInDeck("Silver") < 2
    "Scout"
    "Silver" if my.countInDeck("Silver") < 3
  ]

  # I checked and the simulator does use this list (e.g. it will trash
  # silver if asked).
  trashPriority: (state, my) -> [
    "Estate"

    # Need enough copper to buy a silver.
    "Copper" if my.countInDeck("Copper") > 3

    # Once we have a silver/harem, keep enough coppers to buy more silvers (and harems if we have $4
    # from silvers+harems).
    "Copper" if my.countInDeck("Silver") + my.countInDeck("Harem") >= 1\
             and my.countInDeck("Copper") > 2

    # Once we have 3 silvers/harems, trash all coppers.
    "Copper" if my.countInDeck("Silver") + my.countInDeck("Harem") >= 3

    # Trash silvers if it keeps total deck $ at least 6 and doesn't hurt buying Harem.
    "Silver" if my.getTotalMoney() >= 8\
             and (my.getTreasureInHand() >= 8 or my.getTreasureInHand() < 6)

    # Get rid of the Ironworks if we have all GH's and enough Scouts.
    "Ironworks" if state.countInSupply("Great Hall") == 0\
                and my.countInDeck("Scout") >= 4
  ]

  # Block all trashing we don't authorize. This works around the simulator's
  # desire to always trash coppers.
  trashValue: (state, card, my) ->
      -1

  actionPriority: (state, my) -> [
    # The default plays Chapel _before_ Ironworks, which completely ruins us.
    "Great Hall"
    "Ironworks"
    "Scout"
    "Chapel"
  ]

}

The version that doesn't buy a Scout:
Code: [Select]

# The useful Scout bot, minus the Scout.
{
  name: 'UsefulScoutMinusScout'
  requires: ['Chapel', 'Scout', 'Ironworks', 'Great Hall', 'Harem', 'Colony']
  gainPriority: (state, my) -> [
    # Open Ironworks/Chapel.
    "Ironworks" if my.countInDeck("Ironworks") == 0 and my.turnsTaken <= 2
    "Chapel" if my.countInDeck("Chapel") == 0 and my.turnsTaken <= 2

    # Gain Great Halls with Ironworks, but don't buy them.
    # Once we run out of Great Halls, use Ironworks for Scouts.
    "Great Hall" if state.phase isnt "buy"

    # Colonies are always good, since Scout keeps our deck running.
    "Colony"

    # Lots of Harems are good.
    "Harem"

    # Consolation prizes if Harems are gone.
    "Platinum" if my.countInDeck("Platinum") == 0
    "Province"
    "Platinum"
    "Gold"
   
    # Early on, we need to bootstrap to Harems via Silver.
    # We don't want too many of these though.
    "Silver" if my.countInDeck("Silver") < 2
    "Silver" if my.countInDeck("Silver") < 3
  ]

  # I checked and the simulator does use this list (e.g. it will trash
  # silver if asked).
  trashPriority: (state, my) -> [
    "Estate"

    # Need enough copper to buy a silver.
    "Copper" if my.countInDeck("Copper") > 3

    # Once we have a silver/harem, keep enough coppers to buy more silvers (and harems if we have $4
    # from silvers+harems).
    "Copper" if my.countInDeck("Silver") + my.countInDeck("Harem") >= 1\
             and my.countInDeck("Copper") > 2

    # Once we have 3 silvers/harems, trash all coppers.
    "Copper" if my.countInDeck("Silver") + my.countInDeck("Harem") >= 3

    # Trash silvers if it keeps total deck $ at least 6 and doesn't hurt buying Harem.
    "Silver" if my.getTotalMoney() >= 8\
             and (my.getTreasureInHand() >= 8 or my.getTreasureInHand() < 6)

    # Get rid of the Ironworks if we have all GH's and enough Scouts.
    "Ironworks" if state.countInSupply("Great Hall") == 0\
                and my.countInDeck("Scout") >= 4
  ]

  # Block all trashing we don't authorize. This works around the simulator's
  # desire to always trash coppers.
  trashValue: (state, card, my) ->
      -1

  actionPriority: (state, my) -> [
    # The default plays Chapel _before_ Ironworks, which completely ruins us.
    "Great Hall"
    "Ironworks"
    "Scout"
    "Chapel"
  ]

}

Edit: As it's written now, it loses against a simple Ironworks/Chapel opening transitioning into standard Colony BMU. Terminated at 37.7/62.3 after 150 games. I don't know whether this means Ironworks/Chapel is better or it just means that Colony BMU is nicely optimized.

Code: [Select]
# Use Chapel to clear Coppers and Estates, using an
# Ironworks to gain Silvers and transition into Colony BMU.
{
  name: 'Ironworks/Chapel'
  author: 'blueblimp'
  requires: ['Ironworks', 'Chapel']
  gainPriority: (state, my) -> [
    "Colony" if my.getTotalMoney() > 32
    "Province" if state.gainsToEndGame() <= 6
    "Duchy" if state.gainsToEndGame() <= 5
    "Estate" if state.gainsToEndGame() <= 2
    "Platinum"
    "Province" if state.countInSupply("Colony") <= 7
    "Gold"
    "Duchy" if state.gainsToEndGame() <= 6
    "Ironworks" if my.countInDeck("Ironworks") == 0
    "Chapel" if my.countInDeck("Chapel") == 0
    "Silver"
    "Copper" if state.gainsToEndGame() <= 2
  ]

}


Against Geronimoo's formulation in his simulator, Ironworks/Chapel also wins, but only with aggressive trashing. 29/69 on quick. Never mind, I didn't notice his bot is Province and not Colony. With Provinces, it beats a simple Ironworks/Chapel 76/21 on quick. 79/20 against the optimized Harem strategy too, which is something I'd be worried about in a Province game.

Code: [Select]
<player name="Ironworks/Chapel"
 author="blueblimp"
 description="Open Ironworks/Chapel and transition into standard BMU.">
 <type name="BigMoney"/>
 <type name="SingleCard"/>
 <type name="Optimized"/>
 <type name="Bot"/>
 <type name="UserCreated"/>
 <type name="Province"/>
 <type name="TwoPlayer"/>
   <buy name="Province">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="18.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="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="6.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="Chapel" strategy="aggressiveTrashing">
      <condition>
         <left type="countCardsInDeck" attribute="Chapel"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Silver"/>
</player>
« Last Edit: March 01, 2012, 07:07:07 pm by blueblimp »
Logged

blueblimp

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2849
  • Respect: +1559
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #13 on: March 02, 2012, 01:29:25 am »
0

I've tweaked Geronimoo's bot a bit. I noticed that if it had Ironworks and Chapel in its hand early, it would play only the Chapel because the Ironworks wanted a Silver and thus would be terminal. That doesn't really make sense, so I changed it to prefer Great Halls over Silver during its action phase. With this change, it becomes somewhat better to just get 1 Ironworks.

The order-of-play of Scouts & cantrips is not optimal still, but I don't think that can be fixed without either modifying the simulator source or porting to Dominate.

Results (by Accurate Simulation, intervals with 99% confidence):
  Against original:
    Win: 67.7% +/- 1.2%
    Loss: 29.5% +/- 1.2%
    Tie: 2.8% +/- 0.4%
  Against Harem:
    Win: 84.0% +/- 0.9%
    Loss: 14.6% +/- 0.9%
    Tie: 1.4% +/- 0.3%
  Against Wharf (representative of strong BM):
    Win: 62.8% +/- 1.2%
    Loss: 35.1% +/- 1.2%
    Tie: 2.1% +/- 0.4%

Code: [Select]
<player name="Ironworks/Great Hall with Scouts"
 author="Geronimoo/blueblimp"
 description="No description available">
 <type name="SingleCard"/>
 <type name="BigMoney"/>
 <type name="TwoPlayer"/>
 <type name="Optimized"/>
 <type name="Bot"/>
 <type name="Province"/>
 <type name="UserCreated"/>
   <buy name="Province">
      <condition>
         <left type="countCardsInDeck" attribute="Harem"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Harem"/>
   <buy name="Scout">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="countAllCardsInDeck"/>
         <extra_operation type="divideBy" attribute="3.0" />
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Scout"/>
         <operator type="smallerThan" />
         <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="Chapel" strategy="aggressiveTrashing">
      <condition>
         <left type="countCardsInDeck" attribute="Chapel"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Great_Hall">
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Silver">
      <condition>
         <left type="countCardsInDeck" attribute="Harem"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Great_Hall"/>
   <buy name="Silver"/>
</player>

And I shouldn't forget to include results against the same bot with Scout removed:
  Win: 54.4% +/- 1.3%
  Loss: 41.9% +/- 1.3%
  Tie: 3.8% +/- 0.5%
Not a blow-out, but keep in mind that the simulator is not playing Scouts optimally.
« Last Edit: March 02, 2012, 01:36:54 am by blueblimp »
Logged

J.Co.

  • Guest
Re: Simulation Challenge: Make Scout useful
« Reply #14 on: March 02, 2012, 02:06:20 am »
0

I tried making a simulation with a Scout/Island combo (maybe mixing in Laboratory), but couldn't figure out how best to tweak it. From what I did come up with, it wasn't strong anyway, but it's worth giving a whirl.
Logged

kn1tt3r

  • Minion
  • *****
  • Offline Offline
  • Posts: 585
  • Respect: +278
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #15 on: March 02, 2012, 02:29:29 am »
0

Would Scout maybe a nice addition to Minion decks? Of course you'd only buy it during midgame with an unfortunate $4 hand while bulding up on Minions, so it's basically a consolation prize, but it could actually help once you're greening.
Logged

DStu

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2627
  • Respect: +1490
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #16 on: March 02, 2012, 03:26:44 am »
0

Would Scout maybe a nice addition to Minion decks? Of course you'd only buy it during midgame with an unfortunate $4 hand while bulding up on Minions, so it's basically a consolation prize, but it could actually help once you're greening.

Do we have a bot on how Minion is best played in the mirror? Maybe that's a challange on it's on, making it depend on how the split is going etc...
Logged

Geronimoo

  • Saboteur
  • *****
  • Offline Offline
  • Posts: 1059
  • Respect: +868
    • View Profile
    • Geronimoo's Dominion Simulator
Re: Simulation Challenge: Make Scout useful
« Reply #17 on: March 02, 2012, 03:40:09 am »
0

Minion isn't played very well in my sim (suggestions for improving it are welcome of course)
Logged

DStu

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2627
  • Respect: +1490
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #18 on: March 02, 2012, 03:56:56 am »
0

Minion isn't played very well in my sim (suggestions for improving it are welcome of course)

Problem as I see it is that BM-Minion (play BM and buy Minion at $5) beats Minion without support. Or at least I don't know how to play it that it wins...

And BM-Minion does not want a Scout.
Logged

DG

  • Governor
  • *****
  • Offline Offline
  • Posts: 4074
  • Respect: +2624
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #19 on: March 02, 2012, 11:26:13 am »
0

Not such a simple construction but here's my scout deck. It'll even buy a second scout. I'll maybe try great hall + scout + pirate ship later since all players tend to want great halls once pirates are in play.

The scout is a decision card so there is a problem using the simulator to find its niche. Apothecary+Baron+scout might want to change the ordering of cards on top of the deck, the sequence in which you play the actions, and whether you force a reshuffle, or whether you want to play the scout at all. These choices are beyond the linear decision making of the current simulators.

Code: [Select]
<player name="Mine/Cellar/Lab/GH/Scout/harem"
 author="DG"
 description="Scout deck">
 <type name="Province"/>
 <type name="BigMoney"/>
 <type name="SingleCard"/>
 <type name="TwoPlayer"/>
 <type name="Generated"/>
 <type name="Bot"/>
 <type name="UserCreated"/>
  <start_state>
    <hand contents="5 Copper"/>
    <discard contents=""/>
    <drawdeck contents="2 Copper, 3 Estate" shuffle="true"/>
  </start_state>
   <buy name="Province"/>
   <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="Mine">
      <condition>
         <left type="countCardsInDeck" attribute="Mine"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Laboratory"/>
   <buy name="Harem"/>
   <buy name="Gold"/>
   <buy name="Scout">
      <condition>
         <left type="countCardsInDeck" attribute="Scout"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Scout">
      <condition>
         <left type="countCardsInDeck" attribute="Scout"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Great_Hall"/>
   <buy name="Silver"/>
   <buy name="Cellar"/>
</player>
Logged

DG

  • Governor
  • *****
  • Offline Offline
  • Posts: 4074
  • Respect: +2624
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #20 on: March 02, 2012, 02:04:46 pm »
0

Pirate Ship + great hall + scout. It should probably buy an early silver to defeat pure money more easily. It would do better if the simulator didn't return a pirate ship to the top of the deck and then draw it with a great hall when there was already a pirate in hand.

Code: [Select]
<player name="Pirate Ship/great halls/scout"
 author="DG"
 description="scout example">
 <type name="UserCreated"/>
 <type name="Province"/>
 <type name="BigMoney"/>
 <type name="SingleCard"/>
 <type name="TwoPlayer"/>
 <type name="Generated"/>
 <type name="Bot"/>
   <buy name="Province"/>
   <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="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Pirate_Ship" strategy="attackUntil5Coins">
      <condition>
         <left type="countCardsInDeck" attribute="Pirate_Ship"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Scout">
      <condition>
         <left type="countCardsInDeck" attribute="Scout"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="countCardsInOpponentsDecks" attribute="Pirate_Ship"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Pirate_Ship" strategy="attackUntil5Coins">
      <condition>
         <left type="countCardsInDeck" attribute="Pirate_Ship"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Scout">
      <condition>
         <left type="countCardsInDeck" attribute="Scout"/>
         <operator type="smallerThan" />
         <right type="countCardTypeInDeck" attribute="Victory"/>
         <extra_operation type="divideBy" attribute="4.0" />
      </condition>
   </buy>
   <buy name="Great_Hall"/>
   <buy name="Silver"/>
</player>
Logged

blueblimp

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2849
  • Respect: +1559
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #21 on: March 02, 2012, 04:21:46 pm »
0

The scout is a decision card so there is a problem using the simulator to find its niche. Apothecary+Baron+scout might want to change the ordering of cards on top of the deck, the sequence in which you play the actions, and whether you force a reshuffle, or whether you want to play the scout at all. These choices are beyond the linear decision making of the current simulators.

In Dominate, I believe it's possible to run arbitrary code to make decisions (although its built-in decisions are not as good as Geronimoo's simulator). So if you can describe the decision-making rules in a precise form, then it should be possible to make the bot.
Logged

DG

  • Governor
  • *****
  • Offline Offline
  • Posts: 4074
  • Respect: +2624
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #22 on: March 02, 2012, 04:24:00 pm »
0

It's possible to customise the decisions for one script only but not to write a generalised scout AI that is based on card combinations in hand and in the draw deck.
Logged

Ozle

  • Cartographer
  • *****
  • Offline Offline
  • Posts: 3625
  • Sorry, this text is personal.
  • Respect: +3360
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #23 on: March 02, 2012, 04:31:52 pm »
0

I wrote some code to help make Scout usefull

Code: [Select]
<player name="Make Scout Useful"
 author="Ozle"
 description="scout example">
 <condition>
<left type="DegreeofWobble" attribute="Table"/>
         <operator type="EqualTo" />
         <right type="constant" attribute="0.0"/
</player>

Code could use a bit of tweaking, but you get the idea!
Logged
Try the Ozle Google Map Challenge!
http://forum.dominionstrategy.com/index.php?topic=7466.0

Sullying players Enjoyment of Innovation since 2013 Apparently!

blueblimp

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2849
  • Respect: +1559
    • View Profile
Re: Simulation Challenge: Make Scout useful
« Reply #24 on: March 02, 2012, 04:38:44 pm »
0

It's possible to customise the decisions for one script only but not to write a generalised scout AI that is based on card combinations in hand and in the draw deck.

Oh, yeah. I thought you had something specific in mind though.
Logged
Pages: [1] 2  All
 

Page created in 0.062 seconds with 20 queries.