From: Ian Jackson Date: Tue, 19 Jan 2021 20:05:53 +0000 (+0000) Subject: hidden: wip notes/plans X-Git-Tag: otter-0.4.0~608 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=45b160634020788a9940d315a10435074fcbe8f4;p=otter.git hidden: wip notes/plans Signed-off-by: Ian Jackson --- diff --git a/HIDDEN.md b/HIDDEN.md index 44acec6d..077bfd99 100644 --- a/HIDDEN.md +++ b/HIDDEN.md @@ -21,7 +21,6 @@ Player sees: number of tokens SVGs of blanks at *calculated* locations Others see: nothing - Quacks bag - messy ------------------ @@ -31,6 +30,7 @@ Player sees: number of tokens SVGs of blanks at actual locations Others see: nothing +Magic "stopping" token is different to player but still invisible to others. Has a different "back". Pick-up deck @@ -52,7 +52,8 @@ Player sees: cards laid out as they like SVGs of fronts at actual locations Others see: number of cards SVGs of backs at calculated locations laid out predictably, sorted in groups according to back When card added, set of visible ids does not change, nor does no knowledge of which is which their ordering in the calculated view - but agree on the layout But actual<->visible mapping is permuted (for everyone, the same way) + but agree on the layout But actual<->visible mapping is permuted (for everyone other2 + thais the player, the same way) @@ -63,3 +64,13 @@ Everyone sees: card back SVG of back at actual location, by normal rules only know what it is from historical information IDs are not messed around with +Quacks committed token +---------------------- + +People see the same things as for a bag + +This is a separate bag with a separate name + You can move things from this to another bag. + "Took something out" "put something in ..." + +It can be un-blinded by "emptying" - a thing bags can do diff --git a/HIDDEN2.md b/HIDDEN2.md new file mode 100644 index 00000000..69660d0e --- /dev/null +++ b/HIDDEN2.md @@ -0,0 +1,69 @@ + +Concepts +-------- + +Views + + When a Thing is happening, the happener divides players into + equiv classes (usu, (i) our player (ii) other players) + + View specifies some Occultations + + Each Occultation is applied equally to all players within a + View so that they all see the same + +Occulations + Some of these these occur at a point in time and then + wait to become relevant. + Some have a continuous effect. + + Only one occultation for each piece for each player at a time + +Identity scrambled + Instantaneous effect: + - Choose a permutation of affected pieces + - Permute the visible/real ID mapping + - If the players in this view can see the real locations, + permute the locations too (actually moving the pieces) + Typ., redone when new pieces are added to the affected set + +Location hidden + Occultor provides layout area + Pieces laid out in order according to err something ? + Occultees see these synthetic locations + + When an occultee moves, that becomes actual location, + now piece is no longer occulted + Z level needs special handling - overwrite + original Z with something + When a non-occulteee moves, that is still actual location + but it isn't visible + +Totally invisible + The piece disappears from view. Message explaining why + "Alice puts a black token into Alice's bag" + +Other +----- + +Default hidden face + When something was occulted it is "face down", mostly, + until it is put somewhere with a faceupness field + +When happens + When piece is released, occultation may change or be effected + or something + + +pinning/enablement etc. + Need way to introduce these per-player pieces + Also need way to de-activate them + + +Future +------ + + SVG ondemand or hashes or something to avoid + (i) retransmissions of lots of data + (ii) leaks by data sizes + (iii) huge a-* files diff --git a/HIDDEN3.md b/HIDDEN3.md new file mode 100644 index 00000000..0739c052 --- /dev/null +++ b/HIDDEN3.md @@ -0,0 +1,32 @@ + +Data structures +--------------- + +* Occultations for a piece + Vec, Occultation> + where final entry has empty Vec and is default + + occulter (piece which generates the occultation) + enum OccultationKind + Visible, + Scrambled, + Displaced { layout area etc. } + Invisible, + } + +* Visible piece id map for each player + +Methods +------- + + scramble piece set + Vec affected players (View) + see Concepts "Identity scrambled" + + set occultation + + +Filtering +--------- + +Updates filtered when generated