Lassan 7 éve dolgozom a játékon. Ma úgy döntöttem, hogy kiíratom az fps-t, azaz azt, hogy milyen gyorsan megy a játék, mert úgy tűnt, hogy túl lassú. Amikor a játék elején úgy döntöttem, hogy vulkan-ra építem az enginet (bár az elején egy The Forge nevű wrappert használtam, most meg az SDL3_GPU wrappert használom, mert stabil az api-ja és egyre többen használják, ingyen bugfixálás) aminek az volt az egyik fő jó tulajdonsága, hogy azt mondták, nem számít a drawcall-ok száma, szabad akármennyit, az a lényeg, hogy mennyit dolgozik a gpu, de most kezdtem kicsit kételkedni ebben, mert készítettem egy teszt pályát amiben lassúnak éreztem a játékot. Ja igen, az utóbbi hónapban 64x-eztem a játék felbontását, azaz megnégyszereztem a játékos méreteit minden irányban, így négyszer annyi adatot kell generálni minden irányban, hogy ugyanakkorának érződjön a világ. Erre azért volt szükség, hogy tudjak egy voxel széles akadályokat készíteni, mint amilyenek pl. a börtönökben a vasrudak, eddig ugyanis minden egyes voxelnyi foghíjon át tudott menni a játékos, most már 4 voxelnyi foghíj kell, tehát már 3 voxeles foghíj sem elég. Ha még egy fényt is teszek mögé, akkor már tömör gyönyör az egész.
Szóval generáltam egy kicsit becsületesebb pályát, kb. 660000 voxelből és lassan ment a játék. Ráadásul ez egy olyan pálya, amiben nagyon szenved a láthatóság algoritmusom, szinte minden látható mindenhonnan. Végre a kiíratásnak köszönhetően megtudtam, hogy az átlagos frame idő 0.03 ms és 1586 drawcall-t hívok, szóval nagyon nem lassú. Persze tudtam, hogy nagyon csirke a grafika, nem attól féltem, hogy nagyon megizzasztom a gput, de azért hogy az egészet ilyen gyorsan ledarálja, arra nem számítottam. Na, legalább akkor nem kell a sebességen javítanom, egyszerűen csak az van, hogy túl lassan mozog a játékos a világban, ha megnégyszerezem a sebességét, akkor megint minden jó lesz.
Persze, valami gubanc megint van a fények kiszámolásával, szerintem valami buffer túlfut ott, vagy valami ilyesmi dolog lehet, mert elég kicsi pályákkal nem volt gondom az utóbbi időben.
A végén ki fog derülni, hogy az egész láthatósági algoritmusom már teljesen fölösleges (sejtettem ezt már az elején, de nagyon meg akartam oldani, de az ilyen jellegű helyeken nem megy jól (túl sokat számolgat és nem jön rá, hogy minden mindenhonnan látszik), inkább csak a buta kis labirintusokban, ahol nagyon limitált a láthatóság, igaz, a Quake volt az inspiráció). Lehet, hogy ki is fogom dobni a végén, persze lehet, hogy lassabb gépeken azért hasznos lenne még.
Az a vicces, hogy (azt hittem) elég jó az intuícióm, hogy mi megy gyorsan és mi megy lassan, az algoritmusok amiket írok milyen komplexitásúak, de hogy így daráljon az egész, arra nem gondoltam.
Egyébként azért csináltam ezt a pályát, hogy legyen vidió végre megint, ha sikerül megoldanom a lightmap bugot, és nem találok újakat, akkor lesz is.


Nincsenek megjegyzések:
Megjegyzés küldése