Strona głównaArtykułyRozwój Gier

Zapadanie Funkcji Wielbojowej: Proceduralna Generacja Pod Kątem Ograniczeń

Dlaczego metafora mechaniki kwantowej stała się najbardziej skutecznym narzędziem do generowania map kafelkowych, tekstur i 3D światów, które wyglądają ręcznie wykonane zamiast losowe.

mysimulator teamZaktualizowano — czerwiec 2026≈ 8 min czytania▶ Otwórz symulację

Metaphora superpozycji

Superpozycja Funkcji Wielbojowej (WFC), wprowadzona przez Maxim Guma w 2016 roku, przedstawia generację proceduralną jako problem spełnienia ograniczeń na podstawie metyfory z mechaniki kwantowej. Wyobraźmy siatkę, gdzie każda komórka może nadal być dowolnym z T typów płytek — jej „superpozycja” możliwości. Cel polega na przypisaniu dokładnie jednego typu płytki do każdej komórki tak, aby każda para sąsiednich płytek spełniała regułę sasiedztwa, podobnie jak „obserwacja” spowoduje skonsolidowanie systemu kwantowego do jednego stanu własnościowego i ta decyzja następnie przespała się do związkanych sąsiadów.

Entropia wybiera następną komórkę

Algorytm nigdy nie rozwiązuje komórek w ustalonej kolejności. Zamiast tego zawsze zwiatają ona, której entropia Shannona jest najniższa — tzn., ta, która ma najmniej dostępnych pól do wypełnienia, ważonych przez popularność każdego pola:

H(x,y) = −Σₜ p(t)·log₂ p(t), p(t) = weight[t] / Σ weight[t′] Zwiatająca komórka → H = 0. Wszystkie wagi równe → H = log₂(|możliwości|) Rozwiązanie najbardziej ograniczonej komórki jest tym samym heurystycznym podejściem używanym w ogólnej rozwiązywaniu problemów CSP — minimalizuje szanse na wprowadzenie generatora w beztroskową sytuację w przyszłości.

H(x,y) = −Σₜ p(t)·log₂ p(t),  p(t) = weight[t] / Σ weight[t′]
Collapsed cell → H = 0.  All weights equal → H = log₂(|possibilities|)

Propagacja i cofanie się

Gdy komórka ulega zanurzeniu do jednego pola, jej sąsiadów już nie mogą wspierać niektórych pól własnych. WFC usuwa te niezgodne opcje podczas przeszukiwania szerokościowego, podobnego do algorytmu AC-3 z teorii CSP, dodając do kolejki każdego sąsiada, którego zestaw możliwości uległ zmniejszeniu, aż kolejka puste. Jeśli zestaw możliwości komórki jest kiedykolwiek całkowicie pusty — kontradikcja — w oryginalnej wersji Gumin'a odznaczanie się zaczyna od początku z nowym siedemkiem; bardziej zaawansowane implementacje utrzymują stos kopii i cofają się chronologicznie zamiast odrzucenia wszystkich postępów.

demo na żywo · powiązana symulacja● LIVE

Model podzielony na kafelki vs. model z nadmiarowością

Są dwie metody do definiowania zasad sąsiedztwa. Model podzielony na kafelki używa jasno określonego, ręcznie autorowanego zestawu kafelków z zadanymi parowymi zasadami sąsiedztwa — szybka, pełna kontrola i standardowe rozwiązanie dla większości generatorów poziomów gier. Model z nadmiarowością z drugiej strony naucza małych wzorców N×N bezpośrednio z obrazu próbki: każda okno N×N w wygenerowanym wyniku musi gdzieś występować w wejściu. Wymaga on zero ręcznego autorowania zasad i tworzy tekstury, które statystycznie przypominają przykład, za cenę szybkości i kreatywnego kontroli. Oba rozszerzają się naturalnie do 3D, używając sąsiadów sześciokierunkowych (±X ±Y ±Z) dla światów voxel.

Gdzie używane jest

WFC i jego potomki generują układ podziemnych labiryntów i bloków miasta z jednolitym stylowym wyglądem, nieskończone tekstury terenu i roślinności bez przerywek, fasady trójwymiarowe budynków oraz struktury węglowodanowe (przewidziane wcześniej w akademickim pracach Paul Merrella z 2007 roku na ten sam temat). WFC nawet tworzy szeregi nut muzyki ograniczone harmonicznie i rytmicznie. Ostatnie rozszerzenia obejmują WFC przewodzone ograniczeniami, w którym projektant maluje komórki „muszą być woda” lub „muszą być ściany” przed rozpoczęciem generacji, a WFC hierarchiczne generuje układ pomieszczeń na początku i następnie wypełnia je niezależnie.

Często zadawane pytania

Jak Wave Function Collapse wybiera komórkę do rozwiązywania dalej?

Zawsze wybiera nie-rozwiązaną komórkę z najniższą entropią Shannon — tą, która ma najmniej możliwych tilów. Rozwiązanie najbardziej ograniczonej komórki pozwala minimalizować szansę na dalszą sprzeczność, tę samą heurystykę gloutonową używaną w rozwiązywaniach z ograniczeniami.

Co się dzieje, gdy Wave Function Collapse napotka sprzeczność?

Sprzeczność występuje, gdy propagacja ograniczeń pusta robi zbiór możliwości komórki do zera tilów. Oryginalny algorytm Gumin'a prosty jest przełomem i ponowne rozpoczęciem od początku z nowym losowym seedem; zaawansowane implementacje przechowują stos poprzednich wyborów i cofają się chronologicznie, próbowując kolejnej najlepszej opcji zamiast wszystkich postępu.

Jakie jest różnice między modeliem tilowanym a modeliem nadmiarowym?

Model tilowany używa jasno określonego, ręcznie autorowanego zestawu tilów z zadanymi regułami sąsiedztwa — szybki i całkowicie kontrolowany, standardowy wybór do generowania poziomów gry. Model nadmiarowy natomiast uczy małych wzorców N×N bezpośrednio z obrazka próbki, wymagając zero ręcznego autorowania reguł, ale działający wolniej i tworzący tylko statystyki pokazanego przykładu.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Wave Function Collapse i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację Wave Function Collapse

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)