Algoritmusok generáló labirintusok

Algoritmusok generáló labirintusok

Útvesztők - nem csak önálló osztálya játékok, hanem az alapja létrehozására helyeken más műfajok játékok: például barlangrendszer, amely viszont fel lehet használni egy nagyon széles osztályát játékok-brodilok stb Azonban, ha a játékos lesz, hogy folyamatosan „vizsgálja” ugyanazon a helyen, akkor hamarosan unatkozni vele, hanem azért, mert mielőtt a játékfejlesztők van egy kérdés eljárási labirintus generáció, azaz a Minden következő múló játék zajlott területén a regenerálódás.

Algoritmusok generáló labirintusok

Labyrinths, építünk egy téglalap alakú területen (sejt + egyik a cikkek a generációs háromdimenziós térben), így mindegyiket lehet két csoportra oszthatók: mazes a „vékony” falak és „vastag”. Első - azok, akiknek a falak találhatók a cella határokat, az utóbbi - azok, amelyek bizonyos sejtek maguk járhatatlan, azaz falak. Ezek megkülönböztetni, például egy módszer az adatok tárolására a térképen.

Vannak is kész megoldásokat a generációs mazes: kötelezik generátor. amelyet használnak a DOOM, DOOM II és Heretic, et al.

Eller algoritmus

A téma a generációs labirintus, ahol a falak találhatók határain sejtek ügyéről van egy jó fordítása a cikk «Eller algoritmus» (azaz Eller, nem Euler - «Eller a», hanem «Euler»), hogyan kell létrehozni a tökéletes (tökéletes) labirintus - úgy, hogy van egy út, és csak egy bármely két sejtjében.

Az általános elképzelés az algoritmus generál non-interlaced, ahol minden két egymás sorban sejtek bizonyos körülmények között (hogy elkerüljék a hurkok és megközelíthetetlen sejtek) jelentkezik véletlenszerűen falig. A végén minden sejt lesz „egy sor”, ami azt jelenti, hogy létezik bármely két sejtekben az útból.

Store labirintusban kártya lehet, például kétdimenziós tömbök: függőleges és vízszintes fal, ill.

Hogyan kell tárolni a mazes a „vastag” fal?

A válasz arra a kérdésre, tároló kártya, mint labirintus nyilvánvaló: egy kétdimenziós tömb logikai, ahol például, 1 - járhatatlan cella (fal), 0 - mentes.

A naiv algoritmus

Algoritmusok generáló labirintusok
Kezdjük a legkézenfekvőbb algoritmussal - Ha a helyiség helymeghatározás véletlenszerűen. Mindössze annyit kell tennie -, hogy állítsa be a határ szobák mérete, száma és határainak a területen, majd véletlenszerűen határozza meg a helyét a térképen, és méretben. Ezután egyszerűen csatlakoztassa a folyosókon.

Természetesen vannak a két kérdés: vajon a szoba nem lesz átfedés, és hogyan kell építeni az átmenet a kettő között? A válasz az első kérdésre függ a követelményeket az a labirintus, ha nem szeretné, hogy a szoba túlsó levelet funkció, amely ellenőrzi a pár szoba, a kereszteződésekben, és a megjelenése a szomszéd szobában, a csekk-kártya.

Labirintus táblázatban

A fenti algoritmusnak van egy nyilvánvaló hátránya: ellenőrizzük, hogy a szobák keresztbe, hogy van egy külön funkció. Felmerül a kérdés, hogy ez az, hogy nem túl sok akció lehetséges. Úgy tűnik, és CAN algoritmust ismertetjük.

Az ötlet az, hogy a mező kezdetben felosztva téglalap alakú „nagy” sejtek (azaz, nem elemi celláinak a játékteret, és téglalapok, amely egy néhány sejt), miáltal táblázat. Továbbá, minden ilyen sejt véletlenszerűen tűnik véletlenszerű méretű szobában, nem a kiváló cellaméret - ily módon lehetőség metsző helyet eltűnik. Ezután szobák folyosókon egyesítjük, így például, az ismertetett módon az előző bekezdésben.

Részletek ezen algoritmussal leírt a cikkben «Rács alapú dungeon generátor».

BSP fák

BSP - a rövidítése a Binary Tér particionálás - méretosztás helyet. Ez az algoritmus elkerüli átlépte a szobában még folyamatban, amely őket a térképen, mint is előre osztja egy részét a játéktér - „levelek”, amely azután előállítja a szobában. Ez az osztály a területen ideológiailag sokkal nehezebb, mert Az összes részvény. mint az előző algoritmust, hanem lehetővé teszi, hogy hozzon létre egy sokkal érdekesebb konfigurációs tér helyét.

Generation labirintusok alkalmazásával sejtautomata

Minden programozó legalább egyszer azt írta, „Life” - celluláris automaták által feltalált matematikus Conway. Miért nem használja egy hasonló ötlet, hogy létrehoz egy labirintus? A lényege a javasolt algoritmus végrehajtása csak két lépésben történik: először a teljes területen töltött véletlen falak - azaz Minden sejt véletlenszerűen eldönteni, hogy szabad vagy járhatatlan -, majd többször frissíti a kártya állapotának megfelelően feltételek hasonlóak a feltételek a születés / halál „élet”.

A forrás - oldalas cikket «véletlenszerű Cave szintek segítségével Cellular Automata» - lehet kísérletezni egy interaktív bemutató, eltérő értékeket állít generálni: az iterációk számát a felújítás, a határértékeket élet / sejthalál, stb - és lásd az eredményt. Uo leírja a buktatókat a végrehajtás.

Generációs háromdimenziós térben

Algoritmusok generáló labirintusok
Szintén nem hagyhatjuk figyelmen kívül a történet a generációs 3D-labirintus: «sütjük saját 3D Dungeons eljárási Receptek» - a fő nehézség abban rejlik, hogy a helyes irányban az elemi részek a labirintus: a folyosók, szobák és lépcsők.

Mi a következő lépés?

A téma ezt a cikket, van egy hatalmas különféle anyagokból, amely megtalálható az interneten, ezért ha azt szeretnénk, hogy ásni a kérdést generációs labirintusok, akkor nézd meg itt először. és csak akkor, persze, hogy itt van.

Köszönjük a figyelmet!

Kapcsolódó cikkek