Programujeme grafický engine III.

opengl_logo.jpg Po úvod­ných slo­vách tý­ka­jú­cich sa zá­klad­ných vlas­tnos­tí gra­fic­kých en­gi­nov bu­de­me po­kra­čo­vať kon­krét­nej­ší­mi té­ma­mi. Po­stup­ne sa po­kú­si­me opí­sať a po­drob­ne vy­svet­liť kaž­dú jed­not­li­vú fun­kcio­na­li­tu her­né­ho en­gi­nu (angl. ga­me en­gi­ne).

V tej­to a nas­le­du­jú­cej čas­ti se­riá­lu sa bu­de­me za­obe­rať vý­zna­mom niek­to­rých naj­dô­le­ži­tej­ších po­jmov sú­vi­sia­cich s vý­stav­bou her­ných en­gi­nov. Zo­pa­ku­je­me si ve­do­mos­ti, kto­ré sme na­do­bud­li po­čas čí­ta­nia jed­not­li­vých čas­tí pô­vod­né­ho se­riá­lu, a tie­to po­znat­ky dopl­ní­me in­for­má­cia­mi o po­uži­tí niek­to­rých uži­toč­ných prog­ra­mo­va­cích tec­hník a tri­kov.

Po­jmy po­uží­va­né v mo­der­ných her­ných en­gi­noch
Ob­sa­hom toh­to a bu­dú­ce­ho člán­ku bu­de zoz­nam po­jmov, s kto­rý­mi sa ur­či­te stret­ne­me pri prog­ra­mo­va­ní her­ných en­gi­nov. Ma­jú pô­vod v an­glic­kých slo­vách a mno­hé sa do slo­ven­či­ny vô­bec nep­rek­la­da­jú, resp. ich slo­ven­ský prek­lad ne­vys­ti­hu­je da­nú prob­le­ma­ti­ku tak ver­ne ako pô­vod­ný an­glic­ký vý­raz. Pre­to sa bu­dú v tom­to texte niek­to­ré po­jmy uvád­zať v pô­vod­nom zne­ní.

Na dopl­ne­nie ve­do­mos­tí o po­jmoch, kto­ré tu ne­bu­dú po­drob­ne opí­sa­né, od­po­rú­čam nav­ští­viť re­le­van­tnú inter­ne­to­vú strán­ku. Zna­losť uvád­za­ných po­jmov je to­tiž nes­mier­ne dô­le­ži­tá a bu­de pred­sta­vo­vať vý­raz­né uľah­če­nie prá­ce v prí­pa­de, že sa roz­hod­ne­me vy­tvo­riť si vlast­ný her­ný en­gi­ne.

:: Her­ný en­gi­ne (angl. ga­me en­gi­ne), her­ný pries­tor (angl. ga­me le­vel)
V úvo­de toh­to se­riá­lu sme sa zmie­ni­li o tom, že her­ný en­gi­ne je je­den z dru­hov gra­fic­ké­ho en­gi­nu, kto­rý ok­rem vy­kres­ľo­va­nia 3D pros­tre­dia (angl. 3D spa­ce) do toh­to pros­tre­dia umies­tňu­je po­zo­ro­va­te­ľa (angl. ava­ta­ra), kto­ré­mu umož­ní vy­ko­ná­vať ur­či­té pres­ne sta­no­ve­né čin­nos­ti (angl. inter­ac­tion). Her­ný en­gi­ne spra­vid­la po­zos­tá­va z nie­koľ­kých her­ných pries­to­rov, resp. úrov­ní (angl. le­ve­lov). Slo­vo le­vel mož­no dos­lov­ne pre­lo­žiť ako úro­veň, slo­ven­ský vý­znam slo­va úro­veň však ne­rep­re­zen­tu­je pô­vod­ný vý­znam an­glic­ké­ho slo­va le­vel. Le­ve­lom sa to­tiž ne­ro­zu­mie do­siah­nu­tie ur­či­tej úrov­ne v reb­ríč­ku ani sa ním neod­li­šu­je úro­veň zruč­nos­tí po­zo­ro­va­te­ľa – hrá­ča. Správ­nym vý­zna­mom slo­va le­vel je lo­gic­ké us­po­ria­da­nie všet­kých ob­jek­tov scé­ny (pries­to­ru), do kto­rej sa nás­led­ne umies­tni po­zo­ro­va­teľ. Sú­čas­ťou le­ve­lu sú všet­ky ob­jek­ty, kto­ré ho tvo­ria, vrá­ta­ne všet­kých ob­jek­tov, kto­ré ma­jú s da­ným le­ve­lom ne­ja­ký sú­vis. Nej­de iba o gra­fic­ké ob­jek­ty, ale aj o ob­jek­ty vy­tvá­ra­jú­ce lo­gi­ku le­ve­lu, zvu­ko­vé a ďal­šie mul­ti­me­diál­ne ob­jek­ty, ako aj ob­jek­ty rea­gu­jú­ce na sprá­va­nie sa po­zo­ro­va­te­ľa, všet­ky sta­tic­ké a dy­na­mic­ké ob­jek­ty skva­lit­ňu­jú­ce vi­zuál­ny či her­ný zá­ži­tok...

