Proceduralno generiranje

Izvor: Hrvatska internetska enciklopedija
Prijeđi na navigaciju Prijeđi na pretraživanje
Datoteka:Dragon trees.jpg
Jedan primjer proceduralnog generiranja, ovdje korištenjem L-sustava za generiranje realističnih modela stabala.

U računalstvu, proceduralno generiranje je metoda stvaranja podataka algoritmički, za razliku od ručnog pristupa, obično kroz kombinaciju sadržaja koji stvaraju ljudi i algoritama s računalno generiranom slučajnošću i procesorskom snagom. U računalnoj grafici, često se koristi za stvaranje tekstura i 3D modela. U videoigrama, koristi se za automatsko stvaranje velikih količina sadržaja. Ovisno o primjeni, prednosti proceduralnog generiranja mogu uključivati manje veličine datoteka, veće količine sadržaja i slučajnost za manje predvidljivo igranje.

Pregled

Datoteka:Terragen.jpg
Proceduralno generiran krajolik u programu Terragen

Pojam proceduralno odnosi se na proces koji izračunava određenu funkciju. Fraktali su geometrijski uzorci koji se često mogu proceduralno generirati. Uobičajeni proceduralni sadržaj uključuje teksture i mreže poligona. Zvuk se također često proceduralno generira i ima primjenu u sintezi govora kao i u glazbi. Koristio se za stvaranje kompozicija u raznim žanrovima elektroničke glazbe od strane umjetnika poput Briana Ena, koji je popularizirao pojam „generativna glazba”.[1]

Datoteka:Tiling procedural textures.jpg
Proceduralno generirane teksture

Proceduralno generiranje izvorno je nastalo kao alat za video igre, pomažući u stvaranju razina, tekstura i cijelih svjetova uz minimalnu ljudsku intervenciju.

Posebno u primjeni proceduralnog generiranja u video igrama, koje su namijenjene za višekratno igranje, postoji zabrinutost da proceduralni sustavi mogu generirati beskonačan broj svjetova za istraživanje, ali bez dovoljno ljudskog usmjeravanja i pravila. Rezultat je prozvan "proceduralna zobena kaša", izraz koji je skovala spisateljica Kate Compton – naime, dok je matematički moguće proceduralno generirati tisuće zdjela zobene kaše, korisnik će ih sve doživjeti kao iste, a nedostaje im osjećaj jedinstvenosti kojemu bi proceduralni sustav trebao težiti.[2]

U videoigrama

Rana povijest

Datoteka:Nethackscreen.gif
Proceduralno generirana mapa tamnice u video igri NetHack

Prije grafički orijentiranih video igara, roguelike igre, žanr izravno nadahnut Dungeons & Dragonsom prilagođenim za solo igranje, u velikoj su mjeri koristile proceduralno generiranje za nasumično stvaranje tamnica, na isti način na koji su to činili stolni sustavi. Takve rane igre uključuju Beneath Apple Manor (1978.) i eponim žanra, Rogue (1980.). Sustav proceduralnog generiranja u roguelikeovima stvarao je tamnice u ASCII ili sustavima temeljenim na pločicama te definirao sobe, hodnike, čudovišta i blago kojima bi izazivao igrača. Roguelikeovi i igre temeljene na roguelike konceptima omogućuju razvoj složene igrivosti bez pretjernog trošenja vremena na stvaranje svjetova igre.[3]

Neke igre koristile su generatore prividno nasumičnih brojeva (PRNG). Ti PRNG-ovi često su se koristili s unaprijed određenim vrijednostima sjemena kako bi se generirali vrlo veliki svjetovi igre koji su izgledali kao da su unaprijed napravljeni. Sjeme mape je (relativno) kratki broj ili tekstualni niz koji se koristi za proceduralno stvaranje svijeta igre („mape”). To znači da, iako mapa generirana jedinstvenim sjemenom može biti veličine više megabajta (često se generira postupno i potencijalno je neograničene veličine), moguće je resetirati na neizmijenjenu mapu ili je razmijeniti između igrača samo navođenjem sjemena mape.

The Sentinel je navodno imao 10 000 različitih razina pohranjenih u svega 48 i 64 kilobajta. Krajnji slučaj bio je Elite, koji je izvorno planiran da sadrži ukupno 2⁴⁸ (otprilike 282 bilijuna) galaksija s po 256 Sunčevih sustava u svakoj. Međutim, izdavač se bojao da bi tako golem svemir mogao izazvati nevjericu kod igrača, pa je za konačnu verziju odabrano osam tih galaksija.[4]

Moderna povijest

Datoteka:Blender3D VoronoiCrackle.jpg
Proceduralna tekstura koristi Voronojevu teselaciju

Iako moderne računalne igre nemaju ista memorijska i hardverska ograničenja kao ranije igre, proceduralno generiranje se često koristi za stvaranje nasumičnih igara, mapa, razina, likova ili drugih elemenata koji su jedinstveni u svakom pokretanju.[5][6]

Mnoge moderne roguelike igre odmaknule su se od prvobitnih poteznih roguelikeova te su uključile elemente igranja iz drugih žanrova video igara, poput platformera ili pucačina, ali i dalje zadržavaju elemente proceduralnog generiranja u načinu na koji se generiraju mape i razine, osiguravajući da igrač ima mogućnost završiti svaku razinu. To se proteže i na pojačanja i ostale predmete koji se nalaze na mapi igre, koje igra odabire putem pravila proceduralnog generiranja kako bi osigurala da se igra čini pravednom igraču i da ima osjećaj djelotvornosti u pobjeđivanju.[7]

Povezani članci

Izvori

  1. A talk delivered in San Francisco, June 8, 1996. inmotion magazine 0. June 8, 1996 0. Pristupljeno 2008-11-07.
  2. Alien Languages: How We Talk About Procedural Generation. Game Developer 0. August 10, 2016 0. Pristupljeno May 9, 2024.
  3. Rise Of The Roguelikes: A Genre Evolves. GameSpy 0. 29. siječnja 2013. Pristupljeno 2013-04-24.
  4. • Nepoznat parametar: author-link
    • Parametar url nije dopušten u klasi news
    • Parametar type nije dopušten u klasi news
    • Parametar title nije dopušten u klasi news
    • Parametar publisher nije dopušten u klasi news
    • Parametar date nije dopušten u klasi news
    • Parametar author nije dopušten u klasi news
    • Parametar language nije dopušten u klasi news
  5. 7 uses of procedural generation that all developers should study. Game Developer 0. January 1, 2016 0. Pristupljeno January 1, 2016.
  6. • Nepoznat parametar: magazine
    • Parametar type nije dopušten u klasi news
    • Parametar access-date nije dopušten u klasi news
    • Parametar date nije dopušten u klasi news
    • Parametar author nije dopušten u klasi news
    • Parametar title nije dopušten u klasi news
    • Parametar first nije dopušten u klasi news
    • Parametar last nije dopušten u klasi news
    • Parametar url nije dopušten u klasi news
    • Parametar language nije dopušten u klasi news
  7. • Parametar accessdate nije dopušten u klasi web