Page 5 of 97
Re: Life tag testing
Posted: February 27th, 2015, 4:39 am
by rowett
dvgrn wrote:Or do non-HTML5 browsers even matter any more?
It would be interesting to look at the web stats for conwaylife.com and see what percentage of the visitors are using a non-HTML5 compliant browser.
From my perspective animation and interactivity are now strictly in the realm of the modern browser and HTML5. Animated GIFs were what we used when the browsers weren't smart enough to do anything better. You should still have a fallback path for those with older browsers (for a period until your stats show you this is no longer an issue). However I would question the investment in making this fallback path anything other than spartan.
So relating this to the Viewer I'd argue it should and could be used wherever animation and interactivity are required, especially when the Waypoints feature finally gets to the top of the To Do List. Based on that argument I'm not currently motivated to add animated-GIF creation to it. However I have put in experimental support for capturing a single image as a PNG.
Build 137
- add ability to capture an image and open it in a new browser window
- Hotkey 'O' triggers the capture
- Image will be opened in a separate browser window (or tab, depending on the browser)
- Image will have overlays removed (navigation menu, notification, timing information, population stats, error list and help information.)
- You may need to "enable popups" for the site the first time you do it
- The same separate window (or tab) is reused for each image capture
- You get a notification ("Image Captured") so you can tell something happened in the case where an existing Image Capture window (or tab) exists but is hidden
Here's an image I captured earlier:

