Life tag testing

For scripts to aid with computation or simulation in cellular automata.
Locked
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

Build 325 is now available on the lazyslug server

Enhancements in this build:
  • added empty rule "none" which does not change cells each generation
    • can be postfixed with neighbourhood and/or bounded grid
    • default colours are generations ramp
This build is a Release Candidate.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

rowett wrote:
dvgrn wrote:I don't really want to be using Generations when I'm doing this kind of pattern, with multiple states with custom colors. Is there something I could set the rule string to, so that I wouldn't get the "Invalid rule" message at the bottom?
Yes: "rule = none"

You'll still need custom colours since "none" uses the generations gradient by default.

You won't need "VIEWONLY" since playing the pattern does nothing for the "none" rule other than increment the counter.
User avatar
dvgrn
Moderator
Posts: 12053
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Life tag testing

Post by dvgrn »

rowett wrote:Yes: "rule = none"

You'll still need custom colours since "none" uses the generations gradient by default.

You won't need "VIEWONLY" since playing the pattern does nothing for the "none" rule other than increment the counter.
Looks great! I was able to rebuild the 0E0P metacell explanation and make it quite a bit nicer.

One oddity that I ran into that I didn't really understand was why ANGLE and GRID commands had to be placed after the POI commands. Generally any view settings that came before the POI settings were ignored, or rather were overwritten as LifeViewer moved to each new POI location.

GRID seemed like a weird case, but it's probably just something about a POI command resetting the view to a default no-GRID condition. Not sure why any POI command should do anything to the initial view -- at least, I wasn't expecting them to have any effect until I navigated to those particular POIs.

Code: Select all

