Що нового
«Гра в життя» від самого початку є однією з найпопулярніших симуляцій на цьому сайті. Плоска 2D-сітка чудова, але завжди відчувалася трохи обмеженою. З цим оновленням клітини тепер можуть жити на поверхні сфери.
Сферична «Гра в життя» працює шляхом тесселяції сфери в геодезичну сітку (подібну до многогранника Голдберга), де кожна клітина має приблизно 6 сусідів. Отримані патерни поводяться інакше, ніж у версії з плоскою сіткою — глайдери огинають сферу, а патерни, що зазвичай втекли б за край, огортаються навколо.
Створення режиму сфери означало розв'язання проблеми, з якою оригінальна гра ніколи не стикається: плоска сітка дає кожній клітині чіткий набір з 8 сусідів, але сферу неможливо замостити абсолютно регулярною сіткою — завжди залишається жменька клітин із 5 сусідами замість 6, так само як футбольний м'яч зшитий і з шестикутників, і з п'ятикутників. Ми розмістили ці 12 неминучих п'ятисусідніх клітин якомога далі одна від одної, у вершинах ікосаедра, щоб жодна окрема ділянка сфери не виглядала помітно спотвореною порівняно з рештою.
Практичний ефект полягає в тому, що класичні патерни поводяться несподівано, щойно вони огинають кривизну. Глайдер, який на плоскому торі рухався б назавжди по ідеально прямій діагональній лінії, на сфері трохи відхиляється від свого курсу щоразу, коли перетинає одну з цих п'ятисусідніх клітин — за достатню кількість поколінь він описує ліниву спіраль замість прямого шляху. Осцилятори поблизу полюсів, де сітка найбільш стиснута, іноді дестабілізуються в нові патерни, яким ще ніхто не дав назви — і це одна з наших улюблених речей для спостереження під час тестування.
Нові набори правил
Конвей B3/S23
Оригінал. Народження при 3 сусідах, виживання при 2 або 3.
Highlife B36/S23
Як у Конвея, але клітини також народжуються при 6 сусідах. Створює реплікатори.
Day & Night B3678/S34678
Щільні та розріджені ділянки симетричні. Виглядає як мереживо.
Власний
Перемикайте будь-яку кількість народження/виживання, щоб створити своє власне правило.
Кольорове кодування віку клітин
Тепер клітини змінюють колір за градієнтом залежно від того, як довго вони живуть. Щойно народжені клітини — яскраво-білі. Старіші стабільні клітини — темно-сині. Це полегшує пошук активних фронтів росту та довгоживучих статичних фігур одним поглядом.
Градієнт віку виявився кориснішим діагностичним інструментом, ніж ми очікували. Спостерігаючи, як осідає випадковий «суп», тепер можна одним поглядом побачити, які ділянки вже досягли стабільної конфігурації (рівномірно темно-сині) і де ще триває перехідний хаос (суміш яскравих і середньотонових клітин). Довготривалі «мафусаїли» — патерни, яким потрібні сотні поколінь, щоб стабілізуватися — проявляються як видимий фронт кольору, що поширюється від початкового зерна, що робить їх набагато легшими для виявлення на великій сітці, ніж пошук за формою.
Про продуктивність
Підтримка трьох сіткових топологій (плоский тор, обмежена площина та сфера) плюс довільні власні набори правил означала переписування внутрішнього циклу симуляції. Тепер він використовує таблицю пошуку сусідів на типізованих масивах, обчислену один раз при зміні топології, замість перерахунку зсувів сусідів кожне покоління. На ноутбуці середнього класу сітка комфортно працює на 200x200 клітин із 60 поколіннями на секунду, а режим сфери — попри додаткову геометричну математику для рендерингу — тримається в межах кількох відсотків від продуктивності плоскої сітки.
Спробуйте самі за адресою /game-of-life/. Перемкніться на режим Highlife та зачекайте кілька сотень поколінь, поки не з'являться реплікатори.