:: Hráč (angl. player)
Hrá­čom je po­zo­ro­va­teľ umies­tne­ný do her­né­ho le­ve­lu. Hrá­čom je aj proti­hráč, kto­rý mô­že byť ov­lá­da­ný iným člo­ve­kom, resp. mô­že byť ria­de­ný po­čí­ta­čom (angl. bot). Vý­znam slo­va hráč mož­no ke­dy­koľ­vek za­me­niť za slo­vo po­zo­ro­va­teľ v prí­pa­de, že ide o člo­ve­ka, kto­rý us­ku­toč­ňu­je inter­ak­ciu so scé­nou na zá­kla­de svo­jich ma­nuál­nych, ale aj ver­bál­nych, vi­zuál­nych či iných po­žia­da­viek. Po­hyb a ak­cie ava­ta­ra sú zväč­ša ov­lá­da­né ma­nuál­ne člo­ve­kom, kto­rý hrá da­nú po­čí­ta­čo­vú hru – pl­ní jej cieľ (angl. ga­me ob­jec­ti­ve). Proti­hrá­či mô­žu vy­stu­po­vať v úlo­he spo­luh­rá­čov (angl. allied), resp. v úlo­he proti­vní­kov (angl. ene­my). Jed­nou z mno­hých úloh her­ných en­gi­nov je sta­no­viť pra­vid­lá pre inter­ak­ciu med­zi jed­not­li­vý­mi hráč­mi. Z dô­vo­du „uk­ro­je­nia“ ur­či­té­ho ob­je­mu z her­né­ho le­ve­lu má hráč vo for­me po­sta­vy ava­ta­ra svo­je pev­né/me­ni­teľ­né roz­me­ry, ako napr. vý­šku, šír­ku... Ava­ta­ro­vi sú ďa­lej da­né schop­nos­ti vy­ko­ná­vať úlo­hy, zdo­lá­vať pre­káž­ky, roz­ví­jať her­ný plán. Ne­za­bú­daj­me, že ava­ta­rom mô­že byť aj dop­rav­ný pros­trie­dok (auto­mo­bil, lie­tad­lo, loď...) ale­bo aký­koľ­vek iný ob­jekt, ne­mu­sí to byť te­da po­sta­va s dvo­ma no­ha­mi a dvo­ma ru­ka­mi.

:: Di­zaj­nér hry (angl. ga­me de­sig­ner), edi­tor le­ve­lov (angl. le­vel edi­tor)
Mno­hé mo­der­né po­čí­ta­čo­vé hry po­zos­tá­va­jú z her­ných le­ve­lov vy­tvo­re­ných člo­ve­kom – di­zaj­né­rom – v ur­či­tom špe­cia­li­zo­va­nom vý­vo­jo­vom nás­tro­ji, edi­to­re. Na vý­ro­bu her­ných le­ve­lov sa vy­tvá­ra­jú špe­cia­li­zo­va­né ap­li­ká­cie, kto­ré slú­žia na kom­plex­ný návrh jed­not­li­vých scén vrá­ta­ne návr­hu všet­kých ob­jek­tov a všet­kých inter­ak­tív­nych pr­vkov. Tie­to ap­li­ká­cie ne­mož­no nah­ra­diť pl­noauto­ma­ti­zo­va­ným pro­ce­som, pre­to­že úro­veň po­čí­ta­čo­vé­ho návr­hu stá­le ne­do­siah­la úro­veň ruč­nej vý­stav­by po­čí­ta­čo­vej hry. Pro­ces de­fi­ní­cie ob­jek­tov her­ných le­ve­lov, sta­no­ve­nia po­treb­ných pra­vi­diel, štruk­tu­ra­li­zá­cie scé­ny, dopl­ne­nia le­ve­lov o her­nú lo­gi­ku v dneš­nej do­be ne­mož­no nah­ra­diť auto­ma­tic­kým spra­co­va­ním. Ruč­ný návrh le­ve­lov bu­de eš­te dl­hý čas je­di­ným rie­še­ním vý­stav­by her­ných en­gi­nov.

