Bu Prosedürel İçerik Üretimi neden diğeri değil?


18

Çevrimiçi Prosedürel İçerik Üretimi kitabını okuyorum ve bölüm 1, sayfa 2'de PCG'nin ne olduğuna ve PCG'nin ne olmadığına dair bir örnek var ve bunları ayırt edemiyorum.

Bu onlara göre PCG:

Bir oyun dünyasını hızla bitki örtüsüyle dolduran oyun motoru ara katman yazılımı

Bu onlara göre PCG DEĞİL:

otomatik olarak üretilen bitki örtüsünü entegre edebilen bir oyun motoru

Ayrıca sayfa 1'de açıkça bir oyun motoru PCG dikkate almadıklarını söylediler

Burada anahtar terim “içerik” tir. Bizim tanımımızda, içerik bir oyunda yer alan şeylerin çoğudur: seviyeler, haritalar, oyun kuralları, dokular, hikayeler, öğeler, görevler, müzik, silahlar, araçlar, karakterler, vb . Oyun motorunun kendisi içerik olarak kabul edilmez. tanımımızda.

Tahminimce PCG örneği, oyun haritasını tanıyan ve ona göre bitki örtüsü ile dolduran bir oyundaki bir koddur (veya herhangi bir oyuna uyum sağlayan bir kod olabilir). Ve PCG değil benim için oyun geliştirici kullanıcı arayüzü üzerinden bitki örtüsü çevrimdışı ekleyebilirsiniz vardı oyun motoru bir seçenek gibi olurdu.

Sonuncusu benden çok vahşi bir tahmin, eminim yanlışım çünkü ilk bakışta ikisi de PCG gibi geliyor. Lütfen onları ayırt etmeme yardım edin.


9
İki adamı karşılaştırın: A bir odaya girer, bakar, odaya göre mobilya yapar ve mobilyaları odaya koyar. B de aynısını yapıyor, ama odaya mobilya koymak için IKEA'ya (mobilyayı yapan insanlar) gidiyor. Hem A hem de B'nin mobilya yarattığını söyleyebilir misiniz? İşaret etmeye çalıştıkları fark bu. Mobilyaları sıfırdan yaratmadığınız sürece, aslında mobilya yaratmıyorsunuz, sadece mevcut mobilyaları yeni şekillerde kullanıyorsunuz.
flater

Yanıtlar:


27

Analoji yoluyla

Bir devre güç üretmez. Bir ampul güç üretmiyor. Pil güç üretmiyor. Üretilen gücü kullanan veya depolayan şeylerin hiçbiri güç üreteci değildir.

Benzinle çalışan bir jeneratör bir güç üreticisidir . Güneş paneli kurulumu bir jeneratördür . Onlar onlar başladı edildiğinde kendiliğinden oluşturmak için beklenebilir. Diğer şeyler ürettikleri gücü kullanabilirler : buzdolabı ve TV'ler, PC'ler ve ısıtıcılar ve ampuller.

Benzer şekilde, aslında çalışma zamanında içerik üreten herhangi bir kod veya program PCG'dir. Gerisi olan kullanıcılar bu prosedür tarafından oluşturulan içerik (PGC) ait. Şimdi,

Prosedürel İçerik Üretimi

ile aynı değil

Prosedürel Olarak Oluşturulan İçerik

PGC, PCG ile uğraşan bir sürecin (programın) ortaya çıkan eseridir.

PCG, bir veya diğer spesifikasyonlara, ancak (tipik olarak) sayısız varyasyonda özerk içerik üretebildiği bir noktaya kadar geliştirilir (programlanır); Böylece PGC, daha geniş algoritmik spesifikasyon içindeki sınırsız olası içerik alanlarının tek bir varyasyonu olarak üretilir . PGC'ler üretildikten sonra sonlu ve statiktir . PCG'ler sonsuzlukla (veya yeterince yakın) ilgilenir .

Adresleme özellikleri

"Yordamsal İçerik Üretimi", içerik oluşturan kod / uygulamaları ifade eder.

Çalışma zamanında , talimat setinin bir parçası aracılığıyla dinamik olarak yeni içerik oluşturuyorsa , herhangi bir oyun bir PCG oyunu olarak kabul edilebilir .

Siz (veya motorunuz) içerik üreten başka bir program kodu kullanırsanız, bu içeriği derleme / derleme zamanında oyununuzun bir parçası olarak ekleyin , o zaman oyununuz (ve kodu) PCG DEĞİLDİR. Dolayısıyla:

otomatik olarak üretilen bitki örtüsünü entegre edebilen bir oyun motoru

... PCG değildir, çünkü bu motor çalışma zamanında yeni içerik üretmez, sadece sanatçılar, tasarımcı veya geliştiriciler tarafından manuel olarak dahil edilen başka bir yerden üretilen içeriği kullanır.

oyun haritasını tanır

PCG'nin tanıma ile ilgisi yoktur. İçerik oluşturma konusunda aktif bir çalışma yapmakla ilgilidir. PCG uygulamaları genellikle anlayabilecekleri ve üzerinde çalışabilecekleri kendi veri formatlarını üretir. Tipik olarak dış kaynaklarda okumazlar, ancak yaptıklarında bu sadece eski program mantığıdır ... PCG gibi değil. PCG tamamen nesil ile ilgilidir . Bu nedenle PCR değil PCG :)