#C [[ ANGLE 45 GRID ]]
#C [[ COLOR 1 Yellow COLOR 2 Orange COLOR 3 Pink COLOR 4 Gray COLOR 5 Purple ]]
#C [[ COLOR 6 Blue COLOR 7 Cyan COLOR 8 Red COLOR 9 Green ]]
#C [[ LABELSIZE 12 LABELALPHA 1 LABELANGLE 315 COLOR LABEL White ]]
#C [[ POI X -108 Y 92 Z 32 ANGLE 45 POITRANS 0 ]] Point of interest #1
#C [[ LABEL 11 211 16 "Here's where it all starts\n-- five metacells forming a glider, in Stage E\n(shown in purple)" ]]
#C [[ POI X -88 Y 72 Z 32 POITRANS 0 ]] POI #2
#C [[ LABEL 31 191 16 "Metacells move to Stage F (blue).\n-- ready to start constructing children, SE first" ]]
#C [[ POI X -68 Y 52 Z 32 POITRANS 0 ]] POI #3
#C [[ LABEL 51 171 16 "Metacells remain in Stage F (blue).\nChildren constructed SE of each metacell\n(yellow cells, Stage A)" ]]
#C [[ POI X -48 Y 32 Z 32 POITRANS 0 ]] POI #4
#C [[ LABEL 71 151 16 "Metacells remain in Stage F (blue).\nChildren constructed NE of each metacell\n(yellow cells, Stage A)" ]]
#C [[ POI X -28 Y 12 Z 32 POITRANS 0 ]] POI #5
#C [[ LABEL 91 131 16 "Metacells remain in Stage F (blue).\nChildren constructed NW of each metacell\n(yellow cells, Stage A)" ]]
#C [[ POI X -8 Y -8 Z 32 POITRANS 0 ]] POI #6
#C [[ LABEL 111 111 16 "Metacells remain in Stage F (blue).\nChildren constructed SW of each metacell\n(yellow cells, Stage A)" ]]
#C [[ POI X 12 Y -28 Z 32 POITRANS 0 ]] POI #7
#C [[ LABEL 130 90 16 "Original metacells move to Stage G (cyan).\nParent metacells send their own states\nto each immediate neighbor. All receiving neighbors\nare recently constructed child metacells." ]]
#C [[ POI X 32 Y -48 Z 32 POITRANS 0 ]] POI #8
#C [[ LABEL 150 70 16 "Metacells move to Stage H (red)\nThe cycle is complete. The original metacells self-destruct.\nState signals from the original metacells are collected and\nstored in registers in each neighboring child cell,\nwhich have all now moved to Stage B (orange)" ]]
#C [[ POI X 52 Y -68 Z 32 POITRANS 0 ]] POI #9
#C [[ LABEL 170 50 16 "Original metacells are gone now\n(green is the background state, completely empty).\nThe four child metacells move to Stage C (pink)\nIn each metacell, the collected state values from each\nneighbor are used to calculate the future state of the cell." ]]
#C [[ POI X 72 Y -88 Z 32 POITRANS 0 ]] POI #10
#C [[ LABEL 190 30 16 "The child metacells move to Stage D (gray)\nIf a child metacell's new calculated state is 0, it\nself-destructs. Here all 13 child metacells survive.\nThis is what always happens in the first\nhalf-cycle, when a Moore-neighborhood rule\nis being emulated." ]]
#C [[ POI X 92 Y -108 Z 32 POITRANS 0 ]] POI #11
#C [[ LABEL 211 11 16 "The thirteen child metacells move to Stage E (purple)\nThe construction/signal/collect/decide cycle begins again.\nThis cycle happens twice in each 2^36 0E0P metacell cycle." ]]
#C [[ POI X -88 Y 112 Z 32 POITRANS 0 ]] POI #12
#C [[ LABEL 30 230 16 "The cycle restarts.\nNow there are thirteen metacells, all in Stage E\n(shown in purple)" ]]
#C [[ POI X -68 Y 92 Z 32 POITRANS 0 ]] POI #13
#C [[ LABEL 50 210 16 "The thirteen metacells move to Stage F (blue)\n-- ready to start constructing children, SE first" ]]
#C [[ POI X -48 Y 72 Z 32 POITRANS 0 ]] POI #14
#C [[ LABEL 70 190 16 "The thirteen metacells remain in Stage F (blue).\nThirteen children are constructed in the SE\n(yellow metacells, Stage A)" ]]
#C [[ POI X -28 Y 52 Z 32 POITRANS 0 ]] POI #15
#C [[ LABEL 90 170 16 "The thirteen metacells remain in Stage F (blue).\nFour more children are constructed in the NE\n(yellow metacells, Stage A)" ]]
#C [[ POI X -8 Y 32 Z 32 POITRANS 0 ]] POI #16
#C [[ LABEL 110 150 16 "The thirteen metacells remain in Stage F (blue).\nFour more children are constructed in the NW\n(yellow metacells, Stage A)" ]]
#C [[ POI X 12 Y 12 Z 32 POITRANS 0 ]] POI #17
#C [[ LABEL 130 130 16 "The thirteen metacells remain in Stage F (blue).\nOne more child is constructed in the SW\n(yellow metacell, Stage A)" ]]
#C [[ POI X 32 Y -8 Z 32 POITRANS 0 ]] POI #18
#C [[ LABEL 150 110 16 "Metacells move to Stage G (cyan).\nEach parent metacell sends its own state to each neighbor." ]]
#C [[ POI X 52 Y -28 Z 32 POITRANS 0 ]] POI #19
#C [[ LABEL 170 90 16 "Parent metacells move to Stage H (red).\nChild metacells move to stage B (orange).\nThe parent metacells self-destruct, as always.\nState signals from the parent cell are stored in registers\nin the new child cells." ]]
#C [[ POI X 72 Y -48 Z 32 POITRANS 0 ]] POI #20
#C [[ LABEL 190 70 16 "The thirteen parent metacells are gone now -- back to the\ngreen background state, completely empty.\nThe twenty-two child metacells move to Stage C (pink)\nIn each metacell, the collected neighbor states\nare used to calculate the future state of the metacell." ]]
#C [[ POI X 92 Y -68 Z 32 POITRANS 0 ]] POI #21
#C [[ LABEL 210 50 16 "The twenty-two child metacells move to Stage D (gray)\nIf a child metacell's calculated state is 0, it self-destructs.\nIn this case, where a B3/S23 glider is being emulated,\nonly five of the twenty-two child metacells survive." ]]
#C [[ POI X 112 Y -88 Z 32 POITRANS 0 ]] POI #22
#C [[ LABEL 230 30 16 "The five remaining metacells move to Stage E (purple).\nEmpty background locations are shown in green." ]]
#C [[ POI X 132 Y -108 Z 32 POITRANS 0 ]] POI #23 (initial position, because it was defined last)
#C [[ HEIGHT 600 POPUPHEIGHT 600 POPUPWIDTH 800 ]]
#C [[ LABEL 245 6 16 "Press 'J' to move forward through 0E0P stages,\nor 'Shift+J' to move backwards." ]]
x = 233, y = 233, rule = none
206.I$205.3I$204.5I$203.7I$202.3IEIE3I$201.3IEIEIE3I$200.5IEIEIE3I$
201.5IEIE3I$202.3IEIE3I$203.3IE3I$204.5I$205.3I$206.I8$186.I39.I$185.
3I37.3I$184.5I35.5I$183.7I33.7I$182.3IDID3I31.9I$181.3IDIDID3I29.6IE
4I$180.5IDIDID3I27.8IE4I$181.5IDID3I29.4IEIE4I$182.3IDID3I31.6IE2I$
183.3ID3I33.7I$184.5I35.5I$185.3I37.3I$186.I39.I8$166.I39.I$165.3I37.
3I$164.5I35.5I$163.7I33.2IHIH2I$162.3ICIC3I31.2IHIHIH2I$161.3ICICIC3I
29.2IHIHIDIH2I$160.5ICICIC3I27.4IHIHIDIH2I$161.5ICIC3I29.4IDIDIH2I$
162.3ICIC3I31.2IHIHID2I$163.3IC3I33.2IHIH2I$164.5I35.2IH2I$165.3I37.
3I$166.I39.I8$146.I39.I$145.3I37.3I$144.5I35.5I$143.7I33.2ICIC2I$142.
3IBIB3I31.2ICICIC2I$141.3IBHBHB3I29.2ICICICIC2I$140.5IBIBHB3I27.4ICIC
ICIC2I$141.5IBHB3I29.4ICICIC2I$142.3IBHB3I31.2ICICIC2I$143.3IB3I33.2I
CIC2I$144.5I35.2IC2I$145.3I37.3I$146.I39.I8$126.I39.I$125.3I37.3I$
124.5I35.5I$123.7I33.2IBIB2I$122.3IAIA3I31.2IBHBHB2I$121.3IAGAGA3I29.
2IBHBHBHB2I$120.5IAIAGA3I27.4IBHBHBHB2I$121.5IAGA3I29.4IBHBHB2I$122.
3IAGA3I31.2IBHBHB2I$123.3IA3I33.2IBHB2I$124.5I35.2IB2I$125.3I37.3I$
126.I39.I8$106.I39.I$105.3I37.3I$104.5I35.5I$103.7I33.2IAIA2I$102.3IA
IA3I31.2IAGAGA2I$101.3IAFAFA3I29.2IAGAGAGA2I$100.5IAIAFA3I27.4IAGAGAG
A2I$101.5IAFA3I29.4IAGAGA2I$102.3IAFA3I31.2IAGAGA2I$103.3IA3I33.2IAGA
2I$104.5I35.2IA2I$105.3I37.3I$106.I39.I8$86.I39.I$85.3I37.3I$84.5I35.
5I$83.7I33.2IAIA2I$82.3IAIA3I31.2IAFAFA2I$81.3IAFAFA3I29.2IAFAFAFA2I$
80.7IAFA3I27.4IAFAFAFA2I$81.5IAFA3I29.4IAFAFA2I$82.3IAFA3I31.2IAFAFA
2I$83.7I33.2IAFA2I$84.5I35.2IA2I$85.3I37.3I$86.I39.I8$66.I39.I$65.3I
37.3I$64.5I35.5I$63.7I33.2IAIA2I$62.3IAIA3I31.2IAFAFA2I$61.4IFAFA3I
29.2IAFAFAFA2I$60.7IAFA3I27.4IAFAFAFA2I$61.5IAFA3I29.4IAFAFA2I$62.4IF
A3I31.2IAFAFA2I$63.7I33.2IAFA2I$64.5I35.5I$65.3I37.3I$66.I39.I8$46.I
39.I$45.3I37.3I$44.5I35.5I$43.7I33.2IAIA2I$42.9I31.2IAFAFA2I$41.4IFAF
A3I29.3IFAFAFA2I$40.8IFA3I27.5IFAFAFA2I$41.6IFA3I29.4IAFAFA2I$42.4IFA
3I31.3IFAFA2I$43.7I33.3IFA2I$44.5I35.5I$45.3I37.3I$46.I39.I8$26.I39.I
$25.3I37.3I$24.5I35.5I$23.7I33.7I$22.9I31.3IFAFA2I$21.4IFIF4I29.3IFAF
AFA2I$20.8IF4I27.5IFAFAFA2I$21.6IF4I29.5IFAFA2I$22.4IF4I31.3IFAFA2I$
23.7I33.3IFA2I$24.5I35.5I$25.3I37.3I$26.I39.I8$6.I39.I$5.3I37.3I$4.5I
35.5I$3.7I33.7I$2.9I31.3IFIF3I$.4IEIE4I29.3IFIFIF3I$8IE4I27.5IFIFIF3I
$.6IE4I29.5IFIF3I$2.4IE4I31.3IFIF3I$3.7I33.3IF3I$4.5I35.5I$5.3I37.3I$
6.I39.I8$26.I$25.3I$24.5I$23.7I$22.3IEIE3I$21.3IEIEIE3I$20.5IEIEIE3I$
21.5IEIE3I$22.3IEIE3I$23.3IE3I$24.5I$25.3I$26.I!
-- Oh, and of course I rolled out Build 325, so that could be announced on the "Pattern viewer" thread. I could do it, but I have to go build a compost bin in the back garden...
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

