Введение
Изучая, получившийся клеточный автомат Коллатца (CCA), ранее описанный в статье. Я задумался о том, как лучше показать взаимодействие его клеток, чтобы это было доступно и наглядно. Простое описание опций, это теоретическая часть, но как известно, практика, помогает укрепить понимание протекающих процессов.
Конечно, визуализация клеток текущего и последующего шага поможет в понимании процессов в рассматриваемом автомате. Но я решил чуть разнообразить подход изучения CCA, добавив в него элементы игры. Ведь, если вашей задачей будет не просто понимание протекающих процессов в клеточном автомате, а выживание какого-то персонажа на этом поле, то у вас появляется дополнительный интерес и стимул в более подробном изучении происходящего.
Игра - Лабиринт
Не откладывая задачу в долгий ящик, представляю Вам прототип игры "Лабиринт". На рисунке 1, представлен пример поля лабиринта, основанного на CCA. Справа от поля имеется легенда с описанием цветов ячеек.

Лабиринтом является CCA, с включенными опциями, который в тот же момент в условиях игрового процесса превращается в некую экосистему для персонажа, где он будет перемещаться. Каждая ячейка ведет себя, как затухающая динамическая система под воздействием закона Коллатца. А влияние на соседние ячейки (за счёт опций) будет неким симбиозом ячеек с экосистемой лабиринта.
Вот и все, фундамент для лабиринта готов. Конкретные воздействия соседних ячеек (опции клеточного автомата) рассмотрим отдельно ниже.
А так как это игра и она должна нам помочь осмыслить происходящее в CCA, внесём в клеточный автомат две нерабочие ячейки, которые никак не сломают логику работы автомата, но за счёт которых мы приобретем завершенный логический смысл для лабиринта. Это ячейки старта и финиша для нашего персонажа. Расположим их в левом нижнем углу и правом верхнем углу соответственно.
Персонаж
Персонаж в данной игре носит условный характер, выступая в роли юнита, перемещаемого по лабиринту (клеточному автомату). Главная цель персонажа из ячейки старта добраться до ячейки финиша с возможностью при перемещении по лабиринту выполнять дополнительные задания.
Взаимодействие персонажа с лабиринтом (экосистемой ака клеточными автоматом)
Перемещаемый юнит имеет какое-то количество жизней и щитов, которые даются для прохождения уровня. Особенно важно соблюдать, чтобы количество жизней не превратилось в ноль. Ведь их обнуление приведет к проигранному уровню, как и во всех классических играх.
Жизнь теряется при следующих условиях, если:
· Персонаж посетил ячейку с нечётным числом (-1 значение);
· Персонаж попал аттрактор числовой системы в ячейке, а именно- числа 4,2,1 (-1 значение);
· При наличии противника, который нанес вам урон (-1 значение).
Щит уменьшается при наличии противника, нанесшего урон (-1 значение).
Информация по взаимодействию с противником рассмотрена отдельно ниже.
Помимо этого, значение в ячейках лабиринта будет ассоциироваться также с давлением экосистемы на персонажа, чем оно больше, тем агрессивнее окружающая среда. Изначально допустимое давление на персонажа будет равно 200 единицам, что эквивалентно тому, что вы можете без штрафов посещать ячейки со значением ниже этого. В ином случае, находясь в ячейке со значением больше допустимого давления на персонажа у вас будет сниматься 1 жизнь каждый ход.
Помимо жизней, щита и допустимого давления на персонажа, у Вас будет возможность заморозить текущее состояние ячейки, на которой он находится или откатить на шаг назад полностью состояние поля лабиринта. Но это бонусные умения, которые ещё надо будет заслужить.
Интерфейс управления перемещением юнита при прохождении уровня
Интерфейс представлен на рисунке 2. На нем имеются:
· кнопки движения персонажа по клеточному автомату влево/вправо/вверх/вниз/следующий шаг;
· кнопка вызова "заморозки" состояния ячейки, в которой находится персонаж;
· кнопка вызова "отката" состояния лабиринта (клеточного автомата) на шаг назад;
· отображение доступного количества жизней/щитов/заморозки ячеек/отката состояния поля/ собранных кристаллов/превращенных крафтовых ячеек.

Вот и все управление во время нахождения в лабиринте.
Опции
Для реализации CCA, как клеточного автомата в классическом его понимании, требуется влияние ближайших ячеек друг на друга. Поэтому опишем пример возможных взаимодействий ячеек, представив их через опции, которые возможно включать/отключать по мере надобности. Главное, что требуется соблюсти, чтоб влияние опций на соседние элементы не ломало логику работы, как динамически затухающей системы, под действием закона Коллатца. Вот пример возможных опций:
· * учитывать состояние «ближайших» 4/8 ячеек;
· * «замораживать» состояние ближайших ячеек, в случае перехода ячейки из числа 1 в новое случайное значение;
· «замораживать» состояние нечетной ячейки, если рядом все «ближайшие» четные;
· «замораживать» состояние четной ячейки, если рядом все «ближайшие» нечетные;

