Jump to content

Rock, paper, scissors!


Recommended Posts

  • Root Admin

You likely will want to run the simulation a good number of times (at least 100 times but probably 1000 or more) to even out the effect that the random start has.

Either that or run one run for every permutation of random ordering.

Link to comment
Share on other sites

2 hours ago, Chewett said:

You likely will want to run the simulation a good number of times (at least 100 times but probably 1000 or more) to even out the effect that the random start has.

Either that or run one run for every permutation of random ordering.

1000 wouldn't be difficult. I'll do 100, 1000, and 5000 I guess, and tally up the number for each one.

All permutation route might be problematic since the current code wasn't designed to do it atm, imo. Thanks for your advice!

Link to comment
Share on other sites

So let's start the competition!

As we have cases of ties for top position (the criteria for elimination being least wins > most loses > losing to all others performing similarly) for each individual "mini tournament", I've devised two system to keep track of performance:

  1. Counting wins - including shared
  2. All winners shares a point pool of 2520, divided to all winners (2520 being the least common multiple for 1 - 10, as we have 10 participants), Totaling to 25,200,000 points

In addition, I've also logged every individual face-off to determine how well a strategy does into another, so you can view each pairing performance!

Hopefully I made no mistake while translating the strategies. But as time constraint, this is as much testing I can do.

CC'ing the participants:

@Aia del Mana, @Nepgear, @Else, @Dracoloth, @Pipstickz, @Ledah, @Aelis, @Yoshi, @Kaya, @Tissy 

The tournament will be ran 10,000 times. As Chew pointed out, a larger number would be better to show a clear trend, and as the simulator can be ran as many time as needed, why not even more?

Below you can find the compressed file for the final version of codes used. It includes all player strategies, and some strategies used for testing purposes.

MD RPC.rar

Without further ado... here are the top performers:

Points:

  1. Kaya - 15,554,496
  2. Tissy - 4,392,408
  3. Else - 3,094,608

Wins:

  1. Kaya - 6804
  2. Tissy - 2779
  3. Else - 2144

As there's no discrepancy between the ordering, the top 3 winners are as such. Congratulations!

Here's the full performance sheet from all participants:

Cumulative wins:
Kaya: 6804 wins
Else: 2144 wins
Dracoloth: 1368 wins
Tissy: 2779 wins
Yoshi: 435 wins
Aia: 537 wins
Pipstickz: 5 wins
Aelis: 3 wins

Cumulative points:
Kaya: 15554496 points
Else: 3094608 points
Dracoloth: 1343460 points
Tissy: 4392408 points
Yoshi: 312024 points
Aia: 495144 points
Pipstickz: 3240 points
Aelis: 4620 points

Aia's cumulative match results:
Aelis: 30867 wins, 0 loses, 0 draws
Yoshi: 0 wins, 44920 loses, 0 draws
Kaya: 3225 wins, 42405 loses, 0 draws
Tissy: 45289 wins, 0 loses, 0 draws
Else: 0 wins, 44206 loses, 0 draws
Ledah: 17408 wins, 0 loses, 0 draws
Pipstickz: 0 wins, 30632 loses, 0 draws
Dracoloth: 45061 wins, 0 loses, 0 draws
Nepgear: 17984 wins, 0 loses, 0 draws

Aelis's cumulative match results:
Aia: 0 wins, 30867 loses, 0 draws
Else: 0 wins, 31326 loses, 0 draws
Yoshi: 0 wins, 31044 loses, 0 draws
Pipstickz: 18369 wins, 6765 loses, 0 draws
Tissy: 30762 wins, 0 loses, 0 draws
Kaya: 5849 wins, 25100 loses, 0 draws
Dracoloth: 0 wins, 0 loses, 31342 draws
Nepgear: 10780 wins, 0 loses, 6165 draws
Ledah: 11045 wins, 3438 loses, 0 draws

