Dlaczego jest to Proceduralne Generowanie Treści, podczas gdy inne nie?

18

Czytam książkę Proceduralnego generowania treści online i w rozdziale 1 na stronie 2 jest jeden przykład tego, czym jest PCG, a inny tego, czym nie jest PCG i nie mogę ich rozróżnić.

Według nich jest to PCG:

oprogramowanie pośrednie silnika gry, które szybko zapełnia świat gry roślinnością

Według nich NIE jest to PCG:

silnik gry zdolny do integracji automatycznie generowanej roślinności

Również na stronie 1 wyraźnie powiedzieli, że nie uważają silnika gry PCG

Kluczowym terminem jest tutaj „treść”. W naszej definicji zawartość jest w większości zawarta w grze: poziomy, mapy, zasady gry, tekstury, opowieści, przedmioty, zadania, muzyka, broń, pojazdy, postacie itp. Sam silnik gry nie jest uważany za treść w naszej definicji.

Domyślam się, że przykładem PCG jest kod w grze (lub może to być kod, który dostosowuje się do każdej gry), który rozpoznaje mapę gry i zapełnia ją roślinnością zgodnie z nią. Dla mnie przykład inny niż PCG byłby jak opcja dostępna w silniku gry, gdyby deweloper mógł dodać roślinność offline za pomocą interfejsu użytkownika.

Ten ostatni jest ode mnie bardzo szalony, jestem całkiem pewien, że się mylę, ponieważ na pierwszy rzut oka oba brzmią jak PCG. Pomóż mi je rozróżnić.

Adocad
źródło
9
Porównaj dwóch mężczyzn: A wchodzi do pokoju, patrzy na niego, buduje meble na podstawie pokoju i umieszcza je w pokoju. B robi to samo, ale idzie do IKEA (ludzie, którzy zbudowali meble), aby dostać meble do pokoju. Czy powiedziałbyś, że zarówno A, jak i B tworzą meble? Na tę różnicę starają się wskazać. O ile nie tworzysz mebli od zera, tak naprawdę nie tworzysz mebli, po prostu używasz istniejących mebli na nowe sposoby.
Flater

Odpowiedzi:

27

Przez analogię

Obwód nie wytwarza energii. Żarówka nie wytwarza energii. Bateria nie wytwarza energii. Żadna z rzeczy, które wykorzystują lub przechowują wytworzoną energię , nie są generatorami energii.

Generator napędzany benzyną jest generatorem mocy . Układ paneli słonecznych to generator prądu . Oni można spodziewać się spontanicznie generować gdy są skopany. Z generowanej przez siebie energii mogą korzystać także inne rzeczy : lodówki i telewizory oraz komputery PC, grzejniki i żarówki.

Podobnie, dowolnym kodem lub programem, który faktycznie generuje treść w czasie wykonywania, jest PCG. Reszta to tylko użytkownicy tej proceduralnie generowanej treści (PGC). Teraz,

Generowanie treści proceduralnych

to nie to samo co

Treści generowane na podstawie procedur

PGC to wynikowy artefakt procesu (programu), który angażuje się w PCG.

PCG jest opracowywany (programowany) do tego stopnia, że ​​może autonomicznie wytwarzać treści według niektórych lub innych specyfikacji, ale w (zazwyczaj) niezliczonych odmianach; W ten sposób PGC jest generowany jako jedna odmiana nieograniczonych możliwych przestrzeni treści w ramach tej szerszej specyfikacji algorytmicznej. Po wygenerowaniu PGC są skończone i statyczne . PCG radzą sobie z nieskończonością (lub wystarczająco blisko).

Adresy szczegółowe

„Proceduralne generowanie treści” odnosi się do kodu / aplikacji generujących treść.

Każdą grę można uznać za grę PCG, jeżeli w czasie wykonywania dynamicznie generuje nową zawartość za pomocą części zestawu instrukcji.

Jeśli ty (lub twój silnik) korzystasz (-aś) z innego kodu programu, który generuje zawartość, dołącz tę zawartość jako część gry w czasie kompilacji / kompilacji , wtedy twoja gra (i jej kod) NIE jest PCG. W związku z tym:

silnik gry zdolny do integracji automatycznie generowanej roślinności

... nie jest PCG, ponieważ sam silnik nie wytwarza nowych treści w czasie wykonywania, po prostu wykorzystuje wygenerowaną treść z innych źródeł, które zostały ręcznie dołączone przez artystów, projektantów lub programistów.

rozpoznaje mapę gry

PCG nie ma nic wspólnego z rozpoznawaniem. Ma to związek z wykonywaniem aktywnej pracy polegającej na tworzeniu treści. Zasadniczo aplikacje PCG generują własny format danych, który są już w stanie zrozumieć i z nimi pracować. Zazwyczaj nie czytają w źródłach zewnętrznych, chociaż kiedy to robią, jest to po prostu stara logika programu ... nie PCG jako taka. PCG to generacja . Stąd PCG, a nie PCR :)

