BTW, I forgot to mention that no user accounts, emails, phone #s, etc will be required. That's some big feedback on got on my last game: https://toggles.codewalkers.net.
BTW, I forgot to mention that no user accounts, emails, phone #s, etc will be required. That's some big feedback on got on my last game: https://toggles.codewalkers.net.
I hear and understand, but providing a full blown code development platform of my own just isn't in the books. The security implications I would need to account for are insane. By having people...
I hear and understand, but providing a full blown code development platform of my own just isn't in the books. The security implications I would need to account for are insane. By having people host their own API, they can do it where ever they are comfortable (it doesn't have to be AWS), and I can easily be sure their responses meet the required specs.
I'm going to be posting a typescript sample soonish, Dockerfile, and docker-compose, which should allow many (most?) self-hosters add it to their stack pretty easily.
I'm going to be posting a typescript sample soonish, Dockerfile, and docker-compose, which should allow many (most?) self-hosters add it to their stack pretty easily.
I've created an interesting (at least to me) game that I think some other people might enjoy. It's based on The Prisoner's Dilemma. Specifically, my inspiration is Axelrod's tournament/experiment...
I've created an interesting (at least to me) game that I think some other people might enjoy. It's based on The Prisoner's Dilemma. Specifically, my inspiration is Axelrod's tournament/experiment he ran in the 1980s.
In summary, you create a strategy that's exposed via HTTP. Multiple times a day, my game server matches your strategy with someone else's strategy, and the two strategies play a variation of the Iterated Prisoner's Dilemma. My game server keeps track of the scores and puts you on a leaderboard. All the decisions from every matchup are available for public viewing.
The goal is for you to tweak and refine your strategy to be the best.
I'm looking for Beta Testers. Please PM me, and I'll send you the Beta Key so you can register. I'm definitely looking for people who will provide frank feedback. I would love to see the feedback come back to this thread so we could all discuss and collaborate.
I see that your spec in your API section is different than in your sample code section. I'm readying my strategy, and hope to be done tonight! I'm using this as an excuse to try out Deno. I'll...
I see that your spec in your API section is different than in your sample code section.
I'm readying my strategy, and hope to be done tonight! I'm using this as an excuse to try out Deno. I'll post my project somewhere tomorrow so others can copy it.
I see there is a discrepancy. Sorry about that! The API spec is correct. I'm in the office now, but will update the code example when I get home in about 1-2 hours.
I see there is a discrepancy. Sorry about that! The API spec is correct. I'm in the office now, but will update the code example when I get home in about 1-2 hours.
New bit of feedback which probably warrants discussion: My one bot is currently at the top of the charts, and all it does is defect. I think there needs to be a rebalance of scoring, as I can't...
New bit of feedback which probably warrants discussion:
My one bot is currently at the top of the charts, and all it does is defect. I think there needs to be a rebalance of scoring, as I can't think of how to 'game' it.
I'm not sure if you've noticed, but your bot's avg round score has been decreasing. Other strategies have learned to recognize that your strategy always defects, so they always defect when matched...
I'm not sure if you've noticed, but your bot's avg round score has been decreasing. Other strategies have learned to recognize that your strategy always defects, so they always defect when matched up against yours. This is one of the variations I thought would be useful -- giving the opponent ID from the very first round. With this, a strategy can know what the previous matches against the same strategy were like and react accordingly.
Thoughts on providing the "Defect Rate" in the opponent data? This would allow strategies to know how often their opponent defects, even if they haven't kept that history themselves (plus it would...
Thoughts on providing the "Defect Rate" in the opponent data? This would allow strategies to know how often their opponent defects, even if they haven't kept that history themselves (plus it would be a defect rate across all their opponent's matchups).
What are you hoping to achieve from this? It’s unlikely anyone (who isn't colluding) is going to significantly outperform tit-for-tat or its minor variations (generous, two tats, forgiving), and...
What are you hoping to achieve from this? It’s unlikely anyone (who isn't colluding) is going to significantly outperform tit-for-tat or its minor variations (generous, two tats, forgiving), and if they do it will mostly if not entirely be the result of statistical noise.
Just hoping that people can enjoy themselves. Also, I think there there are some interesting things can be done. Specifically since you will know the ID of the Strategy you are matched up against.
Just hoping that people can enjoy themselves. Also, I think there there are some interesting things can be done. Specifically since you will know the ID of the Strategy you are matched up against.
I've cobbled together a strategy in Rust, and I thought I'd provide some feedback. Most of these are me-problems, but I thought I'd share my thoughts. The Mario messages are silly. It's probably...
I've cobbled together a strategy in Rust, and I thought I'd provide some feedback. Most of these are me-problems, but I thought I'd share my thoughts.
The Mario messages are silly. It's probably for fun, but String matching also feels very error-prone (capitalization, accidentally using a different kind of apostrophe). Maybe use single-letter messages next time? Or at least make the messages have a distinct first character, so that one can match on that.
The requirement for JSON strings is similarly onerous. Why not accept bare Cooperate (or even just C) on the server-side without having them be wrapped in quotation marks? Abbreviating Cooperate to C would also make it much harder to misspell the word.
I tested my strategy using curl POST requests, and it seems to work fine, but the server says that it does not receive a response from the strategy for the game-start message. I added some more logging to try and catch what is going on, but it would be nice if there was a "test this strategy" button that plays a 5-turn game with the strategy when it is clicked. Maybe gated behind the strategy's secret key.
The documentation says in multiple places that the secret key is provided to you on registration, but I could enter my own secret key when registering?
Removing badly-performing strategies might apply some evolutionary pressure, but I think it'd be nice to actually be able to play as long as you're willing to host the strategy. People are going to drop out of the rotation naturally over time anyway.
The documentation says games happen every 4h, but actual frequency appears to be 1h.
Edit: Figured out why it wasn't working using my logs. Apparently the opponent_id is sent as an integer instead of the String suggested in the documentation (the opponent_id value is enclosed in quotation marks in the example).
BTW, I forgot to mention that no user accounts, emails, phone #s, etc will be required. That's some big feedback on got on my last game: https://toggles.codewalkers.net.
I was really into that one and then got sidetracked and forgot to come back to it. How is it going? Has it been "solved" yet?
Yes, 3 people made it to 30 days with a perfect score.
The game is still up and running and people can still play it. The spoilers are on this site.
I would prefer signing-up on your site, instead of creating an AWS account.
I hear and understand, but providing a full blown code development platform of my own just isn't in the books. The security implications I would need to account for are insane. By having people host their own API, they can do it where ever they are comfortable (it doesn't have to be AWS), and I can easily be sure their responses meet the required specs.
I'm going to be posting a typescript sample soonish, Dockerfile, and docker-compose, which should allow many (most?) self-hosters add it to their stack pretty easily.
I've created an interesting (at least to me) game that I think some other people might enjoy. It's based on The Prisoner's Dilemma. Specifically, my inspiration is Axelrod's tournament/experiment he ran in the 1980s.
In summary, you create a strategy that's exposed via HTTP. Multiple times a day, my game server matches your strategy with someone else's strategy, and the two strategies play a variation of the Iterated Prisoner's Dilemma. My game server keeps track of the scores and puts you on a leaderboard. All the decisions from every matchup are available for public viewing.
The goal is for you to tweak and refine your strategy to be the best.
I'm looking for Beta Testers. Please PM me, and I'll send you the Beta Key so you can register. I'm definitely looking for people who will provide frank feedback. I would love to see the feedback come back to this thread so we could all discuss and collaborate.
I see that your spec in your API section is different than in your sample code section.
I'm readying my strategy, and hope to be done tonight! I'm using this as an excuse to try out Deno. I'll post my project somewhere tomorrow so others can copy it.
It's been corrected now. Thank you!
I see there is a discrepancy. Sorry about that! The API spec is correct. I'm in the office now, but will update the code example when I get home in about 1-2 hours.
New bit of feedback which probably warrants discussion:
My one bot is currently at the top of the charts, and all it does is defect. I think there needs to be a rebalance of scoring, as I can't think of how to 'game' it.
I'm not sure if you've noticed, but your bot's avg round score has been decreasing. Other strategies have learned to recognize that your strategy always defects, so they always defect when matched up against yours. This is one of the variations I thought would be useful -- giving the opponent ID from the very first round. With this, a strategy can know what the previous matches against the same strategy were like and react accordingly.
Definitely open for other ideas too!
Gotcha, so long as the bots never cooperate with it, its average will fall.
Thoughts on providing the "Defect Rate" in the opponent data? This would allow strategies to know how often their opponent defects, even if they haven't kept that history themselves (plus it would be a defect rate across all their opponent's matchups).
Nah, i like the idea of strategies having to adapt.
What are you hoping to achieve from this? It’s unlikely anyone (who isn't colluding) is going to significantly outperform tit-for-tat or its minor variations (generous, two tats, forgiving), and if they do it will mostly if not entirely be the result of statistical noise.
Just hoping that people can enjoy themselves. Also, I think there there are some interesting things can be done. Specifically since you will know the ID of the Strategy you are matched up against.
Sometimes people enjoy playing games even when they know what the statistical likelihood of various results happen to be.
FYI, I've removed the need for a beta key and it is now "open beta". Anyone can submit their strategy.
I've cobbled together a strategy in Rust, and I thought I'd provide some feedback. Most of these are me-problems, but I thought I'd share my thoughts.
Cooperate
(or even justC
) on the server-side without having them be wrapped in quotation marks? AbbreviatingCooperate
toC
would also make it much harder to misspell the word.curl
POST requests, and it seems to work fine, but the server says that it does not receive a response from the strategy for the game-start message. I added some more logging to try and catch what is going on, but it would be nice if there was a "test this strategy" button that plays a 5-turn game with the strategy when it is clicked. Maybe gated behind the strategy's secret key.Edit: Figured out why it wasn't working using my logs. Apparently the
opponent_id
is sent as an integer instead of the String suggested in the documentation (theopponent_id
value is enclosed in quotation marks in the example).