Programujeme grafický engine IV.

opengl_logo.jpg Tá­to časť se­riá­lu o prog­ra­mo­va­ní gra­fic­kých en­gi­nov bu­de pria­mym po­kra­čo­va­ním pred­chád­za­jú­cej, v kto­rej sme sa za­ča­li ve­no­vať opi­su naj­čas­tej­ších po­jmov po­uží­va­ných pri prog­ra­mo­va­ní her­ných en­gi­nov. Zoz­nam po­jmov dopl­ní­me o ďal­šie vý­ra­zy, s kto­rý­mi sa ur­či­te stret­ne­me po­čas návr­hu a príp­ra­vy her­ných en­gi­nov.

Po­jmy po­uží­va­né v mo­der­ných her­ných en­gi­noch – po­kra­čo­va­nie
Nas­le­du­jú­ci text je po­kra­čo­va­ním opi­su niek­to­rých vý­znam­ných po­jmov sú­vi­sia­cich s her­ný­mi en­gin­mi. Ich zna­losť je ne­vyh­nut­ná na zís­ka­nie zá­klad­ných ve­do­mos­tí o stav­be en­gi­nov a bu­de prí­no­som pre bu­dú­ce čas­ti se­riá­lu, v kto­rých za­čne­me prip­ra­vo­vať pl­no­hod­not­ný her­ný en­gi­ne.

:: Sta­tic­ké mo­de­ly (angl. Sta­tic Mes­hes)
Všet­ky ob­jek­ty scé­ny ok­rem te­ré­nu a bu­dov mož­no naz­vať sta­tic­ký­mi mo­del­mi, sa­moz­rej­me, po­kiaľ nej­de o špe­ciál­ne ob­jek­ty, opi­so­va­né ďa­lej. Sta­tic­kým mo­de­lom je kaž­dý ob­jekt nac­hád­za­jú­ci sa v scé­ne, kto­rý tú­to scé­nu dot­vá­ra buď kva­li­ta­tív­ne, ale­bo z prak­tic­ké­ho hľa­dis­ka. Med­zi ob­jek­ty zvy­šu­jú­ce kva­li­tu scén pa­tria rôz­ne te­rén­ne út­va­ry – ka­me­ne, ces­ty, chod­ní­ky, trá­va, krí­ky, stro­my (angl. Trees), rie­ky, ja­ze­rá, vo­do­pá­dy, mo­ria... Ďalej sú to všeo­bec­né ob­jek­ty, ako napr. ve­de­nia (angl. Te­lep­ho­ne Po­les), lam­py (angl. Street Lamps), vo­zid­lá (angl. Ve­hic­les), aké­koľ­vek pries­to­ro­vé či ploš­né ob­jek­ty dot­vá­ra­jú­ce bu­do­vy (angl. Buil­ding De­co­ra­tion), ako aj plo­ty, brá­ny, vý­ťa­hy, pre­káž­ky, iné dop­rav­né či prep­rav­né pros­tried­ky...

Tie­to ob­jek­ty sú umies­tne­né do scé­ny a pre po­zo­ro­va­te­ľa ma­jú vy­tvo­riť do­jem reál­nos­ti pros­tre­dia, v kto­rom sa nac­hád­za. Sta­tic­ké ob­jek­ty zväč­ša ne­ma­jú vplyv na inter­ak­ciu po­zo­ro­va­te­ľa so scé­nou. Je­di­ný prob­lém pre prog­ra­má­to­ra je za­bez­pe­čiť, aby po­zo­ro­va­teľ ne­mo­hol sta­tic­ký­mi ob­jek­tmi prec­hád­zať, a po­kiaľ mu umož­ní vy­ko­ná­vať ur­či­tú čin­nosť s tý­mi to ob­jek­tmi, mu­sí za­bez­pe­čiť adek­vát­nu reak­ciu ob­jek­tov na ak­ciu po­zo­ro­va­te­ľa.

