Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > fecf5e8fe750b3e7f7cae646babbfa86 > files > 17

lucidlife-0.9.2-5.fc12.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>LucidLife Help</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>

<h1>LucidLife Help</h1>

<h2>Contents</h2>

<p>

<ol>
<li><a href="#life-intro">Introduction to Conway's Life</a>
<li><a href="#gtklife-intro">Introduction to LucidLife</a>
<li><a href="#pattern-archive">The Pattern Archive</a>
<li><a href="#anatomy">Anatomy of the Main Window</a>
  <ul>
  <li><a href="#anatomy-overview">Overview</a>
  <li><a href="#anatomy-viewport">Viewport</a>
  <li><a href="#anatomy-toolbar">Toolbar</a>
  <li><a href="#anatomy-sidebar">Sidebar</a>
  <li><a href="#anatomy-status-bar">Status Bar</a>
  </ul>
<li><a href="#usage">Usage</a>
  <ol>
  <li><a href="#usage-moving">Moving Around</a>
  <li><a href="#usage-zooming">Zooming</a>
  <li><a href="#usage-drawing">Drawing</a>
  <li><a href="#usage-cut-paste">Cut and Paste</a>
  <li><a href="#usage-running">Running</a>
  <li><a href="#usage-speed">Changing Speed</a>
  <li><a href="#usage-files">File Handling</a>
  </ol>
<li><a href="#menu">Menu Reference</a>
  <ol>
  <li><a href="#menu-file">File</a>
  <li><a href="#menu-view">View</a>
  <li><a href="#menu-edit">Edit</a>
  <li><a href="#menu-run">Run</a>
  <li><a href="#menu-help">Help</a>
  </ol>
<li><a href="#preferences">Configuring LucidLife</a>
<li><a href="#keybindings">Keybindings</a>
</ol>

<p><hr><p>

<a name="life-intro"></a>
<h2>1. Introduction to Conway's Life</h2>

<p>

Conway's Life is a form of artificial life (specifically, a cellular
automaton)--one of the simplest there is. There are only a few rules:

<p>

<ol>
<li>The game is played on a rectangular grid, where each cell is either
alive or dead.
<li>Each generation is computed from the state of the previous generation,
using rules 3 and 4:
<li>A live cell with 2 or 3 live <i>neighbors</i> (adjacent cells, including
diagonals) lives on. Otherwise it dies.
<li>A dead cell with exactly 3 live neighbors comes to life.
</ol>

<p>

That's all there is to it. Yet fascinating behavior arises from these simple
rules. Gliders, for instance.

<p>

<div style="float:left;padding:10px 20px"><img src="glider.gif" width="86"
height="86" alt="[Glider]" title="Glider"></div>

<p>

It turns out, if you take the little five-cell shape to the left and apply the
rules of Life to it, it glides diagonally across the grid. That is, it
transforms in such a way that it reproduces itself at an offset every four
generations. No one invented gliders. They just happen. In fact, draw some
random cells in a Life program and hit "start," and it's a good chance you'll
see gliders form spontaneously. This is just the beginning: Conway's Life has
a whole menagerie of recurring patterns.

<p><br clear="all">

Much more detailed introductions to Conway's Life are available on the web.
Here are a few links worth following:

<p>

<ul>
<li><a href="http://www.math.com/students/wonders/life/life.html">What is the
Game of Life?</a>
<li><a href="http://www.ibiblio.org/lifepatterns/october1970.html">The original
1970 Scientific American article</a>
<li><a href="http://www.radicaleye.com/lifepage/">Paul Callahan's Page of
Conway's Life Miscellany</a>
</ul>

<p><hr><p>

<div style="float:right;padding:10px 20px"><img src="pulsar.gif" width="136"
height="136" alt="[Pulsar]" title="Pulsar"></div>

<a name="gtklife-intro"></a>
<h2>2. Introduction to LucidLife</h2>

<p>

