Hogyan lehetne egy minecraft szerű játék grafikus motorját megvalósítani?
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!