Koncepcja proceduralnego generowania elementów gier komputerowych nie jest niczym nowym. Początkowo był to tylko stosunkowo tani sposób na zwiększenie re-grywalności (ang. replayability, chodzi o to że, przez jaki czas gracz powraca do gry po jej ukończeniu), ale rozwiązanie to okazało się z czasem tak dużym źródłem inspiracji, iż niektóre współczesne produkcje wręcz bazują na proceduralnym generowaniu świata. Poznamy dziś algorytm, który pomaga generować losowe obrazy, zachowujące jednak pewien zbiór ograniczeń...
Zagadnienia poruszane w tym artykule:
- Wave function collapse;
- Skąd nazwa?
- Generowanie obrazów;
- Metody biorące udział w ekstrakcji kafelków z obrazu-ziarna;
- Generujemy listę dostępnych następników dla kafelków;
- Do roboty!
- Metoda generująca wynikowy obraz;
- Metoda GetNextUnobserved;
- Metoda PickRandomSuccessor;
- Metoda UpdatePossibleSuccessors;
- Metoda GenerateResult (fragmenty);
- Wizualizacja procesu;
- Konfiguracja do wygenerowania obrazu z gotowych kafelków;
- Wyniki;
- Wzorcowy obraz;
- Przykładowa aplikacja.
Artykuł pochodzi z magazynu Programista nr 107 (2/2023). Magazyn jest z przełomu kwietnia i maja 2023 roku. Szczegółowy spis treści wydania nr 104: https://programistamag.pl/programista-2-2023-107/
Autorem artykułu jest Wojciech Sura. Programuje 30 lat, z czego 15 komercyjnie; ma na koncie aplikacje desktopowe, webowe, mobilne i wbudowane – pisane w C#, C++, Javie, Delphi, PHP, JavaScript i w jeszcze kilku innych językach. w tej chwili pracuje jako architekt w firmie WSCAD, rozwijającej oprogramowanie nowej generacji CAD dla elektrotechników.