:: Ob­lo­ha, hm­la (angl. Sky­box, Sky­do­me, Fog)
In­teg­rá­cia ob­lo­hy a hm­ly vý­raz­ne zvy­šu­je reál­nosť scé­ny ge­ne­ro­va­nej po­čí­ta­čom. Správ­nym vý­be­rom ob­lo­hy a jej „ob­jek­tov“ mož­no si­mu­lo­vať rôz­ne at­mos­fé­ric­ké efek­ty, ako napr. daž­ďo­vé kvap­ky, bles­ky, sne­ho­vé vloč­ky, lís­tie po­hy­bu­jú­ce sa vet­rom... De­fi­no­va­nie po­lo­hy sl­nka a je­ho vplyv na gra­fic­ké stvár­ne­nie scé­ny je úpl­ná sa­moz­rej­mosť. Po­lo­hou sl­nka mož­no si­mu­lo­vať rôz­ne čas­ti dňa, ale aj roč­né ob­do­bia. Správ­nym vý­be­rom textúr mož­no vý­raz­ne po­dpo­riť vý­sled­ný efekt si­mu­lá­cie roč­ných ob­do­bí, sl­neč­nej či ob­lač­nej ob­lo­hy, rých­los­ti vet­ra, tva­ru ob­la­kov...

Hm­la je ďal­šia z dô­le­ži­tých fo­riem zís­ka­nia rých­lych, ale vi­zuál­ne kva­lit­ných scén. Po­uži­tím tzv. vrstve­nej hm­ly (angl. Layer Fog) do­ká­že­me vy­tvo­riť veľ­mi kva­lit­né efek­ty, po­uži­tím tzv. hm­ly vo vzdia­le­nos­ti (angl. Dis­tan­ce Fog) za­se do­ká­že­me zís­kať po­treb­né FPS aj v prí­pa­doch, keď po­tre­bu­je­me dodr­žať vy­so­kú kva­li­tu zob­ra­ze­nia. Hm­la je uži­toč­ný nás­troj, kto­rý nie je ur­če­ný vý­hrad­ne na zdo­ko­na­le­nie scén, no veľ­mi čas­to sa po­uží­va pri tvor­be vi­zuál­nych tri­kov umož­ňu­jú­cich vy­nec­há­vať tie pr­vky scén, kto­ré po­zo­ro­va­teľ ne­má v da­nom mo­men­te vi­dieť.

:: Os­vet­le­nie, sve­tel­né pro­jek­cie (angl. Lig­hting, Pro­jec­tors)
Po­uži­tie os­vet­le­nia a „pro­jek­to­rov“ je sub­jek­tív­ny pro­ces, kto­rým di­zaj­nér do­ká­že vý­raz­ne skva­lit­niť gra­fic­ký vý­stup ap­li­ká­cie. Os­vet­le­nie a pro­jek­to­ry po­uží­va­né v mo­der­ných po­čí­ta­čo­vých hrách sú v dr­vi­vej väč­ši­ne prí­pa­dov si­mu­lo­va­né po­mo­cou tzv. sve­tel­ných máp (angl. Lig­htmaps). Tá­to tec­hni­ka ve­die k ta­ké­mu vý­raz­né­mu skva­lit­ne­niu scén, že po­uží­va­teľ vždy jed­noz­nač­ne vo­lí va­riant s im­ple­men­to­va­ný­mi sve­tel­ný­mi ma­pa­mi ako bez nich. Sve­tel­né ma­py od­bú­ra­va­jú zlo­ži­té ma­te­ma­tic­ko-fy­zi­kál­ne vý­poč­ty, kto­ré by sme bo­li nú­te­ní po­užiť v prí­pa­de vý­poč­tu os­vet­le­nia v reál­nom ča­se, a tie nah­rád­za­jú mo­der­nou a vi­zuál­ne po­sta­ču­jú­cou me­tó­dou. Vý­poč­ty os­vet­le­nia reali­zo­va­né pria­mo pri ren­de­ro­va­ní scén sú veľ­mi zried­ka­vé a po­uží­va­jú sa sku­toč­ne iba v ne­vyh­nut­ných prí­pa­doch.