Re: Life tag testing
Posted: February 27th, 2015, 6:43 pm
by rowett
Build 138 is available on the lazyslug server:
- the Page Up, Page Down, Home and End keys now work on the error list
- the words "Up" and "Down" at the bottom of the help information or error list are greyed if at the top or bottom respectively
- major gridlines are drawn after minor gridlines so their intersection is in major gridline colour
Nathaniel, if you get a moment then please will you upload this build to the conwaylife server since it adds a fair amount of useful functionality and fixes since Build 133.
Re: Life tag testing
Posted: February 27th, 2015, 7:03 pm
by rowett
Here is my current thinking for the Waypoint system for your review and comments.
- A waypoint is a target at which a particular view is reached.
- A target is defined by both elapsed time and generation.
- We define a new script command [[ AT <time> <generation> ]] which is then followed by other commands which set the target view.
- Commands before the first [[ AT ]] define the initial view.
Example 1:
Start at ZOOM 10, generation 0.
After 10 seconds, reach ZOOM 5 and generation 50 (which means 5gps)
Example 2:
Wait 5 seconds at generation 0 (i.e. before starting)
Example 3:
Code: Select all
[[ LOOP 350
X 30 ZOOM 3
AT 30 300 X -30
AT 35 300 ]]
Start at X 30 and ZOOM 3
After 30 seconds, reach X -30 and generation 300 (which means 10 gps)
Wait for 5 seconds
Continue at 10gps until generation 350 and then LOOP to start
Thoughts?
Re: Life tag testing
Posted: February 28th, 2015, 11:22 am
by dvgrn
rowett wrote:Here is my current thinking for the Waypoint system for your review and comments.
- A waypoint is a target at which a particular view is reached.
- A target is defined by both elapsed time and generation.
- We define a new script command [[ AT <time> <generation> ]] which is then followed by other commands which set the target view.
- Commands before the first [[ AT ]] define the initial view.
Thoughts?
Seems workable -- all the functionality is there, assuming you can also set other parameters that you haven't mentioned (ANGLE, ZOOM, LAYERS, DEPTH) and they'll be interpolated the same way as X and Y parameters. No numeric interpolation for THEME and COLOUR, of course, if they're even allowed to change at waypoints... could get some interesting effects there.
With the suggested syntax, the unlabeled numbers after AT are less readable than any other script command -- it would break the nice
PARAM {value} pairing habit. (I'm not counting COLOUR, just because. It's the exception that proves the rule, I guess.)
Might be worth adding labels even if the viewer really just ignores them: instead of "AT 30 300", maybe "AT SECONDS 30 T 300" -- or else replace AT with TIME or TIMESTAMP: "TIMESTAMP 30 T 300 X 10 Y 20 ANGLE 60".
It's funny, though: all this makes the time dimension into the key index -- everything else hangs off of what happens at T=30, so there's an automatic adjustment of the GPS. My mental picture of a series of waypoints has more to do with the X and Y values, and I don't even necessarily want to care about what time I get there -- but I don't expect the GPS to change.
The exception is when a delay before or after a simulation is wanted, of course. But otherwise, won't the most common thing be to want the GPS to stay the same, even when the waypoints are different distances apart?
Looks like you're implying a default GPS in Example 3, but there's no way to just set it and forget it at the beginning of the script -- it's just what you get at the end after you run out of waypoints. Here's a possible rewrite of Example 3:
Code: Select all
[[ GPS 10 X 30 ZOOM 3 LOOP 350
AT X -30 T 300
AT GPS 0 T 300 SECONDS 5
AT GPS 10 ]]
But with that change of focus I don't really like "AT" any more -- what's being defined is not just a static spacetime location and view, but also the way things will change to get to that location. How about "TO"? Or even
"GOTO" -- it's high time somebody brought back GOTO!
Once my crackpot syntax ideas are accepted or adapted or rejected, I'll translate the comments in the pattern below into a new test script. The idea here was to try writing down information that was easy for me to collect, to produce a potentially well-defined set of waypoints -- unambiguous, I think, at least with the right default assumptions.
I could calculate the timestamps for each waypoint, but they're actually not a natural part of the definition -- I can't just read them off from the viewer, so I'd have to stop and do math (ugh).
The comments below never mention GPS, so it could just stay at 60 ... except for the line with the 5-second delay, which is nominally GPS 0, but that should be a temporary not a permanent adjustment to GPS. If you kept GPS 0, you'd never get to the later waypoints...!
Code:
Select all
#C sample attempt to follow a glider around in the p59 gun
#C [[ AUTOSTART THUMBNAIL X 0 Y 0 ZOOM 2 ]]
#C GOTO X 48 Y -58 T 0 ZOOM 12 SECONDS 5
#C GOTO X 80 Y -94 T 140 ZOOM 20
#C GOTO X 120 Y -52 T 310 ZOOM 16
#C GOTO X 130 Y -65 T 360 ZOOM 15
#C GOTO X 110 Y -95 T 480 ZOOM 12
#C GOTO X 75 Y -50 T 610
#C GOTO X 106 Y -50 T 675 ZOOM 10
#C GOTO X 140 Y 0 T 858 ZOOM 8
#C etc.
#C [Have to add a 90-degree ANGLE turn at each Snark, too,
#C presumably spread out over the duration of the reflection reaction.]
x = 299, y = 239, rule = B3/S23
118b2o3b2o$118b2o2bob3o$122bo4bo$118b4ob2o2bo$118bo2bobobob2o$121bobob
obo$122b2obobo$126bo2$112b2o$113bo7b2o$113bobo$114b2o$121b2o$121b2obo
98b2o3b2o26b2o3b2o$122b2o99b2o2bob3o22b3obo2b2o$123bo103bo4bo20bo4bo$
223b4ob2o2bo20bo2b2ob4o$223bo2bobobob2o18b2obobobo2bo$124b2o100bobobob
o20bobobobo$124bo102b2obobo20bobob2o$125b3o103bo22bo$127bo$136bobo78b
2o48b2o$137b2o79bo7b2o29b3o7bo$126b2o3b2o4bo80bobo5b2o28bo3bo4bobo$
124b3obo2b2o86b2o34bo5bo3b2o$108b2o13bo4bo125bo3bo3bo$109b2o12bo2b2ob
4o121bo2bobo2bo$108bo13b2obobobo2bo92b2o27bo3bo3bo$123bobobobo94bobo
28bo5bo$123bobob2o97bo33bo$124bo130bo3bo$229b2o24bo$137b2o90bo8bobo15b
o$128bo8bo92b3o6b2o12b3o$127b3o5bobo94bo6bo13bo$126b5o4b2o15bo$125b2o
3b2o21bo115bo$124b3o3b3o18b3o87bo26b2o$125b2o3b2o107b2o27bobo$126b5o
109b2o$93b3o31b3o$95bo30b3o$94bo30b2o83b2o$126bo54bo29b2o$123b3o55b3o
26bo$123bo60bo$183b2o69bo$153bo16b2o48b2o33bo$110bo27b3o12b3o14b2o48b
2o31b3o34bo$110bobo25bo17bo115b2o14b5o$110b2o27bo15b2o9bo103bo2bo13bo
5bo$167b2o101b2obobo4bo7b3o2bo$92bo67b3o3b2o12b3o26b3o13bo46bob2o3bobo
9bob2o$92b3o64bo4bo13bo4bo24bo4bo11bobo44bo5bo3bo5b4o2bo$79bo15bo129b
2o7b2o34b3o5bo3bo5bo3b2o$79b2o13b2o59bobo2bo3bo13bo3bo2bobo16bobo2bo3b
o20bo34bo8bo3bo6b3o$78bobo74bobo3b3o6b3o6b3o3bobo16bobo3b3o6b3o10bobo
34b2o8bobo9bo$154bo15b3o15bo14bo15b3o10b2o46bo10bob2o$86b2o66b2o15bo
15b2o14b2o15bo69b2ob2o$86bo67b3o14bo14b3o14b3o14bo15b2o7bo21b2o$83b2ob
o68b2o14bo14b2o16b2o14bo15b2o5b3o20bo2bo$83bo2b3o7bobo53b2ob2o13bobo
15bo14bo15bobo20bo39b2o$84b2o3bo6bo2bo53bobo81bo4b2o22b3o13bo$86b4o6bo
2bo48b2o4bo81bobo20b2o22b3o$86bo11bo3b2o45bo20bobo15bo14bo15bobo13b2ob
2o18bobo24bo$87b3o12bobo41b3o5b2o15bo14b2o16b2o14bo14b2o21bo$90bo13bo
41bo7b2o15bo14b3o14b3o14bo14b3o19b2o$85b5o14b2o65bo15b2o14b2o15bo15b2o
$84bo73b2o10b3o15bo14bo15b3o15bo33bo$64b2o17bo2b2o69bobo10b3o6b3o3bobo
16bobo3b3o6b3o6b3o3bobo30b2obobo$63bobo16bob2obo69bo20bo3bo2bobo16bobo
2bo3bo13bo3bo2bobo29bobobobo$65bo10b2o4bo73b2o7b2o96bo2bobobob2o$74bo
2bo2b2ob4o77bobo11bo4bo24bo4bo13bo4bo30b4ob2o2bo$74b2obobobobo2bo79bo
13b3o26b3o12b2o3b3o35bo4bo$77bobobobo139b2o38b2o2bob3o$77bobob2o37bo
104bo9b2o15bo10b2o3b2o$78bo28bo10b3o114bo17bo$108bo8bo52b2o19b2o27b2o
14b3o12b3o$91b2o13b3o8b2o51b2o18bobo27b2o16bo$82b2o7bo100bo$82b2o5bobo
$89b2o34b2ob2o51bo28bo$126bob2o49b2o30b2o$126bo53b2o28b2o$49b2o67b2o4b
3o$50b2o66b2o3bo3b2o70b2o3b2o$49bo22bo13bo36b4o2bo20b2o45b3obo2b2o$71b
o13b2o22b2o15bob2o21b2o43bo4bo$71b3o5b2o4bobo20bobo12b3o2bo21bo45bo2b
2ob4o32b3o$80bo27bo13bo5bo66b2obobobo2bo32bo$77b3o27b2o6bo7b5o68bobobo
bo36bo26bo$77bo35b2o10bo70bobob2o65b2o$114b2o60b2o19bo68b2o$100bo76b2o
$100b3o73bo33b2o$103bo97b2o7bo28bo$102b2o61bo35b2o5bobo15bo10b3o$165bo
bo40b2o14bobo9bo$105bo59b2o58b2o9b2o51bo$34b3o67bo2bo179b3o$36bo71bo
177bo$35bo22bo9b2o3b2o24b2o4bo29b3o106b2o40b2o$56b2o10b2o2bob3o23bo4bo
3bo27bo53bo53bo8bo$57b2o13bo4bo22bo2bo5bo2b2o22bo54bobo11b2o31bo6bob2o
4b2o$68b4ob2o2bo24b2o8bobo76b2o5b2o4b2o31bo6b2o2bo4bobo38b2ob2o$68bo2b
o3bob2o24bobobo6bo84bo6bo30b2o3b2o2b2o34bo12bob2o$71bobobobo26b3o7b2o
80b3o43b2obo34bobo12bo$72b2obobo83b3o32bo31b2o15bo35b2o4b2o4b3o$76bo
24bo3bo57bo63bobo12b3o24bo17b2o3bo3b2o$100bob2obo56bo64bo13bo9b2o14b5o
20b4o2bo$34bo27b2o36bobo3b2o118b2o5bobo6b5o5bo13bo5bo5b2o15bob2o$34b3o
26bo8bo26b2obobobo2bo40bobo68bo11b2o11bo5bobo12b3o2bo4bobo12b3o2bo$37b
o25bobo5b2o27bo2b2ob4o40b2o69b3o10bo9bo8b2o15bob2o3bo13bo5bo$20bo15b2o
26b2o34bo4bo45bo72bo19b2o21b4o2bo2b2o14b5o$20b2o56bo22b3obo2b2o113b2o
37b2o3bo3b2o21bo$19bobo57bo23b2o3b2o11bo140b2o4b3o$25b2ob2o12bo34b3o
41b2o132b2o13bo$25b2obo13bobo75bobo53bobo75bobo13bob2o$28bo13b2o132b2o
41b3o34bo12b2ob2o$28b3o4b2o140bo11b2o3b2o23bo57bobo$4bo21b2o3bo3b2o37b
2o113b2o2bob3o22bo56b2o$2b5o14b2o2bo2b4o21b2o19bo72bo45bo4bo34b2o26b2o
15bo$bo5bo13bo3b2obo15b2o8bo9bo10b3o69b2o40b4ob2o2bo27b2o5bobo25bo$bo
2b3o12bobo4bo2b3o12bobo5bo11b2o11bo68bobo40bo2bobobob2o26bo8bo26b3o$2o
bo15b2o5bo5bo13bo5b5o6bobo5b2o118b2o3bobo36b2o27bo$o2b4o20b5o14b2o9bo
13bo64bo56bob2obo$b2o3bo3b2o17bo24b3o12bobo63bo57bo3bo24bo$3b3o4b2o4b
2o35bo15b2o31bo32b3o83bobob2o$3bo12bobo34bob2o43b3o80b2o7b3o26bobobobo
$2obo12bo34b2o2b2o3b2o30bo6bo84bo6bobobo24b2obo3bo2bo$2ob2o38bobo4bo2b
2o6bo31b2o4b2o5b2o76bobo8b2o24bo2b2ob4o$44b2o4b2obo6bo31b2o11bobo54bo
22b2o2bo5bo2bo22bo4bo13b2o$44bo8bo53bo53bo27bo3bo4bo23b3obo2b2o10b2o$
11b2o40b2o106b3o29bo4b2o24b2o3b2o9bo22bo$12bo177bo71bo$9b3o179bo2bo67b
3o$9bo51b2o9b2o58b2o59bo$62bo9bobo14b2o40bobo$59b3o10bo15bobo5b2o35bo
61b2o$59bo28bo7b2o97bo$87b2o33bo73b3o$120b2o76bo$31b2o68bo19b2o60b2o$
30b2o65b2obobo70bo10b2o35bo$32bo26bo36bobobobo68b5o7bo6b2o27b3o$60bo
32bo2bobobob2o66bo5bo13bo27bo$58b3o32b4ob2o2bo45bo21bo2b3o12bobo20bobo
4b2o5b3o$97bo4bo43b2o21b2obo15b2o22b2o13bo$93b2o2bob3o45b2o20bo2b4o36b
o13bo22bo$93b2o3b2o70b2o3bo3b2o66b2o$172b3o4b2o67b2o$87b2o28b2o53bo$
86b2o30b2o49b2obo$88bo28bo51b2ob2o34b2o$207bobo5b2o$106bo100bo7b2o$60b
o16b2o27bobo18b2o51b2o8b3o13b2o$45b3o12b3o14b2o27b2o19b2o52bo8bo$45bo
17bo114b3o10bo28bo$29b2o3b2o10bo15b2o9bo104bo37b2obobo$27b3obo2b2o38b
2o139bobobobo$26bo4bo35b3o3b2o12b3o26b3o13bo79bo2bobobobob2o$26bo2b2ob
4o30bo4bo13bo4bo24bo4bo11bobo77b4ob2o2bo2bo$25b2obobobo2bo96b2o7b2o73b
o4b2o10bo$26bobobobo29bobo2bo3bo13bo3bo2bobo16bobo2bo3bo20bo69bob2obo
16bobo$26bobob2o30bobo3b3o6b3o6b3o3bobo16bobo3b3o6b3o10bobo69b2o2bo17b
2o$27bo33bo15b3o15bo14bo15b3o10b2o73bo$61b2o15bo15b2o14b2o15bo65b2o14b
5o$40b2o19b3o14bo14b3o14b3o14bo15b2o7bo41bo13bo$40bo21b2o14bo14b2o16b
2o14bo15b2o5b3o41bobo12b3o$13bo24bobo18b2ob2o13bobo15bo14bo15bobo20bo
45b2o3bo11bo$13b3o22b2o20bobo81bo4b2o48bo2bo6b4o$16bo13b3o22b2o4bo81bo
bo53bo2bo6bo3b2o$15b2o39bo20bobo15bo14bo15bobo13b2ob2o53bobo7b3o2bo$
29bo2bo20b3o5b2o15bo14b2o16b2o14bo14b2o68bob2o$30b2o21bo7b2o15bo14b3o
14b3o14bo14b3o67bo$4b2ob2o69bo15b2o14b2o15bo15b2o66b2o$4b2obo10bo46b2o
10b3o15bo14bo15b3o15bo$7bo9bobo8b2o34bobo10b3o6b3o3bobo16bobo3b3o6b3o
6b3o3bobo74bobo$7b3o6bo3bo8bo34bo20bo3bo2bobo16bobo2bo3bo13bo3bo2bobo
59b2o13b2o$5b2o3bo5bo3bo5b3o34b2o7b2o129bo15bo$4bo2b4o5bo3bo5bo44bobo
11bo4bo24bo4bo13bo4bo64b3o$4b2obo9bobo3b2obo46bo13b3o26b3o12b2o3b3o67b
o$5bo2b3o7bo4bobob2o101b2o$5bo5bo13bo2bo103bo9b2o15bo27b2o$6b5o14b2o
115bo17bo25bobo$8bo34b3o31b2o48b2o14b3o12b3o27bo$43bo33b2o48b2o16bo$
44bo$175bo$88bo28bo55b3o$72bo13b2o30b2o52bo$72b3o12b2o28b2o53b2o30bo$
75bo94b3o30bo$74b2o93b3o31b3o$57b2o109b5o$28bobo27b2o107b2o3b2o$29b2o
26bo87b3o18b3o3b3o$29bo115bo21b2o3b2o$146bo15b2o4b5o$45bo13bo6bo94bobo
5b3o$43b3o12b2o6b3o92bo8bo$42bo15bobo8bo90b2o$43bo24b2o$39bo3bo130bo$
38bo33bo60bo36b2obobo$37bo5bo28bobo56bobo35bobobobo$36bo3bo3bo27b2o58b
2o32bo2bobobob2o13bo$36bo2bobo2bo121b4ob2o2bo12b2o$36bo3bo3bo125bo4bo
13b2o$32b2o3bo5bo34b2o86b2o2bob3o$31bobo4bo3bo28b2o5bobo80bo4b2o3b2o$
31bo7b3o29b2o7bo79b2o$30b2o48b2o78bobo$171bo$44bo22bo103b3o$40b2obobo
20bobob2o102bo$39bobobobo20bobobobo100b2o$36bo2bobobob2o18b2obobobo2bo
$36b4ob2o2bo20bo2b2ob4o$40bo4bo20bo4bo74bobo26bo$36b2o2bob3o22b3obo2b
2o71b2o26b2o$36b2o3b2o26b2o3b2o71bo26bob2o$176b2o$183b2o$183bobo$176b
2o7bo$185b2o2$172bo$171bobob2o$171bobobobo$170b2obobobo2bo$171bo2b2ob
4o$162bo8bo4bo$163bo8b3obo2b2o$161b3o10b2o3b2o!
Re: Life tag testing
Posted: February 28th, 2015, 1:05 pm
by rowett
dvgrn wrote:Seems workable -- all the functionality is there, assuming you can also set other parameters that you haven't mentioned (ANGLE, ZOOM, LAYERS, DEPTH) and they'll be interpolated the same way as X and Y parameters.
Yes this was the intention.
dvgrn wrote:No numeric interpolation for THEME and COLOUR, of course, if they're even allowed to change at waypoints... could get some interesting effects there.
I was planning on allowing a Theme change at a Waypoint (which would cross-fade as it does when you manually change Themes now). Also for multi-state rules allow you to redefine state colours.
dvgrn wrote:The exception is when a delay before or after a simulation is wanted, of course. But otherwise, won't the most common thing be to want the GPS to stay the same, even when the waypoints are different distances apart?
This is the salient point. When I first added the Waypoint editor to the full LifeViewer you correctly commented that it didn't allow you to pause during playback, since they way it was designed everything was based on T, rather than time. From this I concluded that the general case is a Waypoint would need to be defined by both time
and generation. This leads to unpleasant syntax and, as you said:
dvgrn wrote:I could calculate the timestamps for each waypoint, but they're actually not a natural part of the definition -- I can't just read them off from the viewer, so I'd have to stop and do math (ugh).
Now actually you
can just read the time off the Viewer. Click on the "Gen" button (hotkey"G") to toggle pattern statistics display which includes elapsed time.
The other problem with linking time and T is that the performance of the Viewer comes into play. If you have a very slow computer, or alternatively a reasonable computer but the Viewer is one of 30 on a page then it may not be possible to sustain the required gps to reach the waypoint at the right time.
My conclusion is I agree with your proposal to unlink the two concepts:
- Waypoints should be generation based (T)
- Add a separate command to pause for a period
This also keeps the
PARAM {value} pairing habit.
How about:
- T <generation> define waypoint at generation number
- PAUSE <seconds> pauses at the current generation for a number of seconds
I (sadly) don't think we need the GOTO command because either we're defining a view change at a particular generation (T) or we're pausing for a number of seconds. This has the side-effect of avoiding dinosaurs.
This syntax allows the following use cases:
- Fly from one camera position to another over a number of generations
- Fly from one camera position to another at the same generation
- Hold the camera still for a number of generations
- Hold the camera still at the same generation for a period of time
Example:
Code: Select all
#C Camera start position
[[ X 0 Y 0 ZOOM 10 ]]
#C Define GPS and Theme
[[ GPS 10 THEME 4 ]]
#C Pause for 5 seconds at start generation (T=0)
[[ PAUSE 5 ]]
#C Move camera to first waypoint by generation 100
[[ T 100 X -20 Y -15 ZOOM 5 ]]
#C Move camera to second waypoint by generation 150
[[ T 150 X -25 Y -30 ZOOM 3.5 ANGLE 90 ]]
#C Hold camera still until generation 200
[[ T 200 ]]
#C Pause for 5 seconds at current generation
[[ PAUSE 5 ]]
#C Move camera to third waypoint by generation 300 and switch Theme
[[ T 300 X 10 Y -10 ANGLE 45 THEME 2 ]]
#C Move camera to fourth waypoint at current generation
[[ PAUSE 3 X 0 Y 0 ANGLE 0 ZOOM 10 ]]
Let me know if that makes sense or if you think I've missed any important use cases. The other thing I'm considering is allowing you to define the mode by which you travel from one waypoint to another. The default will be linear interpolation.
Re: Life tag testing
Posted: February 28th, 2015, 2:39 pm
by Nathaniel
Build 138 is now on ConwayLife.com
Re: Life tag testing
Posted: February 28th, 2015, 4:07 pm
by rowett
Nathaniel wrote:Build 138 is now on ConwayLife.com
Great, many thanks.
Chris
Re: Life tag testing
Posted: February 28th, 2015, 7:47 pm
by dvgrn
rowett wrote:Now actually you can just read the time off the Viewer. Click on the "Gen" button (hotkey"G") to toggle pattern statistics display which includes elapsed time.
Hmm, and when I change the GPS setting, a different amount of time passes per generation. What do you know... I learn something new every day. But I still don't really want to deal with time values in the context of waypoints, other than nice simple pause times.
rowett wrote:Let me know if that makes sense or if you think I've missed any important use cases.
Yes, that seems good. I don't see any good way around having two separate script commands for moving-while-paused versus moving-while-simulating.
rowett wrote:The other thing I'm considering is allowing you to define the mode by which you travel from one waypoint to another. The default will be linear interpolation.
I could imagine defining an intermediate waypoint that you have to go through on the way to the real destination, and the system would figure out a smooth curve. Could also work with an intermediate zoom level that's way more zoomed out than the end points. That would allow for Google-Earth-like jumps from one place to another, for example.
And is there any hope of being able to associate text with a location eventually, so that a label can be made to pop up for a while at a waypoint, then fade out so you can see the actual item in question? I know from my time working at a mapping company that label support is somewhere between a headache and a nightmare in practice, but it sure is a nice idea in theory --! Even single-letter reference labels would be a lot better than no labels at all.
Alternatively, maybe it's possible to support something like LifeHistory state 4, which allows at least rough labels to be drawn in the pattern itself without getting in the way of the pattern's evolution. But that seems less likely somehow, and certainly it'd be harder to make it universally available.
Re: Life tag testing
Posted: February 28th, 2015, 10:46 pm
by dvgrn
Uh-oh,
a fresh new bug report for Build 138:
gameoflifeboy wrote:By the way, the viewer seems to run all patterns in Life, whether they are or not. It didn't do that yesterday.
Re: Life tag testing
Posted: March 1st, 2015, 3:01 am
by rowett
dvgrn wrote:Uh-oh,
a fresh new bug report for Build 138:
gameoflifeboy wrote:By the way, the viewer seems to run all patterns in Life, whether they are or not. It didn't do that yesterday.
Ouch. Fixed in
Build 139. Nathaniel if you'd be kind enough to do the honours...
Re: Life tag testing
Posted: March 1st, 2015, 8:39 am
by Nathaniel
rowett wrote:Ouch. Fixed in Build 139. Nathaniel if you'd be kind enough to do the honours...
Done, thanks for the quick fix.
Re: Life tag testing
Posted: March 1st, 2015, 8:24 pm
by rowett
dvgrn wrote:And is there any hope of being able to associate text with a location eventually, so that a label can be made to pop up for a while at a waypoint, then fade out so you can see the actual item in question?
Yes that should be fine. Would you want them positioned relative to the pattern or the camera?
On an entirely unrelated note: it turns out that 10 bucks on a Delta flight buys you an hour of WiFi with about as much bandwidth as I remember from a 56K modem.
Re: Life tag testing
Posted: March 2nd, 2015, 3:00 am
by dvgrn
rowett wrote:dvgrn wrote:And is there any hope of being able to associate text with a location eventually, so that a label can be made to pop up for a while at a waypoint, then fade out so you can see the actual item in question?
Yes that should be fine. Would you want them positioned relative to the pattern or the camera?
I was thinking of associating them with waypoints, but text describing the action might be nice sometimes, popping up during a PAUSE in the middle of the screen, or along the top or bottom of the viewer window during a pan from one waypoint to the next.
Lots of possibilities. To be honest, of course, the market for this feature may be mostly me, at least for the moment -- it's not clear that there's a huge demand for annotated patterns... Heinrich Koenig included a label format in his private RLE markup system, but even he never used it much. Same with the (unimplemented?) label tag in the old Xlife format.
Re: Life tag testing
Posted: March 7th, 2015, 1:29 am
by dvgrn
Just noticed today that LifeHistory state 5, which shows up yellow in Golly, currently comes out gray in the viewer, like state 6 LifeHistory in Golly (see the
colors list).
Code:
Select all
x = 211, y = 41, rule = LifeHistory
16.3A27.9B27.10C106.10F$12.7A24.15B21.16C28.10D14.23E25.15F$8.11A22.
19B17.20C25.11D14.24E22.18F$4.15A21.21B14.23C24.11D14.25E19.20F$.18A
20.23B12.25C22.12D14.25E18.21F$19A19.25B11.26C20.13D14.24E18.22F$19A
18.11B5.10B10.11C6.10C20.13D14.23E18.13F4.5F$19A18.9B9.9B9.9C9.10C18.
14D14.8E32.11F$.18A17.9B11.8B10.7C11.9C17.15D14.8E31.10F$2.5A4.8A17.
9B11.9B10.5C13.8C17.15D14.8E30.10F$11.8A17.8B13.8B28.8C16.16D14.8E30.
9F$11.8A17.8B13.8B28.8C16.16D14.8E29.9F$11.8A17.7B14.8B28.8C15.17D14.
8E29.8F$11.8A18.5B15.8B27.9C14.9D.8D14.8E28.9F$11.8A37.9B26.9C15.9D.
8D14.18E18.8F$11.8A36.10B25.10C14.9D2.8D14.20E16.8F3.8F$11.8A35.10B
19.16C15.9D2.8D14.22E13.8F2.12F$11.8A34.11B18.17C14.9D3.8D14.23E12.
24F$11.8A33.11B18.17C14.9D4.8D14.24E11.25F$11.8A32.11B19.16C15.9D4.8D
14.25E10.26F$11.8A31.11B21.17C12.9D5.8D14.10E5.11E9.27F$11.8A30.11B
23.17C11.8D6.8D14.8E9.9E9.14F3.10F$11.8A29.11B29.12C10.9D6.8D15.5E12.
9E8.13F6.9F$11.8A28.11B33.10C8.9D7.8D33.8E8.12F7.9F$11.8A27.11B35.10C
7.9D7.8D33.8E8.11F9.9F$11.8A25.12B37.9C6.28D30.8E8.10F11.8F$11.8A24.
12B39.8C6.29D29.8E8.10F11.8F$11.8A23.12B40.8C6.29D29.8E8.9F12.8F$11.
8A22.12B41.8C6.29D29.8E9.8F12.8F$11.8A21.11B44.7C6.29D29.8E9.8F12.8F$
11.8A20.11B44.8C6.28D30.8E9.8F12.8F$11.8A19.11B45.8C23.8D33.8E9.9F11.
8F$11.8A17.12B45.9C23.8D12.5E15.9E10.8F10.9F$11.8A16.12B12.5B9.5C14.
10C23.8D11.7E13.9E11.9F8.9F$2.27A6.30B7.8C9.12C19.16D7.10E9.11E12.10F
5.10F$30A5.30B7.28C18.19D6.29E13.24F$30A5.30B7.28C18.19D7.27E15.23F$
30A5.30B7.27C19.19D8.25E17.21F$30A5.30B8.24C21.19D9.23E19.19F$2.27A6.
30B10.20C25.16D12.19E23.15F$78.14C59.13E28.10F!
#C [[ THUMBNAIL VIEWONLY HEIGHT 240 ]]
State 6 comes out a dark blue, and it doesn't seem to be included when the pattern is automatically centered. The same is true for states 2 and 4, not surprisingly:
Code:
Select all
x = 171, y = 41, rule = LifeHistory
16.3A67.9B63.10F$12.7A64.15B25.10D22.15F$8.11A62.19B22.11D20.18F$4.
15A61.21B21.11D18.20F$.18A60.23B19.12D17.21F$19A59.25B17.13D16.22F$
19A58.11B5.10B17.13D15.13F4.5F$19A58.9B9.9B15.14D14.11F$.18A57.9B11.
8B14.15D13.10F$2.5A4.8A57.9B11.9B13.15D12.10F$11.8A57.8B13.8B12.16D
12.9F$11.8A57.8B13.8B12.16D11.9F$11.8A57.7B14.8B11.17D11.8F$11.8A58.
5B15.8B10.9D.8D10.9F$11.8A77.9B10.9D.8D10.8F$11.8A76.10B9.9D2.8D10.8F
3.8F$11.8A75.10B10.9D2.8D9.8F2.12F$11.8A74.11B9.9D3.8D9.24F$11.8A73.
11B9.9D4.8D9.25F$11.8A72.11B10.9D4.8D9.26F$11.8A71.11B10.9D5.8D9.27F$
11.8A70.11B11.8D6.8D9.14F3.10F$11.8A69.11B11.9D6.8D9.13F6.9F$11.8A68.
11B11.9D7.8D9.12F7.9F$11.8A67.11B12.9D7.8D9.11F9.9F$11.8A65.12B12.28D
6.10F11.8F$11.8A64.12B13.29D5.10F11.8F$11.8A63.12B14.29D5.9F12.8F$11.
8A62.12B15.29D6.8F12.8F$11.8A61.11B17.29D6.8F12.8F$11.8A60.11B18.28D
7.8F12.8F$11.8A59.11B36.8D10.9F11.8F$11.8A57.12B37.8D11.8F10.9F$11.8A
56.12B12.5B21.8D11.9F8.9F$2.27A46.30B15.16D9.10F5.10F$30A45.30B13.19D
8.24F$30A45.30B13.19D9.23F$30A45.30B13.19D10.21F$30A45.30B13.19D11.
19F$2.27A46.30B15.16D14.15F$152.10F!
#C [[ THUMBNAIL VIEWONLY HEIGHT 240 ]]
State 4 at least is used for labels a lot, and should probably be assumed to be part of what's supposed to be displayed, if that isn't too much trouble.
Re: Life tag testing
Posted: March 7th, 2015, 6:01 am
by rowett
dvgrn wrote:Just noticed today that LifeHistory state 5, which shows up yellow in Golly, currently comes out gray in the viewer, like state 6 LifeHistory in Golly (see the colors list).
Well spotted. It's an omission in the Colour Set for LifeHistory. I've fixed it in build 140 (which is not ready for release yet since there are a number of other changes I'm still working on). However here is a screenshot of the colours once the fix is applied. Let me know if they look correct.

Re: Life tag testing
Posted: March 7th, 2015, 10:08 am
by rowett
dvgrn wrote:State 4 at least is used for labels a lot, and should probably be assumed to be part of what's supposed to be displayed, if that isn't too much trouble.
Sorry I missed this the first time I read it. Even number states for LifeHistory are assumed to be "dead" cells so are not counting in the "fit zoom" calculation. This should only be true if not in VIEWONLY mode when the pattern is reduced to two states for execution. I'll fix it.
Re: Life tag testing
Posted: March 7th, 2015, 12:12 pm
by rowett
Dave,
You can test out the beta version of
Build 140 which should get the LifeHistory colours and centring right:
http://lazyslug.no-ip.biz/lifeview/plugin/test.html
Changes in this build:
- added notification if grid lines are switched on or off when the grid lines can't be displayed (due to ZOOM or ANGLE)
- menus now work correctly when Canvas is contained in a style="position:fixed;" div
- added missing LifeHistory colour state
- LifeHistory patterns now center correctly when in VIEWONLY mode
- Existing Viewer can be given a new pattern to display
You'll notice on my test.html page that each pattern has a "View Standalone" button. When clicked it will reveal a fixed position Viewer at the top right of the display. This is an alternative mode to the inline Viewers we have today. Perhaps we could use it when people use the <code> block rather than the <viewer> block and in the <code> block header have a link to "Display in Viewer"... just a thought.
Oh and please don't get overexcited... although the help lists Waypoint commands and they don't cause script errors they're not implemented yet

Re: Life tag testing
Posted: March 7th, 2015, 3:50 pm
by dvgrn
Is it a beta version because it's still calling itself "Build 139"? Otherwise things are looking pretty good -- LifeHistory colors and centering and so forth.
The viewer definitely does slow down quite a bit when there are that many instances on one page, but it still seems to be quite well-behaved. Would it speed up much if the started/autostarted viewers only ran simulations while they were actually visible? No idea if a viewer can tell whether it has scrolled off the screen or not... but maybe there could be a shortcut to say "Pause all viewers besides this one", or something like that.
-- Or not. Maybe I'm just causing trouble because of that tantalizing mention of waypoints in the Help, which I can't wait to try out...
Re: Life tag testing
Posted: March 7th, 2015, 4:07 pm
by rowett
dvgrn wrote:Is it a beta version because it's still calling itself "Build 139"?
No it was beta because I was halfway through implementing some changes so there was known broken stuff in there (as opposed to the unknown broken stuff yet to be discovered...).
Build 140 is now released and I'll now continue working on the Waypoint system.
dvgrn wrote:The viewer definitely does slow down quite a bit when there are that many instances on one page, but it still seems to be quite well-behaved. Would it speed up much if the started/autostarted viewers only ran simulations while they were actually visible? No idea if a viewer can tell whether it has scrolled off the screen or not... but maybe there could be a shortcut to say "Pause all viewers besides this one", or something like that.
Yes the speed is proportional to the number of running simulations (and the gps they're running at). It would be relatively simple to add a "stop all other viewers" command. I'll also see if a viewer can tell when it's not visible.
Did you try the "View Standalone" feature?
Re: Life tag testing
Posted: March 9th, 2015, 12:13 am
by dvgrn
rowett wrote:Did you try the "View Standalone" feature?
I did. Seems to work well, and it seems like it could be quite useful when patterns are interspersed with text -- you can scroll up and down to read nearby paragraphs and not lose what you're looking at. I'm not sure how this would fit in with the conwaylife.com forums exactly... Is there also the possibility of a standalone viewer popping up in a floating window?
Speaking of scrolling, I just re-tested in Google Chrome, the case where the very top of the viewer is scrolled off the screen and you click the Play button (or Pause or whatever). The viewer autoscrolls onto the screen, but the button click is lost and has to be re-done.
I know this has come up before, but now I can't remember whether it was fixed at one point. If so, it has subsequently regressed...!
EDIT: Nope, January 26th email, no fix reported -- looks like it wasn't one of the easily solvable items.
Re: Life tag testing
Posted: March 9th, 2015, 6:45 am
by rowett
dvgrn wrote:Seems to work well, and it seems like it could be quite useful when patterns are interspersed with text -- you can scroll up and down to read nearby paragraphs and not lose what you're looking at.
Exactly. I designed the feature to make the Viewer easier to use in other websites (including the LifeWiki). You could imagine a page with several patterns, or links to patterns, and then the ability to click on any pattern and have a single Viewer appear to play it.
dvgrn wrote:I'm not sure how this would fit in with the conwaylife.com forums exactly...
I find myself often frustrated when reading an interesting thread where <viewer> tags are not used. Whilst that in itself is perfectly fine (not everyone wants embedded Viewers littering their posts) I realised I was just wanting to click something on the pattern and have a Viewer pop up so I could quickly see what was being discussed.
I was imagining Nathaniel doing something clever with the forum (similar to my simple test page) such that we could have a single Viewer, initially hidden, at a fixed position on the page. For <code> blocks we could add another link (next to CODE: Select All) that said something like (Show in Viewer) that would unhide the Viewer with the pattern from the code block.
I've created a sample of this here:
http://lazyslug.no-ip.biz/lifeview/plug ... alone.html
dvgrn wrote:Speaking of scrolling, I just re-tested in Google Chrome, the case where the very top of the viewer is scrolled off the screen and you click the Play button (or Pause or whatever). The viewer autoscrolls onto the screen, but the button click is lost and has to be re-done.
Apologies I did look at this when you reported it but failed to give you feedback. The issue is as follows:
When you click on a button two things happen:
mouse down (as you press the button) and
mouse up (when you release the button). The button's action gets executed on
mouse up assuming the mouse pointer is over the button at the time.
If the Viewer is not fully on the display then
mouse down causes the Viewer to get focus and the browser (helpfully) scrolls the window so the Viewer is fully visible. If you now
mouse up (release the mouse button) then the mouse pointer is no longer over the button, since the window scrolled, and so nothing happens.
Re: Life tag testing
Posted: March 13th, 2015, 6:46 pm
by rowett
rowett wrote:I was imagining Nathaniel doing something clever with the forum (similar to my simple test page) such that we could have a single Viewer, initially hidden, at a fixed position on the page. For <code> blocks we could add another link (next to CODE: Select All) that said something like (Show in Viewer) that would unhide the Viewer with the pattern from the code block.
I've created a sample of this here:
http://lazyslug.no-ip.biz/lifeview/plug ... alone.html
OK so I got sidetracked by this...
The Viewer will now, in the sample forum page in the standalone.html link above, search automatically for <code> blocks and add a "Show in Viewer" link. When clicked this will open a standalone Viewer which you can freely move around the window by dragging the title bar. You can close it by clicking on "Hide Viewer" in the title bar or replace it with another pattern by clicking a different <code> block "Show in Viewer" link.
The only enhancement would be to have the Viewer check whether a <code> block actually contains a valid pattern before adding the "Show in Viewer" link.
Let me know what you think.
Thanks,
Chris
Re: Life tag testing
Posted: March 14th, 2015, 5:51 pm
by rowett
rowett wrote:The only enhancement would be to have the Viewer check whether a <code> block actually contains a valid pattern before adding the "Show in Viewer" link.
The latest build now checks whether the code block contains a valid pattern before adding the link.
Re: Life tag testing
Posted: March 14th, 2015, 6:01 pm
by rowett
Build 141 is now available on the lazyslug server.
- added hotkey "Z" to stop playback in all other LifeViewers
- help information now shows number of viewers that are playing
- re-enabled scrolling the error list
- inverted cursor keys to align with Golly
- <code> blocks on the forum containing a valid pattern will now get a "Show in Viewer" link that when clicked will open a standalone Viewer in a moveable window
- added script command [[ STEP 1..10 ]] that defines generations per step
- the gps slider controls steps per second
- the display is only updated at the end of each step
This build contains enhancements requested by forum members. However we should probably decide whether the new <code> block enhancement is OK before publishing.
The waypoint commands are present in this build but playback is not yet implemented.
Re: Life tag testing
Posted: March 17th, 2015, 5:27 pm
by rowett
Build 142 contains the initial implementation of the Waypoint system.
- Script command [[ T {generation} ]] defines a waypoint at the specified generation
- Script command [[ PAUSE {seconds} ]] pauses Life for the specified number of seconds
- Both the [[ T ]] and [[ PAUSE ]] commands can be followed by camera setting commands
- [[ X ]] to set the target camera X position
- [[ Y ]] to set the target camera Y position
- [[ ZOOM ]] to set the target camera zoom
- [[ ANGLE ]] to set the target camera angle
- [[ LAYERS ]] to set the number of layers
- [[ DEPTH ]] to set the layer depth
- Text in double quotes is displayed for the duration of the waypoint [[ "This is a message" ]]
The following limitations currently apply:
- The initial [[ GPS ]] setting is used for all waypoints
- Linear interpolation is used between waypoints
- Colour themes can not be changed at waypoints
- Play does not work in VIEWONLY mode
- Play stops after the final waypoint
- There is no way to disable waypoint mode once specified
- Only limited error checking and validation is performed
These will all be addressed in a future build.
Example pattern using waypoints is here:
http://lazyslug.no-ip.biz/lifeview/plugin/test.html
Feedback welcome...