Build 326 is now available on the lazyslug server

Enhancements in this build:
  • "none" rule default colour set is now Golly's default
Fixes in this build:
  • disable History for "none" rule
  • Help information had incorrect sign for POI X and Y
This build is a Release Candidate.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

dvgrn wrote:One oddity that I ran into that I didn't really understand was why ANGLE and GRID commands had to be placed after the POI commands. Generally any view settings that came before the POI settings were ignored, or rather were overwritten as LifeViewer moved to each new POI location.

GRID seemed like a weird case, but it's probably just something about a POI command resetting the view to a default no-GRID condition. Not sure why any POI command should do anything to the initial view -- at least, I wasn't expecting them to have any effect until I navigated to those particular POIs.
A POI can have any of the following settings defined:
X, Y, ZOOM, ANGLE, DEPTH, LAYERS, THEME, GPS, STEP, STOP and LOOP

Anything from that list that is not defined in the POI is not changed when switching to that POI.

GRID is not a per POI setting and so is a global setting.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

Also I notice from your script you create a final POI to position the camera. By default the final POI definition is the default camera position but you can change this with the [[ INITIAL ]] keyword after any [[ POI ]] definition.

e.g. [[ POI INITIAL X 2 Y -5 ANGLE 45 ]]
User avatar
dvgrn
Moderator
Posts: 12053
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Life tag testing