You can play Conway's Life with nothing more than a pencil and a sheet of
graph paper, but it's a lot faster to use a computer. That's where LucidLife
comes in. It provides you with a scrolling 1 million x 1 million cell grid,
which should be enough space for even the most complex patterns, and an
optimized algorithm which can run up to hundreds of generations per second. At
any time, you can save the contents of the grid to a file for later use. There
are also a number of preset patterns bundled with the application.

<p>

For Life newbies, getting started is easy. Scribble generously on the Life
canvas, then push the play button. You'll see various "still lifes"
(unchanging shapes), blinkers, and gliders coalesce out of the ensuing chaos.
If you're lucky you might see a lightweight spaceship or a pulsar. Now try to
figure out why it happens!

<p>

Once you've experimented on your own for a while, you may want to explore what
others have created in the Life Pattern Archive.

<br clear="all"><hr><p>

<div style="float:left;padding:10px 20px"><img src="max.gif" width="146" height="216" alt="[A pattern called 'Max']" title="A pattern called 'Max'"></div>

<a name="pattern-archive"></a>
<h2>3. The Pattern Archive</h2>

<p>

LucidLife comes with the Life Pattern Archive, a public-domain collection
amassed by Alan Hensel. After installation, the patterns are available from
LucidLife in a sidebar on the main window. Another collection, Jason Summers'
JSLife, is also available and can be <a href="#file-collection">selected as an
option</a>. The Life Pattern Archive has a good range of patterns from simple
to complex; JSLife contains more esoteric, unusual, and recently-discovered
patterns.

<p>

Most of the patterns have descriptions provided by their authors, which you
can read after loading by selecting 
<a href="#file-description">File->Description</a>. If you get
lost in the terminology (rakes, sawtooths, corderships...), the online <a
href="http://www.argentum.freeserve.co.uk/lex.htm">Life Lexicon</a> will
clear things up.

<p>

A typical Life pattern explodes chaotically, then gradually settles down into
small groups of predictable cells. However, Life enthusiasts have engineered
patterns that are anything but typical, and most of the included files fall
into that category. There are fleets of ships, glider guns, complex
oscillators, puffer trains, breeders that grow at quadratic speed, patterns
that build other patterns, and perhaps the most anomalous pattern of all,
"Max" (pictured at left). To get an idea of just how delicately balanced Max
is, let it run for awhile, then erase one little dot in the middle.

<p>

Then there are the computational patterns, of which perhaps the most
impressive is a functional (though slow) prime number sieve. As it turns out,
Life is <a
href="http://en.wikipedia.org/wiki/Turing-complete">Turing-Complete</a>: given
a large enough grid and enough time, it can perform any computation that a
modern computer could.

<p>

Here are a few of the author's current favorites:

  <dl>
  <dt>LPA/Breeders/"Breeder 4"
  <dd>One of the more unusual breeders: it generates a zigzagging grid of gliders.
  <dt>LPA/Math and CS/"Primes"
  <dd>Produces a westward stream of spaceships representing prime numbers. It's
      a real puzzle to try to figure out how this works.
  <dt>LPA/Math and CS/"Unit Cell"
  <dd>A 500x500-cell cell, duplicating the rules of a life on a larger scale.
  <dt>JSLife/Builders/"SS Factory"
  <dd>A spaceship factory. Complex machinery funnels four streams of gliders
      into the middle of the pattern, where they synthesize a fleet of 2c/5
      spaceships.
  <dt>JSLife/Odds &amp; Ends/"Shuttle"
  <dd>A corridor of gliders shuttles a spaceship back and forth. It's just cute.
  </dl>

<p>

For more details on the contents of the Life Pattern Archive, see <a
href="patterns.html">Alan Hensel's notes</a>.

<br clear="all"><hr><p>

<a name="anatomy"></a>
<h2>4. Anatomy of the Main Window</h2>

<p>

<a name="anatomy-overview"></a>

The LucidLife main window consists of a scrollable viewport in the middle, a
menubar and toolbar at top, a scrollable sidebar at the left, and a status bar
at the bottom. Many of these components can be disabled from the <a
href="#menu-view">"View" menu</a>, and a <a
href="#view-fullscreen">fullscreen</a> mode is available.

