Dominion Strategy Forum
Dominion => Simulation => Topic started by: DG on February 18, 2012, 01:31:36 pm
-
A week ago some people were asking why there hasn't been a simulation tournament. It was a fair question so I'll open one up. Hopefully the winning scripts will be interesting as well.
The challenge is to find a script that wins matches against other competitors only referencing two kingdom cards and basic cards. This will be, in other words, a challenge to find the strongest two card combination.
- Competition is to be run on Geronimoo's simulator (currently v 1.2.0).
- 2 player games only.
- No colony. No platinum. Potion is a legal basic card.
- No attack cards. No possession, ill gotten gains, masquerade, bishop, vault, embargo, or black market.
- Tournament can be used. Prize cards can be referenced without counting towards the two card limit but followers are prohibited.
You can set the starting hand in the simulator by clicking the start state tab and, for example, adding a line for the start state of "Copper, Copper, Copper, Copper, Estate" and the starting draw deck as "Copper, Copper, Copper, Estate, Estate". If you are using this feature then tick shuffle draw deck and make sure you do start with the required 7 copper and 3 estates. Any script without this feature will have a random starting hand.
Please send entries to DG through the Dominion Strategy Forum mail. Closing date for entries March 2nd. Each person is allowed up to two entries but the second entry must reference different kingdom cards from the first. Please title your scripts using your forum name and kingdom cards.
I will use my own judgement to decide the finalists and run these as a mini-league against each other. In each league game two points will be awarded to the script with the higher win rate, or 1 point each if the win rates differ by less than 1%. The overall winner will be the script with the most points. The tiebreaker will be highest aggregate win rate in the mini-league. The prize is ... nothing. It's all for fun.
Rules may change as feedbacks come through. I have already removed the restriction on the PPR.
-
A couple points. First, you can't really stop people from putting PPR in. I mean, I guess you can, sort of, just by arbitrarily ruling that something is PPR and thus disallowed by looking at it. But does that mean we can't put in any clever endgame rules? Because I love doing that. And if we can put those in, what constitutes as a PPR and what's just general endgame play.
Other question is whether we can reference other non-basic cards in our script without actually buying them. Like 'if there are fewer than 2 Mountebanks left' buy something else (obviously having a mountebank condition is silly - I reference it here because nobody could actually use it). I assume we can only reference basics plus what we buy, but I want to clarify.
-
I would imagine you would want to have conditions on what's in opponents decks, so you can play different vs fast or slow strats.
But then again, maybe the challenge is just finding something that beats mint/FG with only 2 kingdom cards...
-
I would imagine you would want to have conditions on what's in opponents decks, so you can play different vs fast or slow strats.
But then again, maybe the challenge is just finding something that beats mint/FG with only 2 kingdom cards...
Done done done and done.
-
A couple points. First, you can't really stop people from putting PPR in. I mean, I guess you can, sort of, just by arbitrarily ruling that something is PPR and thus disallowed by looking at it. But does that mean we can't put in any clever endgame rules? Because I love doing that. And if we can put those in, what constitutes as a PPR and what's just general endgame play.
It's really just for simplicity in everyone's scripts. Most province buying scripts are going to get an extra 2.5% win rate by adding the PPR in this speed of deck. If everyone has it, or everyone doesn't have it, then the advantage is generally nullified. If lots of people want the PPR included I can relax the restriction.
Other question is whether we can reference other non-basic cards in our script without actually buying them. Like 'if there are fewer than 2 Mountebanks left' buy something else (obviously having a mountebank condition is silly - I reference it here because nobody could actually use it). I assume we can only reference basics plus what we buy, but I want to clarify.
No I'd like to exclude conditions based on cards that might not be there. This also hopefully prevents some spurious gaining of cards through back doors in the simulator logic.
-
Well, I'm going to have crazily complicated scripts anyway, so I'm voting for allowing PPR. Also because just sticking a generic PPR in is, I think, not going to do nearly so well here as you'd get in a more realistic scenario.
-
So far I have A>B>C>A so which 2 do I submit? :-\
-
First, you can't really stop people from putting PPR in. I mean, I guess you can, sort of, just by arbitrarily ruling that something is PPR and thus disallowed by looking at it. But does that mean we can't put in any clever endgame rules? Because I love doing that. And if we can put those in, what constitutes as a PPR and what's just general endgame play.
I'd suggest that (if it's desired to ban PPR), the rule be that bots are not allowed to depend on any of:
- your total vp
- your opponent's total vp
- the number of any particular vp card in you or your opponent's deck (it's fine to depend on how many are in the supply OR on the total number of vp cards of any type that you own)
-
First, you can't really stop people from putting PPR in. I mean, I guess you can, sort of, just by arbitrarily ruling that something is PPR and thus disallowed by looking at it. But does that mean we can't put in any clever endgame rules? Because I love doing that. And if we can put those in, what constitutes as a PPR and what's just general endgame play.
I'd suggest that (if it's desired to ban PPR), the rule be that bots are not allowed to depend on any of:
- your total vp
- your opponent's total vp
- the number of any particular vp card in you or your opponent's deck (it's fine to depend on how many are in the supply OR on the total number of vp cards of any type that you own)
I have to say that this is a really terrible idea. Not only does it stop you from doing anything clever at all with endgames, or let you self-check any kind of suicides, etc., it also stops you from using things that are quite often legitimate threshholds. For instance, if I'm building a duke bot, it's likely gonna wanna know how many duchies it has.
I mean, ok, I'm still for PPR being allowed. But even if you want to disallow it per se, you don't have to disallow the rest of this stuff.
-
I'm a bit confused - is the OP saying that we are allowed to use simulators that force a 5/2 start?
If so, Miiiiiint FG
-
I'm a bit confused - is the OP saying that we are allowed to use simulators that force a 5/2 start?
If so, Miiiiiint FG
That's how I read it. I guess the tournament will show whether Mint/FG is really the best non-attacking 5/2 in the game. I wonder if it might be worth having a separate tournament for 4/3 starts.
-
I'm a bit confused - is the OP saying that we are allowed to use simulators that force a 5/2 start?
If so, Miiiiiint FG
That's how I read it. I guess the tournament will show whether Mint/FG is really the best non-attacking 5/2 in the game. I wonder if it might be worth having a separate tournament for 4/3 starts.
Dudes, it's not even close. Mint/FG is pretty good, but there's LOTS of stuff that's better.
Seriously, enter Mint/FG. I expect you to do... poorly.
-
I'm a bit confused - is the OP saying that we are allowed to use simulators that force a 5/2 start?
If so, Miiiiiint FG
That's how I read it. I guess the tournament will show whether Mint/FG is really the best non-attacking 5/2 in the game. I wonder if it might be worth having a separate tournament for 4/3 starts.
Dudes, it's not even close. Mint/FG is pretty good, but there's LOTS of stuff that's better.
Seriously, enter Mint/FG. I expect you to do... poorly.
Is it really that easy to beat Mint/FG with only 2 types of cards, obeying the restrictions in the original list?
Edit: Removed a bit of this message to avoid talking about strategy too much in this thread.
-
I'm 90% vs the built in FG mint.
-
I'm 90% vs the built in FG mint.
I didn't know there was a built-in Mint/FG. I've just been using a (terrible) bot I made.
Anyway, of course it wouldn't make any sense to show how to beat Mint/FG in this thread, since that's the point of the tournament. I'm just surprised how quickly it was dismissed.
-
I'm a bit confused - is the OP saying that we are allowed to use simulators that force a 5/2 start?
If so, Miiiiiint FG
That's how I read it. I guess the tournament will show whether Mint/FG is really the best non-attacking 5/2 in the game. I wonder if it might be worth having a separate tournament for 4/3 starts.
Dudes, it's not even close. Mint/FG is pretty good, but there's LOTS of stuff that's better.
Seriously, enter Mint/FG. I expect you to do... poorly.
Is it really that easy to beat Mint/FG with only 2 types of cards, obeying the restrictions in the original list?
Edit: Removed a bit of this message to avoid talking about strategy too much in this thread.
Yes, it is. Heck, there was a thread in which it was beaten only a week or two ago.
-
The reason I brought up Mint/FG is not because I believe it's unbeatable, but it's because I would suspect a lot of people would enter some version of Mint/FG, so if you come up with something that beats that specifically, even if it loses to other stuff, you'll probably collect a lot of points.
-
The reason I brought up Mint/FG is not because I believe it's unbeatable, but it's because I would suspect a lot of people would enter some version of Mint/FG, so if you come up with something that beats that specifically, even if it loses to other stuff, you'll probably collect a lot of points.
Actually, along these lines, for kicks and giggles, I made a bot that beats Mint/FG but loses to something like BM/Chancellor.
-
Why all the secrecy? :( I want to know what's giving you kicks and giggles!
-
Why all the secrecy? :( I want to know what's giving you kicks and giggles!
Because something along those lines might actually be useful for my secondary bot in the tournament (I've got the one that's going to win it pretty well worked out; well, I say that, but I'm winning like 3-1 over the original version of it I started with (which also crushed Mint/FG) now, so maybe there's more to be wrung out of it). Anyway, after submissions are in, I'll let you know.
-
Mint/FG is so bad... once you find a few other bots that crush it.
-
I've removed the restriction on the PPR. It was probably going to ultimately add more difficulty in adjudication than difficulty for the entrants. So please be aware that a well implemented PPR could gain over 2.5% win rate but could lose more if badly implemented.
-
Crap... I had an awesome bot with Bureaucrat, but just now realize it's an attack ::)
-
Is Tribute an "attack"?
Also, can you buy from a 10 card supply if your opponent isn't mirroring your strategy, but suddenly share that 10 card supply if he is using one of your cards too?
-
Tribute is not an attack and is allowed. I prohibited some other non-attack cards since they can adversely change the simulator decisions but the tribute is fine.
If both players reference the same card in their script they will gain their cards from the same supply pile, as in a regular game. I think this answers your second question.
-
It's kind of a downer that a lot of the more interesting strategies are inhibited by play rules :/
-
Okay, I have my two bots more or less ready to compete here. So I'm okay posting this little gem that barely beats BMU, loses to BM/Chancellor, and beats Mint/FG (I'm not using it):
<player name="Bridge/City Classic"
author="WanderingWinder"
description="This bot isn't very good, because it relies largely on mega-turns which it can't reliably get so well (though colony games would make that a different story). XXXXHowever, if you've got opponents who are pile-driving, this becomes massive.">
<type name="Optimized"/>
<type name="TwoPlayer"/>
<type name="SingleCard"/>
<type name="Province"/>
<type name="BigMoney"/>
<type name="UserCreated"/>
<type name="Bot"/>
<buy name="Province">
<condition>
<left type="countCardsInDeck" attribute="Bridge"/>
<operator type="greaterThan" />
<right type="constant" attribute="6.0"/>
</condition>
<condition>
<left type="countCardsInDeck" attribute="City"/>
<operator type="greaterThan" />
<right type="constant" attribute="6.0"/>
</condition>
</buy>
<buy name="Duchy">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="smallerOrEqualThan" />
<right type="constant" attribute="2.0"/>
</condition>
</buy>
<buy name="Estate">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="smallerOrEqualThan" />
<right type="constant" attribute="1.0"/>
</condition>
</buy>
<buy name="Bridge">
<condition>
<left type="countCardsInPlay" attribute="Bridge"/>
<operator type="equalTo" />
<right type="constant" attribute="1.0"/>
</condition>
<condition>
<left type="countAvailableMoney"/>
<operator type="equalTo" />
<right type="constant" attribute="6.0"/>
</condition>
</buy>
<buy name="City"/>
<buy name="Bridge"/>
<buy name="Bridge"/>
<buy name="Silver">
<condition>
<left type="countCardsInDeck" attribute="Silver"/>
<operator type="smallerThan" />
<right type="constant" attribute="2.0"/>
</condition>
</buy>
<buy name="Duchy"/>
<buy name="Estate">
<condition>
<left type="gainsNeededToEndGame"/>
<operator type="smallerThan" />
<right type="constant" attribute="3.0"/>
</condition>
</buy>
</player>
Who else is thinking of competing, by the way?
-
I'll probably submit a single bot. I've been working on one on and off for the past week going through many generations of it. I haven't been able to get any of the rock/paper/scissors stuff that others have described so I'll just submit my one best bot and see how it does.
-
Okay, I have my two bots more or less ready to compete here. So I'm okay posting this little gem that barely beats BMU, loses to BM/Chancellor, and beats Mint/FG (I'm not using it):
<player name="Bridge/City Classic"
author="WanderingWinder"
description="This bot isn't very good, because it relies largely on mega-turns which it can't reliably get so well (though colony games would make that a different story). XXXXHowever, if you've got opponents who are pile-driving, this becomes massive.">
<type name="Optimized"/>
<type name="TwoPlayer"/>
<type name="SingleCard"/>
<type name="Province"/>
<type name="BigMoney"/>
<type name="UserCreated"/>
<type name="Bot"/>
<buy name="Province">
<condition>
<left type="countCardsInDeck" attribute="Bridge"/>
<operator type="greaterThan" />
<right type="constant" attribute="6.0"/>
</condition>
<condition>
<left type="countCardsInDeck" attribute="City"/>
<operator type="greaterThan" />
<right type="constant" attribute="6.0"/>
</condition>
</buy>
<buy name="Duchy">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="smallerOrEqualThan" />
<right type="constant" attribute="2.0"/>
</condition>
</buy>
<buy name="Estate">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="smallerOrEqualThan" />
<right type="constant" attribute="1.0"/>
</condition>
</buy>
<buy name="Bridge">
<condition>
<left type="countCardsInPlay" attribute="Bridge"/>
<operator type="equalTo" />
<right type="constant" attribute="1.0"/>
</condition>
<condition>
<left type="countAvailableMoney"/>
<operator type="equalTo" />
<right type="constant" attribute="6.0"/>
</condition>
</buy>
<buy name="City"/>
<buy name="Bridge"/>
<buy name="Bridge"/>
<buy name="Silver">
<condition>
<left type="countCardsInDeck" attribute="Silver"/>
<operator type="smallerThan" />
<right type="constant" attribute="2.0"/>
</condition>
</buy>
<buy name="Duchy"/>
<buy name="Estate">
<condition>
<left type="gainsNeededToEndGame"/>
<operator type="smallerThan" />
<right type="constant" attribute="3.0"/>
</condition>
</buy>
</player>
Who else is thinking of competing, by the way?
This is very neat, but when I ran it locally, it lost to Mint/FG (assuming I guarantee a 5/2 opening for the Mint/FG) even if it is guaranteed a 4/3 start. Results:
Win: 46.6% +/- 0.4%
Loss: 52.6% +/- 0.4%
Tie: 0.9% +/- 0.1%
This is just for academic interest only, since I can beat Mint/FG so I'm not worried about it dominating.
-
Why do I get the feeling that this little sim tourney will be a battle to see whose bot can win the mirror? ;)
-
Why do I get the feeling that this little sim tourney will be a battle to see whose bot can win the mirror? ;)
I'm sure elite bot-makers can beat everything I create, but I have two completely different strategies that are fairly close to each other.
-
Who else is thinking of competing, by the way?
I have submitted one bot, not sure if I have an idea for a second.
-
Okay, I have my two bots more or less ready to compete here. So I'm okay posting this little gem that barely beats BMU, loses to BM/Chancellor, and beats Mint/FG (I'm not using it):
<player name="Bridge/City Classic"
author="WanderingWinder"
description="This bot isn't very good, because it relies largely on mega-turns which it can't reliably get so well (though colony games would make that a different story). XXXXHowever, if you've got opponents who are pile-driving, this becomes massive.">
<type name="Optimized"/>
<type name="TwoPlayer"/>
<type name="SingleCard"/>
<type name="Province"/>
<type name="BigMoney"/>
<type name="UserCreated"/>
<type name="Bot"/>
<buy name="Province">
<condition>
<left type="countCardsInDeck" attribute="Bridge"/>
<operator type="greaterThan" />
<right type="constant" attribute="6.0"/>
</condition>
<condition>
<left type="countCardsInDeck" attribute="City"/>
<operator type="greaterThan" />
<right type="constant" attribute="6.0"/>
</condition>
</buy>
<buy name="Duchy">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="smallerOrEqualThan" />
<right type="constant" attribute="2.0"/>
</condition>
</buy>
<buy name="Estate">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="smallerOrEqualThan" />
<right type="constant" attribute="1.0"/>
</condition>
</buy>
<buy name="Bridge">
<condition>
<left type="countCardsInPlay" attribute="Bridge"/>
<operator type="equalTo" />
<right type="constant" attribute="1.0"/>
</condition>
<condition>
<left type="countAvailableMoney"/>
<operator type="equalTo" />
<right type="constant" attribute="6.0"/>
</condition>
</buy>
<buy name="City"/>
<buy name="Bridge"/>
<buy name="Bridge"/>
<buy name="Silver">
<condition>
<left type="countCardsInDeck" attribute="Silver"/>
<operator type="smallerThan" />
<right type="constant" attribute="2.0"/>
</condition>
</buy>
<buy name="Duchy"/>
<buy name="Estate">
<condition>
<left type="gainsNeededToEndGame"/>
<operator type="smallerThan" />
<right type="constant" attribute="3.0"/>
</condition>
</buy>
</player>
Who else is thinking of competing, by the way?
This is very neat, but when I ran it locally, it lost to Mint/FG (assuming I guarantee a 5/2 opening for the Mint/FG) even if it is guaranteed a 4/3 start. Results:
Win: 46.6% +/- 0.4%
Loss: 52.6% +/- 0.4%
Tie: 0.9% +/- 0.1%
This is just for academic interest only, since I can beat Mint/FG so I'm not worried about it dominating.
Yeah. Apparently I have a messed up version of Mint/FG in my sim. Of course, I have a better bridge/city that beats this, too, but it also beats BM/Chancellor. Loses nastily to BM/Fortune Teller though.
-
We're nearly at the closing date for entries. I've received submissions so far from
Geronimoo (2)
DStu (1)
BlueBlimp (2)
WanderingWinder (2)
Shark_Bait (1) - needs small amendment
Unless I get a rush of late entries all these scripts will be in the 'final' with the exception of the one that can't beat pure money. I'll see how well that one does against the other competitors separately.
-
We're nearly at the closing date for entries. I've received submissions so far from
Geronimoo (2)
DStu (1)
BlueBlimp (2)
WanderingWinder (2)
Shark_Bait (1) - needs small amendment
Unless I get a rush of late entries all these scripts will be in the 'final' with the exception of the one that can't beat pure money. I'll see how well that one does against the other competitors separately.
Wait, somebody submitted one that can't beat pure money? Actually I was going for that with city/bridge, a bot that can beat the submitted ones but loses to pure money, but unfortunately it's a touch too strong....
-
We're nearly at the closing date for entries. I've received submissions so far from
Geronimoo (2)
DStu (1)
BlueBlimp (2)
WanderingWinder (2)
Shark_Bait (1) - needs small amendment
Unless I get a rush of late entries all these scripts will be in the 'final' with the exception of the one that can't beat pure money. I'll see how well that one does against the other competitors separately.
Wait, somebody submitted one that can't beat pure money? Actually I was going for that with city/bridge, a bot that can beat the submitted ones but loses to pure money, but unfortunately it's a touch too strong....
I wonder if the bot losing to pure money is one of mine. Wouldn't surprise me, since one of the bots I submitted just because it is good at sniping bad versions of my other one, although I thought I ran each against BMU at some point. (Edit: Nevermind, they are both >99% against BMU.)
By the way, in the results, it might be interesting to see how each bot performs against some of the good bots included with the simulator. In particular, the included HP/Baron bot gets an OK winrate against both my bots.
Edit: Other included bots that get respectable winrates vs the better of my two submissions: NV/Bridge, FG/Council Room (with a 5/2 start), and to a lesser extent Caravan/Vault (with a 5/2 start). I have some simple bots playing some other 2-card combos that get okay winrates too, but weren't good enough to submit.