Post by dvgrn »

rowett wrote:A POI can have any of the following settings defined:
X, Y, ZOOM, ANGLE, DEPTH, LAYERS, THEME, GPS, STEP, STOP and LOOP

Anything from that list that is not defined in the POI is not changed when switching to that POI.

GRID is not a per POI setting and so is a global setting.
That mostly makes sense. But if GRID is a global setting, then in the 0E0P showcase pattern above, why isn't the grid turned on?

Along the same lines, why isn't the initial view angle 45 degrees? It seems like defining a POI sets the default view to each POI in turn, which I didn't expect.

Also, why are label angles = 360 minus view angles? Didn't expect that either, so my first try produced text turned vertically, 90 degrees clockwise from what I wanted.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

Build 327 is now available on the lazyslug server

Fixes in this build:
  • global camera and view settings were being ignored when POIs defined
  • disabled Themes for "none" rule
This build is a Release Candidate.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

dvgrn wrote:That mostly makes sense. But if GRID is a global setting, then in the 0E0P showcase pattern above, why isn't the grid turned on?

Along the same lines, why isn't the initial view angle 45 degrees?
This was a bug fixed in build 327. POIs were causing the global settings to be ignored. Now the global settings are set and then modified if an INITIAL POI is defined.

Note: when this build goes live you'll need to adjust your showcase pattern to either a) set the initial camera position at the beginning or b) add INITIAL to the POI 23 definition.
dvgrn wrote:Also, why are label angles = 360 minus view angles? Didn't expect that either, so my first try produced text turned vertically, 90 degrees clockwise from what I wanted.
Firstly LifeViewer (perhaps controversially) has angles going from 0 to 360 clockwise. 0 is compass North, 90 is compass East, 180 is South and 270 is West.

If you set the view to 45 degress then by default labels will also be at 45 degrees. The LABELANGLE command defines an angle offset from the current view. So if you want LABELs at 0 degrees when the view is 45 degrees you need to set LABELANGLE to 360 - 45.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

For RuleTables is there a reason why @TABLE is used rather than @TREE and vice versa? Is it historic or is each useful in its own right.
User avatar
dvgrn
Moderator
Posts: 12053
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Life tag testing

Post by dvgrn »

rowett wrote:For RuleTables is there a reason why @TABLE is used rather than @TREE and vice versa? Is it historic or is each useful in its own right.
@TABLEs are much more human-readable and human-writable than @TREEs. But @TREEs are a much more efficient internal representation of a rule. I seem to recall that Golly actually reads rule-table files just once and converts them immediately to an internal tree representation.

Originally I think it seemed to make obvious sense to have @TREE as a format, since it was so much more efficient. But in practice, for 99.9% of rule tables, the conversion to an internal tree representation takes a negligible amount of time. So everybody just uses @TABLE, for the most part, since they're so much more readable (relatively speaking).
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

Build 328 is now available on the lazyslug server

Enhancements in this build:
  • increased maximum STEP to 64
  • first part of @RULE and @TREE decoder
  • deprecated [[ STRICT ]] validation command
Fixes in this build:
  • custom colour could not be applied to state 255
This build is a Release Candidate.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

Build 329 is now available on the lazyslug server

Fixes in this build:
  • fixed script reader
  • improved rule name validation
This build is a Release Candidate.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

Dave with the release of the new build which fixed the POI bug I fixed your post by adding INITIAL on the final POI.
User avatar
dvgrn
Moderator
Posts: 12053
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Life tag testing

Post by dvgrn »

rowett wrote:Dave with the release of the new build which fixed the POI bug I fixed your post by adding INITIAL on the final POI.
Thanks, it looks good. I really like the way that turned out -- a labeled walkthrough at the user's pace. It's hard to believe that POIs haven't seen much use since they were implemented... when I looked it up the first appearance turned out to be November 2015 (!?), which was even harder to believe.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