· «ускорять» спуск нечетной ячейки, если рядом все «ближайшие» четные, делая два изменения состояния ячейки;

· «ускорять» спуск четной ячейки, если рядом все «ближайшие» нечетные, делая два изменения состояния ячейки.
Опции помеченные «*» считаем включенными на постоянной основе, кроме случаев, заранее обговоренных.
Дополнительные опции - за счёт параметризации чисел
Отдельно стоит рассмотреть группу опций, которые возможно добавить в работу нашего клеточного автомата CCA (или экосистемы лабиринта) за счёт параметризации данных. Полностью возможность параметризации данных на основе подмножеств вычетов по модулю 6 рассмотрена в статье. Если кратко, для каждого из подмножеств 1, 3, 5 возможны 6 состояний, которые в статье описаны как подпространства. Чем больше подпространство от 1 до 6, тем вероятность его выпадения становится меньше. Таким образом, мы с вами получаем 18 состояний нечётных чисел, и уникальную возможность для добавления опций, например, к наиболее редким состояниям.
Примеры дополнительных опций.
· При выпадении 6 подпространства 1 подмножества "ускорять" спуск (+1 дополнительное изменение состояния ячейки по формуле Коллатца) во всех ячейках поля с нечётными числами;
· При выпадении 6 подпространства 5 подмножества замораживать все ячейки поля с четными числами на 1 ход
Так как мы рассматриваем клеточный автомат ещё и как игру (лабиринт) возможно добавить, например, выпадение жизни для юнита в ячейке из 5 подпространства 1 подмножества, в которой этот значок жизни будет держаться 2 последующих хода.
Таким образом это будет эквивалентно опции CCA:
· Заморозка ячейки на три хода (где выпадет дополнительно игровой бонус).
А например, 6 подпространство из 3 подмножества нечётных чисел будет наиболее редкое состояние, потому как оно может произойти только при перегенерации ячейки. В ячейке с таким числом, будет появляться бонус - полный откат изменений лабиринта на шаг назад. Такой бонус будет держаться в ячейке пока персонаж не попадет туда, либо до завершения уровня.
Это будет эквивалентно опции CCA:
· Заморозка выбранной ячейки до того, пока персонаж не попадет туда, либо до завершения уровня.
Как мы видим, основная масса состояний в соответствии с параметризацией не связана ни с какими опциями, поэтому есть что еще добавить. Однако надо помнить, чем меньше номер подпространства в ячейке с нечетным числом, тем чаще выпадение такого подпространства.
При необходимости возможно добавление опций для ячеек и с четными числами, воспользовавшись той же формулой параметризации для подмножеств 1,3,5, но прибавляя в конце +1.
Вспомогательные графики состояний лабиринта
Помимо основного поля с отображением клеточного автомата Коллатца для понимания происходящего предлагается визуализировать дополнительные поля с различными состояниями нашего лабиринта (рисунок 5). А так это игра и доступ к таким полям помогает в анализе работы клеточного автомата, предлагается открывать доступ к ним, за добытые кристаллы (рассмотрены ниже).

Вспомогательные графики с полями предлагаются следующие:
· поле с маркировкой чётных/нечетных чисел и цикл 4,2,1 (рисунок 6);

· поле с принадлежностью чисел к подмножествам 1,2,3,4,5,6 (рисунок 7);

· поле с принадлежностью нечётных чисел к подпространствам, в соответствии с параметризацией нечётных чисел (рисунок 8);

· поле с маркировкой "замороженных" ячеек на следующем ходу (рисунок 9);

· поле с маркировкой действующих опций на ячейки на следующем ходу (рисунок 10);

· поле с оставшимся количеством шагов до 1 (рисунок 11);

