The game IDs for Net (and Netslide) have always been random seeds
[sgt/puzzles] / puzzles.but
index 5f8bff4..17bf476 100644 (file)
@@ -141,27 +141,90 @@ solving it yourself after seeing the answer, you can just press Undo.
 
 \dd Closes the application entirely.
 
-\H{common-id} Recreating games with the \ii{game ID}
-
-The \q{\i{Specific...}} option from the \I{Game menu}\q{Game} menu
-(or the \q{File} menu, on Mac OS X) lets you see a short string (the
-\q{game ID}) that captures the initial state of the current game.
-
-The precise \I{ID format}format of the ID is specific to each game.
-It consists of two parts delimited by a colon (e.g., \c{c4x4:4F01,0});
-the first part encodes \i\e{parameters} (such as grid size), while the
-second part encodes a \i\e{seed}, which determines the \i{initial
-state} of the game within those parameters.
-
-You can specify a new ID (or just a seed) here. Pressing \q{OK} starts
-a new game with the specified ID (whether you changed it or not).
-Pressing \q{Cancel} returns to the current game.
-
-You can also use the game ID (or just the encoded parameters) as a
-\i{command line} argument; see \k{common-cmdline} for more detail.
-
-Game IDs are portable across platforms; you can use a game ID
-generated by the Windows version of a game on the Unix version, etc.
+\H{common-id} Specifying games with the \ii{game ID}
+
+There are two ways to save a game specification out of a puzzle and
+recreate it later, or recreate it in somebody else's copy of the
+same puzzle.
+
+The \q{\i{Specific}} and \q{\i{Random Seed}} options from the
+\I{Game menu}\q{Game} menu (or the \q{File} menu, on Mac OS X) each
+show a piece of text (a \q{game ID}) which is sufficient to
+reconstruct precisely the same game at a later date.
+
+You can enter either of these pieces of text back into the program
+(via the same \q{Specific} or \q{Random Seed} menu options) at a
+later point, and it will recreate the same game. You can also use
+either one as a \i{command line} argument (on Windows or Unix); see
+\k{common-cmdline} for more detail.
+
+The difference between the two forms is that a descriptive game ID
+is a literal \e{description} of the \i{initial state} of the game,
+whereas a random seed is just a piece of arbitrary text which was
+provided as input to the random number generator used to create the
+puzzle. This means that:
+
+\b Descriptive game IDs tend to be longer in many puzzles (although
+some, such as Cube (\k{cube}), only need very short descriptions).
+So a random seed is often a \e{quicker} way to note down the puzzle
+you're currently playing, or to tell it to somebody else so they can
+play the same one as you.
+
+\b Any text at all is a valid random seed. The automatically
+generated ones are fifteen-digit numbers, but anything will do; you
+can type in your full name, or a word you just made up, and a valid
+puzzle will be generated from it. This provides a way for two or
+more people to race to complete the same puzzle: you think of a
+random seed, then everybody types it in at the same time, and nobody
+has an advantage due to having seen the generated puzzle before
+anybody else.
+
+\b It is often possible to convert puzzles from other sources (such
+as \q{nonograms} or \q{sudoku} from newspapers) into descriptive
+game IDs suitable for use with these programs.
+
+\b Random seeds are not guaranteed to produce the same result if you
+use them with a different \i\e{version} of the puzzle program. This
+is because the generation algorithm might have been improved or
+modified in later versions of the code, and will therefore produce a
+different result when given the same sequence of random numbers. Use
+a descriptive game ID if you aren't sure that it will be used on the
+same version of the program as yours.
+
+\lcont{(Use the \q{About} menu option to find out the version number
+of the program. Programs with the same version number running on
+different platforms should still be random-seed compatible.)}
+
+\I{ID format}A descriptive game ID starts with a piece of text which
+encodes the \i\e{parameters} of the current game (such as grid
+size). Then there is a colon, and after that is the description of
+the game's initial state. A random seed starts with a similar string
+of parameters, but then it contains a hash sign followed by
+arbitrary data.
+
+If you enter a descriptive game ID, the program will not be able to
+show you the random seed which generated it, since it wasn't
+generated \e{from} a random seed. If you \e{enter} a random seed,
+however, the program will be able to show you the descriptive game
+ID derived from that random seed.
+
+Note that the game parameter strings are not always identical
+between the two forms. For some games, there will be parameter data
+provided with the random seed which is not included in the
+descriptive game ID. This is because that parameter information is
+only relevant when \e{generating} puzzle grids, and is not important
+when playing them. Thus, for example, the difficulty level in Solo
+(\k{solo}) is not mentioned in the descriptive game ID.
+
+These additional parameters are also not set permanently if you type
+in a game ID. For example, suppose you have Solo set to \q{Advanced}
+difficulty level, and then a friend wants your help with a
+\q{Trivial} puzzle; so the friend reads out a random seed specifying
+\q{Trivial} difficulty, and you type it in. The program will
+generate you the same \q{Trivial} grid which your friend was having
+trouble with, but once you have finished playing it, when you ask
+for a new game it will automatically go back to the \q{Advanced}
+difficulty which it was previously set on.
 
 \H{common-type} The \q{Type} menu
 
