otter 0.7.1

Otter game system; common infrastructure Rust crate.
Documentation

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"


Scrambling vs Visible
---------------------

If any player sees Scrambled, none see Visible.  This is because
Scrambled works by permuting actual locations.


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