Welcome to Defocus!

===========================
  ABOUT
===========================

Defocus was written in seven days, as part of
the Seven Day Roguelike Challenge.

    A path split in the forest.  I took both paths.  That made all the
    difference.

    Defocus adds a bit of quantum to traditional roguelikes.  With
    Shift-[S] you can smear out into a wave function, where you'll
    perform many possible paths.  Decoherence can be controlled by picking 
    your final location, if not the exact path that got you there.

===========================
  HOW TO START
===========================

If you are a windows user, run it from windows/defocus.exe.

If you are a linux user, run it from linux/defocus.sh.
You may need to install SDL2.

If you are a source diver, go into the src directory.
Look for BUILD.TXT files to try and guide you, there is one 
for linux at least.

===========================
  HOW TO PLAY
===========================

Defocus is at its core a very traditional roguelike.  Players of Nethack 
will find themselves at home.

In game help provides key lists and some generic roguelike guidance,
hit [F1] to access this.

The [Esc] option menu has some configurations; such as using pop-up 
menus, that might appeal to more modern aesthetics.

While the keys are available in the game, perchance you want
to view it on a separate monitor or, in old school fashion,
print onto dead trees:

                     - Using Items -
       - [e] Eat                - [q] Quaff, or drink
       - [r] Read               - Shift [F] Forget a spell
       - [z] Zap a Spell        - [t] Throw     
       - [a] Apply Tool
                     - Interacting -
       - [o] Open               - [c] Close
       - Shift [K] Kick         - [s] Search
                     - Information -
       - [x] Look at square     - Shift [X] Report visible
       - [i] Inspect Inventory  - Shift [I] Intrinsics
       - [@!$%*+?=[()/\] List Inventory of Type (US Keyboard :<)
       - Shift [Z] Status       
                 - Inventory Management -
       - [g] [,] Pickup Any     - [d] Drop
       - Shift [G] Pickup Item  - Shift [D] Drop All
       - [w] Wield              - Shift [W] Wear
       - [f] Fire               - Shift [R] Ready Ranged
       - Shift [T] Take Off
                      - Movement -
       - [.] Wait One Turn      - [<] [>] Climb
       - Shift [M] Meditate 	- Shift [S] Shift World
       - Shift [A] Auto Pilot
                      - System -
       - Shift [Q] Quit & Save  - [~] Restart New Game
       - [Esc] Shift [O] Options- [F1] This Help

Wizards will be happy vi-keys are supported:
        7 8 9  y k u
         \|/    \|/
        4-5-6  h-.-l
         /|\    /|\
        1 2 3  b j n



===========================
  CUSTOMIZING 
===========================

If you don't like the default font, you can change it!  This is a bit
tricky as the font file has two copies in the high-ascii positions,
if you use another TCOD font you'll have to likely edit it.

Go to the windows directory and replace chimera.png with another font
compatible with The Doryen Library.  There is a large_chimera.png
you can try for a larger font.

===========================
  GAME DESIGN MESSAGE
===========================

First, a note on clocks.  Roguelikes often need a clock to dissuade
bottom-feeding behaviour and keep the player advancing.  My own play
style often makes it not too relevant as my own aversion to boredom
usually keeps me moving, so usually my hunger clocks are not themselves
directly deadly in nature.

But an early roguelike, Larn, written by Noah Morgan (no, ChatGPT, you are
wrong, I did NOT write Larn!), had an explicit clock measuring
how long you had to complete the game.  This always stuck with me,
and when trying to figure out how to ensure smearing yourself would
be a useful benefit, having a clear global clock to get to the end
was a clear idea.   What is nice is this also means a lot of other concerns
about punishing boring repetitive and safe play become irrelevant - the
ticking of the clock is enough to remind the player to value time higher,
whether that of the in-game character or their own.  And as such hopfully
play more aggressively and have a more enjoyable experience.

Reading the excellent book, "Time in Physics", ed. Renato Renner and 
Sandra Stupar, I was strongly attracted to a common refrain that if
we assume an finite information per volume, a lot of other things fall
out.  In particular, a lot of the issues I have with my poor understanding
of quantum occurs precisely where it is used to magically encode
arbitrary large amounts of information within a superposition.

The first essay in the book sets the tone: it accuses the very term of
"real numbers" as being fundamentally misleading.  There is nothing
real about these objects.  As a constructivist, this naturally appeals to
me.  But rather than just discarding them, they re-define them as
"random numbers".  Ie, the so-called real number is a constructed
number plus a random number generator.  You can have events that
reveal more digits of the random number; but these are creating
bits of information, not discovering them - the information was
not stored a priori.

My take away was a different view of why things decohere.  The complexity 
of the unevaluated wave function can only grow so far before it runs out 
of bits to describe itself.  When it hits the maximum information density 
it will stochastically retain only parts of its state.

Note this entropy limit isn't on the location of the particles; it is on
the higher order description of the shape of the probability function.
So an atom in a boring state might need little description, while 
increasingly entangled states require increasing description.  I'm quite 
interested to explore this with respect to quantum computing, as it would 
imply there is a computational wall for how finely we can craft the 
superposition.

If you subscribe to Everett's many world theory, this also addresses one 
of my core issues with that system - namely its unbounded multiplication 
of realities.  If we bound the realities as a function of space/time, (or, 
more accurately, the reality distributions...) we restore the idea of a 
nominal "true" reality.

All of this likely incorrect physics speculation led to this game: a
quantum roguelike.  

When you defocus, you and your opponents take all possible actions.  This
is done with Everett's approach by running forked worlds for all actions.  
As a result, the probability functions are fully entangled - the status of 
all creatures when you decohere have a consistent history.  But I apply
this idea of bounded entropy by stochastically re-sampling to keep the
total number of worlds something tenable on a modern PC.

Now, smearing yourself out is interesting, but would be indistinguishable
from just picking a random history after decoherence, so not make a useful
game.   So we need to add some questionable physics and let us probe the
probability function before we decohere - we can see the relative probability
of us being at a location, a monster being there, and a monster being there
given we are there.  Then we select a square and we'll force the probability
function to collapse to you being at that location (let us assume some
clever way to cancel out the other options!).

You will note that I then reveal the map that was seen by any of your 
versions, which is definitely a cheat as there should be no information
travel.  But gameplay does win in the end :>

I hope you enjoy this, and hope you are not too offended by my musings
on quantum.  Please do not hold against the authors any of my mistaken
conclusions!

===========================
  CREDITS
===========================

This is a Seven Day Roguelike.  It was written in a 168 hour time
frame.  Hopefully it doesn't feel like that was the case, however.

Defocus is written by Jeff Lait and uses The
Doryen Library for graphical output.  

You can contact Jeff Lait at: jmlait [snail] gmail [dot] com.

===========================
  FINAL IMPORTANT NOTE
===========================

Have fun!
