A host-built view of game state that dialogue is allowed to read. fields holds the readable
values; source keeps a reference to whatever it was projected from, for the host's own use.
Dialogue reads fields and can never reach source.
Summary
Functions
Builds a projection from a map of readable fields, optionally remembering its :source.