Code Monkey home page Code Monkey logo

hanabi.github.io's People

Contributors

aigul9 avatar argothiel avatar autofix-ci[bot] avatar bradybot avatar cjwomack avatar crossproduct42 avatar darthgandalf avatar dependabot[bot] avatar dranax avatar ehdrone avatar florian-5f3759df avatar fpvandoorn avatar guolinm avatar gw12346 avatar j-fricke avatar jk15162428 avatar lel0uch-h avatar newduke avatar padiwik avatar pianoblook avatar rahsosprout avatar reaverse3 avatar romain672 avatar stuurrm avatar thedaniman avatar timotree3 avatar venhance avatar waweiwoowu avatar wjomlex avatar zamiell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

hanabi.github.io's Issues

Convention Proposal: Disease Finesse

Disease Finesse (Card played matches blind card):
2019-10-23_0208_(Question_on_diseased_cards)

I believe this is a form of Diseased finesse that should be added to the doc in some manner.

Valetta received 4's clue touching B4. She considers it to be P4 as Dr_Kakashi is holding P3. So she does something else.
Dr_Kakashi now knows that he has P3 on slot 2. Dr_Kakashi also knows that if he plays P3 it will tell Valetta that her B4 is P4 and thus is "diseasing" it. Dr_Kakashi play P3 anyways.
When it gets to asaelr's turn, he realizes that, if he does nothing, Valetta will bomb B4 instead of doing the B4 finesse. Dr_Kakashi wouldn't of have put the team in this position without a reason. So he plays his finesse position and plays P4. Healing the play exactly how Pestilent bluff works, except only 1 blind card plays.

Disease Bluff (Blind play does not match card played):
2019-10-08_0757_(question- pestilent bluff in pink)

Here's another form of Disease Bluff that's undefined
Dr_Kakashi clue's blue to Kyle making Kyle think he has B5. Kyle plays finesse position and plays B4.
Jeff previously did not know where his i5 is located.
He plays i5 from slot 5, showing that the clue Kakashi gave was a positional clue and tells Kyle that he does not have B5.

Cow and Pig Sounds

Would it be possible to add in Moo and Oink sounds to the Cow and Pig Variant?

Finesse position exception and allowable stall clues priorities and fix clues

Since allowable stall clues was changed recently, there are few things unclear:

Finesse position exception means that often 5 stall is performed when a player is forced to give a clue and there's a single playable unclued card in someone's finesse position.

However, when player is forced to give a clue and cannot give normal play or save clue AND cannot 5-stall, then in the documents, it's not clear what has higher priority:
Cluing card on a finesse position, disregarding finesse position exception
Or giving a tempo clue?

Also, according to changes, when player is forced to give a clue, are players allowed to give a fix clue (even if there are no cards being in immediate danger of misplaying) in order to prevent resorting to 5-stall?

Rank Choice Ejection (with 2 and 5)

  • If a playable 2 (or 5) on chop is clued with rank instead of color, and it is the only 2 (or 5) and color in the player's hand; it is a signal as an ejection, and the next player should blind-play their Second Finessed Position as a Rank Choice Ejection.
  • Question: Which slot you should respond?
    • If the card is one or more away from being playable, then you should blind-play nothing since it is just a Save Clue.
    • If the card is trash, then you should blind-play slot 1 as a trash bluff.
    • If the card is playable, then you should blind-play slot 2 as a rank choice ejection.

information strategies

Hi! would you consider adding the "information" based strategies from this paper? https://sites.google.com/site/rmgpgrwc/research-papers/Hanabi_final.pdf?attredirects=0

The basic idea is this hat-guessing game: consider 5 players each with a secret number from 0 to M-1; each can see everyone else's number but not their own. If one player can give a hint between 0 and M-1, they can immediately communicate to all other players by hinting the sum (modulo H). If they can only give a hint between 0 and H (where H < M), they can still communicate log(H) bits of information to everyone via a similar (but more complicated to describe) scheme.

Implementations here:
https://github.com/WuTheFWasThat/hanabi.rs/blob/master/src/strategies/information.rs
and here:
https://github.com/Quuxplusone/Hanabi/blob/master/InfoBot.cc

These give AFAIK the best known results to Hanabi

Example Submission: Clandestine Pestilent Bluff

2019-10-24_0848

Here scharkbite can clue 3's to asaelr.
Jeff will play finesse position. R2 plays
Romain can see that Asaelr will play K3 as R3 since the card that played matches the clue that was given. In essence, Asaelr's K3 is "diseased."
Romain follows the Disease Bluff convention. First he looks around to see if R3 is in anyone's hand besides the clue giver. Even though scharkbite has 2 R3's he can reason that it wasn't the intention of scharkbite. Since there are no other R3's to clue in order to "heal" the problem. He must play his finesse position to show Asaelr that he does not have R3.