Уровни лабиринта
Для изучения CCA, предлагается создать два режима прохождения лабиринта:
· Заранее подготовленные уровни с уже назначенными настройками игры. Такие уровни предназначены для поочередного введения опций и настроек, в качестве постепенного усиления сложности работы клеточного автомата;
· Произвольные уровни, где настройки и опции выбирает пользователь, в зависимости от того, что ему уже доступно.
Вариативность настроек при создании уровня
При прохождении уровней лабиринта возможны различные вариации настроек работы клеточного автомата, например, выбор:
· Размера поля;
· Диапазона стартовых значений при генерации новых чисел в ячейках;
· Количества жизней/щитов/заморозок ячейки/ откатов поля;
· Доступности вспомогательных графиков;
· Всех доступных открытых опций;
· Включения наличия противников на поле;
· Режима "Хардкор", когда доступна только одна жизнь;
· Включения тумана войны;
· Отключения перегенерации ячейки после попадания в 1;
· Доступного количества изменений клеточного автомата до отключения перегенерации ячеек.
Свойства игры
Помимо опций, относящихся к состоянию работы клеточного автомата, игру лабиринт возможно дополнить бонусными свойствами, для повышения сложности и интереса прохождения уровней. Предлагаются следующие свойства:
· В начале уровня доступна только одна жизнь;
· Туман войны, когда вы можете видеть, ограниченное пространство вокруг персонажа, например, ближайшие клетки в радиусе 1;
· Отключение перегенерации ячейки после попадания в 1;
· Влияние значения числа на персонажа, как аналог давления;
· При выпадении на поле лабиринта любого нечетного числа из 5 подпространства 3 подмножества выполнять «ультимативное правило» в рамках игры, что персонаж теряет одну из своих жизней.
· Доступное изменение состояний клеточного автомата до отключения перегенерации ячеек при достижении ячейками числа 1;
· Добыча ресурсов на поле (кристаллов), которые в перерыве прохождения уровней возможно будет потратить на игровые бонусы, что помогут вам в выживании в лабиринте;
· Крафтовые ячейки, которые необходимо напитать силой персонажа, чтоб она снова ожила и в ней появились числа. Более подробно свойство описано ниже;
· Противники на поле боя;
· Ячейки старта финиша, генерятся в случайных местах (наиболее актуально при тумане войны).
Такие свойства должны становиться доступными поочередно, для постепенного усложнения игры.
Добываемые ресурсы
При прохождении любого уровня с какой-то вероятностью на поле лабиринта будет выпадать добываемый ресурс в виде кристалла. Вам не обязательно его собирать для прохождения уровня, но их сбор поможет вам в добыче бонусов в игре.
Помните, если вы взяли кристалл на поле, не забудьте успешно пройти уровень, иначе он просто исчезнет.
Крафтовая ячейка
Крафтовая ячейка – это аномалия в клеточном автомате, которую вам необходимо устранить. Крафтовая ячейка требует подпитки энергией персонажа. Не напитав ее и не превратив ее в обычную ячейку с числом, вы не сможете пройти уровень.
На первый взгляд такое свойство может вызвать вопросы в ее необходимости, но поверьте, наличие такой ячейки повысит сложность прохождения любого уровня. Так как напитать крафтовую ячейку вы сможете только находясь внутри нее, не менее 3 ходов. Любое негативное влияние происходящее от опций в соседних клетках будет мешать вам. А если рядом будет противник, то вам точно лучше справиться с ним заранее. «Бонусом» ко всему, при превращении крафтовой ячейки в ячейку с обычным числом, если оно окажется нечётным... Да! Вы теряете жизнь, как и при обычном попадании в ячейку с нечётным числом. Вот такие дела.
Противники
Так как описываемый лабиринт – это игра, то кроме достижения цели при прохождении, более всего напрашивается добавление в нее противников, которые пытались бы нам помешать пройти уровни.
Напомню тонкий момент, все что добавляется в экосистему лабиринта, напрямую может повлиять на процесс работы клеточного автомата CCA. Главное условие – сохранить каждую отдельную ячейку, как затухающую динамическую систему, стремящуюся к 1.
В случае генерации на поле любой юнит противника появляется в случайном месте, кроме уровней, где им отведены особые места. Для победы над противником достаточно дойти до него и встать на соседней ячейке.
Пример противников:
· Ультиматум. Через каждые 13 смен поля наносит урон персонажу в размере одной жизни. У такого противника только одна жизнь, но имеется иммунитет к нечётным числам. Только вот до него ещё надо дойти. А если вы играете с туманом войны, да ещё и с хардкорной одной начальной жизнью...
· Фехтовальщик. Имеет только одну жизнь, но у него иммунитет к нечётным числам. Юнит может случайно перемещаться в радиусе 1 ячейки от места генерации. Каждый четвертый ход, в сторону персонажа будет по диагонали на 2 ячейки впрыскиваться яд, который действует одну смену поля и наносит 1 урон жизни. Если персонаж будет находиться в этих двух клетках в это время, значит ему не повезло.
· Ловец. Имеет 6 жизней, но не имеет иммунитет к нечётным числам. Такие противники помимо начальной генерации уровня могут появляться в случайном месте поля каждые 15 смен поля с 40% вероятностью. Цель такого юнита напасть на вас, где бы вы не были.
Возможна более сложная механика, где поражение противнику будет наноситься другим способом, приведен лишь пример. Но даже с такими противниками будут получаться не проходимые моменты. Это чистый рандом.
Достижения
Говоря о популяризации представленного лабиринта на основе CCA, то невозможно обойтись и без достижений в игре. Чтобы достигнутый результат в изучении лабиринта был привязан к конкретному человеку и отображался в его аккаунте. С учетом представленного функционала с ходу можно предложить следующие ачивки:
· ^ Стоик – пережил ультимативный удар (когда отнимается одна жизнь при выпадении ультимативного правила);
· ^ Фаталист – пал смертью храбрых от ультимативного удара (когда отнимается одна жизнь при выпадении ультимативного правила);
· ^ Воин – победил противника;
· ^ Собиратель – превратил крафтовые ячейки;
· ^ Смертник – количество смертей при прохождении уровней;
· Делитель – открыл доступ к графику с вспомогательным полем, где отображается принадлежность к подмножествам;
· ^ Ультиматум ультиматума – поразить противника "Ультиматума" под туманом войны с одной начальной жизнью на уровне.
· ^ Ловец – поразить противника "ловец";
· ^ Ассасин – поразить противника "Ловец" под туманом войны с одной начальной жизнью на уровне.
Достижения указанные, как «^» помимо наградного значка сопровождаются цифрой, символизирующей какое количество раз произошло событие.
Указанные достижения – это пример, малая часть того, что может быть представлено в игре лабиринт.
Бонусы
За счёт добываемых ресурсов или по прохождению ключевых уровней могут даваться бонусы, например:
· Увеличение количества постоянных жизней персонажа;
· Увеличение количества постоянных щитов для защиты;
· Увеличение количества заморозок ячейки, в которой находится персонаж;
· Увеличение количества откатов поля лабиринта;
· Увеличение дальности видимости при тумане войны;
· Открытие и просмотр вспомогательных графиков состояний по влиянию опций;
· Увеличение выносимого давления персонажем на 100 единиц.
Бонусы носят общий характер – повысить выживаемость персонажа при прохождении уровней.
Задания для персонажа при прохождении уровня
При прохождении любого уровня возможно ставить перед персонажем различные задания, например:
· Напитать крафтовую ячейку;
· Забрать бонус;
· Уничтожить противника;
· Пройти поле за определенное количество ходов.
Добавление заданий при прохождении уровней персонажем нацеленно на большую вовлеченность в процесс изучения работы клеточного автомата.
Меню управления
Все описанное выше, выходит за рамки обычного клеточного автомата и требует помимо обновляемого поля, меню с выбором. Поэтому вкратце опишу разделы для игры "Лабиринт", которые бы точно были бы не лишними, а игрок смог бы довольно просто ориентироваться в управлении по ним:
· Просмотр персонажа (описание, достижение, полученные бонусы);
· Просмотр опций и их определение;
· Просмотр свойств игры и их определение;
· Просмотр описания противников;
· Выбор энергетического уровня;
· Выбор режима игры - предварительно подготовленные уровни, либо выбор кастомной карты с доступными настройками/опциями.
Если окунуться в нынешние реалии, то в части описания персонажа, возможно докрутить много всего. Например, с помощью ИИ, в начале каждому игроку предлагать 3 уникальных героя, с их описанием, которые потом будут развиваться при прохождении уровней. А полученные бонусы, достижения и пройденные этапы игры можно было приплетать к его истории. Также картинки образа каждого из таких уникальных героев возможно генерить через нейросеть. При должном подходе это возможно. В итоге каждый из игроков получил бы уникального героя со своей историей.
Заключение
Вашему вниманию был представлен клеточный автомат CCA с опциями (в том числе с дополнительными опциями, основанными на параметризации нечётных чисел). Каждая ячейка на поле живет полноразмерной жизнью затухающей динамической системы, а соседние ячейки, как и в любом другом сообществе влияют друг на друга.
Такой клеточный автомат подобен экосистеме, она самодостаточна и развивается в соответствии с заложенными в нее механизмами.
Именно такую экосистему мы взяли за основу для игры "Лабиринт", в которой должен выжить Наш персонаж. А для разнообразия и стимула в изучении происходящего в клеточном автомате, мы добавили:
· Свойства игры;
· Достижения;
· Вспомогательные графики состояний лабиринта;
· Режимы прохождения уровней;
· Бонусы.
Наш "Лабиринт" стал отдельным миром со своими правилами и законами, ресурсами и обитателями. Нам остаётся его только познавать.
P.S. Думал над вставкой фрагментов кода в данную статью, но надобности в этом не нашел. Полный пример прототипа я выложил. А отдельные фрагменты банальны и не интересны в частности. Но вот задумка... Задумку я изложил, а это главное)