Kezdőoldal » Számítástechnika » Programozás » Véletlenszerű világ generálás?

Véletlenszerű világ generálás?

Figyelt kérdés
Hogyan lehet megcsinálni, hogy egy világot véletlenszerűen generáljon le? Mint pl. a minecraft-ba.
2012. máj. 20. 08:39
 1/3 zsomkovacs ***** válasza:
100%

A világot valami alapján mezőkre osztod. A mezők ugyanazon osztályból származtatott objektumok, amelynek a tulajdonságait véletlenszerű, vagy véletlennek tűnő, ám determinisztikusan meghatározható értékekkel töltöd fel (ez utóbbi a jobb).


Pl. a Minecraft esetén:


A játék elején generál egy véletlen számot (azt hiszem, 64 bites int típus) - ez a "seed". A játék mezőkből áll: ezek a kockák. A mezők ezen kívül úgynevezett "chunk"-okba csoportosulnak, ez jelenleg egy 16x16x256-os területet jelent. Amikor egy chunk a látóteredbe kerülne, a játék legenerálja. Először is, meghatározza, hogy milyen típusú terep legyen ott, ezt "biome"-nak nevezik. Ezt egy seedtől függő függvény adja meg, ami ezekből a biome-okból nagyobb, egybefüggő területeket képez, így a táj nem változik kockánként, nagyobb területeken hasonló, de nagy távok bejárása esetén mégis változatos. Ezután legenerálja az alapvető terepmintát, ami, ha jól tudom, különböző hullámfüggvények összege, a seed és a biome alapján paraméterezve. Ezek a hullámfüggvények azért jól, mert paraméterezéstől függően tudnak hegyeket/szakadékokat, vagy lankás tájat is képezni, akár nagyobb síkságokkal. Ráadásul ha sok ilyen hullámfüggvényt összeadsz, akkor változatosabb lesz a táj, nagyobb síkságok és meglepően realisztikus hegyek keletkezhetnek. Ezután jönnek az egyéb objektumok, bányák, barlangok, fák, fű, stb., ezeket is a seedből generálja, nem tudom, pontosan hogyan.

2012. máj. 20. 09:04
Hasznos számodra ez a válasz?
 2/3 zsomkovacs ***** válasza:
100%

Ha pl. kísérleteznél ilyen hullámfüggvény alapú "tájgenerálással", arra az egyik legjobb eszköz az Excel. Egy hullámfüggvény valahogy így néz ki: f(x)=a*sin(b*x+c). Például ha egy két hullámfüggvényből előálló, egyszerű tájat próbálsz létrehozni (külön hullám lesz az x és az y tengelyen, különben csúnya törések lesznek!):


1) Írj számokat (nem kell egészeket) az A1, B1, C1, A2, B2, C2 cellákba. Lehetőleg ne túl nagyokat, mert az kaotikus lesz. De ezzel majd kísérletezhetsz. Ezek lesznek az a,b,c paraméterei a hullámoknak.


2) A B4 cellába írd, hogy 1, a C4-be, hogy 2, és csinálj így egy vízszintes sort számokból, amíg jónak látod. Az A5-be is írj 1-et, A6-ba, hogy 2, itt függőlegesen írd tovább a számokat. Ez lesz a koordináta-rendszer.


3) B5-be írd be:


=$A$1*sin($B$1*B$4+C1)+$A$2*sin($B$2*$A5+$C$2)


(a $ jelekre vigyázz!) Most húzd ki ezt a képletet, hogy az egész koordináta-rendszert kitöltse. Ez a terep. Csak egyenlőre nem látszik jól.


4) Készíts felületdiagramot a kapott számokból. Változtasd meg a paramétereket, és figyeld, mi történik.


Persze ez így nem az igazi, két függvény kevés egy realisztikus tájnak, legalább 6-8 nem ártana.

2012. máj. 20. 09:19
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:
Köszi, majd kipróbálom, csak nincs meg az Excel a gépemen. Le kell töltenem.
2012. máj. 20. 09:34

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!