2nd Example:
2019-10-24_1129_(3_to_kyle)
3's to Kyle

8-clue save stall clue inconsistency

In table it says "save any card off-chop"

In 8-clue save section, it says "Players at 8 clues gain the special ability to save any card that they want, on or off chop, as long as the card is not freshly drawn. "

So either any card or any card that's not freshly drawn.

So, any card or any slot2+ card?

Also, should "trash stall" be added below "hard burn" in case there are no clued cards in anyonyboy's hands? Rare but can happen.

trash and chops

Every time you have a trash card identified for example you have a two red because the clue was to play a 5 red and it was the newest, so you know that the red card is disposable. That card ignoring it position becomes as a chop?

The 5's Double Chop Move (2-player only)

  • Normally, when a player re-clues one or more 5's with a number 5 clue, it would be a Play Clue - the left-most 5 is playable right now.
  • In a 2-player game, if this would require two or more blind-plays (e.g. as a Self Double Finesse), then this interpretation is unlikely. Instead, we agree that this should communicate a Double Chop Move.

Edit to Null Convention Proposal

Edit to Null Conventions

Once all null cards are played and/or “gotten,” null conventions turns off and all conventions turn back on.

Example:
Null 5 is cm but Null 4 has been played,

Convention Proposal: Reverse 5 Color Ejection

2019-10-20_0523

I believe this is the only way a Reverse 5 Color Ejection can be done and it's good enough to consider to add to the doc.

Dr_Kakashi can give green to Sucubis.
Sucubis has to respect that it's G2 and will be forced to do something else.
Jeff can see that the intention of the clue is a 5CE and will immediately eject.
Jeff can also reason that Sucubis did not play G5 as G1 because Sucubis thinks he has G2. The only way Sucubis can reason that is because Jeff has G1 on finesse position and/or layered in.

Thus this is a potential 3 for 1 clue.

Worse Case Scenario:
Suppose that someone has W2. Sucubis will clue the W2 as a play clue to finesse the W1 into the W2. Stacking a 2nd finesse onto the original finesse.
Jeff will still eject. Which will surprise Sucubis as we are not allowed to jump ahead in this manner and must play our finesse's in order.
Because Jeff ejected, Sucubis will immediately know that Dr_Kakashi's initial clue was a 5CE
The purpose of explaining this is to show that a fix never needs to be given.

New Main Document Proposal: Contextual Document

Not sure if it's feasible, but it would be nice to have a Contextual Document added to the Main Documents. Just like the Reference Document, we can have it separated into levels. Maybe even have the levels correspond to the levels of the Reference Document to include contextual situations and/or exceptions to our conventions.

For example we can start it off with something basic.

2P Scenario
Cards played on the stack: Y2

Alice discards saying that there are no playable cards and/or cards to clue
Bob Discards Chop. P4 is discarded.
Alice then clues a yellow card on slot 3
Bob should find this strange as she could've clued this yellow card as a play clue when it was on slot 2. Since she discarded previously, she's saying this yellow card isn't playable. The simplest explanation is that this yellow card is trash and Alice is using this card to chop move slot 4 and 5.
Bob discards the yellow card and it reveals itself to be Y1

This sort of falls in line with why a 1 would be "stale." This would be an example of a stale color clue.

A good next layer of the onion for this is for Bob to see what he discarded.
Cards played on the stack: Y2 G4

Alice discards saying that there are no playable cards and/or cards to clue
Bob Discards Chop. Y1 is discarded.
Alice clues Bob yellow touching a card on slot 2
Now Bob can reason that this newly clued yellow card is Y3 because he discarded a blocking Y1 card. Maybe he can further reason that he wasn't given 3's as he may have a G3 in hand. He could potentially have both R3's.

Another Context Read:
3P
Cards played on the stack: R1

Alice clues 2 to Bob as a 2 save.
Bob can look at the replay and see that this 2 was on finesse position, while Cathy was holding R3.
Alice has plenty of clues at that time, but decides to discard.
Bob can safely reason that this 2 is not R2

For the advanced section:
It could list my Potential Conflict with 5CE Exception, if it is indeed deemed to be an exception to the exception.
https://github.com/Zamiell/hanabi-conventions/issues/57

Speculative priority plays