:: Ob­sah le­ve­lu (angl. le­vel layout)
Ob­sah le­ve­lu je us­po­ria­da­nie ob­jek­tov scé­ny po­dľa vop­red do­hod­nu­té­ho sce­ná­ra. Kom­plex­ný po­hľad na us­po­ria­da­nie ob­jek­tov scé­ny je nes­mier­ne dô­le­ži­tý v sú­vis­los­ti s vý­be­rom správ­nej tec­hni­ky ma­naž­men­tu týc­hto ob­jek­tov. Ob­jek­ty uzav­re­tých scén sú veľ­mi dob­re za­ra­di­teľ­né do prís­luš­né­ho ty­pu stro­mu BSP, nao­pak, ob­jek­ty ot­vo­re­ných scén us­po­ra­dú­va­me zväč­ša po­mo­cou ok­tá­no­vých, resp. iných stro­mov. Hod­no­tia­cim fak­to­rom je pri­tom efek­ti­vi­ta roz­de­le­nia ob­jek­tov scé­ny do pries­to­rov sta­no­ve­ných da­ným ty­pom stro­mu. Je nee­fek­tív­ne roz­de­ľo­vať ot­vo­re­né scé­ny po­mo­cou stro­mov BSP, rov­na­ko nie je efek­tív­ne roz­de­ľo­vať uzav­re­té scé­ny pl­né pra­vouh­lo us­po­ria­da­ných ob­jek­tov po­mo­cou ok­tá­no­vých stro­mov. Spô­sob us­po­ria­da­nia ob­jek­tov scé­ny sta­no­vu­je množ­stvo pa­ra­met­rov her­né­ho en­gi­nu. Po­dľa roz­sa­hu a kom­plexnos­ti scén mož­no návrh le­vel layoutu roz­de­liť na:
 roz­siah­le scé­ny s ma­lý­mi de­tail­mi, v kto­rých sa po­uží­va­teľ zväč­ša ne­dos­ta­ne do kon­tak­tu s jed­not­li­vý­mi ob­jek­tmi (napr. le­tec­ké si­mu­lá­to­ry),
 kom­plexné scé­ny s ko­neč­nou veľ­kos­ťou, v kto­rých je po­hyb po­uží­va­te­ľa ob­med­ze­ný ur­či­tou pev­ne de­fi­no­va­nou hra­ni­cou (te­rén dopl­ne­ný o sta­tic­ké či dy­na­mic­ké ob­jek­ty, napr. auto­mo­bi­lo­vé si­mu­lá­to­ry),
 scé­ny s ma­lou veľ­kos­ťou, kto­ré vý­raz­ne ob­med­zu­jú po­hyb po­zo­ro­va­te­ľa (zväč­ša vnút­ri bu­dov, napr. FPS hry),
 scé­ny ob­sa­hu­jú­ce mi­ni­mum ob­jek­tov, po­hyb po­zo­ro­va­te­ľa je mi­ni­mál­ny, resp. žiad­ny (napr. stre­lec­ké si­mu­lá­to­ry).

:: Hra­ni­ce pries­to­rov (angl. hollow spa­ce, com­mon vo­lu­mes, bloc­king vo­lu­mes)
Ve­ľa mo­der­ných her­ných en­gi­nov de­fi­nu­je tzv. prázd­ny pries­tor, „vy­re­za­ný“ z cel­ko­vé­ho ob­je­mu, ako pries­tor, v kto­rom sa mô­že nac­hád­zať po­zo­ro­va­teľ (angl. hollow spa­ce, sub­trac­king spa­ce). Prec­hod z práz­dne­ho do pl­né­ho pries­to­ru je de­te­go­va­ný ako ko­lí­zia, kto­rá sa vy­hod­no­cu­je rôz­ny­mi spô­sob­mi. Pl­ným pries­to­rom sú naj­mä ste­ny bu­dov, te­rén, stro­my, ka­me­ne, hra­ni­ce le­ve­lu, ale aj všet­ky ďal­šie ob­jek­ty, kto­rý­mi po­zo­ro­va­teľ ne­mô­že prec­hád­zať. V edi­to­roch her­ných le­ve­lov sa tie­to mies­ta čas­to de­fi­nu­jú pev­ne na zá­kla­de roz­hod­nu­tia návr­há­ra – di­zaj­né­ra. Pria­mo do scé­ny sa tak­to umies­tňu­jú tzv. klam­né (angl. dum­my) ob­jek­ty, kto­ré nie sú vi­di­teľ­né, ale pl­nia sta­no­ve­nú fun­kciu.