Sve­tel­né ma­py sa po­uží­va­jú nie­len v prí­pa­de sta­tic­kých sve­tiel, ale sú rov­na­ko dob­re po­uži­teľ­né aj na si­mu­lá­ciu po­hyb­li­vých sve­tiel vrá­ta­ne sve­tel­ných efek­tov, ako sú napr. vý­stre­ly, sve­tel­né sto­py po ra­ke­tách či iných le­tia­cich ob­jek­toch, vý­bu­choch, po­hyb­li­vé svie­tid­lá...

:: Op­ti­ma­li­zá­cia scé­ny (angl. Op­ti­mi­za­tion, Po­rtals)
Op­ti­ma­li­zá­ciou scén sa ro­zu­mie po­uži­tie is­tej or­ga­ni­zač­nej tec­hni­ky, kto­rá pris­pe­je k zní­že­niu po­čtu spra­cú­va­ných ob­jek­tov (tro­ju­hol­ní­kov) v da­nom oka­mi­hu. Pr­vým kro­kom k vy­nec­ha­niu ne­vi­di­teľ­ných ob­jek­tov je zís­ka­nie po­lo­hy a sme­ru po­hľa­du po­zo­ro­va­te­ľa. Na zá­kla­de týc­hto úda­jov sa nás­led­ne prec­hád­za­jú op­ti­ma­li­zač­né stro­my (kvad­ran­to­vé, ok­tá­no­vé, bi­nár­ne...), pri­čom sa zís­ka­va tá mno­ži­na ob­jek­tov (tro­ju­hol­ní­kov), kto­rá je v da­nom oka­mi­hu po­zo­ro­va­te­ľom „vi­di­teľ­ná“, resp. mô­že is­tým spô­so­bom za­siah­nuť do ren­de­ro­va­cie­ho pro­ce­su da­nej sním­ky.

Po­uži­tie vy­so­ko so­fis­ti­ko­va­ných or­ga­ni­zač­ných štruk­túr sa nás­led­ne dopĺňa o ďal­šie tec­hni­ky od­bú­ra­va­nia ne­pot­reb­ných ob­jek­tov, ako sú:
 vy­nec­ha­nie od­vrá­te­ných plôch (angl. Bac­kfa­ce Culling),
 ore­za­nie do po­hľa­du (angl. Frus­tum Culling),
 po­rtá­ly, anti­por­tá­ly, roz­hra­nia (angl. Po­rtals, Anti­por­tals),
 roz­hra­nia med­zi čas­ťa­mi le­ve­lu (angl. Zo­ne Po­rtals).

:: Vý­zna­mo­vé bo­dy, po­hľa­dy (angl. Start Po­ints, Viewpoints)
Kaž­dý po­zo­ro­va­teľ, resp. sku­pi­na po­zo­ro­va­te­ľov má na za­čiat­ku, v prie­be­hu a aj na kon­ci svoj­ho účin­ko­va­nia v her­nom le­ve­li de­fi­no­va­nú svo­ju po­zí­ciu. Za­čia­toč­ná po­zí­cia je da­ná zväč­ša di­zaj­né­rom Le­ve­lu, resp. je sta­no­ve­ná na zá­kla­de ur­či­tých pra­vi­diel. Ko­neč­ná po­zí­cia je da­ná po­zí­ciou, na kto­rej sa nac­hád­zal po­zo­ro­va­teľ na kon­ci svoj­ho her­né­ho „ži­vo­ta“. Tá­to kon­co­vá po­zí­cia je rov­na­ko dô­le­ži­tá ako po­čia­toč­ná po­zí­cia. Te­lo po­zo­ro­va­te­ľa to­tiž mô­že byť v le­ve­li zob­ra­zo­va­né aj po ukon­če­ní je­ho ži­vo­ta, resp. na da­nej po­zí­cii sa mô­že zob­ra­ziť ur­či­tý ob­jekt, kto­rý nás­led­ne mô­že ov­plyv­niť sprá­va­nie os­tat­ných po­zo­ro­va­te­ľov či ce­lé­ho her­né­ho en­gi­nu.