Sometimes a playable card has multiple possible identities. The only convention that addresses this is Rank Priority Prompts/Finesses in Dual-Color Variants, and I don't think it's clear or good in its current state. Here are some points:

  • The logical basis of the priority plays convention for globally known cards is that it provides strictly positive efficiency. When applying this convention to partially known cards, it really only enables efficiency in situations where the player has some context that makes the card at least very probably one of the n identities, and the convention loses efficiency in situations where no such context exists and a player >1 away has the connecting card.
  • The wording should be "in multicolor variants" since it applies just as much to rainbow variants.

I therefore propose the following:

  • "Priority plays" of not-globally-known cards are now "speculation plays".
  • A speculation play shall induce a blind-play or prompt only from the very next player, and only in situations where that player sees no card in any other player's (excluding the speculative player, of course) hands that connect to any of the possible identities of the played card. This has the upside of preserving "speculation bluffs".

The Bad Touch Finesse (For 2's)

  • Normally, if number 2 is clued to a chop card, it is considered to be a Save Clue (as the 2 Save convention).
  • However, it is possible for players to transform this Save Clue interpretation into a Play Clue interpretation if they violate Good Touch Principle and intentionally duplicate another 2.
  • In this situation, the player who received the clue will know that the chop card matches.
    • If two 2's were clued, then the other 2 is obviously the exact same copy as the chop 2. In this situation, the left-most card can be played and the other card discarded as known trash.
    • If three or more 2's were clued, then any of the other cards could be the duplicated 2. In this situation, the chop card should be discarded and then Elimination Notes for that card written on the other 2's.
  • For example, in a 3-player game:
    • Nothing is played on the stacks.
    • Alice clues number 2 to Cathy, touching a red 2 on slot 3 and a red 2 on slot 5 (her chop).
    • Bob knows that normally, this would be a 2 Save on the red 2. However, Alice is violating Good Touch Principle, so she must be trying to communicate something extra.
    • Bob blind-plays his Finesse Position card and it is red 1.
    • Cathy knows that since a clue that looks like a 2 Save got Bob to blind-play something, then both of the twos must be red 2. Cathy plays the left-most copy and then discards the other one later.
  • The Bad Touch Finesse is contextual and does not always apply:
    • If the clue giver was an Occupied, then it is an Occupied Play Clue and the other 2's are not necessarily duplicated.
    • If the clue giver gave a 2 Save early and had other Play Clues to give instead, the clue could be so bad that it would trigger a Finesse and the other 2's are not necessarily duplicated.

Unnecessary Gentleman's Discard Chop Move

gentleman discard chop move
Alice have a known r3 in her hand.
All cards in Bob's hand are saved except exactly 2.
Alice discard r3.
Bob play his finesse position : it's r3.

From that, Bob know his chop is usefull (from Alice pov).
So why not chop move that?
I think all the others conventions who make a player deducing a card is usefull make that player cm this card. So why not on this case?

.

  • By extension, if Alice discard r3, and if Bob's hand is : r3-x-b1-b1 with b1 already played/clued at the moment of the discard (from Alice pov), Bob should chop move the x card.
  • Bob should keep in mind his chop move card could be a card already saved in Alice's hand.
  • If Alice have discarded r3 for another reason than saving Bob's hand (per example, if she got no clue left, and Cathy's chop was critical OR if the card was layered OR if the card was already clued on Bob's hand OR if the clue gained let Bob did a finesse (or bluff?) OR?), Bob should not chop move.

Occupied focus inversion

Example 1)
occupied focus inversion
Alice is occupied, she have a play.
Alice clue two cards in Donald's hand.
Either Bob or Cathy have no play, so they could do the same clue.

Why Alice did that? Cause the clue should not be interpreted normally.
So if this clue could be a save, it's an occupied play clue.
If this clue couldn't be a save, it's an occupied focus inversion : Alice shouldn't play the focus of the clue, but the other card.