<p><br>

<center><img src="window.gif" width="452" height="339" alt="[Main Window]"></center>

<p><br>

<div class="anatomy"><dl>

<a name="anatomy-viewport"></a>
<dt>Viewport
<dd>The main display of LucidLife is a scrolling viewport on the 1 million x
1 million Life grid. At startup, it is centered on the middle of the world,
which has the coordinates (0,0).

<p>

<a name="anatomy-toolbar"></a>
<dt>Toolbar
<dd>As well as buttons corresponding to the most frequently used menu items, 
at the far right of the toolbar is a slider which adjusts the speed at which 
the game runs.  The number above it indicates the present speed in generations 
per second.  The maximum speed may be set in the 
<a href="#preferences">Preferences</a> dialog.

<p>

<a name="anatomy-sidebar"></a>
<dt>Sidebar
<dd>The Sidebar lists the contents of the currently chosen pattern collection.
Simply click on a pattern title to load the file. Scroll through the list of
patterns using the scrollbar or your mouse wheel. As a shortcut for <a
href="#file-collection">File->Change Pattern Collection</a>, you can click on
the "Patterns" list header to choose a new collection.

<p>

Some patterns are sorted into sub-directories--in fact, the included
collections (Life Pattern Archive and JSLife) are entirely hierarchical.
Directories are displayed with trailing slashes. Click on a directory to
display its contents in a clickable list below the main sidebar.

<p>

<a name="anatomy-status-bar"></a>
<dt>Status Bar
<dd>The status bar displays various useful bits of information. On the left,
it shows the coordinates of the cell where the mouse is hovering, or of the 
top-left of the display while scrolling.<!-- (for
performance reasons, this display is disabled while running the pattern)-->. On
the right, labeled "Tick" and "Population", are the current generation number
and the current live cell count. The middle is reserved for messages to the
user.

</dl></div>

<p>

<a name="usage"></a>
<h2>5. Usage</h2>

<p>

<a name="usage-moving"></a>
<h3>5.1. Moving Around</h3>

<p>

In addition to the visible scrollbars, there are a number of other ways to 
move the Life viewport:
<ul>
<li>The mousewheel moves the viewport up and down, or left to right when 
holding shift.  When holding control, the mouse wheel zooms in and out.</li>
<li>The "Grab" tool (<img src="grab.png">) may be used to drag the pattern 
around in the viewport by pressing and holding the left mouse button while 
moving the mouse.</li>
<li>The viewport may be recentered at any point by right clicking.</li>
<li>The numeric keypad (with Numlock on), allows for scrolling diagonally as 
well as in the usual four directions.  Holding control causes the keypad to 
scroll a page at a time.  The central "5" key recenters at (0,0).</li>
</ul>
<p>

Some Life patterns (e.g. Jaws, Catacryst) are very sparse--you may not even
see any cells in the viewport when you first load them. For these, the <a
href="#view-find-active-cells">View->Find Active Cells</a> command is useful.
It will locate an area containing live cells and center on it, preferring
active regions to those which have become stable (still life) or oscillatory.

<p>

<a name="usage-zooming"></a>
<h3>5.2. Zooming</h3>

<p>

Zoom operations are available from the <a href="#menu-view">"View" menu</a> and
from the magnifying glasses in the toolbar. At 1:1, the viewport is zoomed
all the way out, so that one blue pixel represents one live cell. You can zoom
in up to 16:1, which makes operations like drawing much easier. At zoom levels
4:1 and up, a visual grid is drawn to clearly distinguish individual cells.

<p>Zooming may also be accomplished by holding control while using the mouse 
wheel.

<p>

<a name="usage-drawing"></a>
<h3>5.3. Drawing</h3>

<p>

When the Draw (<img src="draw.png">) tool is selected, left-click on the grid 
to toggle a cell between alive and dead. Drag the mouse
to continue drawing or continue erasing cells. If you drag to the edge of the
viewport, it will scroll with you.

<p>