@@ -169,9 +232,10 @@ The \I{Type menu}\q{Type} menu, if present, may contain a list of
 \i{preset} game settings. Selecting one of these will start a new
 random game with the parameters specified.
 
-The \q{Type} menu may also contain a \q{\i{Custom...}} option which
-allows you to fine-tune game \i{parameters}. The parameters available
-are specific to each game and are described in the following sections.
+The \q{Type} menu may also contain a \q{\i{Custom}} option which
+allows you to fine-tune game \i{parameters}. The parameters
+available are specific to each game and are described in the
+following sections.
 
 \H{common-cmdline} Specifying game parameters on the \i{command line}
 
@@ -189,26 +253,31 @@ command line.
 
 The easiest way to do this is to set up the parameters you want
 using the \q{Type} menu (see \k{common-type}), and then to select
-\q{Specific} from the \q{Game} or \q{File} menu (see \k{common-id}).
-The text in the \q{Game ID} box will be composed of two parts,
-separated by a colon. The first of these parts represents the game
-parameters (the size of the playing area, for example, and anything
-else you set using the \q{Type} menu).
+\q{Random Seed} from the \q{Game} or \q{File} menu (see
+\k{common-id}). The text in the \q{Game ID} box will be composed of
+two parts, separated by a hash. The first of these parts represents
+the game parameters (the size of the playing area, for example, and
+anything else you set using the \q{Type} menu).
 
 If you run the game with just that parameter text on the command
 line, it will start up with the settings you specified.
 
 For example: if you run Cube (see \k{cube}), select \q{Octahedron}
 from the \q{Type} menu, and then go to the game ID selection, you
-will see a string of the form \cq{o2x2:911A81,10}. Take only the
-part before the colon (\cq{o2x2}), and start Cube with that text on
-the command line: \cq{cube o2x2}.
+will see a string of the form \cq{o2x2#338686542711620}. Take only
+the part before the hash (\cq{o2x2}), and start Cube with that text
+on the command line: \cq{cube o2x2}.
 
 If you copy the \e{entire} game ID on to the command line, the game
 will start up in the specific game that was described. This is
 occasionally a more convenient way to start a particular game ID
 than by pasting it into the game ID selection box.
 
+(You could also retrieve the encoded game parameters using the
+\q{Specific} menu option instead of \q{Random Seed}, but if you do
+then some options, such as the difficulty level in Solo, will be
+missing. See \k{common-id} for more details on this.)
+
 \C{net} \i{Net}
 
 \cfg{winhelp-topic}{games.net}
@@ -281,13 +350,14 @@ act as constraints on the solution (i.e., hints).
 
 The grid generation in Net has been carefully arranged so that the
 barriers are independent of the rest of the grid. This means that if
-you change the \e{Barrier probability} parameter, and then re-enter
-the same game ID you were playing before (see \k{common-id}), you
-should see exactly the same starting grid, with the only change
-being the number of barriers. So if you're stuck on a particular
-grid and need a hint, you could start up another instance of Net,
-set up the same parameters but a higher barrier probability, and
-enter the game seed from the original Net window.
+you note down the random seed used to generate the current puzzle
+(see \k{common-id}), change the \e{Barrier probability} parameter,
+and then re-enter the same random seed, you should see exactly the
+same starting grid, with the only change being the number of
+barriers. So if you're stuck on a particular grid and need a hint,
+you could start up another instance of Net, set up the same
+parameters but a higher barrier probability, and enter the game seed
+from the original Net window.
 
 }
 
@@ -430,27 +500,6 @@ set of shuffling moves and invert them exactly, so that you answer
 more moves you ask for, the more likely it is that solutions shorter
 than the target length will turn out to be possible.
 
-\H{sixteen-cmdline} \I{command line, for Sixteen}Additional
-command-line configuration
-
-The limited shuffle parameter, described in \k{sixteen-params}, is
-not mentioned by default in the game ID (see \k{common-id}). So if
-you set your shuffling move count to (say) 4, and then you generate
-a normal 4\by\.4 grid, then the game ID will simply say
-\c{4x4:}\e{numbers}. This means that if you send the game ID to
-another player and they paste it into their copy of Sixteen, their
-game will not be automatically configured to use the same shuffle
-limit in any subsequent grids it generates. (I don't think the
-average person examining a single grid sent to them by another
-player would want their configuration modified to that extent.)
-
-If you are specifying a game ID or game parameters on the command
-line (see \k{common-cmdline}) and you do want to configure the
-shuffle limit, you can do it by suffixing the letter \cq{m} to the
-parameters, followed by the move count as a decimal number. For
-example, \cq{sixteen 4x4m4} will start up Sixteen with a problem
-guaranteed to be soluble in four moves or fewer.
-
 
 \C{twiddle} \i{Twiddle}
 
@@ -517,26 +566,6 @@ shuffle with a four-move solution. Note that the more moves you ask
 for, the more likely it is that solutions shorter than the target
 length will turn out to be possible.
 