Ledah's cumulative match results:
Kaya: 6523 wins, 10592 loses, 0 draws
Tissy: 0 wins, 17408 loses, 0 draws
Dracoloth: 0 wins, 17408 loses, 0 draws
Else: 16974 wins, 0 loses, 0 draws
Pipstickz: 13645 wins, 0 loses, 0 draws
Aia: 0 wins, 17408 loses, 0 draws
Nepgear: 0 wins, 10546 loses, 0 draws
Yoshi: 0 wins, 17408 loses, 0 draws
Aelis: 3438 wins, 11045 loses, 0 draws

Kaya's cumulative match results:
Ledah: 10592 wins, 6523 loses, 0 draws
Aia: 42405 wins, 3225 loses, 0 draws
Tissy: 36398 wins, 25519 loses, 0 draws
Dracoloth: 50136 wins, 9526 loses, 0 draws
Aelis: 25100 wins, 5849 loses, 0 draws
Pipstickz: 1170 wins, 34551 loses, 0 draws
Yoshi: 49919 wins, 3117 loses, 0 draws
Nepgear: 16466 wins, 1368 loses, 0 draws
Else: 36806 wins, 20579 loses, 0 draws

Tissy's cumulative match results:
Ledah: 17408 wins, 0 loses, 0 draws
Dracoloth: 59247 wins, 0 loses, 0 draws
Aia: 0 wins, 45289 loses, 0 draws
Else: 0 wins, 56006 loses, 0 draws
Aelis: 0 wins, 30762 loses, 0 draws
Pipstickz: 36655 wins, 0 loses, 0 draws
Nepgear: 17984 wins, 0 loses, 0 draws
Kaya: 25519 wins, 36398 loses, 0 draws
Yoshi: 52312 wins, 0 loses, 0 draws

Dracoloth's cumulative match results:
Ledah: 17408 wins, 0 loses, 0 draws
Tissy: 0 wins, 59247 loses, 0 draws
Else: 55622 wins, 0 loses, 0 draws
Pipstickz: 36644 wins, 0 loses, 0 draws
Kaya: 9526 wins, 50136 loses, 0 draws
Nepgear: 0 wins, 6251 loses, 11683 draws
Yoshi: 53086 wins, 0 loses, 0 draws
Aelis: 0 wins, 0 loses, 31342 draws
Aia: 0 wins, 45061 loses, 0 draws

Else's cumulative match results:
Aelis: 31326 wins, 0 loses, 0 draws
Dracoloth: 0 wins, 55622 loses, 0 draws
Aia: 44206 wins, 0 loses, 0 draws
Tissy: 56006 wins, 0 loses, 0 draws
Ledah: 0 wins, 16974 loses, 0 draws
Nepgear: 0 wins, 17876 loses, 0 draws
Pipstickz: 36641 wins, 0 loses, 0 draws
Yoshi: 0 wins, 50990 loses, 0 draws
Kaya: 20579 wins, 36806 loses, 0 draws

Yoshi's cumulative match results:
Aia: 44920 wins, 0 loses, 0 draws
Aelis: 31044 wins, 0 loses, 0 draws
Pipstickz: 23884 wins, 10671 loses, 0 draws
Nepgear: 17984 wins, 0 loses, 0 draws
Dracoloth: 0 wins, 53086 loses, 0 draws
Else: 50990 wins, 0 loses, 0 draws
Tissy: 0 wins, 52312 loses, 0 draws
Ledah: 17408 wins, 0 loses, 0 draws
Kaya: 3117 wins, 49919 loses, 0 draws

Pipstickz's cumulative match results:
Aelis: 6765 wins, 18369 loses, 0 draws
Yoshi: 10671 wins, 23884 loses, 0 draws
Dracoloth: 0 wins, 36644 loses, 0 draws
Tissy: 0 wins, 36655 loses, 0 draws
Ledah: 0 wins, 13645 loses, 0 draws
Aia: 30632 wins, 0 loses, 0 draws
Else: 0 wins, 36641 loses, 0 draws
Nepgear: 17037 wins, 0 loses, 0 draws
Kaya: 34551 wins, 1170 loses, 0 draws