<a name="usage-cut-paste"></a>
<h3>5.4. Cut and Paste</h3>

<p>

LucidLife supports block cut-and-paste of pattern cells. To select a block of
cells, left click on one corner of the block while using the Select (
<img src="select.png">) tool, or holding &lt;shift&gt; key, then drag to 
the opposite corner. If you drag to the edge, the viewport will scroll with 
you, so you can select as large an area as you like.

<p>

The selection can then be cut/copied and pasted via the commands in the <a
href="#menu-edit">"Edit" menu</a> (or by using the standard Ctrl-X, Ctrl-C, and
Ctrl-V keystrokes). After choosing "Paste", a highlighted rectangle will
appear as you move over the grid. Left-click when the rectangle is located
where you want to paste. For convenience, Unix-style pasting is also allowed:
instead of using the Paste command, simply middle-click on the upper-left
corner of the desired region.

<p>

If there is a currently selected region when you paste, it will be implicitly
copied and used in place of the copy buffer.

<p>

Note: LucidLife pasting is "transparent"--only live cells are copied. In other
words, empty cells in the source region will not overwrite live cells in the
target region.

<p>

<a name="usage-running"></a>
<h3>5.5. Running</h3>

<p>

Start the pattern by clicking the play button on the toolbar. Click the
button again to stop. Note that most operations are still available while the
pattern is running. In particular, you can draw and cut-and-paste in the
middle of a running pattern. Of course, a lone plotted cell will quickly die
out!

<p>

There are two other ways to advance the pattern: <a
href="#run-step">Run->Step</a> (the green arrow in the toolbar) to advance by
one generation, and <a href="#run-jump">Run->Jump</a> to jump ahead to a
particular generation as quickly as possible.

<p>

<a name="usage-speed"></a>
<h3>5.6. Changing Speed</h3>

<p>

Speed is adjustable, and is set in generations per second. You can adjust
speed gradually using the ',' and '.' keys, or directly using the
<a href="#run-speed">Run->Speed</a> dialog or the slider on the toolbar.

<p>

The program will start to drop frames if it finds itself falling behind---that
is, the next generation will be computed, but the screen will not update
during that tick. This greatly improves performance, especially if you don't
have 2D acceleration on your video card, but it makes the animation less
smooth. If you want to temporarily disable frame skipping, deselect the 
"skip frames" check box in the Preferences dialog.

<p>

<a name="usage-files"></a>
<h3>5.7. File Handling</h3>

<p>

All of the standard commands are available from the <a href="#menu-file">File
menu</a>: New, Open, Save, and Save As. In addition, the Revert command (R) 
provides an easy way to "rewind" a pattern back to its saved state. Only one 
pattern file can be loaded at a time.

<p>

You can specify a pattern file on the command line to load it at start-up. If
you specify a directory on the command line, it will be set as the <a
href="#file-collection">pattern collection</a> for the sidebar.

<p>

LucidLife supports a number of different pattern file formats, including RLE,
Life 1.05, Life 1.06, and XLife. It also has a native format, <a
href="glf_format.html">GLF</a>. Format is auto-detected when loading, while
the "Save As" dialog allows you to choose format from a pull-down list. All
file formats support a textual pattern description, which can be viewed and/or
edited via the <a href="#file-description">File->Description</a> command.

<p>

LucidLife only supports the classic rules of life: survive with 2 or
3 neighbors, birth with 3 neighbors. Thus, any special rules directives in
pattern files will be ignored.

<p>

"Structured" XLife files (containing include directives and/or sub-patterns)
are not currently supported. This includes many of the patterns bundled with
the latest XLife.

<p><hr><p>

<a name="menu"></a>
<h2>6. Menu Reference</h2>

<p>

<a name="menu-file"></a>
<h3>6.1. File Menu</h3>

<p>

<dl>

<dt>File->New
<dd>Start a new file, clearing the Life grid.

<dt>File->Open
<dd>Load a pattern file. The Open dialog defaults to the directory of the
current <a href="#file-collection">pattern collection</a>, so that you can
browse the collection even if you've disabled the sidebar.