The Bad Touch Triple Finesse (For 4's)

  • In the same way that it is possible to perform a Bad Touch Double Finesse to "get around" a 3 Bluff interpretation, it is also possible to perform a Bad Touch Triple Finesse to "get around" a 4 Double Bluff interpretation.
  • For example, in a 5-player game:
    • It is the first turn of the game and nothing is played on the stacks.
    • Alice clues number 4 to Emily, touching two red 4's.
    • Bob blind-plays red 1.
    • Cathy blind-plays red 2.
    • Donald knows that normally, this would be a 4 Double Bluff and that no-one should play any more cards. However, since the red 4 was duplicated, this must be a Bad Touch Triple Finesse, so Cathy blind-plays her Finesse Position and it is the red 3.
    • Emily knows that this cannot be a 4 Double Bluff, or else Donald would not have blind-played anything. Thus, this must be a Bad Touch Triple Finesse, so Emily plays her left-most red 4. The next time that Emily discards, she will discard the known trash red 4.
  • It is also possible to Bad Touch Triple Bluff, Bad Touch Triple One Third Bluff, and so on.

Order Ejection (deleted)

  • This convention is deleted, as it is hardly ever used.

Also:

Reverse Order Ejection (deleted)

  • This convention is deleted, as it is hardly ever used.

Convention Proposal: Extension to disease bluff


We've had discussions where color self-bluffs are illegal and will not be considered positional clues. However, I feel they may work as a extension of disease double bluff.

Romain here can see that there is no R1 so he blind plays finesse position as a known bluff. B2 plays.
Jeff see's that Romain played. The only explanation is that he's patching into R1. Jeff will play his finesse position and should be expecting a B3. G1 plays. Since the clue got 2 unrelated cards to play it meets the definition of double bluff and immediately resolve.

The Pink Lie Prompt & The Pink Lie Finesse (by Razvogor)

  • Normally, when players give a clue to a pink card with a number, they exactly match the number of the card in order to satisfy Pink Promise.
  • Some common situations where players violate Pink Promise are covered in the "The Pink Play Clue Lie (which resolves immediately)" and the "The Pink Play Clue Lie (with multiple 1's)" sections above.
  • Rarely, it is also possible to lie about the rank of a pink card that is not yet playable. Doing so communicates the slot number of where the connecting card is.
  • For example, in a 3-player game:
    • Pink 1 is played on the stacks.
    • Alice clues number 4 to Cathy, touching a pink 3 on slot 1.
    • Bob has no clued cards in his hand.
    • Bob can see that Alice's clue breaks Pink Promise. Furthermore, Bob can see that Alice had no good reason to do so: there are no other pink cards in Cathy's hand, so nothing was preventing a pink color clue.
    • Thus, Alice must be trying to communicate something extra. This must be a Pink Lie Finesse that communicates which slot to play, so Bob blind-plays his slot 4 card and it is the pink 2.
    • Cathy knows that since Bob blind-played his slot 4 from the number 4 clue, this must be a Pink Lie Finesse and that she must have the matching pink 3.

Convention Proposal: Brown Positional Clues

2019-10-24_1004

I'm not quite sure how to propose this, but I will explain what I feel should be interpreted as a positional clue.

Jeff's hand was previously locked with a 2 save. Jeff thus knows that this is not G2.
Jeff also received a browns clue earlier letting him know that slot 5 is either N2 or N5.
Because jeff can see that there are no playable 1's in scharkbite's finesse position. He can reason that the clue is a positional clue telling him which slot is N2. 2 in this case means slot 2 and blue means slot 3.

Scharkbite can see that Dr_Kakashi gave a play clue on the 2.
However, scharkbite can also see that blue could've been given to tell him that he has B1.
Scharkbite has to reason that Dr_Kakashi is not allowed to hard burn.
Does the clue meet minimum clue value principle?

  1. Is this a cm move? It is not.
  2. Does it get at least 1 card to play. It does not
  3. Does this clue prevent a possible discard. No
    Since he can reason that the clue does not meet minimum clue value principle. He has to play finesse position.

In a situation where Jeff is not holding B5, then scharkbite will just reason it's a play clue on the 2 and play finesse positional normally.

When Jeff plays the indicated slot for no other reason. Scharkbite will not go on to continue playing his finesse position and will stop.

I believe it's possible to extend this convention to other variants besides Brown. So I'm not asking this to be a strictly Brown convention. Though, if determined to be, then so be it.

Form of Trash Double Bluff Proposal

2019-10-25_0514

By current definitions, Trash Bluffs must only touch 1 card and Trash Double Bluffs must touch 2

I believe this is an extension of Pestilent Bluff only with Trash.
Venusaur gives yellow to Charizard touching a single trash card Y3.
Mewtwo blind plays Y4 which matches the clue given to Charizard
Pikachu see's that, if he does nothing, Charizard will go on to misplay Y3 as Y5
Pikachu plays finesse position to heal the situation

Trash Rank Trash Clue

for multi-fives: I think it was related to the fix clue I gave on turn 30 of 55197, but I can't recall what it was.
micerang was going to play the y1 next into a layered gentleman's discard from early game, looking for exactly g2. But it needed a fix. I chose 1s to micerang and there was a lot of discussion generated from that
since the 1 clue hit the 5 instead and it's not trash
I think the convention I wanted to propose was that a rank clue is normally interpreted as cluing trash when all the cards of that rank have been played, unless context dictates otherwise
(in particular, "context dictates otherwise" means "lategame when there won't be many ranks available")
maybe limit it to 1s or 2s
multi-5s already loses a bunch of conventions based on 5 rank clues
also losing trash conventions because your 1s clues are interpreted as play clues on 5 seems garbage
(no pun intended)
there was some debate here as to whether I gave the correct clue, but the important point is whether g5 needs a fix
or whether micerang should hold off on discarding it (or even hold off on discarding y1) because of that
actually I think the same should maybe apply in pink/omni games as well
trying to phrase it into something coherent:

Add text to the Prompt section re: continuing to play

The level 2 "Priority Prompt" section says:

Similar to a normal Prompt, if a Priority Prompt made you play the left-most card and it was not the matching card, then you should continuing playing clued cards until you find the matching card.

The basic Prompt section doesn't mention continuing to play.

Convention Proposal: Unknown Trash Finesse

I believe I have an interesting convention proposal
Cards played on the stack: None
Alice clue's bob 1's
Bob's Hand: y1 - y1 - g1 - x - x
Bob plays G1 and his hand now looks like: y1 - y(1) - y(1) -x - x
Cathy clue's Bob Yellow picking up y1 as unknown Trash.

Alice can safely play slot 1 to demonstrate it is trash
Bob will immediately know it’s trash because had Alice thought she had Y2, she would wait for Y1 to play first.

Potential Conflicts:
Unknown Trash Discharge – Currently any unknown trash is a discharge

2nd Example:
Played : B2
Cathy's Hand : B2 - x - x – B(3)
Alice clue Blue to Cathy.
Bob will play Finesse Position

3rd Example
Played on the stacks: G1
Alice clues green to Cathy picking up G1
Cathy's Hand: x - (G)1 - x - x - x
Donald's Hand: x - x - x - G(2) - x
Bob will play Finesse Position

The Missing Link Finesse

2019-10-23_0126_(7_for_1_finesse_where_lie_resolves_itself)

For the first turn, Kyle clue's 4s to Dr_Kakashi to initiate a G4 finesse.
Dr_Kakashi plays G1
Sucubis Plays R1 then G2
Dr_Kakashi will then look for G3 and plays R2. Demonstrating to the team that G3 is not in their hands.
Dr_Kakashi will then play B1 and the finesse heals itself immediately, since he now knows that he too doesn't have G3

move advanced conventions from README

To beginning players our conventions often seem overwhelming, and there is the perceived idea that you have to learn all conventions before you start playing.

Suggestion: We could alleviate this problem by moving all conventions, except the First Principles and the Beginner Strategies to a new file called "reference" or something.

Hesitation Blind-Play cleanup

The language on HBP currently implies that an HBP may only be possible to the player immediately after the player who hesitates, when it can in fact be to any player.

Known priority bluff: conflicting information + self-finesses

According to new conventions, known priority bluffs are allowed. However, in "expert strategies" section, known priority bluffs are stated as illegal.

Also, I noticed that there is no section describing self-finesses (they're not in beginner and intermediate strategies either) and nuances that go with it. Perhaps "reverse finesse" section could be renamed "reverse finesse and self-finesse"?

Convention Proposal: 8 Clue Lock Misplay

8 Clue Lock Misplay:
Intentionally playing a card to draw the next playable card.

Problems with Convention:

  • May look like positional misplay. Players need to look around the table for context.
  • This convention may be too rare. Just posting this incase you would like to add to the doc.

Potential Conflict with 5CE Exception

2019-10-24_0310_(5CE_question)

Due to the exception, Valetta needs to reason whether or not this is a Reverse Finesse and thus a play clue on the i5.

Because Dr_Kakashi avoided picking up B5, she can reason it is not a play clue on i5 but a 5CE.

Volume button request

Any chance we could get a volume button in the settings? I typically keep my volume up pretty high, both on my computer and my browser, and would love to be able to just place the hanabi volume where I want it instead of adjusting my own settings every time.

Thank you!

Character Traits have been ending the game incorrectly

The game ended with a loss with no strikes and no reason for it to end due to traits.

Traits:
str8away - Stubborn
klapbot - Insistent
ninjasquirrel21 - contrarian
squirreliche - compulsive

It ended after str8away played a card. The previous player (squirreliche) had clued so that shouldn't have been a problem. Klapbot the next player had only clued once and the card he clued was played immediately after that, so that shouldn't have been a problem either.

screen shot 2019-02-15 at 9 35 19 am

We also had this problem the previous time we played with traits where we thought it ended for no reason, but I don't remember the details of that game.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.