-\H{twiddle-cmdline} \I{command line, for Twiddle}Additional
-command-line configuration
-
-The limited shuffle parameter, described in \k{twiddle-parameters},
-is not mentioned by default in the game ID (see \k{common-id}). So
-if you set your shuffling move count to (say) 4, and then you
-generate a normal 3\by\.3 grid, then the game ID will simply say
-\c{3x3n2:}\e{numbers}. This means that if you send the game ID to
-another player and they paste it into their copy of Twiddle, their
-game will not be automatically configured to use the same shuffle
-limit in any subsequent grids it generates. (I don't think the
-average person examining a single grid sent to them by another
-player would want their configuration modified to that extent.)
-
-If you are specifying a game ID or game parameters on the command
-line (see \k{common-cmdline}) and you do want to configure the
-shuffle limit, you can do it by suffixing the letter \cq{m} to the
-parameters, followed by the move count as a decimal number. For
-example, \cq{twiddle 3x3n2m4} will start up Twiddle with a problem
-guaranteed to be soluble in four moves or fewer.
 
 \C{rectangles} \i{Rectangles}
 
@@ -598,34 +627,6 @@ and more intuitive playing style. If you set it \e{too} high,
 though, the game simply cannot generate more than a few rectangles
 to cover the entire grid, and the game becomes trivial.
 
-\H{rectangles-cmdline} \I{command line, for Rectangles}Additional
-command-line configuration
-
-The expansion factor parameter, described in \k{rectangles-params},
-is not mentioned by default in the game ID (see \k{common-id}). So
-if you set your expansion factor to (say) 0.75, and then you
-generate an 11\by\.11 grid, then the game ID will simply say
-\c{11x11:}\e{numbers}. This means that if you send the game ID to
-another player and they paste it into their copy of Rectangles,
-their game will not be automatically configured to use the same
-expansion factor in any subsequent grids it generates. (I don't
-think the average person examining a single grid sent to them by
-another player would want their configuration modified to that
-extent.)
-
-If you are specifying a game ID or game parameters on the command
-line (see \k{common-cmdline}) and you do want to configure the
-expansion factor, you can do it by suffixing the letter \cq{e} to
-the parameters, followed by the expansion factor as a decimal
-number. For example:
-
-\b \cq{rect 11x11e0.75} starts Rectangles with a grid size of
-11\u00d7{x}11 and an expansion factor of 0.75.
-
-\b \cq{rect 11x11e0.75:g11c6e5e4a2_4e9c3b3d3b5g2b6c4k4g30a8n3j1g6a2}
-starts Rectangles with a grid size of 11\u00d7{x}11, an expansion
-factor of 0.75, \e{and} a specific game selected.
-
 
 \C{netslide} \i{Netslide}
 
@@ -764,50 +765,6 @@ many attempts at generating a puzzle before it finds one hard enough
 for you. Be prepared to wait, especially if you have also configured
 a large puzzle size.
 
-\H{solo-cmdline} \I{command line, for Solo}Additional command-line
-configuration
-
-The symmetry and difficulty parameters (described in
-\k{solo-parameters}) are not mentioned by default in the game ID
-(see \k{common-id}). So if (for example) you set your symmetry to
-4-way rotational and your difficulty to \q{Advanced}, and then you
-generate a 3\by\.4 grid, then the game ID will simply say
-\c{3x4:}\e{numbers}. This means that if you send the game ID to
-another player and they paste it into their copy of Solo, their game
-will not be automatically configured to use the same symmetry and
-difficulty settings in any subsequent grids it generates. (I don't
-think the average person examining a single grid sent to them by
-another player would want their configuration modified to that
-extent.)
-
-If you are specifying a game ID or game parameters on the command
-line (see \k{common-cmdline}) and you do want to configure the
-symmetry, you can do it by suffixing additional text to the
-parameters:
-
-\b \cq{m4} for 4-way mirror symmetry
-
-\b \cq{r4} for 4-way rotational symmetry
-
-\b \cq{r2} for 2-way rotational symmetry
-
-\b \cq{a} for no symmetry at all (stands for \q{asymmetric})
-
-\b \cq{dt} for Trivial difficulty level
-
-\b \cq{db} for Basic difficulty level
-
-\b \cq{di} for Intermediate difficulty level
-
-\b \cq{da} for Advanced difficulty level
-
-\b \cq{du} for Unreasonable difficulty level
-
-So, for example, you can make Solo generate asymmetric 3x4 grids by
-running \cq{solo 3x4a}, or 4-way rotationally symmetric 2x3 grids by
-running \cq{solo 2x3r4}, or \q{Advanced}-level 2x3 grids by running
-\cq{solo 2x3da}.
-
 
 \A{licence} \I{MIT licence}\ii{Licence}
 
@@ -835,8 +792,8 @@ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 
-\IM{specific...} Specific..., menu option
-\IM{custom...} Custom..., menu option
+\IM{specific} \q{Specific}, menu option
+\IM{custom} \q{Custom}, menu option
 
 \IM{game ID} game ID
 \IM{game ID} ID, game