dvgrn wrote:
rowett wrote:Dave with the release of the new build which fixed the POI bug I fixed your post by adding INITIAL on the final POI.
Thanks, it looks good. I really like the way that turned out -- a labeled walkthrough at the user's pace. It's hard to believe that POIs haven't seen much use since they were implemented... when I looked it up the first appearance turned out to be November 2015 (!?), which was even harder to believe.
I just made one more fix. I moved the line:

Code: Select all

#C [[ GRID ANGLE 45 HEIGHT 600 THEME MCell GRIDMAJOR 0 ]]
... to before the POI definitions so that GRID and ANGLE 45 are global definitions.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

I had a thought, dangerous I know, that it might be useful to have a script command that pasted some RLE at a particular position on the grid. This could be used in conjunction with waypoints (the [[ T ]] command) to allow, for example, a glider to be dynamically inserted into a pattern at a certain generation.

Thoughts?
User avatar
dvgrn
Moderator
Posts: 12053
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Life tag testing

Post by dvgrn »

rowett wrote:I had a thought, dangerous I know, that it might be useful to have a script command that pasted some RLE at a particular position on the grid. This could be used in conjunction with waypoints (the [[ T ]] command) to allow, for example, a glider to be dynamically inserted into a pattern at a certain generation.

Thoughts?
That would actually be enormously helpful for some of the animations I'm working on, where it's currently impossible to show -- for example -- a Garden of Eden where it belongs on the discovery timeline, thousands of ticks after T=0.

Another example would be adding the 2013 synthesis that Martin mentioned, without having to invent new technology to reflect arbitrarily complicated synchronized glider salvos 90 degrees -- so that they don't pass through other junk I've already added to the timeline.

Of course the most common use will end up being April Fools Day solutions to the omniperiodicity problem, but we won't mention that...
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

Build 330 is now available on the lazyslug server

Enhancements in this build:
  • new script command [[ RLE T X Y rle ]] - test
    • pastes rle at position X, Y on generation T
This build is a Release Candidate.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

Just made an adjustment to the coordinates.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

Build 331 is now available on the lazyslug server

Enhancements in this build:
  • new script command [[ RLEMODE (ON|COPY|XOR|NOT|AND) ]] - test
    • sets paste mode for subsequent [[ RLE ]] commands
    • default mode is OR
This build is a Release Candidate.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

With the paste modes it's now possible to have items appear at a particular generation (using OR mode) and then disappear at a later generation (using XOR mode).
I'm debating adding a feature so you can name individual blocks of RLE and then refer to them later in the RLE command e.g.:
[[ PATTERN GliderNW1 ooo$o$bo! ]]
[[ RLE 0 10 10 GliderNW1 ]]

Useful or overkill?
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

... And while I'm thinking about it how about converting the zero-player game into a one-player game by assigning a key binding to a non-temporal paste command so you could (for example) insert a glider at a specific position at any time during playback by tapping a key.
User avatar
dvgrn
Moderator
Posts: 12053
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Life tag testing

Post by dvgrn »

rowett wrote:... And while I'm thinking about it how about converting the zero-player game into a one-player game by assigning a key binding to a non-temporal paste command so you could (for example) insert a glider at a specific position at any time during playback by tapping a key.
Demand for this is quite low at the moment, but it might be possible to create some demand with a few well-designed demonstrations. Glider-to-spaceship converters, if nothing else.

Life being what it is, it's kind of hard to design an arcade game where you clean up, I don't know, a Space-Invaders-like cloud of gradually approaching spaceships in a bounded grid, by shooting gliders at them. The timing difference between success and sudden chaos is just a little too subtle, it seems to me

