Programujeme grafický engine XXIV.

opengl_logo.jpg Med­zi naj­dô­le­ži­tej­šie vlas­tnos­ti gra­fic­kých (her­ných) en­gi­nov pat­rí im­ple­men­tá­cia ur­či­té­ho stup­ňa inter­ak­cie med­zi po­uží­va­te­ľom (hrá­čom – ava­ta­rom) a scé­nou, resp. jej ob­jek­tmi. En­gi­ne sta­no­vu­je pra­vid­lá vzá­jom­nej inter­ak­cie med­zi ob­jek­tmi, kto­ré mô­žu, ale aj ne­mu­sia byť zá­vis­lé od čin­nos­ti, kto­rú vy­ko­ná­va ava­tar.

Spô­so­by inter­ak­cie
Mo­der­né her­né en­gi­ny ve­dia rea­go­vať na mno­hé čin­nos­ti vy­ko­ná­va­né ava­ta­rom. Tie­to čin­nos­ti mô­že­me roz­de­liť na tri zá­klad­né sku­pi­ny:
1. spus­te­nie de­ja na zá­kla­de po­žia­dav­ky ava­ta­ra – sem mož­no za­ra­diť napr. ot­vá­ra­nie/za­tvá­re­nie, vy­zdvih­nu­tie/pus­te­nie/se­lek­ciu ob­jek­tov, vstup al­fa­nu­me­ric­kých zna­kov (kó­dov), ale aj streľ­bu, ov­lá­da­nie ob­jek­tov a pod.,
2. reak­cia en­gi­nu vy­vo­la­ná nep­ria­mou ak­ciou ava­ta­ra – naj­čas­tej­šie sa tým ro­zu­mie vy­vo­la­nie ur­či­té­ho de­ja napr. na zá­kla­de zme­ny po­lo­hy či na­to­če­nia ava­ta­ra, mô­že­me spo­me­núť rôz­ne pas­ce (traps), spúš­ťa­če (tri­gers), ale aj zme­nu zvu­ku pri krá­ča­ní ava­ta­ra po rôz­nych dru­hoch po­vr­chu, pri plá­va­ní vo vo­de atď.,
3. zá­sah do vop­red de­fi­no­va­né­ho de­ja pre­bie­ha­jú­ce­ho v scé­ne – scé­na mô­že ob­sa­ho­vať rôz­ne dy­na­mic­ké pr­vky, kto­ré mô­žu/ne­mu­sia byť ov­plyv­ne­né čin­nos­ťou ava­ta­ra, napr. ava­tar mô­že byť schop­ný zo­sil­niť ale­bo zos­la­biť ur­či­tý dej, mô­že dej pre­su­núť na iné mies­to, do iné­ho ča­su.

Mož­nos­ti inter­ak­cie ava­ta­ra so scé­nou a jej ob­jek­tmi sú re­la­tív­ne ne­ko­neč­né. Pri­tom však tre­ba mys­lieť na to, že ava­tar ne­do­ká­že vní­mať scé­nu (jej ob­jek­ty) úpl­ne rov­na­ko, ako fy­zic­ký člo­vek vní­ma svo­je oko­lie. Ava­tar ne­do­ká­že cí­tiť vô­ne, tep­lo, chlad, ne­ro­zoz­ná­va chu­te, ne­cí­ti bo­lesť, nep­re­ja­vu­je emó­cie... Niek­to­ré z uve­de­ných vne­mov mož­no čias­toč­ne pre­niesť na fy­zic­ké­ho člo­ve­ka po­uži­tím špe­ciál­ne­ho har­dvé­ru.

Streľ­ba
Streľ­ba pat­rí do sku­pi­ny zá­klad­ných dru­hov inter­ak­cie ava­ta­ra so scé­nou a jej ob­jek­tmi. Dr­vi­vá väč­ši­na tzv. first-per­son-shoo­ter hier je za­lo­že­ná prá­ve na prin­cí­pe lik­vi­dá­cie proti­vní­ka po­mo­cou rôz­nych dru­hov strel­ných zbra­ní.

engine obr1.bmp
Obr. 1 Ob­jekt zbra­ne zob­ra­zo­va­ný ap­li­ká­ciou En­gi­ne v2.1

