Difference between revisions of "LifeViewer"
(124 intermediate revisions by 9 users not shown) | |||
Line 5: | Line 5: | ||
|createdby = [[Chris Rowett]] | |createdby = [[Chris Rowett]] | ||
|platform = HTML5 / Javascript | |platform = HTML5 / Javascript | ||
|image = true | |||
}} | }} | ||
'''LifeViewer''' is a browser-based scriptable pattern viewer and editor used to simulate [[Life]] and a wide range of other 1D and 2D [[cellular automata]]. | '''LifeViewer''' is a browser-based scriptable pattern viewer and editor used to simulate [[Life]] and a wide range of other 1D and 2D [[cellular automata]]. | ||
If you want to use LifeViewer on your own site | * If you are looking for script instructions, see [[LifeViewer/Scripts]] | ||
* If you want instructions for using the user interface, see [[LifeViewer/User Interface]] | |||
* If you want to use LifeViewer on your own site, see [[Tutorials/LifeViewer JavaScript plug-in]] | |||
<div style="float: right;">{{LV:Viewer| | <div style="float: right;">{{LV:Viewer| | ||
Line 32: | Line 36: | ||
#C [[ T 1100 X 0 Y 0 ZOOM 0.25 THEME CUSTOM ]]}}</div> | #C [[ T 1100 X 0 Y 0 ZOOM 0.25 THEME CUSTOM ]]}}</div> | ||
==LifeViewer features== | == LifeViewer features == | ||
* Smooth non-integer zoom with anti-aliasing and rotation. | * Smooth non-integer zoom with anti-aliasing and rotation. | ||
* Colour themes with cell history and longevity. | * Colour [[#Themes|themes]] with cell history and longevity. | ||
* Square, hexagonal and triangular grids. | |||
* Pseudo 3D layers and stars. | * Pseudo 3D layers and stars. | ||
* Multiple ways to automatically track patterns with the camera as they evolve. | * Multiple ways to automatically track patterns with the camera as they evolve. | ||
* Script language that allows many features to be customized including Waypoint animations. | * [[#Scripts|Script]] language that allows many features to be customized including Waypoint animations. | ||
* Support for multiple embedded LifeViewers and/or a single popup LifeViewer. | * Support for multiple embedded LifeViewers and/or a single popup LifeViewer. | ||
* Ability to step back to earlier generations for all patterns and reverse playback for reversible Margolus and PCA patterns. | * Ability to step back to earlier generations for all patterns and reverse playback for reversible Margolus and PCA patterns. | ||
* Random pattern and rule generation. | * Random pattern and rule generation. | ||
* Real time auto-scaling population graph. | * Real time auto-scaling [[LifeViewer/User_Interface#Population_Graph|population graph]]. | ||
* Pattern annotation with Labels, Arrows, Lines and Polygons. | * [[LifeViewer/Scripts#Annotations|Pattern annotation]] with Labels, Arrows, Lines and Polygons. | ||
* Programatically pasting cells onto the grid at defined intervals (for example: glider injection). | * Programatically pasting cells onto the grid at defined intervals (for example: glider injection). | ||
* Ability to build patterns from RLE recipes with transformations. | * Ability to build patterns from RLE recipes with transformations. | ||
* Identification of oscillator and spaceship periods. | * [[#Pattern Identification|Identification]] of still life patterns, oscillator and spaceship periods. | ||
* Automatic scaling for high DPI displays including smartphones and tablets. | * Automatic scaling for high DPI displays including smartphones and tablets. | ||
* Editor with unlimitied undo/redo and multiple clipboards. | * Editor with unlimitied undo/redo and multiple clipboards. | ||
==Rule support== | == Rule support == | ||
LifeViewer supports the following rule families: | LifeViewer supports the following rule families: | ||
===Built-in | |||
=== Built-in rules === | |||
* 2-state [[Margolus]] rules. | * 2-state [[Margolus]] rules. | ||
* 2-state [[Totalistic Life-like cellular automaton| | * 2-state [[Totalistic Life-like cellular automaton|outer-totalistic Life-like cellular automata]] (from ranges 1 to 500, supporting a wide variety of pre-programmed neighbourhood families, as well as custom neighbourhoods and weighted neighbourhoods). | ||
* 2-state [[non-totalistic | * 2-state [[isotropic non-totalistic cellular automata]] (for range-1 Moore and range-1 hexagonal). | ||
* 2-state [[ | * 2-state [[non-isotropic cellular automata]] (for range-1 Moore, hexagonal and von Neumann). | ||
* [[Generations]] rules (as an extension of the outer-totalistic, non-totalistic and non-isotropic rulespaces). | * [[Generations]] rules (as an extension of the outer-totalistic, non-totalistic and non-isotropic rulespaces). | ||
* [[Alternating rule | * [[Alternating rule]]s. | ||
* [[Partitioned cellular automata]] (PCA) rules. | * [[Partitioned cellular automata]] (PCA) rules. | ||
* [https://mathworld.wolfram.com/ElementaryCellularAutomaton.html Elementary] cellular automata (even numbers only). | * [https://mathworld.wolfram.com/ElementaryCellularAutomaton.html Elementary] cellular automata (even numbers only). | ||
* [[LifeHistory|[R]History]] rules. | * [[LifeHistory|[R]History]] rules. | ||
* [https:// | * [https://conwaylife.com/forums/viewtopic.php?f=7&t=4279#p88223 <nowiki>[R]Super</nowiki>] rules. | ||
* [R]Investigator rules (a generalisation of [[Rule:StateInvestigator|StateInvestigator]]). | |||
* [http://golly.sourceforge.net/Help/formats.html#rule RuleTable] rules (either inline or from a [[#Repository Rules|Rule Repository]]). | * [http://golly.sourceforge.net/Help/formats.html#rule RuleTable] rules (either inline or from a [[#Repository Rules|Rule Repository]]). | ||
* Non-deterministic rules. | |||
<div class="mw-collapsible mw-collapsed"> | <div class="mw-collapsible mw-collapsed"> | ||
Line 95: | Line 103: | ||
[[ ZOOM 2 THUMBNAIL THUMBSTART EXCLUSIVEPLAY ]]}} | [[ ZOOM 2 THUMBNAIL THUMBSTART EXCLUSIVEPLAY ]]}} | ||
: 2-state [[non-totalistic | : 2-state [[non-totalistic cellular automata|Isotropic non-totalistic cellular automata]] (for range-1 Moore and range-1 hexagonal). | ||
:: Example: Just Friends (B2-a/S12) {{LV:Viewer|x = 65, y = 74, rule = B2-a/S12 | :: Example: Just Friends (B2-a/S12) {{LV:Viewer|x = 65, y = 74, rule = B2-a/S12 | ||
63bo$63bo4$61bo$64bo$59bobo2bo46$18bo$19b2o12$4bo$4bo4$2bo$5bo$obo2bo! | 63bo$63bo4$61bo$64bo$59bobo2bo46$18bo$19b2o12$4bo$4bo4$2bo$5bo$obo2bo! | ||
[[ ZOOM 2 THUMBNAIL THUMBSTART EXCLUSIVEPLAY ]]}} | [[ ZOOM 2 THUMBNAIL THUMBSTART EXCLUSIVEPLAY ]]}} | ||
: 2-state [[Non-isotropic | : 2-state [[Non-isotropic cellular automata]] (for range-1 Moore, hexagonal and von Neumann). | ||
:: Example: MAP//8IAN1+KYD/9QAA/f8AAOu/AQD38wAI//8IgP39Akrn/wAB/78DAP/+AAD/ugAA//sQCN3+AIDfvwhD//sAQA {{LV:Viewer|x = 1, y = 1, rule = MAP//8IAN1+KYD/9QAA/f8AAOu/AQD38wAI//8IgP39Akrn/wAB/78DAP/+AAD/ugAA//sQCN3+AIDfvwhD//sAQA:T80,40 | :: Example: MAP//8IAN1+KYD/9QAA/f8AAOu/AQD38wAI//8IgP39Akrn/wAB/78DAP/+AAD/ugAA//sQCN3+AIDfvwhD//sAQA {{LV:Viewer|x = 1, y = 1, rule = MAP//8IAN1+KYD/9QAA/f8AAOu/AQD38wAI//8IgP39Akrn/wAB/78DAP/+AAD/ugAA//sQCN3+AIDfvwhD//sAQA:T80,40 | ||
o! | o! | ||
Line 133: | Line 141: | ||
[[ ZOOM 4 THUMBNAIL THUMBSTART EXCLUSIVEPLAY ]]}} | [[ ZOOM 4 THUMBNAIL THUMBSTART EXCLUSIVEPLAY ]]}} | ||
: [[LifeHistory|[R]History]] rules. | |||
:: Example: LifeHistory {{LV:Viewer|x = 457, y = 155, rule = LifeHistory | |||
59.3B64.B125.B$58.BFBF2B60.4BF122.3B$58.6BF.B.F.F.B.F.F.B.F.F.B.F.F.B | 59.3B64.B125.B$58.BFBF2B60.4BF122.3B$58.6BF.B.F.F.B.F.F.B.F.F.B.F.F.B | ||
.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F7B5.BF.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F. | .F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F7B5.BF.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F. | ||
Line 241: | Line 249: | ||
[[ ZOOM 1 THUMBNAIL THUMBSTART EXCLUSIVEPLAY ]]}} | [[ ZOOM 1 THUMBNAIL THUMBSTART EXCLUSIVEPLAY ]]}} | ||
: [https:// | : [https://conwaylife.com/forums/viewtopic.php?f=7&t=4279#p88223 <nowiki>[R]Super</nowiki>] rules. | ||
:: Example: LifeSuper {{LV:Viewer|x = 312, y = 156, rule = LifeSuper:T312,156 | :: Example: LifeSuper {{LV:Viewer|x = 312, y = 156, rule = LifeSuper:T312,156 | ||
69.M.M6.M.M49.2Q.Q6.Q3.3Q117.S.2S2.S.S2.2S.S10.U.2U2.U.U2.2U.U$20.2O. | 69.M.M6.M.M49.2Q.Q6.Q3.3Q117.S.2S2.S.S2.2S.S10.U.2U2.U.U2.2U.U$20.2O. | ||
Line 407: | Line 415: | ||
2.2O25.2S3.S.S.S.S3.2S8.2O3.O.O.O.O3.2O! | 2.2O25.2S3.S.S.S.S3.2S8.2O3.O.O.O.O3.2O! | ||
[[ ZOOM 1 THUMBNAIL THUMBSTART EXCLUSIVEPLAY ]]}} | [[ ZOOM 1 THUMBNAIL THUMBSTART EXCLUSIVEPLAY ]]}} | ||
: [R]Investigator rules. | |||
:: Example: B3S23Investigator {{LV:Viewer|x = 98, y = 57, rule = B3S23Investigator | |||
35.R26.R$35.E26.E8$51.E$25.E20.E25.E$24.E21.E7.C18.E$23.E28.EBDE18.E$ | |||
45.CE5.2E$21.CD2.DE43.2ED2.DC$19.E3.DE18.C22.E3.D3ED3.E$42.EDBE4.ER | |||
13.3E3.E$44.2E15.E3.D2.E2.D14.C.ECB$13.C30.ED3.E12.E3.E3.D.E11.CE.D2. | |||
E$8.D4.D30.E3.E14.E2.D2E.C13.D.E.D$7.E4.D2.E28.D2.E17.D16.E2.D3.E$12. | |||
E3.E28.D19.C15.E3.E$12.ED3.E27.C21.E12.E3.DE$13.E10.2E39.2DE4.2E10.E | |||
6.E$11.E12.ED3.E34.3E.E3.DE$5.E17.2E3.E4.DE28.ED4.E3.2E17.E$10.E4.E7. | |||
CD2.E3.CD2.DE24.ED2.DC3.E2.DC7.E4.E$14.E10.D46.D10.E$9.E3.E11.CE5.2E | |||
19.E10.2E5.EC11.E3.E$26.D5.D.E14.E3.D9.E.D5.D$DA8.ECD2.DE9.ED3.DE2.E | |||
14.E3.2E6.E2.ED3.DE9.ED2.DCE8.AD$DA11.DE4.2A6.CD.DC19.E2.DE10.CD.DC6. | |||
2A4.ED11.AD$18.E.A2.C.E4.C22.D13.C.C4.C2.A.E$4.E6.E5.ED6.D2.E.E7.2A | |||
13.2C3.2A7.E11.DE5.E6.E$5.E4.ED5.DE4D.E6.E5.E.A2.C12.C2.A.E5.E8.4DED | |||
5.DE4.E$10.2ED3.DE.4EB.C6.E4.D22.D4.E8.B3E2.ED3.D2E$6.E3.DECD.DEC2.DE | |||
2.E8.E3.E4D14.4DE3.E8.E6.CED.DCED3.E$7.E3.E.2E4.E5.C11.5EB12.B5E11.C | |||
10.2E.E3.E$8.E2.D.CD5.D.EC.D4.ED2.DCE2D21.D.CD2.DE4.D2.ED6.DC.D2.E$ | |||
10.D.2E.DC3.E3.D2.E4.ED26.D3.DE4.E2.D3.E3.CD.2E.D$10.CE3.E4.E2.2E3.E | |||
5.2E24.E.2E5.E3.2E7.E3.EC$10.E5.E7.ED3.E3.E25.C4.E3.E3.DE7.E5.E$10.D | |||
5.D2.E4.2E6.E5.E26.E6.2E4.E2.D5.D$10.ED3.DE2.D3.E2.E4.E6.DE26.E4.E2.E | |||
3.D2.ED3.DE$11.CD.DC2.E3.E4.E7.E3.EDEC11.CEDE4.E7.E4.E3.E2.CD.DC$12.C | |||
.CE2.D2.E7.CD2.DE6.DE2.C5.C2.ED7.ED2.DC7.E2.D2.EC.C$16.2E.D11.D3E7.D | |||
2.D5.D2.D8.E.ED11.D.2E$12.E5.EC10.E2.EDE7.ED7.DE7.EDE2.2E10.CE5.E$12. | |||
D5.D4.EDE2.EDE2.E.DC.E3.DECE.E.E.ECED3.E.CD.E2.EDE2.EDE5.D5.D$12.ED3. | |||
DEDE.C2.DC.E.DC4.DC3.DCE9.ECD3.CD4.CD.E.CD5.EDED3.DE$12.CED.DC2.DC2E | |||
2.D4.D8.DE2.2D5.2D2.ED8.D4.D5.CD2.CD.DEC$15.3E3.D5.E4.E3.DC2.D4.ED3.D | |||
E4.D2.CD3.E4.E4.ECD3.3E$15.DC5.E3.D4.D3.DC3.C4.CED.DC5.C3.CD3.D4.D10. | |||
CD$13.CD6.D.E.DC3.DC.EDE12.3E10.EDE.CD3.CD3.CD6.DC$20.DC.EDE2.EDE17.D | |||
C16.EDE2.EDE2.CD$18.EDE25.CD29.EDE$49.A! | |||
[[ ZOOM 2 THUMBNAIL THUMBSTART EXCLUSIVEPLAY Y -9 LOOP 900 ]]}} | |||
: [http://golly.sourceforge.net/Help/formats.html#rule RuleTable] rules from a [https://conwaylife.com/wiki/Special:AllPages?namespace=3794 repository]. | : [http://golly.sourceforge.net/Help/formats.html#rule RuleTable] rules from a [https://conwaylife.com/wiki/Special:AllPages?namespace=3794 repository]. | ||
Line 412: | Line 450: | ||
3.C$4.B2$B$.C! | 3.C$4.B2$B$.C! | ||
[[ ZOOM 2 THUMBNAIL THUMBSTART EXCLUSIVEPLAY ]]}} | [[ ZOOM 2 THUMBNAIL THUMBSTART EXCLUSIVEPLAY ]]}} | ||
: Non-deterministic rules. | |||
:: Example: Non-deterministic Soldier Bugs {{LV:Viewer|x = 113, y = 113, rule = R7,C2,S64-113,B65-95,P100,#,# | |||
49b4o$47b7o$46b10o$45b12o$45b13o19b2o$44b3o5b6o17b6o$22b3o19b3o5b6o16b | |||
9o$20b7o17b3o5b6o15b11o$19b9o16b3o5b6o14b3ob9o$18b12o15b3o2b8o14b3o4b | |||
7o$18b13o14b12o14b3o6b6o$17b5o3b6o15b10o15b3o6b6o$17b2o7b5o16b7o17b3o | |||
6b6o$17b2o7b5o18b3o20b3obo2b7o$17b3o5b6o41b13o$17b3o2b9o42b11o$18b3ob | |||
8o44b8o$19b10o46b6o16b5o$20b7o50b2o17b8o$21b5o69b4o2b4o$94b3o4b5o$93b | |||
3o5b5o$93b5o4b5o$93b5o4b5o$93b5o4b5o$93b6o2b5o$94b12o$9b5o81b10o$8b7o | |||
80b9o$7b9o80b8o$6b10o81b6o$6b11o$5b13o$5b5o3b5o$4b5o5b5o$4b5o5b5o$5b4o | |||
4b5o$5b3o6b4o$6b4o3b4o$7b9o$8b7o$10b3o3$104b4o$102b8o$101b10o$100b4o4b | |||
4o$100b3o5b4o$99b4o5b5o$99b5o4b5o$99b5o4b5o$100b13o$100b12o$101b10o$4b | |||
6o91b10o$3b8o91b8o$2b10o91b6o$2b10o$b12o$13o$5o4b5o$5o4b5o$5o5b4o$b4o | |||
5b3o$b4o4b4o$2b10o$3b8o$5b4o3$100b3o$98b7o$97b9o$96b4o3b4o$95b4o6b3o$ | |||
95b5o4b4o$94b5o5b5o$94b5o5b5o$95b5o3b5o$95b13o$96b11o$10b6o81b10o$9b8o | |||
80b9o$9b9o80b7o$8b10o81b5o$7b12o$7b5o2b6o$6b5o4b5o$6b5o4b5o$6b5o4b5o$ | |||
7b5o5b3o$7b5o4b3o$8b4o2b4o69b5o$9b8o17b2o50b7o$11b5o16b6o46b10o$31b8o | |||
44b8ob3o$29b11o42b9o2b3o$28b13o41b6o5b3o$27b7o2bob3o20b3o18b5o7b2o$27b | |||
6o6b3o17b7o16b5o7b2o$27b6o6b3o15b10o15b6o3b5o$27b6o6b3o14b12o14b13o$27b | |||
7o4b3o14b8o2b3o15b12o$28b9ob3o14b6o5b3o16b9o$29b11o15b6o5b3o17b7o$30b | |||
9o16b6o5b3o19b3o$32b6o17b6o5b3o$34b2o19b13o$56b12o$57b10o$59b7o$60b4o! | |||
[[ ZOOM 1 THUMBNAIL THUMBSTART EXCLUSIVEPLAY RANDSEED 1695741111763 LOOP 1000 ]]}} | |||
</div> | </div> | ||
</div> | </div> | ||
===Repository Rules=== | === Repository Rules === | ||
LifeViewer can load rules from the [https://conwaylife.com/wiki/Special:AllPages?namespace=3794 Rule:] namespace here on LifeWiki. | LifeViewer can load rules from the [https://conwaylife.com/wiki/Special:AllPages?namespace=3794 Rule:] namespace here on LifeWiki. | ||
The rules must be in [http://golly.sourceforge.net/Help/formats.html#rule RuleTable] format. LifeViewer supports both @TABLE and @TREE | The rules must be in [http://golly.sourceforge.net/Help/formats.html#rule RuleTable] format. LifeViewer supports both @TABLE and @TREE | ||
format rules. Typically @TREE rules run much faster so if possible ensure there is an @TREE version of the rule before the @TABLE | format rules. Typically @TREE rules run much faster so if possible ensure there is an @TREE version of the rule before the @TABLE | ||
version (if present). | version (if present). | ||
LifeViewer supports the @COLORS section and the @NAMES section but does not support the @ICONS section (which will be ignored if present). | LifeViewer supports the @COLORS section and the @NAMES section but does not support the @ICONS section (which will be ignored if present), although this may be supported in future.<ref name="post87414" /> | ||
===Aliases=== | === Aliases === | ||
LifeViewer contains a large list of alias names for particular rules. This list of rule name aliases can be found by clicking the Aliases button under Help. | LifeViewer contains a large list of alias names for particular rules. This list of rule name aliases can be found by clicking the Aliases button under Help. | ||
==Grid and neighbourhood support== | == Grid and neighbourhood support == | ||
LifeViewer supports many different neighbourhoods on square, hexagonal or triangular grids. | LifeViewer supports many different neighbourhoods on square, hexagonal or triangular grids. | ||
<div class="mw-collapsible mw-collapsed"> | <div class="mw-collapsible mw-collapsed"> | ||
Click on "Expand" to the right to view the full list of supported | Click on "Expand" to the right to view the full list of supported neighbourhoods per grid type. | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
* square | * [[square tiling]]: | ||
** outer-totalistic: | ** outer-totalistic: | ||
*** [[Moore neighbourhood|Moore]] | *** [[Moore neighbourhood|Moore]] | ||
Line 440: | Line 500: | ||
*** star | *** star | ||
*** checkerboard | *** checkerboard | ||
*** aligned checkerboard | |||
*** hash | *** hash | ||
*** custom (CoordCA) | *** custom (CoordCA) | ||
** non-totalistic | *** Gaussian | ||
*** custom weighted | |||
*** far corners/edges | |||
** non-totalistic R1 Moore | |||
** non-isotropic | ** non-isotropic | ||
** Margolus | ** Margolus | ||
** PCA | ** PCA | ||
* hexagonal or offset-square grid: {{LV:Viewer|x = 50, y = 136, rule = B2/S34H | * hexagonal or offset-square grid: {{LV:Viewer|x = 50, y = 136, rule = B2/S34H | ||
$24bo$22bo$24bo$22b3o$25bo$23b3o$25bobo$25bobo$24b2o$22bo5bo$23bo$27b | $24bo$22bo$24bo$22b3o$25bo$23b3o$25bobo$25bobo$24b2o$22bo5bo$23bo$27b | ||
Line 457: | Line 520: | ||
*** asterisk | *** asterisk | ||
*** custom (CoordCA) | *** custom (CoordCA) | ||
*** custom weighted | |||
** non-totalistic | ** non-totalistic | ||
** non-isotropic | ** non-isotropic | ||
Line 468: | Line 532: | ||
*** triangular inner | *** triangular inner | ||
*** triangular outer | *** triangular outer | ||
*** triangular biohazard | |||
*** triangular radiation | |||
*** custom (CoordCA) | *** custom (CoordCA) | ||
*** custom weighted | |||
</div></div> | </div></div> | ||
===[[Bounded grid]] types=== | === [[Bounded grid]] types === | ||
LifeViewer supports patterns on "unbounded" grids (maximum 16384x16384 in size) and the following bounded grid types: | LifeViewer supports patterns on "unbounded" grids (maximum 16384x16384 in size) and the following bounded grid types: | ||
* Plane | * Plane | ||
Line 478: | Line 545: | ||
* Klein-bottle (with optional shift) | * Klein-bottle (with optional shift) | ||
* Cross-surface | * Cross-surface | ||
* Sphere | * Sphere (either diagonal) | ||
For range 2+ neighbourhoods only Plane | For range 2+ neighbourhoods, hexagonal, triangular, PCA and Margolus rules only Plane and Torus (without shift) are supported. | ||
Native support for [[BSFKL]], [[Extended Generations]] and [[deficient]] rules is also planned.<ref name="post68678" /><ref name="post68691" /><ref name="post86409" /> Support for 1D totalistic rules and multiple neighbourhoods rules may also be planned.<ref name="post84188" /><ref | Native support for [[BSFKL]], [[Extended Generations]] and [[deficient]] rules is also planned.<ref name="post68678" /><ref name="post68691" /><ref name="post86409" /> Support for 1D totalistic rules and multiple neighbourhoods rules may also be planned.<ref name="post84188" /><ref name="post75775" /> | ||
==User Interface== | == User Interface == | ||
{{main|LifeViewer/User Interface}} | |||
== | == Themes == | ||
Themes are used to define the colours of cells, the background and the grid lines for 2-state and Generations patterns. Some Themes also specify whether major grid lines are used and if so on what interval. | |||
Themes are primarily used to provide a visual representation of cell history and longevity. | |||
The default Theme is "Blues" | |||
but this can be changed by clicking Theme in the Settings menu or with the THEME script command. | |||
{{LV:Viewer|x = 3, y = 3, rule = Life | |||
3o$2bo$bo! | |||
[[ AUTOSTART THUMBNAIL GRID STOP 128 ZOOM 8 X 32 Y -31 HEIGHT 560 ]]}} | |||
== | === Grid === | ||
Some Themes define specific GridLine colours for standard and Major GridLines and also the major GridLine interval. | |||
GRID: grid line colour<br /> | |||
GRIDMAJOR: major grid line colour and interval | |||
=== | === Two-state Themes === | ||
For two-state Themes there are five colours that are used for defining the cell colours: | |||
<table border=1 cellspacing=0 width=500><tr> | <table border=1 cellspacing=0 width=500><tr> | ||
<td bgcolor=#c0c0c0>Key</td><td bgcolor=#c0c0c0>Description</td></tr><tr> | <td bgcolor=#c0c0c0>Key</td><td bgcolor=#c0c0c0>Description</td></tr><tr> | ||
<td> | <td>BACKGROUND</td><td>cell never occupied</td></tr><tr> | ||
<td> | <td>ALIVE</td><td>cell just born</td></tr><tr> | ||
<td>ALIVERAMP</td><td>cell alive for at least AGESTATES generations (default 63)</td></tr> | |||
<td>DEAD</td><td>cell just died</td></tr> | |||
<td>DEADRAMP</td><td>cell dead for at least HISTORYSTATES generations (default 63)</td></tr> | |||
<td> | |||
<td> | |||
<td> | |||
</table> | </table> | ||
New cells are drawn in the ALIVE colour. | |||
If cells stay alive they fade from the ALIVE colour to the ALIVERAMP colour over the next AGESTATES (default 63) generations. This provides a visual representation of cell longevity. | |||
Cells are drawn in the DEAD colour when they die. | |||
If they stay dead they fade from the DEAD colour to the DEADRAMP colour over the next HISTORYSTATES (default 63) generations. This provides a visual representation of cell history. | |||
<div class="mw-collapsible mw-collapsed"> | <div class="mw-collapsible mw-collapsed"> | ||
Click on "Expand" to the right to | Click on "Expand" to the right to see the definitions of the available two-state Themes. | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
{| class="wikitable" | |||
! Mono | |||
|- | |||
| BACKGROUND | |||
| 0 | |||
| 0 | |||
| 0 | |||
| style="background-color:#000000;" | | |||
| Black | |||
|- | |||
| ALIVE | |||
| 255 | |||
| 255 | |||
| 255 | |||
| style="background-color:#ffffff;" | | |||
| White | |||
|- | |||
| DEAD | |||
| 0 | |||
| 0 | |||
| 0 | |||
| style="background-color:#000000;" | | |||
| Black | |||
|- | |||
! Blues | |||
|- | |||
| BACKGROUND | |||
| 0 | |||
| 0 | |||
| 0 | |||
| style="background-color:#000000;" | | |||
| Black | |||
|- | |||
| ALIVE | |||
| 0 | |||
| 255 | |||
| 255 | |||
| style="background-color:#00ffff;" | | |||
| Aqua | |||
ALIVE | |||
|- | |- | ||
| | | ALIVERAMP | ||
| 255 | | 255 | ||
| 255 | | 255 | ||
Line 844: | Line 640: | ||
| DEAD | | DEAD | ||
| 0 | | 0 | ||
| 0 | |||
| 255 | |||
| style="background-color:#0000ff;" | | |||
| Blue | |||
|- | |||
| DEADRAMP | |||
| 0 | | 0 | ||
| 0 | | 0 | ||
| style="background-color:# | | 47 | ||
| | | style="background-color:#00002f;" | | ||
| | |||
|- | |- | ||
! | ! Fire | ||
|- | |- | ||
| BACKGROUND | | BACKGROUND | ||
Line 859: | Line 662: | ||
|- | |- | ||
| ALIVE | | ALIVE | ||
| 255 | |||
| 144 | |||
| 0 | | 0 | ||
| style="background-color:#ff9000;" | | |||
| | |||
| style="background-color:# | |||
| | |||
|- | |- | ||
| ALIVERAMP | | ALIVERAMP | ||
| 255 | | 255 | ||
| 255 | | 255 | ||
| | | 0 | ||
| style="background-color:# | | style="background-color:#ffff00;" | | ||
| | | Yellow | ||
|- | |- | ||
| DEAD | | DEAD | ||
| 160 | |||
| 0 | | 0 | ||
| 0 | | 0 | ||
| style="background-color:#a00000;" | | |||
| style="background-color:# | | | ||
| | |||
|- | |- | ||
| DEADRAMP | | DEADRAMP | ||
| 32 | |||
| 0 | | 0 | ||
| 0 | | 0 | ||
| style="background-color:#200000;" | | |||
| style="background-color:# | |||
| | | | ||
|- | |- | ||
! | ! Poison | ||
|- | |- | ||
| BACKGROUND | | BACKGROUND | ||
Line 896: | Line 699: | ||
|- | |- | ||
| ALIVE | | ALIVE | ||
| 0 | |||
| 255 | |||
| 255 | | 255 | ||
| style="background-color:#00ffff;" | | |||
| Aqua | |||
| style="background-color:# | |||
| | |||
|- | |- | ||
| ALIVERAMP | | ALIVERAMP | ||
| 255 | | 255 | ||
| 255 | | 255 | ||
| | | 255 | ||
| style="background-color:# | | style="background-color:#ffffff;" | | ||
| | | White | ||
|- | |- | ||
| DEAD | | DEAD | ||
| 0 | | 0 | ||
| 128 | |||
| 0 | | 0 | ||
| style="background-color:# | | style="background-color:#008000;" | | ||
| | | Green | ||
|- | |- | ||
| DEADRAMP | | DEADRAMP | ||
| 0 | | 0 | ||
| 24 | |||
| 0 | | 0 | ||
| style="background-color:# | | style="background-color:#001800;" | | ||
| | | | ||
|- | |- | ||
! | ! Yellow | ||
|- | |- | ||
| BACKGROUND | | BACKGROUND | ||
| 0 | | 0 | ||
| | | 32 | ||
| | | 128 | ||
| style="background-color:# | | style="background-color:#002080;" | | ||
| | | | ||
|- | |- | ||
| ALIVE | | ALIVE | ||
| 255 | | 255 | ||
| 255 | | 255 | ||
| style="background-color:# | | 0 | ||
| | | style="background-color:#ffff00;" | | ||
| Yellow | |||
|- | |- | ||
| ALIVERAMP | | ALIVERAMP | ||
Line 947: | Line 750: | ||
|- | |- | ||
| DEAD | | DEAD | ||
| 128 | |||
| 0 | | 0 | ||
| 128 | | 128 | ||
| style="background-color:#800080;" | | |||
| style="background-color:# | | Purple | ||
| | |||
|- | |- | ||
| DEADRAMP | | DEADRAMP | ||
| 0 | | 0 | ||
| | | 47 | ||
| 0 | | 0 | ||
| style="background-color:# | | style="background-color:#002f00;" | | ||
| | | | ||
|- | |- | ||
! | ! Gray | ||
|- | |- | ||
| BACKGROUND | | BACKGROUND | ||
| 0 | | 0 | ||
| | | 0 | ||
| | | 0 | ||
| style="background-color:# | | style="background-color:#000000;" | | ||
| | | Black | ||
|- | |- | ||
| ALIVE | | ALIVE | ||
| | | 176 | ||
| | | 176 | ||
| | | 176 | ||
| style="background-color:# | | style="background-color:#b0b0b0;" | | ||
| | | | ||
|- | |- | ||
| ALIVERAMP | | ALIVERAMP | ||
| | | 240 | ||
| | | 240 | ||
| | | 240 | ||
| style="background-color:# | | style="background-color:#f0f0f0;" | | ||
| | | | ||
|- | |- | ||
| DEAD | | DEAD | ||
| | | 104 | ||
| | | 104 | ||
| | | 104 | ||
| style="background-color:# | | style="background-color:#686868;" | | ||
| | | | ||
|- | |- | ||
| DEADRAMP | | DEADRAMP | ||
| | | 16 | ||
| | | 16 | ||
| | | 16 | ||
| style="background-color:# | | style="background-color:#101010;" | | ||
| | | | ||
|- | |- | ||
! | ! Inverse | ||
|- | |- | ||
| BACKGROUND | | BACKGROUND | ||
| 255 | |||
| 255 | |||
| 255 | |||
| style="background-color:#ffffff;" | | |||
| White | |||
|- | |||
| ALIVE | |||
| 0 | | 0 | ||
| 0 | | 0 | ||
Line 1,006: | Line 816: | ||
| Black | | Black | ||
|- | |- | ||
| | | DEAD | ||
| | | 255 | ||
| | | 255 | ||
| | | 255 | ||
| style="background-color:# | | style="background-color:#ffffff;" | | ||
| | | White | ||
|- | |- | ||
! Day | |||
! | |||
|- | |- | ||
| BACKGROUND | | BACKGROUND | ||
Line 1,046: | Line 835: | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 255 | |||
| style="background-color:#0000ff;" | | |||
| 255 | |||
| style="background-color:#0000ff;" | | |||
| Blue | | Blue | ||
|- | |- | ||
Line 1,556: | Line 1,322: | ||
</div> | </div> | ||
===Multi-state Themes=== | === Multi-state Themes === | ||
Multi-state Themes are used for Generations rules. | Multi-state Themes are used for Generations rules and there are six colours that are used for defining the cell colours: | ||
<table border=1 cellspacing=0 width=500><tr> | |||
<td bgcolor=#c0c0c0>Key</td><td bgcolor=#c0c0c0>Description</td></tr><tr> | |||
<td>BACKGROUND</td><td>cell never occupied</td></tr><tr> | |||
<td>ALIVE</td><td>cell alive</td></tr><tr> | |||
<td>DYING</td><td>cell just started dying</td></tr> | |||
<td>DYINGRAMP</td><td>cell about to die</td></tr> | |||
<td>DEAD</td><td>cell just died</td></tr> | |||
<td>DEADRAMP</td><td>cell dead for at least HISTORYSTATES generations (default 63)</td></tr> | |||
</table> | |||
New cells are drawn in the ALIVE colour. | |||
Cells are drawn in the DYING colour when they start to die. They then fade to the DYINGRAMP colour over the number of generations defined in the rule. | |||
Once cells reach the DYINGRAMP colour then on the next generation they die and become the DEAD colour. | |||
If they stay dead they fade from the DEAD colour to the DEADRAMP colour over the next HISTORYSTATES (default 63) generations. This provides a visual representation of cell history. | |||
DEADRAMP | |||
<div class="mw-collapsible mw-collapsed"> | <div class="mw-collapsible mw-collapsed"> | ||
Click on "Expand" to the right to see the definitions of the available multi-state Themes. | Click on "Expand" to the right to see the definitions of the available multi-state Themes. | ||
Line 2,380: | Line 2,153: | ||
</div> | </div> | ||
== | == Pattern Identification == | ||
LifeViewer | LifeViewer is able to identify [[spaceships]], [[oscillators]] and [[still-life]] patterns. For oscillators it can display a table and graphical [[map]] of periods per cell. | ||
[[File:Identify-results.png]] | |||
[[File:Identify-table.png]] | |||
[[File:Identify-map.png]] | |||
== Scripts == | |||
{{main|LifeViewer/Scripts}} | |||
LifeViewer supports a large number of script commands than can be used to control playback, the camera, labels and annotations, colours and many other aspects. | |||
== Info == | |||
LifeViewer engine information and details about the currently loaded pattern can be found by pressing 'I', or clicking the Info button under Help. | |||
== Planned features == | |||
The following features and functionalities are planned for future builds of LifeViewer: | |||
* Support for displaying @ICONS on the grid<ref name="post87414" /> | |||
* Theme support for [R]Super<ref>https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=129493#p129493</ref> | |||
=== | == Possible future features == | ||
<div class="mw-collapsible mw-collapsed"> | <div class="mw-collapsible mw-collapsed"> | ||
Click on "Expand" to the right to view the | Click on "Expand" to the right to view the list of other requested features that ''may'' appear at some stage. | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
=== Rules === | |||
< | * Native support for [[BSFKL]] rules<ref name="rulespaces1">https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=86409#p86409</ref> | ||
< | * Native support for [[Extended Generations]]<ref name="rulespaces1"/> | ||
< | * Native support for 1D totalistic rules<ref>https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=84188#p84188</ref> | ||
* Native support for higher-range Margolus rules<ref>https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=82121#p82121</ref> | |||
< | * Native support for one-dimensional rules with a range greater than 2<ref>https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=82283#p82283</ref> | ||
* Native support for alternating rules with more than 3 constituent rules<ref>https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=129157#p129157</ref> | |||
</ | === Non-square grids/selections === | ||
</ | * Diagonal/von Neumann-like selections<ref>https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=70959#p70959</ref> | ||
</ | * Selection shapes which are more useful for hexagonal and triangular grids<ref name="hextri1">https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=78941#p78941</ref><ref name="hextri2">https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=80331#p80331</ref><ref name="hextri3">https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=87226#p87226</ref> | ||
* Selection flip/rotate transformations for hexagonal and triangular grids<ref name="hextri2"/> | |||
* Directions of spaceships on hexagonal and triangular grids from Identify<ref>https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=84510#p84510</ref> | |||
* Calculating the mod of oscillators and spaceships on hexagonal and triangular grids in Identify<ref name="hextri3"/> | |||
=== | === [R]Super/[R]History === | ||
* KILLGLIDERS functionality in [R]Super<ref name="Apr2021">https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=129156&hilit=backlog#p129156</ref> | |||
< | * Support for pasting in [R]History/[R]Super-exclusive cells<ref>https://conwaylife.com/forums/viewtopic.php?p=93893#p93893</ref> | ||
* Selection inversion support for [R]History and [R]Super<ref name="Apr2021"/> | |||
</ | |||
</div> | </div> | ||
</div> | </div> | ||
=== | == Known bugs == | ||
{{main|LifeViewer/Known bugs}} | |||
== | == References == | ||
<references> | |||
< | <ref name="post87414">{{LinkForumThread | ||
|format = ref | |||
< | |title = Re: Pattern viewer for forum threads | ||
|p = 87414 | |||
|author = Chris Rowett | |||
|date = January 13, 2020 | |||
< | }}</ref> | ||
<ref name="post68678">{{LinkForumThread | |||
|format = ref | |||
|title = Re: Pattern viewer for forum threads | |||
|p = 68678 | |||
|author = Chris Rowett | |||
|date = January 26, 2019 | |||
< | }}</ref> | ||
<ref name="post68691">{{LinkForumThread | |||
|format = ref | |||
|title = Re: Pattern viewer for forum threads | |||
|p = 68691 | |||
|author = Chris Rowett | |||
|date = January 26, 2019 | |||
< | }}</ref> | ||
<ref name="post86409">{{LinkForumThread | |||
|format = ref | |||
|title = Re: Pattern viewer for forum threads | |||
|p = 86409 | |||
|author = Chris Rowett | |||
</ | |date = December 20, 2019 | ||
< | }}</ref> | ||
<ref name="post84188">{{LinkForumThread | |||
=== | |format = ref | ||
|title = Re: Pattern viewer for forum threads | |||
< | |p = 84188 | ||
|author = Chris Rowett | |||
< | |date = October 15, 2019 | ||
}}</ref> | |||
<ref name="post75775">{{LinkForumThread | |||
|format = ref | |||
|title = Re: Pattern viewer for forum threads | |||
|p = 75775 | |||
|author = Chris Rowett | |||
|date = May 6, 2019 | |||
}}</ref> | |||
</ | </references> | ||
</ | |||
== | == External links == | ||
* [https://lazyslug.com/lifeview/plugin/version.txt Release notes] | |||
* [https://lazyslug.com/lifeviewer/ LifeViewer homepage] | |||
* [https://lazyslug.com/lifeview/plugin/ LifeViewer files] | |||
{{LinkLexicon|lex_l.htm#lifeviewer}} | |||
LifeViewer | |||
{| | |||
== | === Forum threads === | ||
* {{LinkForumThread|f=7|t=1026|title=LifeViewer - Life simulator in HTML5}} | |||
* {{LinkForumThread|f=3|t=1622|title=Pattern viewer for forum threads}} | |||
| | |||
| | |||
| | |||
}} | |||
| | |||
| | |||
|title | |||
}} | |||
{{CatagolueNavbox}} | |||
{{ | |||
[[Category:Simulation software]] | |||
Latest revision as of 22:30, 20 February 2024
LifeViewer | ||
Homepage | Click here | |
---|---|---|
Purpose | Life simulation | |
Created by | Chris Rowett | |
Platform | HTML5 / Javascript |
LifeViewer is a browser-based scriptable pattern viewer and editor used to simulate Life and a wide range of other 1D and 2D cellular automata.
- If you are looking for script instructions, see LifeViewer/Scripts
- If you want instructions for using the user interface, see LifeViewer/User Interface
- If you want to use LifeViewer on your own site, see Tutorials/LifeViewer JavaScript plug-in
LifeViewer features
- Smooth non-integer zoom with anti-aliasing and rotation.
- Colour themes with cell history and longevity.
- Square, hexagonal and triangular grids.
- Pseudo 3D layers and stars.
- Multiple ways to automatically track patterns with the camera as they evolve.
- Script language that allows many features to be customized including Waypoint animations.
- Support for multiple embedded LifeViewers and/or a single popup LifeViewer.
- Ability to step back to earlier generations for all patterns and reverse playback for reversible Margolus and PCA patterns.
- Random pattern and rule generation.
- Real time auto-scaling population graph.
- Pattern annotation with Labels, Arrows, Lines and Polygons.
- Programatically pasting cells onto the grid at defined intervals (for example: glider injection).
- Ability to build patterns from RLE recipes with transformations.
- Identification of still life patterns, oscillator and spaceship periods.
- Automatic scaling for high DPI displays including smartphones and tablets.
- Editor with unlimitied undo/redo and multiple clipboards.
Rule support
LifeViewer supports the following rule families:
Built-in rules
- 2-state Margolus rules.
- 2-state outer-totalistic Life-like cellular automata (from ranges 1 to 500, supporting a wide variety of pre-programmed neighbourhood families, as well as custom neighbourhoods and weighted neighbourhoods).
- 2-state isotropic non-totalistic cellular automata (for range-1 Moore and range-1 hexagonal).
- 2-state non-isotropic cellular automata (for range-1 Moore, hexagonal and von Neumann).
- Generations rules (as an extension of the outer-totalistic, non-totalistic and non-isotropic rulespaces).
- Alternating rules.
- Partitioned cellular automata (PCA) rules.
- Elementary cellular automata (even numbers only).
- [R]History rules.
- [R]Super rules.
- [R]Investigator rules (a generalisation of StateInvestigator).
- RuleTable rules (either inline or from a Rule Repository).
- Non-deterministic rules.
Click on "Expand" to the right to view example patterns for each rule family.
- 2-state Margolus rules.
- Example: Critters (M15,14,13,3,11,5,6,1,7,9,10,2,12,4,8,0)
- Example: Critters (M15,14,13,3,11,5,6,1,7,9,10,2,12,4,8,0)
- 2-state Outer-totalistic Life-like cellular automata (from ranges 1 to 500, including Larger than Life).
- Example: Soldier Bugs (R7,C2,M1,S65..114,B65..95,NM)
- Example: Soldier Bugs (R7,C2,M1,S65..114,B65..95,NM)
- 2-state Isotropic non-totalistic cellular automata (for range-1 Moore and range-1 hexagonal).
- Example: Just Friends (B2-a/S12)
- Example: Just Friends (B2-a/S12)
- 2-state Non-isotropic cellular automata (for range-1 Moore, hexagonal and von Neumann).
- Example: MAP//8IAN1+KYD/9QAA/f8AAOu/AQD38wAI//8IgP39Akrn/wAB/78DAP/+AAD/ugAA//sQCN3+AIDfvwhD//sAQA
- Example: MAP//8IAN1+KYD/9QAA/f8AAOu/AQD38wAI//8IgP39Akrn/wAB/78DAP/+AAD/ugAA//sQCN3+AIDfvwhD//sAQA
- Generations rules (as an extension of the outer-totalistic, non-totalistic and non-isotropic rulespaces).
- Example: Fireworks (2,13,21)
- Example: Fireworks (2,13,21)
- Alternating rules.
- Example: alternlife (B13/S012345678|B/S15)
- Example: alternlife (B13/S012345678|B/S15)
- Partitioned cellular automata (PCA) rules.
- Example: PCA_4 (2PCA4,0,2,4,12,8,5,9,7,1,6,10,11,3,13,14,15)
- Example: PCA_4 (2PCA4,0,2,4,12,8,5,9,7,1,6,10,11,3,13,14,15)
- Weighted rules.
- Example: R2,C2,S2-3,B4,7-8,NW0010001210120210121000100
- Example: R2,C2,S2-3,B4,7-8,NW0010001210120210121000100
- Elementary cellular automata (even numbers only).
- Example: Wolfram 30 (W30)
- Example: Wolfram 30 (W30)
- [R]History rules.
- Example: LifeHistory
- Example: LifeHistory
- [R]Super rules.
- Example: LifeSuper
- Example: LifeSuper
- [R]Investigator rules.
- Example: B3S23Investigator
- Example: B3S23Investigator
- RuleTable rules from a repository.
- Example: Byl-loop
- Example: Byl-loop
- Non-deterministic rules.
- Example: Non-deterministic Soldier Bugs
- Example: Non-deterministic Soldier Bugs
Repository Rules
LifeViewer can load rules from the Rule: namespace here on LifeWiki. The rules must be in RuleTable format. LifeViewer supports both @TABLE and @TREE format rules. Typically @TREE rules run much faster so if possible ensure there is an @TREE version of the rule before the @TABLE version (if present). LifeViewer supports the @COLORS section and the @NAMES section but does not support the @ICONS section (which will be ignored if present), although this may be supported in future.[1]
Aliases
LifeViewer contains a large list of alias names for particular rules. This list of rule name aliases can be found by clicking the Aliases button under Help.
Grid and neighbourhood support
LifeViewer supports many different neighbourhoods on square, hexagonal or triangular grids.
Click on "Expand" to the right to view the full list of supported neighbourhoods per grid type.
- square tiling:
- outer-totalistic:
- Moore
- von Neumann
- circular
- cross
- L2
- saltire
- star
- checkerboard
- aligned checkerboard
- hash
- custom (CoordCA)
- Gaussian
- custom weighted
- far corners/edges
- non-totalistic R1 Moore
- non-isotropic
- Margolus
- PCA
- outer-totalistic:
- hexagonal or offset-square grid:
- outer totalistic:
- hexagonal
- tripod
- asterisk
- custom (CoordCA)
- custom weighted
- non-totalistic
- non-isotropic
- outer totalistic:
- triangular grid:
- outer totalistic:
- triangular Moore
- triangular edges
- triangular vertices
- triangular inner
- triangular outer
- triangular biohazard
- triangular radiation
- custom (CoordCA)
- custom weighted
- outer totalistic:
Bounded grid types
LifeViewer supports patterns on "unbounded" grids (maximum 16384x16384 in size) and the following bounded grid types:
- Plane
- Cylinder (with optional shift)
- Torus (with optional shift)
- Klein-bottle (with optional shift)
- Cross-surface
- Sphere (either diagonal)
For range 2+ neighbourhoods, hexagonal, triangular, PCA and Margolus rules only Plane and Torus (without shift) are supported.
Native support for BSFKL, Extended Generations and deficient rules is also planned.[2][3][4] Support for 1D totalistic rules and multiple neighbourhoods rules may also be planned.[5][6]
User Interface
- Main article: LifeViewer/User Interface
Themes
Themes are used to define the colours of cells, the background and the grid lines for 2-state and Generations patterns. Some Themes also specify whether major grid lines are used and if so on what interval.
Themes are primarily used to provide a visual representation of cell history and longevity.
The default Theme is "Blues" but this can be changed by clicking Theme in the Settings menu or with the THEME script command.
Grid
Some Themes define specific GridLine colours for standard and Major GridLines and also the major GridLine interval.
GRID: grid line colour
GRIDMAJOR: major grid line colour and interval
Two-state Themes
For two-state Themes there are five colours that are used for defining the cell colours:
Key | Description |
BACKGROUND | cell never occupied |
ALIVE | cell just born |
ALIVERAMP | cell alive for at least AGESTATES generations (default 63) |
DEAD | cell just died |
DEADRAMP | cell dead for at least HISTORYSTATES generations (default 63) |
New cells are drawn in the ALIVE colour.
If cells stay alive they fade from the ALIVE colour to the ALIVERAMP colour over the next AGESTATES (default 63) generations. This provides a visual representation of cell longevity.
Cells are drawn in the DEAD colour when they die.
If they stay dead they fade from the DEAD colour to the DEADRAMP colour over the next HISTORYSTATES (default 63) generations. This provides a visual representation of cell history.
Click on "Expand" to the right to see the definitions of the available two-state Themes.
Mono | |||||
---|---|---|---|---|---|
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 255 | 255 | 255 | White | |
DEAD | 0 | 0 | 0 | Black | |
Blues | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 0 | 255 | 255 | Aqua | |
ALIVERAMP | 255 | 255 | 255 | White | |
DEAD | 0 | 0 | 255 | Blue | |
DEADRAMP | 0 | 0 | 47 | ||
Fire | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 255 | 144 | 0 | ||
ALIVERAMP | 255 | 255 | 0 | Yellow | |
DEAD | 160 | 0 | 0 | ||
DEADRAMP | 32 | 0 | 0 | ||
Poison | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 0 | 255 | 255 | Aqua | |
ALIVERAMP | 255 | 255 | 255 | White | |
DEAD | 0 | 128 | 0 | Green | |
DEADRAMP | 0 | 24 | 0 | ||
Yellow | |||||
BACKGROUND | 0 | 32 | 128 | ||
ALIVE | 255 | 255 | 0 | Yellow | |
ALIVERAMP | 255 | 255 | 255 | White | |
DEAD | 128 | 0 | 128 | Purple | |
DEADRAMP | 0 | 47 | 0 | ||
Gray | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 176 | 176 | 176 | ||
ALIVERAMP | 240 | 240 | 240 | ||
DEAD | 104 | 104 | 104 | ||
DEADRAMP | 16 | 16 | 16 | ||
Inverse | |||||
BACKGROUND | 255 | 255 | 255 | White | |
ALIVE | 0 | 0 | 0 | Black | |
DEAD | 255 | 255 | 255 | White | |
Day | |||||
BACKGROUND | 255 | 255 | 255 | White | |
ALIVE | 0 | 0 | 255 | Blue | |
ALIVERAMP | 0 | 0 | 0 | Black | |
DEAD | 0 | 255 | 255 | Aqua | |
DEADRAMP | 240 | 240 | 240 | ||
Occupied | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 240 | 240 | 240 | ||
DEAD | 240 | 240 | 240 | ||
Red | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 240 | 240 | 240 | ||
DEAD | 160 | 0 | 0 | ||
LifeHistory | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 0 | 240 | 0 | ||
ALIVERAMP | 16 | 255 | 16 | ||
DEAD | 0 | 0 | 160 | ||
DEADRAMP | 0 | 0 | 96 | ||
Generations | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 255 | 255 | 0 | Yellow | |
ALIVERAMP | 255 | 255 | 255 | White | |
DEAD | 255 | 0 | 0 | Red | |
DEADRAMP | 64 | 0 | 0 | ||
Golly | |||||
BACKGROUND | 48 | 48 | 48 | ||
ALIVE | 255 | 255 | 255 | White | |
DEAD | 48 | 48 | 48 | ||
GRID | 80 | 80 | 80 | ||
GRIDMAJOR | 112 | 112 | 112 | ||
GRIDMAJOR | 10 | ||||
MCell | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 255 | 255 | 0 | Yellow | |
DEAD | 0 | 0 | 0 | Black | |
GRID | 64 | 0 | 0 | ||
GRIDMAJOR | 99 | 3 | 1 | ||
GRIDMAJOR | 5 | ||||
Catagolue | |||||
BACKGROUND | 192 | 255 | 238 | ||
ALIVE | 0 | 0 | 0 | Black | |
DEAD | 160 | 221 | 204 | ||
GRID | 160 | 221 | 204 | ||
GRIDMAJOR | 160 | 221 | 204 | ||
GRIDMAJOR | 0 | ||||
Caterer | |||||
BACKGROUND | 54 | 57 | 62 | ||
ALIVE | 255 | 255 | 255 | White | |
DEAD | 54 | 57 | 62 | ||
GRID | 0 | 0 | 0 | Black | |
GRIDMAJOR | 0 | 0 | 0 | Black | |
GRIDMAJOR | 0 | ||||
Life32 | |||||
BACKGROUND | 255 | 255 | 255 | White | |
ALIVE | 0 | 0 | 128 | Navy | |
DEAD | 255 | 255 | 255 | White | |
GRID | 192 | 192 | 192 | Silver | |
GRIDMAJOR | 128 | 128 | 128 | Gray | |
GRIDMAJOR | 5 | ||||
Margolus | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 255 | 255 | 0 | Yellow | |
ALIVERAMP | 255 | 255 | 255 | White | |
DEAD | 0 | 0 | 128 | Navy | |
DEADRAMP | 0 | 0 | 47 | ||
GRID | 32 | 32 | 255 | ||
GRIDMAJOR | 64 | 64 | 128 | ||
GRIDMAJOR | 2 | ||||
PCA | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 176 | 176 | 176 | ||
ALIVERAMP | 240 | 240 | 240 | ||
DEAD | 64 | 64 | 64 | ||
DEADRAMP | 24 | 24 | 24 | ||
Book | |||||
BACKGROUND | 255 | 255 | 255 | White | |
ALIVE | 0 | 0 | 0 | Black | |
DEAD | 192 | 220 | 255 | ||
DEADRAMP | 255 | 220 | 192 | ||
GRID | 192 | 192 | 192 | Silver | |
GRIDMAJOR | 209 | 209 | 209 | ||
GRIDMAJOR | 0 |
Multi-state Themes
Multi-state Themes are used for Generations rules and there are six colours that are used for defining the cell colours:
Key | Description |
BACKGROUND | cell never occupied |
ALIVE | cell alive |
DYING | cell just started dying |
DYINGRAMP | cell about to die |
DEAD | cell just died |
DEADRAMP | cell dead for at least HISTORYSTATES generations (default 63) |
New cells are drawn in the ALIVE colour.
Cells are drawn in the DYING colour when they start to die. They then fade to the DYINGRAMP colour over the number of generations defined in the rule.
Once cells reach the DYINGRAMP colour then on the next generation they die and become the DEAD colour.
If they stay dead they fade from the DEAD colour to the DEADRAMP colour over the next HISTORYSTATES (default 63) generations. This provides a visual representation of cell history.
Click on "Expand" to the right to see the definitions of the available multi-state Themes.
Mono | |||||
---|---|---|---|---|---|
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 255 | 255 | 255 | White | |
DYING | 255 | 255 | 255 | White | |
DYINGRAMP | 0 | 0 | 0 | Black | |
DEAD | 0 | 0 | 0 | Black | |
Blues | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 0 | 255 | 255 | Aqua | |
DYING | 0 | 255 | 255 | Aqua | |
DYINGRAMP | 0 | 0 | 255 | Blue | |
DEAD | 0 | 0 | 128 | Navy | |
DEADRAMP | 0 | 0 | 47 | ||
Fire | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 255 | 144 | 0 | ||
DYING | 255 | 144 | 0 | ||
DYINGRAMP | 240 | 0 | 0 | ||
DEAD | 160 | 0 | 0 | ||
DEADRAMP | 32 | 0 | 0 | ||
Poison | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 0 | 255 | 255 | Aqua | |
DYING | 0 | 255 | 255 | Aqua | |
DYINGRAMP | 0 | 192 | 0 | ||
DEAD | 0 | 128 | 0 | Green | |
DEADRAMP | 0 | 24 | 0 | ||
Yellow | |||||
BACKGROUND | 0 | 32 | 128 | ||
ALIVE | 255 | 255 | 0 | Yellow | |
DYING | 255 | 255 | 0 | Yellow | |
DYINGRAMP | 192 | 64 | 64 | ||
DEAD | 128 | 0 | 128 | Purple | |
DEADRAMP | 0 | 47 | 0 | ||
Gray | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 240 | 240 | 240 | ||
DYING | 240 | 240 | 240 | ||
DYINGRAMP | 160 | 160 | 160 | ||
DEAD | 104 | 104 | 104 | ||
DEADRAMP | 16 | 16 | 16 | ||
Inverse | |||||
BACKGROUND | 255 | 255 | 255 | White | |
ALIVE | 0 | 0 | 0 | Black | |
DYING | 0 | 0 | 0 | Black | |
DYINGRAMP | 255 | 255 | 255 | White | |
DEAD | 255 | 255 | 255 | White | |
Day | |||||
BACKGROUND | 255 | 255 | 255 | White | |
ALIVE | 0 | 0 | 255 | Blue | |
DYING | 0 | 0 | 255 | Blue | |
DYINGRAMP | 0 | 255 | 255 | Aqua | |
DEAD | 0 | 192 | 192 | ||
DEADRAMP | 240 | 240 | 240 | ||
Occupied | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 240 | 240 | 240 | ||
DYING | 240 | 240 | 240 | ||
DEAD | 240 | 240 | 240 | ||
Red | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 255 | 255 | 255 | White | |
DYING | 160 | 160 | 160 | ||
DEAD | 160 | 0 | 0 | ||
LifeHistory | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 16 | 255 | 16 | ||
DYING | 16 | 255 | 16 | ||
DYINGRAMP | 0 | 128 | 160 | ||
DEAD | 0 | 0 | 160 | ||
DEADRAMP | 0 | 0 | 96 | ||
Generations | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 255 | 255 | 0 | Yellow | |
DYING | 255 | 255 | 0 | Yellow | |
DYINGRAMP | 255 | 0 | 0 | Red | |
DEAD | 128 | 0 | 0 | Maroon | |
DEADRAMP | 64 | 0 | 0 | ||
Golly | |||||
BACKGROUND | 48 | 48 | 48 | ||
ALIVE | 255 | 255 | 0 | Yellow | |
DYING | 255 | 255 | 0 | Yellow | |
DYINGRAMP | 255 | 0 | 0 | Red | |
DEAD | 48 | 48 | 48 | ||
MCell | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 255 | 255 | 0 | Yellow | |
DYING | 255 | 255 | 0 | Yellow | |
DYINGRAMP | 0 | 255 | 0 | Lime | |
DEAD | 0 | 0 | 0 | Black | |
Catagolue | |||||
BACKGROUND | 192 | 255 | 238 | ||
ALIVE | 0 | 0 | 0 | Black | |
DYING | 2 | 129 | 2 | ||
DYINGRAMP | 96 | 192 | 139 | ||
DEAD | 160 | 221 | 204 | ||
Caterer | |||||
BACKGROUND | 54 | 57 | 62 | ||
ALIVE | 255 | 170 | 0 | ||
DYING | 255 | 170 | 0 | ||
DYINGRAMP | 255 | 85 | 0 | ||
DEAD | 54 | 57 | 62 | ||
Life32 | |||||
BACKGROUND | 255 | 255 | 255 | White | |
ALIVE | 0 | 0 | 128 | Navy | |
DYING | 0 | 0 | 128 | Navy | |
DYINGRAMP | 0 | 0 | 64 | ||
DEAD | 255 | 255 | 255 | White | |
Margolus | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 255 | 255 | 0 | Yellow | |
DYING | 255 | 255 | 0 | Yellow | |
DYINGRAMP | 64 | 64 | 128 | ||
DEAD | 0 | 0 | 128 | Navy | |
DEADRAMP | 0 | 0 | 47 | ||
PCA | |||||
BACKGROUND | 0 | 0 | 0 | Black | |
ALIVE | 240 | 240 | 240 | ||
DYING | 240 | 240 | 240 | ||
DYINGRAMP | 160 | 160 | 160 | ||
DEAD | 64 | 64 | 64 | ||
DEADRAMP | 24 | 24 | 24 | ||
Book | |||||
BACKGROUND | 255 | 255 | 255 | White | |
ALIVE | 0 | 0 | 0 | Black | |
DYING | 128 | 128 | 128 | Gray | |
DYINGRAMP | 24 | 24 | 24 | ||
DEAD | 192 | 220 | 255 | ||
DEADRAMP | 255 | 220 | 192 |
Pattern Identification
LifeViewer is able to identify spaceships, oscillators and still-life patterns. For oscillators it can display a table and graphical map of periods per cell.
Scripts
- Main article: LifeViewer/Scripts
LifeViewer supports a large number of script commands than can be used to control playback, the camera, labels and annotations, colours and many other aspects.
Info
LifeViewer engine information and details about the currently loaded pattern can be found by pressing 'I', or clicking the Info button under Help.
Planned features
The following features and functionalities are planned for future builds of LifeViewer:
Possible future features
Click on "Expand" to the right to view the list of other requested features that may appear at some stage.
Rules
- Native support for BSFKL rules[8]
- Native support for Extended Generations[8]
- Native support for 1D totalistic rules[9]
- Native support for higher-range Margolus rules[10]
- Native support for one-dimensional rules with a range greater than 2[11]
- Native support for alternating rules with more than 3 constituent rules[12]
Non-square grids/selections
- Diagonal/von Neumann-like selections[13]
- Selection shapes which are more useful for hexagonal and triangular grids[14][15][16]
- Selection flip/rotate transformations for hexagonal and triangular grids[15]
- Directions of spaceships on hexagonal and triangular grids from Identify[17]
- Calculating the mod of oscillators and spaceships on hexagonal and triangular grids in Identify[16]
[R]Super/[R]History
Known bugs
- Main article: LifeViewer/Known bugs
References
- ↑ 1.0 1.1 Chris Rowett (January 13, 2020). Re: Pattern viewer for forum threads (discussion thread) at the ConwayLife.com forums
- ↑ Chris Rowett (January 26, 2019). Re: Pattern viewer for forum threads (discussion thread) at the ConwayLife.com forums
- ↑ Chris Rowett (January 26, 2019). Re: Pattern viewer for forum threads (discussion thread) at the ConwayLife.com forums
- ↑ Chris Rowett (December 20, 2019). Re: Pattern viewer for forum threads (discussion thread) at the ConwayLife.com forums
- ↑ Chris Rowett (October 15, 2019). Re: Pattern viewer for forum threads (discussion thread) at the ConwayLife.com forums
- ↑ Chris Rowett (May 6, 2019). Re: Pattern viewer for forum threads (discussion thread) at the ConwayLife.com forums
- ↑ https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=129493#p129493
- ↑ 8.0 8.1 https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=86409#p86409
- ↑ https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=84188#p84188
- ↑ https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=82121#p82121
- ↑ https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=82283#p82283
- ↑ https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=129157#p129157
- ↑ https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=70959#p70959
- ↑ https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=78941#p78941
- ↑ 15.0 15.1 https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=80331#p80331
- ↑ 16.0 16.1 https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=87226#p87226
- ↑ https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=84510#p84510
- ↑ 18.0 18.1 https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=129156&hilit=backlog#p129156
- ↑ https://conwaylife.com/forums/viewtopic.php?p=93893#p93893
External links
- LifeViewer at the Life Lexicon
Forum threads
- LifeViewer - Life simulator in HTML5 (discussion thread) at the ConwayLife.com forums
- Pattern viewer for forum threads (discussion thread) at the ConwayLife.com forums
|