<dt>File->Revert
<dd>Reload the current pattern from disk. This provides an easy way to revert
a pattern back to its original state, provided it has a file associated with
it.

<dt>File->Save
<dd>Save the contents of the grid and description to a pattern file.

<dt>File->Save As
<dd>Save with a new filename.

<a name="file-description"></a>
<dt>File->Description
<dd>View and/or edit the pattern description. If you load a new pattern file
while the description dialog is active, it will automatically update.

<a name="file-collection"></a>
<dt>File->Change Pattern Collection
<dd>Choose a different collection of Life patterns. You can select one of
several included collections, or simply pick a directory: any files in the
directory with recognized extensions (.glf, .rle, .lif, .l) will be listed in
the sidebar, as will any sub-directories. This also sets the default starting
directory for the File->Open dialog, so that you can easily load files from
the collection when the sidebar is hidden.

</a>.

<dt>Recent files
<dd>The five most recently accessed pattern files are listed near the bottom of
the File menu for quick loading.

<dt>File->Quit
<dd>Exit LucidLife.

</dl>

<p>

<a name="menu-view"></a>
<h3>6.2. View Menu</h3>

<p>

<dl>

<dt>View->Zoom In
<dd>Zoom in by a factor of 2.

<dt>View->Zoom Out
<dd>Zoom out by a factor of 2.

<dt>View->Zoom (submenu)
<dd>Choose a particular zoom level.

<dt>View->Recenter
<dd>Recenter the viewport on the middle of the world (0,0).

<a name="view-find-active-cells"></a>
<dt>View->Find Active Cells
<dd>Find a region containing live cells and center on it. LucidLife will try to
locate an active area of the grid, i.e., one where cells are neither stable nor
oscillatory. Failing that, it will locate a region of oscillating cells, and
failing that, stable ones.

<dt>View->Show Toolbar<br>
    View->Show Sidebar<br>
    View->Show Scrollbars<br>
    View->Show Status Bar
<dd>These checkboxes allow you to enable or disable various components of the
main window.

<a name="view-fullscreen"></a>
<dt>View->Fullscreen
<dd>Check this item to put LucidLife in fullscreen mode. The main window
will enlarge to fill the screen and all components except for the Life
viewport and the status bar will be turned off, including menus (use <a
href="#keybindings">keyboard accelerators</a> to control the application).
If this function does not work properly, it is probably because your window 
manager doesn't support EWMH.

</dl>

<p>

<a name="menu-edit"></a>
<h3>6.3. Edit Menu</h3>

<p>

All of these commands (except for Edit->Preferences) operate on blocks of
cells. You can select a block by using the Select tool, or by shift-clicking.

<p>

<dl>

<dt>Edit->Cut
<dd>Copy and clear the selected region. Note: the copy buffer is preserved
when you start or load a new file.

<dt>Edit->Copy
<dd>Copy the selected region.