Tarihsel bakış açıları

Bu bağlamda "içerik" olarak düşündüğümüz şey, genellikle geçmişte insanların kendileri üretmek zorunda oldukları şeyleri kapsar . Örneğin, 70'lerde ve 80'lerde, hemen hemen her oyunun (çok özel bir kaç kişi hariç) sanatının, hikayesinin, müziğinin, karakterinin ve gezegen adlarının vb. Bir insan tarafından üretilmesi gerekiyordu. . Bu PCG'nin kutupsal zıttıydı .

Ve sonra yine kodu ile işlerini entegre, ya da daha kötüsü zorunda henüz bu işin kendileri hepsi yapıyor - PCG oyun programcıları yerine vs. sanatçılar, müzisyenler, yazarlar işe Tekerleme ait fark edince başladı yanı sıra kodlama - ellerinden bunun yerine, onlar için tüm bunları üretmek için programlar yazın. Bu çabalar ilk gerçek PCG işlevleri, modülleri ve programlarından bazılarıydı. Mükemmel bir örnek, oyunun kodunun savaştan önce sizin için tamamen benzersiz bir seviye oluşturduğu orijinal XCom / UFO'dur . Daha önce (1979) Apshai Tapınağı idi .

Elit farklı bir vaka oldu: bazı oyun geliştiriliyor iken içeriğinin oluşturulan; bu kod sadece aynı yazarlar tarafından yazılmakla kalmadı, aynı zamanda önceden oluşturulmuş içeriğin tipik olarak çalışma zamanında elite.exe(yani oyuncu oyunu çalıştırdığınızda) oyunun kodunun bir parçası olan diğer oyuncular tarafından kullanıldı ve dünyayı yarattı oynadı.

Daha yeni bir örnek, büyük ölçüde modern bilgi işlem gücü sayesinde ufka doğru yürürken dünyanın tam anlamıyla etrafınızda ürettiği Minecraft (ve bundan esinlenen diğer oyunlar). Bunu 1980'lerde bir PC-XT'de oynanan Rogue veya Moria ile karşılaştırın, bunun için bir süre için seviyenin oluşmasını beklemek zorunda kalabilirsiniz! (seçtiğiniz oyun ayarlarına bağlı olarak).

Tüm PCG tarihsel olarak oyun endüstrisine dayanmaz. Örneğin, kurgu jeneratörleri yazanlar var. Örneğin, grafik ve hesaplama geometrisi alanında Ken Perlin, daha sonra kendisine akademi ödülü verilen Perlin Gürültü algoritmasını yarattı. Örneğin, müzisyen Brian Eno uzun zamandır prosedürel müzikal müzikal notalar üretiyor. Ve başka bir örnek olarak, HeroQuest / Warhammer Quest gibi dijital olmayan tahta oyunları, uzun zaman önce her oyunda farklı bir oyun tahtası oluşturmak için prosedür dinamikleri icat etti.


6
Çok küçük bir teknik istisna - oyunun kendisinin prosedürel olarak oluşturulduğu bir konsept araştırma projesi / oyunu kanıtı vardı. Yani, hedefler, kurallar ve bir dereceye kadar temsil, çalışma zamanında dinamik olarak oluşturuldu. İçerik ve motor arasındaki çizgiyi bir miktar bulanıklaştırır, ancak "üretiyor mu" turnusol testi hala orada bile kalır. Mükemmel damıtma.
Pikalek

3
@Pikalek Bu düşünce tarzına tamamen katılıyorum. Lisp'in yaptığı gibi alabiliriz - sonuçta talimatlar ve veriler arasında bir ayrım yoktur. Yine de yanıttaki şeyleri aşırı karmaşıklaştırmak istemiyordu. Yorum yaptığınız için teşekkürler.
Mühendis

2
@Adocad: Bence cevapta küçük bir ayrıntıyı kaçırdınız: "Siz (veya motorunuz) içerik üreten başka bir program kodu kullanıyor ve daha sonra bu içeriği oyununuzun bir parçası olarak derleme / oluşturma süresine dahil ediyorsanız , oyun ( ve kodu) PCG DEĞİLDİR " Programı, program tarafından oluşturulan içerik yerine oyununuza eklediyseniz ve oyununuz gerektiğinde (yerel olarak, bir oyuncunun bilgisayarında) programı tetiklerse, gerçekten çevrimdışı PCG olurdu. Ancak, PCG neslinden (şimdi statik olan) bir sonuç eklediğinizde durum böyle değildir.
flater

2
@AC: Ayrımın, yordam olarak oluşturulan içerik veya yordamsal içerik oluşturma olarak etiketlendiğinde daha net olduğunu düşünüyorum .
flater

4
@Flater Teşekkürler, bu daha iyi bir anlatım yolu olarak, yöntemle oluşturulan içerik çevrimdışı ve / veya çalışma zamanında oluşturulabilir, ancak yöntemle içerik oluşturma açık bir şekilde çalışma süresidir. (Not bir araçtır sonra derlenmiş olan içeriği oluşturur edilir , kullandığı içerik olduğunu o maçı öncesi oluşturulan ve derlenmiş bu içerik olmuştur ancak sonra PCG yapıyor DEĞİL PCG yapıyor)
AC
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.