Streľ­ba je do her­né­ho en­gi­nu naj­čas­tej­šie im­ple­men­to­va­ná nas­le­du­jú­ci­mi čas­ťa­mi prog­ra­mo­vé­ho kó­du:
1. en­gi­ne zob­ra­zu­je ob­jekt, kto­rý pred­sta­vu­je zbraň (weapon) a sú­čas­ne pre ten­to ob­jekt de­fi­nu­je zod­po­ve­da­jú­ci druh po­hy­bu (ani­ma­tion), kto­rý zbraň vy­ko­ná v oka­mi­hu spus­te­nia streľ­by, ďa­lej zob­ra­zu­je vi­zuál­ny efekt ho­re­nia zvyš­ku strel­né­ho prac­hu, ale napr. aj vy­pad­nu­tie práz­dnej ná­boj­ni­ce,
2. en­gi­ne ur­či­tým spô­so­bom vi­zua­li­zu­je drá­hu le­tu vy­stre­le­ných gu­liek, kto­rá mô­že byť pria­ma, ale aj za­kri­ve­ná (napr. pri vr­ha­ní gra­ná­tov),
3. en­gi­ne zob­ra­zu­je di­ery, kto­ré vy­tvo­ria guľ­ky po do­pa­de na ob­jekt (bullet ho­les), resp. gra­fic­ky vy­zna­čí mies­to do­pa­du gu­liek, gra­ná­tov či pro­jek­ti­lov ďal­ších (aj fu­tu­ris­tic­kých) dru­hov zbra­ní,
4. v prí­pa­de, že guľ­ka za­siah­ne dy­na­mic­ký ob­jekt (proti­vní­ka), en­gi­ne mô­že de­fi­no­vať rôz­ne spô­so­by deš­truk­cie ta­ké­ho­to ob­jek­tu, resp. mô­že ap­li­ko­vať fy­zi­kál­ne pra­vid­lá na zme­nu je­ho po­lo­hy/na­to­če­nia.

Kaž­dá z uve­de­ných čas­tí po­dlie­ha sta­no­ve­ným ma­te­ma­tic­ko-fy­zi­kál­nym pra­vid­lám, kto­ré mu­sí­me ur­či­tým spô­so­bom ap­roximo­vať tak, aby sme da­né pra­vid­lá dodr­ža­li, ale zá­ro­veň nep­rek­ro­či­li li­mi­ty a mož­nos­ti po­uži­té­ho har­dvé­ru.

Na­bu­dú­ce...
V bu­dú­cej čas­ti se­riá­lu sa bu­de­me ve­no­vať kon­krét­nej im­ple­men­tá­cii streľ­by v rám­ci ap­li­ká­cie En­gi­ne v2.1. Po­drob­nej­šie si ro­zo­be­rie­me jed­not­li­vé čas­ti po­uži­té­ho al­go­rit­mu a sú­vi­sia­ce blo­ky prog­ra­mo­vé­ho kó­du.

Ďal­šie čas­ti >>

Zdroj: Infoware 2/2010



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXVII.
V tejto a takisto v nasledujúcej časti seriálu budeme riešiť synchronizáciu streľby s pohybom postavy. Pôvodne sme sa tejto oblasti venovali oddelene od blokov súvisiacich so zobrazením postavy. čítať »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXVI.
V tejto časti seriálu sa budeme venovať tomu, ako možno do grafických (herných) enginov implementovať objekty reprezentujúce rebríky (ladders). čítať »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXV.
V tejto časti seriálu podrobnejšie rozoberieme jednotlivé časti programového kódu súvisiace s implementáciou streľby. čítať »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXIV.
V tejto časti seriálu vám v stručnosti predstavíme tzv. systémy častíc (particle systems). Kvalitne navrhnutými systémami častíc dokážeme veľmi rýchlo a elegantne zvýšiť dynamiku grafických aplikácií. čítať »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXIII.
V predchádzajúcej časti seriálu sme dokončili kapitolu, v ktorej sme sa venovali simulácii fyziky. čítať »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXII.
Touto časťou seriálu ukončíme tému implementácie fyzikálnych zákonov v rámci grafických enginov. Všetky vedomosti, ktorými v tomto okamihu disponujeme čítať »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXI.
Týmto článkom sa pomaly dostávame k záveru celku, v ktorom sme sa zaoberali simuláciou fyziky. Zostáva nám opísať princíp detekcie kolízií a uviesť spôsob reakcie simulačného systému čítať »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXX.
V tomto pokračovaní seriálu si doplníme teoretické vedomosti potrebné na implementáciu fyzikálnych zákonov v grafických a herných enginoch. čítať »
 
 
 
  Zdieľaj cez Facebook Zdieľaj cez Google+ Zdieľaj cez Twitter Zdieľaj cez LinkedIn Správy z RSS Správy na smartfóne Správy cez newsletter