So it seems like this feature would mostly be useful for stable-circuitry patterns (and for causing large explosions, not that there's anything wrong with that.) What other use cases are you thinking about? I'm probably missing something good.
User avatar
rowett
Moderator
Posts: 4597
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Life tag testing

Post by rowett »

dvgrn wrote:Life being what it is, it's kind of hard to design an arcade game where you clean up, I don't know, a Space-Invaders-like cloud of gradually approaching spaceships in a bounded grid, by shooting gliders at them. The timing difference between success and sudden chaos is just a little too subtle, it seems to me
I was thinking of using LifeHistory state 6 cells to keep things being too explosive like in the existing LifeHistory example below:

Code: Select all

#C [[ ZOOM 1 ]]
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
.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.
B.F.F.B.F.F.B.FBF.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.F.F.B.F.F3BFBF.2B2F2.3B$57.F10B.5B.5B.A4B.5B.5B.5B.26BF2BF133B$
57.24B2A2BA129BA33B2A19B$56.23BA3B2A63B3A63BABA32B4A17B$55.F23BABA67B
2A66BA30BABA2BA16B$56.23BA3B2A63B3A63BABA31BAB4A14BF3B63.F3.BF$57.24B
2A2BA129BA33B4A20B3.B59.5B$56.12B.5B.5B.A4B.5B.5B.5B.28BF116BA23B.B2C
57.6B$57.7BF.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.
F.F7BF3.F2B.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.F.F
.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.FBF.2BFBF3BFBF8B3A8B2C
57.7B$58.6B61.7B125.10BA7B.B57.8B$56.F.5B.F59.9B125.7B3A7B58.10B$57.
7B61.7B125.15B61.10B$56.9B59.F.5B.F123.4B.5BA6B60.11B$57.7B61.7B123.
4B2.3B3A5B61.11B$56.F7BF59.F7BF121.4B3.B3A7B61.11B$57.7B61.7B121.4B3.
3B2A2B.3B55.F.B.F.2F11B$56.F.5B.F59.9B119.4B3.8B2.F43.B.F.F.B4.BF.6BA
BA9B2A32B2A32B2A32B2A6B$57.7B61.7B119.4B3.8B44.23BA2BA7B4A30B4A30B4A
30B4A6BF$56.9B59.F.5B.F117.4B3.9B42.F24BA3BA6B2AB2A29B2AB2A29B2AB2A
29B2AB2A5B$57.7B61.7B117.4B3.4B.6B42.28BA8B2A32B2A32B2A32B2A6B$56.F7B
F59.F7BF115.4B3.4B.7B42.24BA3BA117B$57.7B61.7B115.4B3.4B2.6B44.23BA2B
A5B$56.F.5B.F59.9B113.4B3.4B3.6B47.7B.2B.F2.6B3A6B$57.7B61.2B3A2B113.
4B3.4B4.6B46.9B.F2.BF.B.F.F9B$56.9B59.F.5B.F111.4B3.4B4.8B46.7B13.F8B
$57.7B61.2ABAB2A111.4B3.4B6.8B45.6B.F13.8B$56.F7BF59.FBA3BABF109.4B3.
4B6.9B45.F2BA3B14.8B$57.7B61.2BABA2B109.4B3.4B7.9B46.B3AB14.9B$56.F.
5B.F59.3BABA3B107.4B3.4B8.10B44.B2ABAB14.8B$57.7B61.BA3BAB107.4B3.4B
9.5B2A3B42.F2.5B14.8B$56.9B59.F.5B.F105.4B3.4B10.5B2A4B28.B6.F6.7B.F
11.10B$57.7B61.7B105.4B3.4B11.11B27.5BF.2B3.B.9B12.11B$56.F7BF59.F7BF
103.4B3.4B12.12BA.2A21.24B14.8B$57.7B61.7B103.4B3.4B15.8B2.2A.A19.26B
14.7B$56.F.5B.F59.9B101.4B2.5B16.7B26.F25B14.7B$18.3B4.B31.7B61.7B
101.4B3.4B17.5B29.24BF13.8B$17.BFBF6BF28.9B59.F.5B.F99.2A2B3.4B18.5B
30.23B14.6B$17.6B.5B28.7B61.7B99.2B2A3.4B18.6B31.8B2.B.F10B14.5B$16.F
13BF25.F7BF59.F7BF97.2BAB3.4B19.7B2.4B23.10B6.B.6BF12.F.4B$16.4BA12B
24.7B61.7B97.4B3.4B19.F7BF6BF21.9B9.5B16.F.B$15.4B2A5BA5BFB22.F.5B.F
59.9B95.4B3.4B21.14B21.11B5.3B2ABA6B$14.F3BA9BA5B23.7B61.7B95.4B3.4B
21.F14B20.7BA2BF2B4.4B3A6B$14.5B2A3BA3BA3BFB22.9B59.F7BF93.4B3.4B23.
15B19.6B3A4B4.2BF2BA7B$13.7BA12B24.7B61.7B93.4B3.4B23.16B19.6BAB2A3B
5.11B$14.11B2A6B23.F7BF59.F7BF91.4B3.4B25.15B24.5B9.9B$14.B.7BF7B.B
24.7B61.7B91.4B3.4B25.F14B23.F6B.B6.10B$14.19B23.F.5B.F59.9B89.4B3.4B
27.9B.3B25.10BF.B2.8B$14.20B23.BA3BAB61.7B89.4B3.4B27.F7BF31.23B$13.B
F18B23.3BABA3B59.F7BF87.4B3.4B27.10B30.F24B$13.19BF24.2BABA2B61.7B87.
4B3.4B29.9B30.25BF$13.BF17B24.FBA3BABF59.F7BF85.4B3.4B31.7B31.25B$14.
17B26.2ABAB2A61.7B85.4B3.4B31.F7BF30.BA22B$16.F13BF25.F.5B.F59.9B83.
4B3.4B33.7B31.BA7B.B3.2B.F5B$18.5B.6B27.2B3A2B61.7B83.4B3.4B33.F7BF
31.BA5B6.F6.B$19.F6BFBFB26.9B59.F7BF81.4B3.4B35.7B32.5B2.F$21.B4.3B
28.7B61.7B81.4B3.4B35.9B32.3B$56.F7BF59.F7BF79.4B3.BA2B37.7B34.F$57.
7B61.7B79.4B3.2A2B37.F7BF$56.F.5B.F59.9B77.4B3.2B2A39.7B$57.7B61.7B
77.4B3.4B39.F7BF$56.9B59.F7BF75.4B3.4B41.7B$57.7B61.7B75.4B3.4B41.9B$
56.F7BF59.F7BF73.4B3.4B43.7B$57.7B61.7B46.F2B2A2BF19.4B3.4B43.F3BA3BF
$56.F.5B.F59.9B45.3B2A2B19.4B3.4B45.2B3A2B$57.7B61.7B46.8B.F15.4B3.4B
45.FB5ABF$56.9B59.F7BF43.12B14.4B3.4B47.BA3BAB$57.7B61.8B42.F13B12.4B
3.4B47.2A5B2A$56.F7BF.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.F.F.B.F9B38.3B.13BF10.4B3.4B49.BA3BA2B$55.11B.5B.5B.5B.5B.5B.5B.
4BA.5B.5B.13B37.5B.11B11.4B3.4B49.FBA3BABF$55.48BA2B2A27B37.5B.8B2.F
9.4B3.4B50.8B$54.BF48B2A3BA24B40.13B10.4B3.4B52.F6B$54.53BABA23BF41.
8B.4B8.4B3.4B53.6BF64.F$54.BF48B2A3BA23B43.7B2.4B6.4B3.4B54.7BF.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.F2.B.3B$55.48BA2B
2A24B45.5B.F2.4B4.4B3.4B55.F10B.5B.5B.5B.5B.5B.5B.5B.5B.5B2.7BF$57.F
7B2.5B.5B.5B.5B.5B.5B.4BA.5B.5B.10BF45.4B6.4B2.4B3.4B56.33B2A42B$59.
3B.B2.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.F.F.B.F7B
45.4B7.8B3.4B56.33BABA41BFB$60.F64.F6B44.4B9.6B3.4B56.F32B2A45B$125.
6BF43.4B11.4B3.4B57.34BABA41BFB$125.8B41.4B11.6B.4B57.36B2A42B$124.F
7BF40.4B11.11B59.13B.5B.5B.5B.5B.5B.5B.5B.5B.5B.11B$124.8B40.4B11.4B
2.5B60.9BF.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.F.
F7BF$124.9B38.4B11.4B4.5B60.8B61.7B$125.7B38.4B11.2A2B6.4B60.F7BF59.
9B$124.F7BF36.4B11.2B2A8.4B12.B47.7B61.7B$125.7B36.4B11.2BAB10.4B10.
3B45.9B59.F.5B.F$124.F7BF34.4B11.4B12.4B9.3B46.7B61.7B$125.7B34.4B11.
4B14.4B7.4B45.F7BF59.F7BF$124.9B32.4B11.4B16.4B5.4B.F45.7B61.7B$125.
7B32.4B11.4B18.4B3.4B.3B43.F7BF59.9B$124.F7BF30.4B11.4B20.9B.6B42.7B
61.7B$125.7B30.4B11.4B22.15BF40.9B59.F.5B.F$25.F98.F2BABA2BF28.4B11.
4B24.15B41.7B61.7B$125.2B3A2B28.4B11.4B26.16B38.F7BF59.F7BF$124.3B3A
3B26.4B11.4B29.10B2A2B39.7B61.7B$20.F104.7B26.4B11.4B31.9B2A2B38.F7BF
59.9B$124.F7BF24.4B11.4B31.F2.11B39.7B61.7B$125.7B24.4B11.4B34.11B39.
9B59.F.5B.F$124.F.5B.F22.4B11.4B34.9B.F41.7B61.7B$125.7B22.4B11.4B34.
3AB.4B43.F7BF59.F7BF$124.9B20.4B11.4B34.3BA2.4BF43.7B61.7B$31.F92.10B
18.4B11.4B34.3BA2.F.2B44.F7BF59.9B$124.F7BF18.4B11.4B34.4B5.F46.7B61.
7B$125.7B18.4B11.4B34.4B52.9B59.F.5B.F$20.F9.2A92.F.5B.F16.4B11.4B34.
4B54.7B61.7B$30.2A93.7B16.4B11.4B34.4B54.F7BF59.F3BA3BF$124.9B14.4B
11.4B34.4B56.7B61.2B3A2B$75.F49.7B14.4B11.4B34.4B56.F7BF59.2BA3BA2B$
7.F23.F35.F56.F7BF12.4B11.B2DB34.4B58.7B61.B2AB2AB$2.F17.3A101.8B12.
4B11.2B2D34.4B58.9B59.F.5B.F$22.A6.F94.F7BF10.4B11.4B34.4B60.7B61.7B$
F20.A2.F42.2A9.F46.7B10.4B11.4B34.4B60.F7BF59.F7BF$67.2A55.9B8.4B11.
4B21.B12.4B62.7B61.7B$119.2B4.7B8.4B11.4B21.3B10.4B62.F.5B.F59.9B$2A
116.5B2F7BF3B3.4B11.4B22.3B9.4B64.B2AB2AB61.7B$2A9.F55.F11.F38.24B11.
4B23.4B7.4B64.2BA3BA2B59.F.5B.F$117.24B11.4B23.F.4B5.4B66.2B3A2B61.7B
$69.F13.F33.23B11.4B23.3B.4B3.4B66.F3BA3BF59.F7BF$F117.21B11.4B22.6B.
9B68.7B61.7B$73.F11.F31.23B9.4B22.F15B68.F.5B.F59.9B$118.21B9.4B23.
15B70.7B61.7B$80.A38.19B9.4B22.16B70.9B59.F.5B.F$81.A2.2A37.B.10B11.
4B23.2B2A10B73.7B61.7B$74.F4.3A2.2A40.8B11.4B24.2B2A9B73.F7BF59.F7BF$
11.F115.6B11.4B25.11B2.F73.7B61.7B$11.F115.5B11.4B27.11B74.F.5B.F59.
9B$85.F41.6B9.4B29.F.9B74.7B61.7B$126.8B7.4B33.4B.4B72.9B59.F.5B.F$
125.4B.5B6.4B21.D.D8.F4B2.4B72.7B61.7B$124.4B4.4B2.F.5B19.D5.D8.2B.F
2.4B70.F7BF59.F7BF$123.4B6.4B2.BA5B34.F5.4B70.7B61.7B$79.F42.4B8.4B.A
B2A4B16.D3.C3.D15.4B68.F.5B.F59.9B$121.4B10.4BA3BA4B18.2C19.5B35.3B
30.7B61.7B$120.4B9.F2.4BA3B.5B13.D2.C.C2.D17.4B32.7B27.9B59.F.5B.F$
119.4B11.7BA3B.5B39.4B30.10B26.7B61.7B$118.4B10.F2BA6BA3B.3B14.D5.D
20.4B.F.F.B.F.F.B.F.F.B.F.F.B.F3.12B23.F7BF59.F7BF$118.3B12.B3A9BF19.
D.D23.28B3.14B23.7B61.7B$118.2B14.AB3A7B43.B2.4BA3BA36BF21.F.5B.F59.
9B$118.B15.F.B2A6B43.2AB.3BA4BA36BF22.7B61.7B$137.BA6B43.2A6B2A39B22.
9B59.F.5B.F$136.F2BA3BF45.2B.3BA4BA38B21.7B61.6B$137.BA3B50.4BA3BA23B
4.11BF.B.F.F.B.F.F.A.F3.F7BF.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.F.F.B.F7B$138.A3B50.28B10.13B.5B.3BA4BF28B.5B.5B.5B.5B.5B
.5B.12B$191.BF2B.F.F.B.F.F.B.F.F.B.F.F.B.F9.21B2AB2A44B2A33B$229.21B
2A48BABA33B$229.20B3A50B2A32BF$230.20B2A48BABA33B$229.F21B2AB2A44B2A
33B$230.7B.5B.5B.3BA3BF2BF26B.5B.5B.5B.5B.5B.5B.10BF$229.7BF2.F.B.F.F
.B.F.F.A.FB5.7BF.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.F6B$230.5B28.F4B60.2BFBFB$231.3B31.B64.3B$232.B.F!
I'm imagining a sort of Duck Hunt like game. Rotate the grid 45 degrees. Have one or more streams of irregularly spaced gliders fly from the East to West and vice versa. These are triggered by a set of RLE commands. At the end of each channel there are a number of blocks that get eaten one by one if a glider makes it to the other side.
From the South corner you can trigger a glider flying North to intercept them. After a predetermined number of generations the game stops and you see how many blocks are remaining for your score.

Code: Select all

x = 39, y = 48, rule = LifeHistory
36.A$36.A.A$36.2A4$30.A$30.A.A$30.2A14$33.A$33.A.A$33.2A8$6.2A14.A$6.
2A14.A.A$22.2A$3.2A$3.2A2$2A$2A$15.2A$15.2A19.2A$36.A.A$12.2A22.A$12.
2A2$9.2A$9.2A!
[[ ANGLE 45 ZOOM 6 GPS 20 STOP 130 ]]
dvgrn wrote: So it seems like this feature would mostly be useful for stable-circuitry patterns (and for causing large explosions, not that there's anything wrong with that.) What other use cases are you thinking about? I'm probably missing something good.
Puzzles! Fire the glider (or gliders) at the right time to solve a problem. A more interactive alternative of the static build a pattern, try it, wrong answer, adjust pattern, repeat.
We could constrain the firing to only happen at a mod n interval to make timing easier.
Locked