Spo­loč­né pries­to­ry (angl. com­mon vo­lu­mes) sa po­uží­va­jú na oh­ra­ni­če­nie pries­to­ru, kto­rý má ur­či­té spo­loč­né vlas­tnos­ti, napr. ide o rov­na­kú uli­cu, tú is­tú bu­do­vu, to is­té po­scho­die... Ta­ké­to in­for­má­cie po­tom mož­no po­užiť v rôz­nych úrov­niach ume­lej in­te­li­gen­cie (angl. ar­ti­fi­cial in­telli­gen­ce) im­ple­men­to­va­nej v hre. Za­ká­za­né pries­to­ry (angl. bloc­king vo­lu­mes) sú, nao­pak, pries­to­ry, do kto­rých ne­má po­zo­ro­va­teľ prís­tup. Za­ká­za­ný pries­tor vy­med­zu­je tú časť her­né­ho le­ve­lu, z kto­rej sa po­zo­ro­va­teľ ne­má nik­dy dos­tať von.

:: Or­ga­ni­zá­cia ob­jek­tov scén (angl. BSP trees aj os­tat­né dru­hy stro­mov)
Stro­my BSP sa za­ča­li po­uží­vať na de­le­nie pries­to­ru pre ich úžas­nú vlas­tnosť po vy­ko­na­ní nie­koľ­kých po­dmie­nok od­bú­rať ob­rov­ské množ­stvo ob­jek­tov, kto­ré net­re­ba v da­nom oka­mi­hu spra­co­vať. Roz­hod­nu­tie o po­uži­tí kon­krét­nej me­tó­dy tvor­by stro­mu BSP nie je vždy jed­no­duc­hé. Dô­le­ži­tým fak­to­rom je naj­mä us­po­ria­da­nie ob­jek­tov scé­ny, ich vzá­jom­né prek­ry­tie, ich de­tail­nosť, vý­znam v scé­ne, sta­tic­kosť, resp. dy­na­mic­kosť. Stro­my BSP sú stá­le jed­nou z naj­lep­ších vo­lieb pri de­le­ní pries­to­rov skla­da­jú­cich sa z pra­vouh­lo us­po­ria­da­ných plôch (cha­rak­te­ris­tic­ké pre bu­do­vy). Nie sú však naj­vhod­nej­ším rie­še­ním na de­le­nie te­ré­nov ani iných roz­siah­lych plôch, kto­rých ste­ny nie sú pra­vouh­lé. V ta­kom­to prí­pa­de dôj­de skôr k skom­pli­ko­va­niu si­tuácie ako k jej zjed­no­du­še­niu. Roz­de­le­nie ob­jek­tov scé­ny do kon­krét­nych or­ga­ni­zač­ných štruk­túr je ne­vyh­nut­né na do­siah­nu­tie po­treb­né­ho vý­ko­nu her­né­ho en­gi­nu. Mo­der­né scé­ny to­tiž ob­sa­hu­jú nes­po­čet­né množ­stvo ob­jek­tov, kto­ré ne­do­ká­že v reál­nom ča­se zob­ra­ziť ani ten naj­rýc­hlej­ší gra­fic­ký har­dvér. Bez kva­lit­né­ho ma­naž­men­tu scé­ny by sme nik­dy ne­do­siah­li po­treb­nú mie­ru hra­teľ­nos­ti hry, kto­rej scé­ny po­zos­tá­va­jú rá­do­vo zo sto­viek ti­síc tro­ju­hol­ní­kov či do­kon­ca mi­lió­nov tro­ju­hol­ní­kov.

