Co nowego
Gra w Życie jest jedną z najpopularniejszych symulacji na tej stronie od pierwszego dnia. Płaska wersja siatki 2D jest świetna, ale zawsze wydawała się nieco ograniczona. Dzięki tej aktualizacji komórki mogą teraz żyć na powierzchni sfery.
Sferyczna Gra w Życie działa poprzez teselację sfery na siatkę geodezyjną (podobną do wielościanu Goldberga), gdzie każda komórka ma w przybliżeniu 6 sąsiadów. Powstałe wzory zachowują się inaczej niż w wersji płaskiej — szybowce zakrzywiają się wokół sfery, a wzory, które normalnie uciekłyby poza krawędź, zawijają się dookoła.
Zbudowanie trybu sferycznego oznaczało rozwiązanie problemu, z którym oryginalna gra nigdy nie musiała się mierzyć: płaska siatka daje każdej komórce czysty zestaw 8 sąsiadów, ale sfery nie da się pokryć idealnie regularną siatką — zawsze zostaje garstka komórek z 5 sąsiadami zamiast 6, tak samo jak piłka nożna jest zszyta zarówno z sześciokątów, jak i pięciokątów. Umieściliśmy tych 12 nieuniknionych komórek z pięcioma sąsiadami jak najdalej od siebie, w wierzchołkach dwudziestościanu, więc żaden pojedynczy region sfery nie wygląda na wyraźnie zniekształcony w porównaniu z resztą.
Praktycznym efektem jest to, że klasyczne wzory zachowują się w nieoczekiwany sposób, gdy owijają się wokół krzywizny. Szybowiec, który na płaskim torusie podróżowałby wiecznie po idealnie prostej ukośnej linii, na sferze dryfuje bardzo lekko poza swój kurs za każdym razem, gdy przecina jedną z tych komórek z pięcioma sąsiadami — po wystarczającej liczbie generacji kreśli leniwą spiralę zamiast prostej ścieżki. Oscylatory w pobliżu biegunów, gdzie siatka jest najbardziej zagęszczona, czasem destabilizują się w nowe wzory, których nikt jeszcze nie nazwał, co jest jedną z naszych ulubionych rzeczy do obserwowania podczas testów.
Nowe zestawy reguł
Conway B3/S23
Oryginał. Narodziny przy 3 sąsiadach, przetrwanie przy 2 lub 3.
Highlife B36/S23
Jak Conway, ale komórki rodzą się też przy 6 sąsiadach. Wytwarza replikatory.
Day & Night B3678/S34678
Gęste i rzadkie regiony są symetryczne. Wygląda jak koronka.
Własna
Przełączaj dowolną liczbę narodzin/przetrwania, by stworzyć własną regułę.
Kolorowanie komórek według wieku
Komórki teraz przechodzą przez gradient w zależności od tego, jak długo żyją. Nowo narodzone komórki są jasnobiałe. Starsze, stabilne komórki są głęboko niebieskie. Ułatwia to dostrzeżenie na pierwszy rzut oka aktywnych frontów wzrostu i długowiecznych stabilnych form.
Gradient wieku okazał się bardziej użyteczny jako narzędzie diagnostyczne, niż się spodziewaliśmy. Obserwując, jak losowa zupa się ustala, widać teraz na pierwszy rzut oka, które regiony już osiągnęły stabilną konfigurację (jednolicie głęboki błękit), a które wciąż przechodzą przez przejściowy chaos (mieszanka jasnych i średnio-tonalnych komórek). Długo trwające "matuzalemy" — wzory, które potrzebują setek generacji, by się ustabilizować — pojawiają się jako widoczny front kolorystyczny rozchodzący się od pierwotnego zasiewu, co znacznie ułatwia ich dostrzeżenie na dużej siatce niż skanowanie samych kształtów.
Uwagi o wydajności
Obsługa trzech topologii siatki (płaski torus, ograniczona płaszczyzna i sfera) plus dowolnych własnych zestawów reguł oznaczała przepisanie wewnętrznej pętli symulacji. Teraz wykorzystuje tabelę wyszukiwania sąsiadów opartą na typed-array, obliczaną raz na zmianę topologii, zamiast przeliczać przesunięcia sąsiadów w każdej generacji. Na laptopie klasy średniej siatka komfortowo działa przy 200x200 komórek z 60 generacjami na sekundę, a tryb sferyczny — mimo dodatkowej matematyki geometrii dla renderowania — nadąża w granicach kilku procent za trybem płaskim.
Wypróbuj pod adresem /game-of-life/. Przełącz na tryb Highlife i poczekaj kilkaset generacji, aż pojawią się replikatory.