Nepgear's cumulative match results:
Tissy: 0 wins, 17984 loses, 0 draws
Else: 17876 wins, 0 loses, 0 draws
Ledah: 10546 wins, 0 loses, 0 draws
Yoshi: 0 wins, 17984 loses, 0 draws
Dracoloth: 6251 wins, 0 loses, 11683 draws
Pipstickz: 0 wins, 17037 loses, 0 draws
Aelis: 0 wins, 10780 loses, 6165 draws
Kaya: 1368 wins, 16466 loses, 0 draws
Aia: 0 wins, 17984 loses, 0 draws

I'll let the players decide if they want to explain their strategy themselves. I'll be posting my commentary (and the missing strategies) later :)

Link to comment
Share on other sites

TLDR: My strategy was build on being as unpredictable as possible, and only striking when I need to to get just enough of an edge to win the match.

 

The base of my strategy reveals itself in the results. It is the only strategy that isn't hard countered, but also does not hard counter any other strategies. My strategy isn't build to come out on top all the time, but aims to come out on top more often than the others, at which it succeeded even better than I expected (With the exception being when up against Pip, which I'll get to).

Random wins 50% of the time against any strategy. I kind of abused this fact by making a strategy that uses a large list of moves and looping through them to pick my attacks as the base of my strategy. To prevent prying eyes I switched up the way I loop through them between fights. This alone, however, is not enough to win.

When my Aramor was starting to feel a bit bruised, and I only had 4 lives left, I would enter what I at some point lovingly dubbed emergency mode (Although it's nowhere in the code).

Once in emergency mode I would start to try and match a number of patterns, like repetitions of the same move, cycling through the moves and some attempts at countering. When I matched something I would act on it, otherwise I continue looping through the list. The moment I no longer match anything I also continue cycling through my list.

As to why I lost to Pip... My move list was heavily biased against scissors, making my lose to Pip's papermancy. I did change the list at some point to be more balanced, but forgot to let DG know, so it didn't actually make its way into the final code ^^'

Interestingly when I reduce the move list to just 7 elements (2 paper, 2 scissors and 3 rock) and run for 1000 rounds my strategy seems to improve:

Spoiler

Cumulative wins:
Kaya: 831 wins
Else: 48 wins
Dracoloth: 32 wins
Aia: 180 wins
Yoshi: 61 wins
Tissy: 81 wins
Nepgear: 5 wins


Cumulative points:
Kaya: 2012088 points
Else: 39600 points
Dracoloth: 26832 points
Aia: 321840 points
Yoshi: 42120 points
Tissy: 75720 points
Nepgear: 1800 points


Pipstickz's cumulative match results:
Tissy: 0 wins, 1608 loses, 0 draws
Kaya: 173 wins, 1418 loses, 0 draws
Dracoloth: 0 wins, 1607 loses, 0 draws
Yoshi: 534 wins, 1046 loses, 0 draws
Ledah: 0 wins, 1034 loses, 0 draws
Aelis: 351 wins, 971 loses, 0 draws
Nepgear: 1423 wins, 0 loses, 0 draws
Aia: 1545 wins, 0 loses, 0 draws
Else: 0 wins, 1607 loses, 0 draws

Tissy's cumulative match results:
Pipstickz: 1608 wins, 0 loses, 0 draws
Nepgear: 4758 wins, 0 loses, 0 draws
Yoshi: 5809 wins, 0 loses, 0 draws
Kaya: 868 wins, 5457 loses, 0 draws
Aelis: 0 wins, 2752 loses, 0 draws
Dracoloth: 5232 wins, 0 loses, 0 draws
Ledah: 1857 wins, 0 loses, 0 draws
Else: 0 wins, 4247 loses, 0 draws
Aia: 0 wins, 6293 loses, 0 draws

Else's cumulative match results:
Kaya: 679 wins, 3681 loses, 0 draws
Yoshi: 0 wins, 4324 loses, 0 draws
Aia: 4210 wins, 0 loses, 0 draws
Dracoloth: 0 wins, 4097 loses, 0 draws
Nepgear: 0 wins, 3794 loses, 0 draws
Aelis: 2752 wins, 0 loses, 0 draws
Ledah: 0 wins, 1813 loses, 0 draws
Tissy: 4247 wins, 0 loses, 0 draws
Pipstickz: 1607 wins, 0 loses, 0 draws

Kaya's cumulative match results:
Else: 3681 wins, 679 loses, 0 draws
Pipstickz: 1418 wins, 173 loses, 0 draws
Tissy: 5457 wins, 868 loses, 0 draws
Yoshi: 5921 wins, 0 loses, 0 draws
Aelis: 2450 wins, 287 loses, 0 draws
Dracoloth: 3612 wins, 1516 loses, 0 draws
Aia: 4771 wins, 1743 loses, 0 draws
Ledah: 824 wins, 1021 loses, 0 draws
Nepgear: 0 wins, 4676 loses, 0 draws

Nepgear's cumulative match results:
Tissy: 0 wins, 4758 loses, 0 draws
Yoshi: 0 wins, 4758 loses, 0 draws
Ledah: 1854 wins, 0 loses, 0 draws
Dracoloth: 1564 wins, 0 loses, 2940 draws
Else: 3794 wins, 0 loses, 0 draws
Pipstickz: 0 wins, 1423 loses, 0 draws
Aelis: 0 wins, 1108 loses, 1616 draws
Aia: 0 wins, 4758 loses, 0 draws
Kaya: 4676 wins, 0 loses, 0 draws

Yoshi's cumulative match results:
Tissy: 0 wins, 5809 loses, 0 draws
Kaya: 0 wins, 5921 loses, 0 draws
Else: 4324 wins, 0 loses, 0 draws
Pipstickz: 1046 wins, 534 loses, 0 draws
Nepgear: 4758 wins, 0 loses, 0 draws
Dracoloth: 0 wins, 4979 loses, 0 draws
Aia: 5766 wins, 0 loses, 0 draws
Aelis: 2752 wins, 0 loses, 0 draws
Ledah: 1857 wins, 0 loses, 0 draws

Dracoloth's cumulative match results:
Pipstickz: 1607 wins, 0 loses, 0 draws
Aelis: 0 wins, 0 loses, 2741 draws
Else: 4097 wins, 0 loses, 0 draws
Tissy: 0 wins, 5232 loses, 0 draws
Yoshi: 4979 wins, 0 loses, 0 draws
Nepgear: 0 wins, 1564 loses, 2940 draws
Ledah: 1857 wins, 0 loses, 0 draws
Kaya: 1516 wins, 3612 loses, 0 draws
Aia: 0 wins, 5093 loses, 0 draws

Aelis's cumulative match results:
Kaya: 287 wins, 2450 loses, 0 draws
Tissy: 2752 wins, 0 loses, 0 draws
Dracoloth: 0 wins, 0 loses, 2741 draws
Aia: 0 wins, 2752 loses, 0 draws
Pipstickz: 971 wins, 351 loses, 0 draws
Ledah: 1466 wins, 214 loses, 0 draws
Else: 0 wins, 2752 loses, 0 draws
Yoshi: 0 wins, 2752 loses, 0 draws
Nepgear: 1108 wins, 0 loses, 1616 draws

Aia's cumulative match results:
Aelis: 2752 wins, 0 loses, 0 draws
Else: 0 wins, 4210 loses, 0 draws
Ledah: 1857 wins, 0 loses, 0 draws
Yoshi: 0 wins, 5766 loses, 0 draws
Kaya: 1743 wins, 4771 loses, 0 draws
Pipstickz: 0 wins, 1545 loses, 0 draws
Dracoloth: 5093 wins, 0 loses, 0 draws
Nepgear: 4758 wins, 0 loses, 0 draws
Tissy: 6293 wins, 0 loses, 0 draws

Ledah's cumulative match results:
Aia: 0 wins, 1857 loses, 0 draws
Nepgear: 0 wins, 1854 loses, 0 draws
Pipstickz: 1034 wins, 0 loses, 0 draws
Aelis: 214 wins, 1466 loses, 0 draws
Dracoloth: 0 wins, 1857 loses, 0 draws
Tissy: 0 wins, 1857 loses, 0 draws
Else: 1813 wins, 0 loses, 0 draws
Yoshi: 0 wins, 1857 loses, 0 draws
Kaya: 1021 wins, 824 loses, 0 draws

 

 

Link to comment
Share on other sites

Alright - time to write commentaries!

Aia:

Her strategy consist of 2 simple states, and a way to "seed" the encounter.

Her first move is determined by a pseudo-random criteria (if she's facing a male or female opponent).

She has 2 states: countering her opponent last move, or lose against it. Swaps every 3 turns depending on performance.

Notably, she also checks for fixed patterns - and although it's not too useful against most strategies, it does work against Ledah's.

However, it is also quite slow to adapt to match condition, and even if one of the two state counters someone - this slow adaptation can lead to consistently close - but losing matches. Notably, against Pip

Aelis:

His strategy is to count his opponent move: their first move and their move against him, and output a counter to their most commonly used move. There's a decay value to keep the recent moves more relevant.

He also have a panic mode to swap his moves around.

I'd say the main downfall of this strategy (I was excited to see how well it would perform) - would be a few things:

  • There's a very clear and apparent weakness against strategies that swap frequently. Where the move that was "most recently and most played" changes constantly - and the least likely to be played again. His panic mode helps - but the point difference could easily be too great to overcome, and many have states they could flip as well - back and forth, meaning the swap isn't too useful.
  • He is one of the "tie trio" between him, Nep, and Draco - mainly due to the constant swapping.
    • Notably - while Nep and Draco ties are understandable due to their highly similar strategies, Aelis output constantly changes when facing opponents with a fast changing output. Which lead to Nep/Draco strategy to immediately play against his move to output differently. Thus leading to an endless draw spiral.
  • His first move strategy does however - lead to a consistent edge against certain strategies
    • Against Nepgear - this gave him an edge to tie or win all encounters
    • Against Draco rotating first move - this led to an endless tie, always.
  • I'd say that the strategy itself has a lot of merit, as part of a bigger analytical engine
    • The main downfall imo, would be that such strategy requires far, far more tuning in terms of number
    • Such strategy also need to be a lot more complicated, has multiple prediction and categorization routes, which couldn't be done without a bigger model and more data/observation.

Ledah:

  • He rotates around 6 moves - PSRRSP
  • Simple, but not a throw. This fixed pattern has a very strong counter potential to strategies that assume their opponent has a strategy
  • This meant while not a strong contender, his strategy consistently beat certain strategies.

Kaya:

Well, Kaya posted their own tactic, so I'll just add a commentary:

  • The mix of unpredictability and strategy is the main keypoint of this strategy
    • It allows the strategy to strongly counters certain strategies
    • It allows the strategy to try and keep an equal footing against others
  • Random by itself - performs badly. The larger the tournament, the less likely that Random drops out before the finals
    • This is clearly not the case - and the main reason why Kaya's strategy was allowed to sit in the gray zone.

Tissy:

A complicated mess of a Finite State Machine. His strategy simply has 6 states, corresponding to counter/lose/draw against his or his opponent last move.

He updates the state every 2 moves, which allows a certain degree of flexibility

I'd say in general, his strategy is good at predicting certain counter-move strategies, and it seems designed to do just that

I'm not sure if there's any reason for the states to cycle, and you'll have to inquire him for any special reasoning!

Draco & Nep:

I'm grouping these two due to their similar strategies. They're both:

  • Strategies with a self-determined first move
  • Reacts immediately to opponent moves
  • Both tries to directly counter opponent's move if they lost last move

The main key difference would be of these three details:

  • Draco cycles his first move - whereas Nep has a fixed first move
  • Draco groups/considers draws and winning as "similar" outcome to react upon, Nep groups draws and losing.
  • Draco counters his last move upon winning (or draw), whereas Nep copies his enemy last move

This does lead to a surprising outcome - while Aelis draws with Draco and consistently beats or draw Nep - Nep consistently beat or draw with Draco

This is due to the limited potential interaction between the two - based on Draco first move. 2 of which leads to a draw, whereas 1 of which leads to a loss

  • The skew of the 1-2 ratio could be explained by the skewed first-move Draco give if they face against eachother at latter rounds

Else:

His strategy is a weighted counter based on his opponent last two moves - simple, but surprisingly resilient.

By default - it counters certain pattern, and is countered by other patterns - hence it can lead to strong counter/weakness against strategy that is somewhat consistent in what they output

  • Against strategies without a complex observation/time based state (which is most) - his strategy result in a clear win or loss. Which, in this tournament, is basically everyone but Kaya.

Yoshi:

He incorporates some logic with a simple rotating pattern for tiebreaker:

  • If he wins, play same move
  • If he ties, choose a pseudo-random rotating move
  • If he loses, counters the enemy last move (not the way he described it, but that's effectively what it ends up being)

He also have a panic mode during which he just straight up copies his enemy's last move.

Pipstickz:

He always play paper. Except when he sees his opponent play Scissors for their last move - then he plays Scissors.

  • Surprisingly effective at countering counter-strategies despite its simplicity
  • Despite its simplicity - he did manage to win the tournament under specific orderings - just not very consistent.

=============================

Commentary:

Well, most of my observation are listed at the above strategy discussion. There are also some key things I noticed during testing various setup, interactions, changing the participants, adding test strategies, removing certain participants to observe the rest and...

It was honestly, a fun experience seeing how things clashed out. The tournament is actually a lot closer than it first seem to be - other than Kaya domination being a seemingly constant as long as her confusion array isn't horridly countered due to bad distributions.

There are a few main things I'd like to talk about:

  • The tournament has a very, very strong counter dynamic. A > B > C > A relations can be easily observed if you look at the documented pairing outcome - and that was a very, very strong determinant of how the results ends up to be.
  • Nobody completely dominated everyone else - It was consistency against a larger, higher performing crowd that also likely to make it to latter rounds that gave Kaya their domination. Ledah and Pip - arguably the underdogs of this tournament, both have a very, very strong track record of beating Kaya. However, they are unlikely to make it to the inner rounds - giving Kaya a very strong advantage, facing mostly opponents they're comfortable beating past the first round.
  • As such - a change of the tournament roster have been observed to drastically change the top spots. Pipstick - a strong Aia counter, when removed, bumps her position/ranking dramatically. Without neither Kaya or Pip - Aia actually consistently wins - or tie top spot in almost, if not all tournament. Notably however, the chances for ties also increases dramatically.
  • Similarly with some slight changes - Draco actually comes out as a top winner, not Tissy nor Else as anticipated.
  • The existence of observation/random-ish strategy serves as a very, very nice method of making the tournament outcome more interesting to observe - while strong counters gave rise to an interesting variation in dynamics as the participant changes, adaptation and non deterministic outcome (not strong counter - can win/lose/draw at specific ratio, such as the 1:2 win/draw chances of a faceoff between Nep and Draco) leads to variation in how likely someone will win given the same roster, giving rise to underdogs winning tournaments. This is an element that makes many sports interesting to see as well!

All in all, I had great fun hosting this, and I hope all participants feels similarly. It is unlikely this event will be re-run anytime soon (due to the nature of it all) - but expect to see similar events in the future!

Thank you all for your participation!

Link to comment
Share on other sites

I have awarded Kaya the Wishpoint on behalf of Demonic God.

edit: I have made a mistake in the description of the wishpoint reward; the reward I had meant to grant had been for Kaya's performance in the wonderful quest "A Hunt for Darvin" - please pay no heed to that which I had declared above.

Edited by Aia del Mana
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Forum Statistics

    17.5k
    Total Topics
    182.5k
    Total Posts
×
×
  • Create New...