:: Te­rén (angl. terrain, terrain de­tail)
Zá­kla­dom kaž­dé­ho en­gi­nu ok­rem pár vý­ni­miek je te­rén. Te­rén rov­na­ko ako bu­do­vy ne­mož­no vždy chá­pať iba ako zem­ský po­vrch nac­hád­za­jú­ci sa v na­šom oko­lí. Mô­že ním byť ro­vin­ná ploc­ha bez akýc­hkoľ­vek vy­vý­še­nín či priehl­bín, ale aj vy­so­ko­hor­ský ma­sív. Te­rén mô­že mať rôz­ny tvar, rôz­ny sklon, rôz­ne po­kry­tie... Mô­že to byť do­kon­ca časť scé­ny, na kto­rú sa po­zo­ro­va­teľ nik­dy ne­dos­ta­ne, nao­pak, mô­že to byť je­di­ný po­vrch, po kto­rom sa bu­de po­zo­ro­va­teľ po­hy­bo­vať a nik­dy tak nev­stú­pi na ni­ja­ký iný a ani do žiad­nej bu­do­vy. Te­ré­nom je aj dno riek, mo­rí, dno stud­ní, zrá­zov... Te­rén sa vô­bec ne­mu­sí brať do úva­hy v prí­pa­de vý­poč­tov ko­lí­zií. Po­zo­ro­va­teľ sa mô­že nac­hád­zať vždy v ur­či­tej mi­ni­mál­nej vzdia­le­nos­ti od to­ho te­ré­nu, kto­rú nik­dy nep­rek­ro­čí. Te­rén mô­že byť zlo­že­ný z ti­sí­cok tro­ju­hol­ní­kov, ale aj z ma­lé­ho po­čtu nav­zá­jom pre­po­je­ných tro­ju­hol­ní­kov, dopl­ne­ných o iné ob­jek­ty. Textú­ra na­ne­se­ná na zá­klad­ný te­rén sa čas­to dopĺňa tzv. de­tail­ný­mi textú­ra­mi na na­vo­de­nie čo naj­reál­nej­šie­ho doj­mu.

Te­rén tvo­rí ro­vin­ná ploc­ha, kto­rá sa po­kry­je spo­loč­nou textú­rou. Ta­ký­to prís­tup však čas­to nep­rip­ra­ví ten správ­ny vi­zuál­ny do­jem, a tak sa zá­klad­ný te­rén dopĺňa te­rén­ny­mi ob­jek­tmi. Ta­kis­to sa po­krý­va ďal­ší­mi textú­ra­mi, kto­rý­mi sa di­zaj­nér sna­ží zvý­šiť reál­nosť gra­fic­ké­ho vý­stu­pu.

:: Bu­do­vy (angl. buil­dings)
Bu­do­vy sú je­den zo zá­klad­ných sta­veb­ných pr­vkov mno­hých her­ných en­gi­nov. Nej­de iba o bu­do­vy v kla­sic­kom po­ní­ma­ní, čas­to sa bu­do­va­mi ozna­ču­jú aké­koľ­vek ob­jek­ty, kto­ré vy­tvá­ra­jú uzav­re­tý pries­tor. Bu­do­vou te­da mô­že byť nie­len dom oh­ra­ni­če­ný ste­na­mi a strec­hou, ale aj kom­plex­ný ob­jekt po­zos­tá­va­jú­ci z množ­stva mies­tnos­tí. Bu­do­vou však mô­že byť aj jed­no­duc­hý oh­ra­ni­če­ný ob­jekt, do kto­ré­ho mož­no, resp. ne­mož­no vstú­piť. Bu­do­vy pa­tria po­pri te­ré­ne k dvom zá­klad­ným sta­veb­ným pr­vkom her­né­ho en­gi­nu, pri­čom je jed­no, či ide o kla­sic­ké „po­zem­ské“ bu­do­vy ale­bo bu­do­vy „ves­mír­nej sta­ni­ce na Mar­se“.

Na­bu­dú­ce...
Vzhľa­dom na roz­sah té­my bu­de­me mu­sieť v preh­ľa­de naj­čas­tej­ších po­jmov po­uží­va­ných pri prog­ra­mo­va­ní her­ných en­gi­nov po­kra­čo­vať aj na­bu­dú­ce. In­for­má­cie uve­de­né v tom­to člán­ku dopl­ní­me o ďal­šie po­jmy, kto­ré sú úz­ko spo­je­né nie­len s prog­ra­mo­va­ním, ale aj vy­uží­va­ním her­ných en­gi­nov.

Ďal­šie čas­ti >>

Zdroj: Infoware 1/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