Po­zo­ro­va­cie bo­dy (angl. Viewpoints) sú mies­ta, kto­ré umož­ňu­jú po­zo­ro­va­te­ľom vy­ko­ná­vať náh­ľa­dy na rôz­ne čas­ti le­ve­lu, a to zväč­ša v sú­la­de so zá­mys­lom di­zaj­né­ra. Sú jed­ným z mno­hých skva­lit­ňu­jú­cich pr­vkov mo­der­ných en­gi­nov.

:: Zvu­ky, mul­ti­mé­diá (angl. Sound, Mul­ti­me­dia)
Pri opi­se sú­čas­tí her­né­ho en­gi­nu nes­mie­me za­bud­núť na zvu­ko­vú či mul­ti­me­diál­nu strán­ku vy­tvo­re­nia kva­lit­né­ho her­né­ho doj­mu. Po­zo­ro­va­teľ po­tre­bu­je scé­nu vní­mať nie­len na zá­kla­de ob­ra­zo­vej in­for­má­cie, kto­rú mu is­tot­ne po­skyt­ne­me, ale svo­ju prí­tom­nosť pri po­čí­ta­či vní­ma všet­ký­mi ľud­ský­mi zmys­la­mi. Zrak je sí­ce je­den z naj­roz­vi­nu­tej­ších zmys­lov a člo­vek ním pri­jí­ma naj­väč­šie per­cen­to po­dá­va­ných in­for­má­cií, no ľud­ské te­lo a je­ho zmys­ly si dos­lo­va vy­ža­du­jú ob­ra­zo­vú in­for­má­ciu dopĺňať ďal­ší­mi.

Tie­to in­for­má­cie by sme moh­li súhr­ne naz­vať in­for­má­cia­mi mul­ti­me­diál­ne­ho dru­hu. Med­zi ne pa­tria naj­mä:
 zvuk (angl. Sound),
 vlast­ný hlas (angl. Speak),
 do­tyk (angl. Touch),
 po­cit tep­la, chla­du (angl. Warm, Cool),
 vlast­ný po­hyb (angl. Bo­dy Mo­ve)...

Mo­der­né po­čí­ta­čo­vé hry ma­jú zväč­ša im­ple­men­to­va­né vstup­né sen­zo­ry (angl. In­put Sen­sors), po­mo­cou kto­rých zís­ka­va­jú in­for­má­cie o pr­vých dvoch me­no­va­ných dru­hoch mul­ti­me­diál­nych in­for­má­cií. Zvuk a mož­nosť hla­so­vé­ho pre­po­je­nia hrá­ča s hrou (os­tat­ný­mi hráč­mi) sú nez­ried­ka­vým dopl­nkom sú­čas­ných hier. Väč­ší prob­lém je im­ple­men­tá­cia reak­cie na ďal­šie zmys­lo­vé or­gá­ny člo­ve­ka. V ta­kom­to prí­pa­dea na vy­ví­ja­né pro­jek­ty vy­nak­la­da­jú ove­ľa väč­šie nák­la­dy. Ide napr. o rôz­ne si­mu­lá­to­ry, pri kto­rých sa ob­ra­zo­vá a zvu­ko­vá in­for­má­cia dopĺňa mož­nos­ťou ov­lá­da­nia ap­li­ká­cie te­lom (ru­ka­mi, no­ha­mi) a jej vý­stu­py ma­jú nie­len ob­ra­zo­vý a zvu­ko­vý cha­rak­ter, ale sú dopl­ne­né napr. o po­hyb si­mu­lá­to­ra, rôz­ne vzruc­hy ge­ne­ro­va­né har­dvé­rom si­mu­lá­to­ra... Vy­so­ko­nák­la­do­vé pro­jek­ty sú po­tom dopĺňa­né o ta­ké ak­cie en­gi­nu, kto­ré pre po­zo­ro­va­te­ľa vy­tvá­ra­jú do­jem sku­toč­nej reali­ty (po­hyb ce­lé­ho te­la v pries­to­re, sve­tel­né, zvu­ko­vé, at­mos­fé­ric­ké efek­ty, na­vo­de­nie po­ci­tov chla­du, vl­hka, suc­ha, tep­la...).