<dt>Edit->Clear
<dd>Clear (but don't copy) the selected region.

<dt>Edit->Paste
<dd>Paste the contents of the copy buffer to the grid. If there is a currently
selected region, it will be implicitly copied and used in place of the copy
buffer. After you enter this command, a highlighted rectangle will appear as
you move over the grid, so that you can choose where to paste. Left-click when
the rectangle is in the right position.

<dt>Edit->Move
<dd>This is essentially a shortcut for Cut-Paste: it cuts the selected region,
then allows you to choose a spot to paste it. But the original region is left
on display while pasting, so that you can easily displace a block of cells by
a chosen offset.

<dt>Edit->Cancel Paste
<dd>Cancel a pending Paste or Move operation.

<dt>Edit->Preferences
<dd>Pop up the LucidLife <a href="#preferences">Preferences</a> dialog.

</dl>

<p>

<a name="menu-run"></a>
<h3>6.4. Run Menu</h3>

<p>

<dl>

<dt>Run->Playing
<dd>When this item is checked, the pattern will advance.

<a name="run-step"></a>
<dt>Run->Step
<dd>Run the pattern for one generation.

<a name="run-jump"></a>
<dt>Run->Jump
<dd>Jump ahead to a particular generation as quickly as possible, without
display updates.

<a name="run-faster"></a>
<dt>Run->Faster
<dd>Increase the run speed (by a <a href="#pref-run">customizable</a> increment).

<a name="run-slower"></a>
<dt>Run->Slower
<dd>Decrease the run speed (by a <a href="#pref-run">customizable</a> increment).

</dl>

<p>

<a name="menu-help"></a>
<h3>6.5. Help Menu</h3>

<p>

<dl>

<dt>Help->Help
<dd>Display the LucidLife help file in a web browser window. You can change the
choice of browser in <a href="#pref-help">Preferences/Help</a>.

<dt>Help->Pattern Archive Notes
<dd>Display Alan Hensel's notes on the <a href="#pattern-archive">Pattern
Archive</a> in a browser window.

<dt>Help->GLF File Format
<dd>Display notes on LucidLife's native file format in a browser window.

<dt>Help->About LucidLife
<dd>Display version, author, license and cute mascot for LucidLife.

</dl>

<p><hr><p>

<a name="preferences"></a>
<h2>7. Configuring LucidLife</h2>

<p>

A Preferences dialog can be popped up via the Edit->Preferences menu item.

<dl>
<dt>Colors
<dd>Four colors are used for the Life viewport: background, live cells, visual
grid (only drawn at zoom levels &gt;= 4:1), and selection box (when cutting and pasting). Click the color buttons to choose a new color.

<p>

<dt>Speed
<dd>The maximum speed may be adjusted to allow LucidLife to reach its full 
potential on faster machines.  Note that although LucidLife will allow you to 
set a very high maximum speed, it will of course only really go as fast 
as you processor can handle.
<dd>The "Skip frames to achieve speed" checkbox allows you to choose whether 
LucidLife will skip the drawing of some frames in order to allow the game 
to advance as fast as possible.

</dl>

<p><hr><p>

<a name="keybindings"></a>
<h2>8. Keybindings</h2>

<p>

Keybindings are displayed in the menus, but here's a list of the most useful
and/or non-obvious ones. Note that NumLock must be on to use the numeric
keypad.

<p><br>

<table align="center" border cellspacing="0" cellpadding="3">
<tr>
<th>Key</th>
<th>Action</th>
</tr>

<tr>
<td>S</td>
<td>Start/stop the pattern</td>
</tr>

<tr>
<td>T</td>
<td>Step ahead one tick</td>
</tr>

<tr>
<td>J</td>
<td>Jump to a generation</td>
</tr>

<tr>
<td>D</td>
<td>View/edit pattern description</td>
</tr>

<tr>
<td>R</td>
<td>Reopen the current file</td>
</tr>

<tr>
<td>F11</td>
<td>Toggle fullscreen mode</td>
</tr>

<tr>
<td>M</td>
<td>Move a block of cells</td>
</tr>

<tr>
<td>C</td>
<td>Choose pattern collection</td>
</tr>

<tr>
<td>P</td>
<td>Edit preferences</td>
</tr>

<tr>
<td>Numeric keypad</td>
<td>Scroll the viewport in 8 directions</td>
</tr>

<tr>
<td>Ctrl-Keypad</td>
<td>Scroll by pages</td>
</tr>

<tr>
<td>Keypad-5</td>
<td>Recenter at the middle of the world</td>
</tr>

<tr>
<td>Ctrl-+ and Ctrl-- </td>
<td>Zoom in and out, respectively</td>
</tr>

<tr>
<td>1, 2, 4, 8, Z</td>
<td>Zoom 1:1, 2:1, 4:1, 8:1, and 16:1, respectively</td>
</tr>

<tr>
<td>, and .</td>
<td>Slow down and speed up, respectively</td>
</tr>

<tr>
<td>Ctrl-1 through Ctrl-5</td>
<td>Load a recently accessed file (Ctrl-1 is most recent)</td>
</tr>

</table>

</body>
</html>