Kezdőoldal » Számítástechnika » Programozás » Hogyan lehetne egy minecraft...

Hogyan lehetne egy minecraft szerű játék grafikus motorját megvalósítani?

Figyelt kérdés

Nem rég kezdtem el a 3D-s grafikával foglalkozni. Tudok már néhány dolgot, de ennek a problémának a megoldására nem igazán látok teljes megoldást.


Első elképzelésem az volt, hogy az összes rajzolandó darabkának összes blokkját betölti a játék. Na ezt amilyen gyorsan kitaláltam, olyan gyorsan vetettem is elfele, mert erőforrás pocsékláson kívül semmi se jönne ki belőle.


A második elképzelés az az volt, hogy betölti a program az összes megjelenítendő darabkának összes blokkját, és végig pásztázza láthatósági algoritmussal a darabkákat, és így kiszűri a megjelenítendő blokkokat. Ez ugyan csak rossz, mert nagyon enné a memóriát a sok blokk, és ugye annyi blokkot felesleges átnézni, arról nem is beszélve hogy sok idő lenne.


A harmadik elképzelés az volt, hogy a kamera körzetébe lévő valamennyi darabkát betöltöm. Tehát azt a darabkát amin a kamera van, és mondjuk a mellette lévő még 8 (vagy annál több ha a látó távtól függően) darabkát. Majd ezeket átnézi láthatósági algoritmussal, és kiküldi kirajzolásra a megfelelő blokkokat a videókártyára.


Esetleg valami ötlet a rajzolással kapcsolatba?


A tárolást úgy oldanám meg, hogy úgy menteném el, ahogy a videókat is tömörítik. Tehát leírnám a generálás algoritmusát, és hogy milyen változások történtek az adott darabkán.


Ezzel kapcsolatban is elfogadok bármilyen "atyai" jó tanácsot.


Ez egy hobbi projekt. De szeretném minél "profibban" megcsinálni. 4 éve programozok. OpenGL 2.x a grafikus könyvtár. Az összes többit SDL2-vel oldanám meg. A hangot persze OpemAL-lel.


A hasznos válaszokat előre is köszönöm. Kiegészítés kép mondanám hogy bele lesegettem MCP-vel a minecraft 1.5.2 forráskódjába, de nekem az túl "tömény" hogy onnan szerezzek ichletet.



#OpenGL #SDL2 #Minecraft engine
2019. márc. 20. 21:49
 1/3 anonim ***** válasza:
Vagy memóriát vagy számítási teljesítményt pazarolsz, az alapján dönts hogy miből van felesleg. Ha "minecraftszerű" alatt azt érted, hogy pár ezer blokk tölti ki a horizontot akkor én nem szarakodnék, simán ki tudod rajzolni erőből az egészet modern hardveren, optimalizálással legfeljebb pár ms et nyerhetsz. Frustum culling drasztikusan növeli a teljesítményt, és ha nem elég gyors alapból(vagy nagy látótávolságot akarsz) akkor raycast megoldja a gondjaidat teljesen(hacsak nem akarsz átlátszó blokkokat is, akkor csak a gondjaid jelentős részét oldja meg).
2019. márc. 21. 02:46
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:
Minecraftban "chunk"ok vannak, 16x16-os alapteruletu blokkok, es menüben lehet beallitani a latotavolsagot, hogy hany chunk messzire legyen.
2019. márc. 22. 07:13
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:
2019. márc. 22. 10:03
Hasznos számodra ez a válasz?

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!