:: Cieľ hry (angl. Ga­me Ob­jec­ti­ve)
Do­siah­nu­tie ur­či­té­ho cie­ľa je jed­na z cha­rak­te­ris­tík po­čí­ta­čo­vých hier, kto­rá ich od­li­šu­je od po­čí­ta­čo­vých di­em. De­mo je spra­vid­la rek­lam­ný nás­troj, kto­rý po­uka­zu­je na mož­nos­ti ur­či­té­ho ob­jek­tu. Po­čí­ta­čo­vá hra, nao­pak, sta­no­vu­je hrá­čo­vi do­siah­nuť ur­či­tý cieľ. Hráč sí­ce ne­mu­sí ten­to cieľ do­siah­nuť za kaž­dú ce­nu (sa­moz­rej­me, že vte­dy sa hra kon­čí neús­pec­hom), no pl­ne­nie po­ža­do­va­ných úloh a do­siah­nu­tie cie­ľa je je­den z hlav­ných dô­vo­dov, pre­čo člo­vek hrá kon­krét­nu po­čí­ta­čo­vú hru.

Do­siah­nu­tie cie­ľa po­čí­ta­čo­vej hry je po­dmie­ne­né spl­ne­ním pra­vi­diel pre kon­krét­nu úro­veň ob­ťaž­nos­ti. Po ich spl­ne­ní je hráč in­for­mo­va­ný o ví­ťaz­stve (angl. Vic­to­ry), resp. preh­re (angl. Fail). Mo­der­né po­čí­ta­čo­vé hry nie sú za­lo­že­né iba na pria­mo­čia­rom pl­ne­ní jed­né­ho kon­krét­ne­ho cie­ľa. In­teg­rá­ciou zlo­ži­tej lo­gi­ky, va­ria­bi­li­tou rie­še­ní, sta­no­ve­ním via­ce­rých cie­ľov, zme­nou cha­rak­te­ru hry na zá­kla­de sprá­va­nia sa hrá­ča sa mo­der­né hry sna­žia čo naj­viac prib­lí­žiť reál­ne­mu sve­tu. Už to nie sú iba jed­no­duc­hé „plo­ši­nov­ky“, v kto­rých hráč vy­ko­ná­val rov­na­kú čin­nosť a ví­ťaz­stvo do­sia­hol stá­le tým is­tým po­stu­pom.

Na­bu­dú­ce...
Mno­hým z nás už ur­či­te doc­hád­za dych pri štú­diu toľ­ké­ho množ­stva teórie, ve­no­va­nej vlas­tnos­tiam gra­fic­kých (her­ných) en­gi­nov. Nud­nú teóriu te­da v nas­le­du­jú­cej čas­ti se­riá­lu vy­me­ní­me za čis­to prak­tic­ký po­hľad na zá­klad­nú stav­bu her­né­ho en­gi­nu a za­čne­me prip­ra­vo­vať vzo­ro­vý prík­lad.

Nas­le­du­jú­ca časť se­riá­lu ne­bu­de ob­sa­ho­vať nič iné ako ko­men­tár k prík­la­du č. 1, kto­rý bu­de jej príl­ohou. Pred­sta­ví­me kon­krét­ne zlo­že­nie sú­bo­rov so zdro­jo­vým kó­dom ap­li­ká­cie, pri­čom tie­to sú­bo­ry po­drob­ne opí­še­me. Po­čnúc bu­dú­cou čas­ťou se­riá­lu te­da za­čne­me po­pri teó­rii bu­do­vať vlast­ný en­gi­ne, kto­rý sa bu­de­me sna­žiť do­viesť do po­do­by hra­teľ­nej po­čí­ta­čo­vej hry.

Ďal­šie čas­ti >>

Zdroj: Infoware 2/2008



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