_fpeti_ 2011.11.21. 01:51

Játékötlet (nem nagyon eredeti, de Minecraft ><; )

Mostanában nagyon gondolkodom egy MC klón félén, örömprogramozás céljából. Sokkal több kockával, (min 8x) nagyon szimpla egy szín (+tulajdonság) per kocka adat szerkezettel - lehetne 1 byte per 'voxel'. Alapból 256*256*256 kockákból állna a scene egy darabja, ez 16MB adat lenne egyszerre. (MC-ben 16*16*128-as oszlop.) Ha a cache-miss nem szól nagyon bele. Ebből lenne persze egyszerre több is benn a memóriában. A láthatóság nagyon egyszerű módon működne, ami az eredeti Minecraft-ben is nagyon szimpla - egyszerűen minden kockát kirajzol, aminek van olyan oldala, ami mellett levegő van. Ez zseniálisan egyszerű húzás, és nem is annyira pazarló, mint előre gondolná az ember. Én megfejelném egyfajta raytrace-szel, csak nem minden képpontnak lenne egy sugár, minek egy ilyen szabályos kockákból álló világban, hanem voxelről-voxelre ugrálna a ray, pont mint a 2d-s szakaszrajzoló algókban. Ez nem lenne teljesen pontos, az is fontos, hol helyezkedik el a kamera egy voxelen belül, ami hibákat eredményez(het). Erre még visszatérek, ha egyszer eljutnák oda. Itt akár még előjöhetne egy dinamikus, nap irányából jövő árnyékolás is, nem mindig fölülről jönne a fény, mint MC-ben.
De lehetne valamiféle durva z-buffer jellegű dologgal is próbálkozni, szigorúan fixpontos alapon.
Végső soron maradna a per pixel ray, de azt kétlem, hogy valós időben képes lenne sok mindenre. De majd kipróbálom.

Persze ott vannak a gpu-s módszerek is, pl ez a 256*256*256 beleférne egy 3 dimenziós textúrába is, és lehetne szórakozni Cuda/DirectCompute dolgokkal is, ezzel még pláne nem foglalkoztam, érdemes kipróbálni akinek van dx10 karija minimum.


Fák jól néznének ki átlátszó zöld lombbal - jó lenne valamilyen módon egyesíteni az átlátszó kockáit egy lombnak egy egységes geometriává, és úgy rajzolni, MC-ben elég darabosan néznek ki pl a jégkockák egymás mögött. Összefüggő erdőlombozatnál ez elég durva számolás lenne mondjuk.

Arra is gondoltam, hogy miért is rajzoljak sima kockákat, ha közel vannak a kamerához, lehetne használni egy kis extra geometriát, hogy ne legyenek annyira élesek a szélek. Nagyon egyszerűen meg lehetne nézni, hogy egy kockának melyik oldalain van szomszédja és aszerint rajzolni egy nagyobb felbontású kis 'mesh-escskét', hogy jobban passzoljon mondjuk egy leejtő oldalába. Tulajdonképpen a látható éleket kellene kicsit lekerekíteni, pl ha egy szomszédja sincs, akkor egy ortopéd gömböt rajzolnék ki. Elég sok kombó van, hisz 26 kocka szomszédja lehet, forgatásokkal lehetne csökkenteni a mesh-ek számát, ami szvsz nem annyira menő (még forgatni is kelljen?). Vagy a fontos szomszédok számát is lehetne csökkenteni, mondjuk csak az oldalaihoz érőket figyelembe venni - így csak 6 elemből kell kikombinálni. Nyilván ezt ki lehet számolni előre, és csak akkor kell módosítani, ha változik körülötte valami.
Ez az egyik iszonyatos előnye a kockavilágnak, hogy ahhoz képest, hogy teljesen dinamikusan lehet változtatni mindenen, nagyon sok mindent előre is ki lehet számolni, majd ha változik valami - ami általában kockák elhelyezése vagy eltűnése a világban - akkor kell újraszámolni a változástól függő dolgokat. Ilyen szintű rugalmasságot nem lehet elérni semmilyen más módszerrel.

Apropó kockák lerakása, a játékmenetet  - már ha lesz valaha, amit kétlek így az első kódsor megléte előtt - én nem annyira a kreatív vonalon mozognék, egyébként is kis kockákkal bíbelődni milyen már, inkább felfedezős-akciós-lyukrobbantós mezsgyén képzelem a dolgot (mint mindig). XD

Ez persze nem jelenti azt, hogy nem lehet találni semmit, pl. szép átlátszó drágaköveket (azérse gyémántot :) )  amiért itt-ott lehetne táposabb cuccokat venni, vagy csak megdobálni vele az ellent.. semmi 'crafting', meg bonyolítás, az ilyesmi gyönyörűen meg van írva az MC-ben, minek másolni. Tul. a kockákból felépített álló világon kívül nem sok mindenben kéne, hogy hasonlítson MC-re, de mindenkinek ugyanaz a játék fog eszébe jutni róla.

btw ellenfelek: mi lenne, ha azok is kis kockákból állnának és 'behatás' esetén törölgetnénk őket, ezzel elég látványos - és mély - nyomokat lehetne hagyni mindenkiben.

Címkék:Minecraft 2 komment

A bejegyzés trackback címe:

https://sortagamedev.blog.hu/api/trackback/id/tr243399326

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

_fpeti_ 2011.12.04. 00:25:51

Hülyeség ez, kurva lassú cpu-n, lehetetlen interaktív fps-t elérni .. ezen is túl vagyunk.

Gerilgfx 2012.02.10. 01:04:57

nem az, a Skyrimben is szoftveresen számolják az árnyékokat. évekkel ezelőtt az én enginem is teljesen szoftveres árnyékkezelést használt, nem volt gond a teljesítménnyel, de le kellett cserélni, mert a mai szemmel már iszonyatosan ronda volt.