Intro
Conway's Game of Life is well-known in the computer science and math world for being Turing-complete and for feats such as those highlighted in the recent Pattern of the Year Voting thread. I'm confident I'm not alone in thinking that the appeal of CGoL extends well beyond its field. After all, it's achieved some truly impressive feats that are bound to catch anyone's interest, such as calculating/printing the digits of pi and spelling out decorative messages using flotillae.
The issue is that the concepts for CGoL may start to lose people pretty early on when it comes to understanding glider syntheses, conduits, or the design of large contraptions like the 0E0P metacell. Additionally, the components of large patterns like the aforementioned pi calculator are not easily comprehensible. To quote Dave Greene, "Patterns are still communicated at the cell-by-cell level, not in recursively defined groups according to function".
These are the driving reasons for building a series of hands-on puzzles/challenges; to ease newcomers as gently as possible into more intermediate exercises that they can genuinely feel great about finishing.
Alkali, from the Conwaylife Lounge, referred to this project as a "story mode;" an apt description for our goals with this project, as well as the inspiration for its working title: Conway's Story Mode.
Offering
Conway's Story Mode (CSM) is a "tiered challenge" catered towards for newcomers to CGoL. The ultimate goal of CSM is to ease complete beginners into being able to solve a more intermediate puzzle, creating an end state using given patterns, or "puzzle pieces". Ideally, learners will be able to figure out pattern(s) and the interactions that led to said state.
CSM is based off of the deliverables (quoted below) from Project von Neumann, a concept from dvgrn, simsim314, pcallahan, and Extrementhusiast that ended up as "pure vaporware".
I've reached out to a several helpful individuals from the community and most recently, I've been working with another member, b3s23love.dvgrn wrote: ↑April 8th, 2019, 1:45 pm- A puzzle consists of a set of pieces to be used to reach a specific goal. The pieces would either be provided directly (especially for the initial set of easy puzzles) or could be copied in from a library.
- The goal of the puzzle is visually marked in some standard way. Objects to be destroyed might be marked with red X's, objects to be created or lanes where output signals are supposed to appear might be outlined in green, etc.
- When a candidate solution is ready to be tested, the Life pattern is simulated on-screen. If the output matches the goal, a successful outcome is recorded.
- An Important Feature That We Don't Have Now In Any Editor: the Puzzle Editor should have a way of visually indicating valid interactions between pieces. For example, a connecting line with a directional arrow might appear when two Snarks are oriented and lined up correctly.
- Something Else We Haven't Had Since Xlife: For some classes of problems it's useful to be able to work with several components grouped together -- grab one piece and move it, and the other pieces grouped with it come along too.
- Another Handy Editing Feature: If there's a flexible connection, e.g., a splitter and a Snark lined up along a glider lane, then only adjustments that maintain the connection should be allowed -- unless the two components are specifically disconnected first.
- Instructions, and maybe optional hints, for each puzzle would be displayed in a text box somewhere. Maybe also a link to easier puzzles that teach key ideas needed to solve the current puzzle.
- There should be a way to create and upload new candidate puzzles via a creation/contribution mode. Once a good-sized initial problem set is available, it would be great to be able to add on new puzzle modules about other rules, or other sub-specialties that haven't been covered yet.
At a high-level, the CSM concept is a website written in Python using Django, in order to enable lifelib capabilities. We are in the process of wireframing in Figma, with plans to create a custom lifelib frontend that will be used for the exercises and puzzles.
The site will include two sections:
- The first section will include definitions, streamlined lessons, and labs/exercises.
- The second section will consist of a puzzle editor for experimentation (as per the original concept of Project von Neumann).
I'm opening this thread for posterity - it would be much appreciated if readers with related experiences can comment or contribute in any capacity.