Perspektywy historyczne

To, co uważamy za „treść” w tym kontekście, ogólnie obejmuje te rzeczy, które w przeszłości ludzie musieli sami wytwarzać. Na przykład w latach 70. i 80. prawie każda gra (z wyjątkiem kilku wyjątkowych) musiała mieć swoją sztukę, historię, muzykę, charakter i planety, i tym podobne, wyprodukowane przez człowieka . To było biegunowe przeciwieństwo PCG.

PCG zaczęło się, gdy programiści gier zdali sobie sprawę, że zamiast rygorystycznego zatrudniania artystów, muzyków, pisarzy itp. - a następnie nadal muszą zintegrować swoją pracę z kodem, lub jeszcze gorzej, wykonując całą tę pracę samodzielnie, a także kodowanie - mogą zamiast tego pisz programy, które wygenerują dla nich wszystkie te rzeczy. Te wysiłki były jednymi z pierwszych prawdziwie PCG funkcji, modułów i programów. Doskonałym przykładem jest oryginalny XCom / UFO , w którym kod gry generuje całkowicie unikalny poziom przed walką. Wcześniej (1979) istniała Świątynia Apshai .

Elita była inną sprawą: część jej zawartości została wygenerowana, gdy gra była w fazie rozwoju; nie tylko ten kod został napisany przez tych samych autorów, ale również, że wstępnie wygenerowana treść była zwykle używana w czasie wykonywania elite.exe(tj. kiedy gracz uruchomił grę) przez kolejne generatory, które były częścią kodu gry , tworząc świat, który grał w.

Nowszym przykładem jest Minecraft (i inne zainspirowane nim gry), w których świat dosłownie generuje się wokół ciebie, idąc w kierunku horyzontu, w dużej mierze dzięki nowoczesnej mocy obliczeniowej. Porównaj to z Rogue lub Morią graną na PC-XT w latach 80., na które być może będziesz musiał czasem usiąść i czekać na wygenerowanie poziomu! (w zależności od wybranych ustawień gry).

Nie wszystkie PCG są historycznie zakorzenione w branży gier. Na przykład są tacy, którzy piszą generatory fikcji. Na przykład Ken Perlin w dziedzinie grafiki i geometrii obliczeniowej stworzył algorytm Perlin Noise, za który później otrzymał nagrodę akademicką. Na przykład muzyk Brian Eno od dawna zajmuje się generowaniem proceduralnych partytur muzycznych. I jako kolejny przykład, inne niż cyfrowe gry planszowe, takie jak HeroQuest / Warhammer Quest, dawno temu wymyśliły dynamikę proceduralną do tworzenia różnych plansz dla każdej gry.

Inżynier
źródło
6
Bardzo drobny wyjątek techniczny - istniał projekt koncepcyjny / gra sprawdzająca koncepcję, w której sama gra została wygenerowana proceduralnie. Oznacza to, że cele, zasady i do pewnego stopnia reprezentacja były generowane dynamicznie w czasie wykonywania. W pewnym sensie zaciera to granicę między treścią a silnikiem, ale nawet lakmusowy test „generuje” wciąż trwa. Doskonała destylacja.
Pikalek
3
@Pikalek W pełni zgadzam się z tym tokiem myślenia. Możemy to zrobić tak daleko, jak Lisp - że ostatecznie nie ma rozróżnienia między instrukcjami a danymi. Nie chciałem jednak nadmiernie komplikować rzeczy w odpowiedzi. Dzięki za komentarz.
Inżynier
2
@Adocad: Myślę, że pominąłeś drobny szczegół w odpowiedzi: „Jeśli (lub Twój silnik) używasz innego kodu programu, który generuje zawartość , a następnie dołączasz tę treść jako część gry w czasie kompilacji / kompilacji, Twoja gra ( i jego kod) NIE JEST PCG „ Jeśli włączyłeś program do gry, zamiast treści wygenerowanej przez program, a Twoja gra uruchomiłaby program w razie potrzeby (lokalnie, na komputerze gracza), to rzeczywiście byłby to PCG offline. Nie dzieje się tak jednak wtedy, gdy po prostu dołączasz wynik z generowania PCG (który jest teraz statyczny).
Flater
2
@AC: Myślę, że rozróżnienie jest wyraźniejsze, gdy oznaczamy je jako treści generowane proceduralnie lub generowane proceduralnie .
Flater
4
@Flater Dzięki, to lepszy sposób na umieszczenie go - treść generowana proceduralnie może być generowana offline i / lub w czasie wykonywania, ale generowanie treści proceduralnych jest jawnie środowiskiem uruchomieniowym. (Zauważ, że narzędzie , które generuje treści, które później zostaną skompilowane w to robi PCG, jednak po tym zawartość została wstępnie wygenerowany i opracowano, gry korzystające z tego treść nie robi PCG)
AC