Kolokvij vprasanja Flashcards
To kaj je reko na predavanju da rad da not
Razlika med game engine in igralnim pohodom (framework)
Oba imata podobno nabor knjiznic, framework ima pomagalna orodja ki zadostujejo za izdelavo racunalniskih iger, uporabimo takrat kadar zelimo imeti popoln nadzor nad kodo in ali drugace napisati dele fw.
Game engina pa uporablja orodja kot ogordja, ima vsaj 1 vizualni urejevalnik za scene in vsaj 1 level editor.
Kako bi nacrtoval igro sah
Dinamika: igra za 2 igralca, s svojimi figurami premagati nasprotnika, nacrtovanje posameznih figur. igralca se izmenjujeta v potezah.
Cilj je premagati nsprotnika z matiranjem njegovega kralja.
Mehanika: konec igre, zacetek igre, posebne poteze, premik za vsako figuro. izenacenje…
Elementi: cas, st poteze, sahovnica, prikaz odigranih potez
kaj je delta time in zakaj je pomemben
Delta time je cas ki pretece med dvema izrisoma, pomemben je saj so casovno odvisne akcije(spawn, gibanje, trajanje powerupa) neodvisne od zmogljivosti strojne opreme oz hitrosti osvezevanja
Napisi glavno zanko igre
While {
handleInput;
update(deltatime);
render;
}
v update se izvede vsi premiki objektov, nastavijo se timerji itd..
V render pa se izrisujejo texture, particlsi itd…
Kaj se dogaja v svetu simulacij v igri soccer 2023
igra uporablja realisticne fizikalne zakone, AI upravlja nasprotnikovo ekipo, interkacije med igralci zogo in okoljem.
AI upravlja Igralce, kateri imajo razlicne lastnosti kot je vzdrzljivost, hitrost, in natancnost. tudi zoga sledi fizikalnim lastnostim kot je fels, izguba hitrosti odboji in pospeski.
Kako bi implementiral slow motion
delta time / 2
ali
delta time = speedtransformation.SlowMotion(getDeltaTIme()) // ni prav samo primer alternative
Smer hitrosti je podana kot vektor dx,dy, izracunaj kot
dy/dx = |v|sin(α) / |v|cos(α) = tan(α)
α =arcTan(dy/dx) -> [-90, 90]
dx>0 ∧ dy >0 -> α =arcTan(dy/dx)
dx<0 -> α =180+arcTan(dy/dx)
dx>0 ∧ dy <0 -> α =360+arcTan(dy/dx)
Hitrost podana s kotom in hitrostja
dx = 10px/scos(45)1s = 7.07px
dy = 10px/ssin(45)1s = 7.07px
x’ = x+dx=1px+7.07px=8.07px
y’ = y+dy=1px+7.07px=8.07px
Kako bi naj enostavneje implementiral odboj s kotom in hitrostjo
levo in desno = 180 - alfa
gor in dol = 360 - alfa
Odboj s podanim vektorjem
levo desno dx = -dx
gor in dol dy = -dy
Kako pohitriti zaznavo trkov?
S tem da polygon pretvorimo v rectangle.
Kaj je Fragmentaija
tezava ki jo povzroca neucinkovito dodeljevanje in sproscanje pomnilnika (Bloki)
Pooling - resitev fragmentacije
namesto da vedno znova ustvarjamo in brisemo objekte (alokacija in delokacija pomnilmnika), imamo fiksno velik bazen (pool), iz katerega vzamemo po potrebo in vracamo objekte
Resuje tudi problem pocasne alokacije in delokacije pomnilnika pri OO
za katere stvari bi upoarbil pooling in slabost
Primeri uporabe poolinga so:
- neskocno veliko ovir, ki se pojavljajo in zginjajo
-razlicni metki
-zvocni ufekti
-particli
Slabost je da izvajanje ni nujno hitrejse kot v priemeru ustvarjanja in brisanja, Optimiziranje tega je lahko otezeno.
Kako dejansko impl pooling?
seznam pool <template>, osnovne funkc so:
FreeObject, obtainObject, freeCount, clear.</template>
Dobra praska je da je velikost bazena omejena na velikost, ki jo dolocimo v fazi optimizacije igre.
Enako: Koraki pouporabe objektov (5 korakov)
1 Objekt implementira poolable
2reset metoda se klice ob vracanju objekta v pool
3 pool.obrain vrne prost objekt iz pomnilnika
4. pool.free vrne objekt v pomnilnik
5 pool .fill vnaprej rezervira pomnilnik.