TINR Skripta Predavanj 2

Embed Size (px)

DESCRIPTION

games

Citation preview

  • TINR@FRI,draftv09,PeterPeer++ 16

    Predavanje#2(izris)

    Aktualnekatlice:

    upravljanjeprojektao plansko(waterfall)nartovanjeo agilnirazvojo repozitorijiizvornekode

    arhitekturaigreo glavnazankao objektnoprogramiranjeo loitevpogonaodigreo konnaarhitektura:igra/pogon/ogrodje

    izriso slike(sprites)o vpraanje:kajsedogajapodpokrovom?(dvateksturiranatrikotnika)>osnove

    grafikeo optimizacijaizrisa(spritebatch)o slikovniatlasio animacija

    vsebineo cevovodvsebine(contentpipeline)

    1.Upravljanjeprojekta

    Planskaaliagilnametodarazvoja?

    PLANSKA AGILNA

  • TINR@FRI,draftv09,PeterPeer++ 17

    Primarnicilji napovedljivost,stabilnost,visokojamstvo

    hitrovidnirezultati,odzivnostnaspremembe

    Naronik interakcijapopotrebi,osredotoenostnaizvajanjepogodbe

    kolociran,osredotoenostnamajhneinkremente

    Razvoj obseennart,dolgiinkrementi

    enostavennart,kratkiinkrementi

    Kulturadela udobjeinmoskoziogrodjenartovinreda

    udobjeinmoskoziponujenosvobodopridelu

    Inkaterobiizbralivi?Inzakaj?

    Problem(neuspeh)planskihmetodjevelikaporabaasainnepripravljenostnaspremembeoziromanjenapovezavasceno.Vpraksisetemetoderedkodoslednouporabljajo(analiza=paraliza).Poudareknaizdelkihinprocesih,bistvenomanjnaljudeh.

    Metodajeagilna,kojerazvojprogramskeopreme:

    Inkrementalenmajhneizdaje,hitrirazvojniciklihitrepovratneinformacije Kooperativennaronikinrazvijalcitesnosodelujejo Neposredenmetodajeenostavna,torejlahkonauljiva,prilagodljivaindobroopisana Prilagodljivlahkoobvladaspremembezahtev.

    Ciljagilnostijezmanjanjeasa,strokovinpoveanjefleksibilnost!Bistvenjedelujoprogram!

    Apozor,agilnostvsmisluzmonostSWorganizacije,daseustreznoprilagajaspremembamvokoljuinzahtevamtegaokoljainNEvsmisluhitrostirazvojanaraunkakovosti,minimalnegaopisaprocesa,kerbipotembilonajboljekarbrezprocesa.

    KonkretenprimeragilnemetodeXP(extremeprogramming)

    ivljenskicikelXPprocesa:

  • TINR@FRI,draftv09,PeterPeer++ 18

    PrakseXP:

    Repozitorijkode

    Uporabasistemazaupravljanjerazliicjepolegskupnegastilaprogramiranjavsehrazvijalcevvnekiskupinienaizmedosnovnihdobrihrazvojnihpraks:CVS(ConcurrentVersionsSystem),SVN(Subversion),SCM(SoftwareConfigurationManagement)(Xcode)ipd.Takensistemvosnovi

  • TINR@FRI,draftv09,PeterPeer++ 19

    omogoa:ustvarjanjeskladi,uvozprojektov,zapisovanjesprememb,pregledovanjezgodovinerevizij,dostopdokodepoljubnerevizije,zaklepanjedostopa,soasnodeloveihrazvijalcevnaistemdeluprojektaipd.

    2.Arhitekturaigre

    Dnevi,kojeigrabilasestavljenaleiznekajdatotekinnamnibilotrebaskrbetizastrukturoinarhitekturo,sozagotovomimo.Vosnovidanesvseigreloijomedkodoigre(gamespecificcode)inkodopogona(gameenginecode).Namenprvevsplonemsevedaniponovnauporabavdrugihigrah,tojenamenkodepogona,kiposkrbizaupodabljanje(rendering),predajanjesporoil,predvajanjezvoka,detekcijotrkov,mrenokomunikacijoipd.

    Tipiarhitekture:

    Naarhitekturovelikokratgledamoskozimerosoodvisnostikode(coupling),kipove,kakomonostadvadelakodemedsebojpovezana.

    Adhocarhitektura:nimaoitneorganizacije,rasteorgansko,velikasoodvisnostkode(tight).

    Modularnaarhitektura:podsistemisoidentificiraniinloenivmodule,knjinice,soodvisnostnaelomaninadzorovnainjetakosasomavsakmodulpovezanzvsakim,karpripeljedovelikesoodvisnostikode.

    ArhitekturausmerjenihaciklinihgrafovDAG(directedacyclicgraph)arhitektura:nadzorujemoodvisnostimedmoduli,omogoaopredelitevnivojevmodulov,kjersenijinivojinezavedajovijih,strukturanajbibilaimira/plitka.

  • TINR@FRI,draftv09,PeterPeer++ 20

    Nivojskaarhitektura(layered):modullahkokomuniciralezmoduli,kisonanivojudirektnopodnjim(naposameznemnivojulahkoimamotudiDAGarhitekturo),zaradinerigidnestruktureigretomogoeninujnonajboljipristop.

    Glavnazankadetalneje:

    Jesrceigre,kiizvrizaporedjenalogvsakosliico(frame)intakozagotovianimiran,ivsvetigre.

    Naloge:

    asovnikorak:Breztegaigrenahitrejihplatformah(recimohitrejiCPU)postanejohitrejeinposledinoigralnostpade.Uroigreveemonastrojnouroinizraunamo,kolikoasajeepretekloodzadnjegazagonaglavnezanke.Dostrojneuredostopamoleenkratinsicernazaetkuvsakesliice.Trajanjeposameznesliicejelahkofiksno(fixedframeduration)(konzole)alispremenljivo(variable)(PC).Prislednjemzagotovimodobroskaliranjeigrenarazlinihplatformah,vsebinahinobremenitvahigre.Fiksnotrajanjeimasevedadrugeprednosti:napovedljivoobnaanje,poenostavljenosimulacijofizike,zaneslivejemrenoobnaanje.Tudivtemprimerupajedobro,daigrameriinuporabljadejanskiastrajanjavsakesliice(recimozaradiprilagajanjanarazlikomedPAL/NTSC).

    Vhod:Najboljeje,daseigralevivhodnipodatkizajemajoleenkratnasliico,sajlahkosicerpridedonekonsistentnostiznotrajenesamesliice.asmedbranjemvhodainreakcijomoramominimizirati,sajtakoigralecdobiboljiobutekodzivnostiinnadzora.

    Mrea:Tudieventuelnavhodnasporoilaprekomreemoramoustreznosprocesirati.

  • TINR@FRI,draftv09,PeterPeer++ 21

    Simulacija:Obsegalepotevilopodnalog,kidejanskoposkrbijo,dasvetoivi:zagonUIkode,posodobistanjeigre,zagondogodkov,simulacijagibanja,sistemadelcev(fizike),spremenipogledkamere,lokacijoigralcaipd.Grezanajkompleksnejiinposledinonajdrajikorakglavnezanke.Odloitevotem,kajposodobitiinkdajposodobitijezvidikauinkovitostibistvenegapomena(recimosovranika,kijetriulicestranodnasnajbrnitrebaposodabljati).

    Trki:Vprejnjemkorakusmopostavilivsenamesto,kjerbiteentiteteidealnoradebile.Sedajmoramopreveritizatrkimedtemientitetamiinustreznoreagirati.Entitetajedejanskovsakastvarvsvetu:drugkarakter,puica,tlaitd.Detekcijatrka(collisiondetection)jeprvi,enostavnejikorak,kipanipoceni.Navadnouporabljamopoenostavljeneliketehentitetterpogledamoprekrivanjataknihlikov.(Spetnasnavadnonezanimajotrkientitet,kisodalestranoddogajanja.)Odzivnatrk(collisionresponse/resolution)jedrugi,tejikorak.Vseentitete,kisobileudeleenevtrku,jetrebaustreznoposodobitivsmislupravil,zakonovigre(nenujnorealnosti).Takojetrebarecimoavtoobtrkuustreznopreoblikovatiterizraunatinjegovonovolokacijoinhitrost.Kolikigralcazadanepuica,jetrebaustreznozmanjatinjegovomo,igralcapaobvestitiodogodku.

    Posodobitevobjektov:Sedajjeas,davseobjektepostavimonanovolokacijo.Opravimopotrebnetransformacijeobjektov,posodobimonjihoveotroke,animiramookostja(skeleton)ipd.(Vtemkontekstubomospoznalitudigrafsceneinustreznopropagiranjespremembponjem.)

    Upodabljanje(rendering):Konnojenapoiltrenutek,kolahkovseprikaemonaekranu.Sevedazaradivelikegasvetaigrespetnebomoupodabljalicelegasveta,zatomoramonajprejidentificiratitisteelementesveta,tistidelsveta,kibopotencialnovidenterteelementeposlatigrafinistrojniopremi.Vtanamenpoznamorazlinerazlenjevalnetehnikeprostora:portali,BSPdrevesa,stoastimizbiranjem(frustumcull)ipd.Vtemkorakuapliciramoogromnotehnik,dadoseemorealistinosenenje,postreemoskompleksnimiosvetlitvenimimodeli,procesiranjemcelotnegaekranaipd.

    Ostalo:Seveda,zgorajsmonateliglavnekorake,nisopatovsi.Popotrebijetrebaposkrbetizazvonisistem,pravilnonalaganjeinmeanjezvokov,nakoncumogoevsvenjuposlativsemrenepaketeipd.

    Struktura,kiodsevatenaloge:

    while(!IsDone()){ UpdateTime(); GetInput(); GetNetworkMessages(); SimulateWorld(); CollisionStep(); UpdateObjects(); RenderWorld(); MiscTask();}

  • TINR@FRI,draftv09,PeterPeer++ 22

    Kajpa,edoloenihkorakovnepotrebujemo,alipaimamovezankzarazlinastanjaigre?Vzamemostrukturo(it),kipove,katerenalogesoaktualnevnekemtrenutku:

    while(!IsDone()){ for(Tasks::iteratorit=m_tasks.begin();it!=m_task.end();++it) { Task*task=*it; it>Update(); }}

    Zaradikompleksnostikorakasimulacijeintrkovsevelikokratletaizloiizmnoicekorakov(decoupling),karomogoaigri,dazaganjasimulacijopopretekufiksnegaasovnegaintervala.Sevedapotemnemoremooziromanimasmislazaganjatisimulacijo20kratnasekundo,upodabljanjapa100krat,sajbovelikoduplikatovupodabljanja,prejnjesliice.Zatoustreznointerpoliramolokacijoinrotacijonaosnoviprejnjihvrednostiinznanehitrosti.Stemdobimovesliicnasekundo,boljgladkeanimacijeinboljosplonoodzivnost.Multinitenjeseponujasamoposebi,vendar,kerjeboljobutljivonanapakekotenonitnisistemi,lahkorazporejanjenaredimosami:

    while(!IsDone()){ if(TimeToRunSimulation()) RunSimulation(); InterpolateState(); RenderWorld();}

    Kakouinkovitoizrabitidvaprocesorja,CPUinGPU?

    Vejederpasevedapomeniveniti!(Let'snotgothereatthetime!;)Inmimogrede,razlineplatformeimajosvojespecifikepriarhitekturi,kijihmoramovzetivzakup.RecimoXbox360imatrijedra,vsakolahkopoganjadveniti,PS3paimagospodarsuenjarhitekturoskarosmimijedri,PPUinsedemSPU.

    Objektnoprogramiranjevigrah:

  • TINR@FRI,draftv09,PeterPeer++ 23

    Igrolahkonemalokdajpovzamemokotinterakcijozobjekti,entitetamivnavideznemsvetu.

    Osnovnikoncepti:

    razredjeabstraktnaspecifikacijauporabnikegatipa,kivkljuujetakopodatkekotoperacije,kijihlahkonadtemipodatkiizvajamo

    objekt,instancaaliprimerrazredaregijavspominu,kjerhranimovsepodatkenekegarazredainrazumemonjihovpomen,taknihregijpajesevedalahkovezavsakrazred

    dedovanjeomogoaenostavnonadgrajevanjeobstojeihrazredovterpredstavitevtehnadgradenjznovimrazredom

    Vzemimokarakternavadnegasovranikavnaiigri:

    classEnemy{public: voidSelectAnimation(); voidRunAI(); //ostalemetodeprivate: intm_nHitPoints; //ostalespremenljivke}

    Sovranikimasevedaefa,kijezagotovotejepremagljiv,zatobibilopametnoosnovnirazredleustreznonadgraditi,povoziti(override)njegovometodoRunAI(),kinadzorujeobnaanjekarakterja:

    classBoss:publicEnemy{public: voidRunAI();}

    epravjeefhierarhinonadsovranikom,jezvidikaobjektovsovranikefovstar(parentclass)(oziromaefjesovranikovotrok(childclass)).Komplicirano?Splohne,zalajopredstavitevpasededovanjeilustrirazUMLrazrednimdiagramomtakole:

    polimorfizemintegrirakoncept,kiomogoa,daimamoenolistosovranikov,nadkaterokliemometodoRunAI()negledenato,kateregatipajetasovranik

    Ustreznospremenimokodo:

  • TINR@FRI,draftv09,PeterPeer++ 24

    classEnemy{public: voidSelectAnimation(); virtualvoidRunAI(); //ostalemetodeprivate: intm_nHitPoints; //ostalespremenljivke}

    Sedajlahkovsesovranikeobravnavamoenako,negledenato,aligrezaefaaline:

    Enemy*enemies[256];enemies[0]=newEnemy;enemies[1]=newEnemy;enemies[2]=newBoss;enemies[3]=newSuperDuperBoss;enemies[4]=newFlyingEnemy;//...{ //znotrajglavnezanke for(inti=0;iRunAI();}

    Komponentnisistemiinkompozicijaaliagregacija:

    Sevedapauporabaobjektnegaprogramiranjanepomeni,dajevseskupajdelvelikehierarhijededovanjamedrazredi.Temuprimerno,inzaradiomejitevdedovanja(velikasoodvisnostkode,nejasentoknadzora,nazadovoljivafleksibilnost,statinosthierarhije),uporabimoidejoneodvisnihkomponentinagregacije.

    Osnovnaidejaje,danegeneriramoloenegarazredazavsaktipobjekta.Namestotegaimamoenrazred(GameEntitynasliki),kipredstavljavsakobjektvigri.Taobjekt,entitetavsebujekopicokomponent,vsakaodnjihpadodanovofunkcionalnostalinovnainobnaanjatejentiteti.Vzemimorecimoentitetomeakotorojavigri.Toentitetobiskomponentnimsistemompotemlahkoorganiziralikot:

  • TINR@FRI,draftv09,PeterPeer++ 25

    Vkodipabijolahkoenostavnozapisalikot:

    GameEntity*pSword=newGameEntity;pSword>AddComponent(newDamageComponent(...));pSword>AddComponent(newRenderComponent(...));pSword>AddComponent(newCollisionComponent(...));//indrugekomponente

    Kotlahkovidimo,lahkoenostavnododajamoinodvzemamokomponentetudivasuizvajanja(runtime).Sevedapajedelozinterakcijamimedentitetamitejekotvstatinihierarhijirazredov.Entitetetukajnevedo,kajso,zatojetrebazainterakcijoposkrbetinanivojukomponent,spomojopredajanjasporoil.(RaketaimaDamageComponent,kipoljesporoiloletalu,kigajezadel,prekonjegovekomponenteHealtComponent.)

    Kompozicijanaosnovipodatkov(datadrivencomposition):

    Idejokomponentnegasistemalahkonadgradimotako,dadefiniramostrukturovsakeentitetevigrivpodatkovnidatoteki(recimoXML)innevkodi.Topomeni,davelikospremembvstrukturientitetenebovplivalonakodo.Takouinkovitoloimokodoodpodatkov(decoupling).

    Natemsvetusevedaninipopolno,tudikomponentnisistemimapomanjkljivosti.Predvsemjetakoorganiziranokodovelikotejerazhroevati.Vprimeru,dajevsevigriznanovnaprej,potemjenajvekratstrukturadedovanjazadostna,eparecimovsaokoljanisoznanavnaprej,elimozagotovitiprostorzaeksperimentiranjeinbitifleksibilni,potemjepravapotuporabakomponentnegasistema.

    3.Izris

    Osnovnikonceptigrafike:

    arhitekturaCPURAMgrafinakartica(glej4.poglavjeovsebinah) grafinakarticanerazlikujemed2Din3Dgrafiko,vsejenakoncu3D vidikgrafineknjinice(DX,OGL)kotnain,kakospravimoukazenagrafinokartico.

    Slike(sprites):

    Slikesoedenizmedosnovnihgrafinihelementoviger.Greza2Delemente,kijihnariemonaekranpodobnokotelementeuporabnikegavmesnika(UV).VendarsotielementipametnejiodUVelementov,sajtiobjekti,kijihtielementipredstavljajo,(lahko)obstajajov3Dsvetu,zatorejje

  • TINR@FRI,draftv09,PeterPeer++ 26

    potrebnopredhodnonareditiizbor,izraunatiglobinoinvelikosti.Prvikorakpridelusslikamijesevedanjihovuvozvprojektigre,slediizris.

    Optimizacijaizrisa(spritebatch):

    Objektssliko/teksturoobuvozueimamo,zdajrabimoeobjektzarisanjetekstur.Tazanasavtomatskopoiljapotrebnepodatkedografinekarticeinkarsedaoptimiziranoizrisujetudivejazaporedjaslik,kijihzahtevamosklici.Torejomogoimoskupinislik,daseizriejozistiminastavitvami.Natanainpospeimoizvajanje,sajposkrbimozaimmanjklicevprimitivovinmenjavtekstur.

    Kakoinkampostavitisliko?

    Slikovniatlas(sprite/texturesheet/map/atlas):

    Koteimesamonamiguje,atlas,kijenidrugakotslika,vsebizdruujevemanjihslik.Uporabaatlasajevekotsmiselna,sajjeboljuinkovitzagrafinokartico.Vprimeruatlasanamregrafinikarticinitrebapreklapljatimedrazlinimislikami,uporabljaenosliko(atlas)iniznjejemljepotrebnedele.PravtakoatlashitrejenaloimovRAM,sajmoramonaloitileenosliko,sicerpabinalaganjevsekslikimelovestopenj.Vsebinaatlasajenavadnoraztolmaenavposebnidatoteki,najvekratkarXMLdatoteki.

    Kajsedogajapodpokrovom?(dvateksturiranatrikotnika)>osnovegrafike...???

    Animacija:

    Zvidikaprogramerjalahkoanimacijerazdelimovdveskupini:takne,kizahtevajomalodelaodprogramerja(inveodoblikovalca)intakne,kizahtevajovedelaodprogramerja(inmanjodoblikovalca).

    Vprviskupiniizvajamoanimacijospomojozaporedjaslik,torejgrezaklasinoanimacijo,kjeroblikovalecrecimonarielovekavvsehvmesnihpozah.Tukajlahkospridomizrabimoidejoslikovnegaatlasa.Prianimacijimoramobitiposebejpozorninahitrostmenjavanjaslik,karpomeni,daimamoopravkaskompleksnejoasovnico(timeline).Primera:Streetfighter(http://www.nes

  • TINR@FRI,draftv09,PeterPeer++ 27

    snessprites.com/StreetFighter2Turbo.html,http://www.youtube.com/watch?v=rNNU887A8g),ElysianTales(http://www.youtube.com/watch?v=tR7vE6l1MN0).

    Ideja,kiokarakteriziradrugoskupino,jesevedadrugana:tukajjelik,kigaelimoanimirati,sestavljenizveposameznihslik(enazaglavo,enazalevoroko,enazalevonogoitd.).Liktorejanimiramotako,dapremikamo(lahkotudifizikalno(ragdoll))posameznedele.Osnovavsakegataknegalikajenavadnoogrodje(skeleton).Primera:Gymnast(http://vimeo.com/865045),WeaponofChoice(http://www.youtube.com/watch?v=dNaxdG2m60w).

    Sevedajemonatudikombinacijaobehpristopov.

    Osnovnipojmi:

    okostje(skeleton,rig)Ogrodjenaosnovidefiniranihkostiinpovezavmednjimi.Vplivanadefinicijomonihgibovterdajeslutitikompleksnosttehgibov.

    korenskakostnavadnojetosredinakostlika,kinimasvojegastara,torejnimanadrejenekosti(recimomedenica,ramealihrbtenica)

    kinematikaAnimacijatransformirakostiskoziasintakoustvarigibanje.Opisovanjetransformacijevsakekostirelativnonastarajeuinkovitmehanizemopisovanjaspremembinsehkratiskladatudizgibanjemloveka.

    enostavnakinematika(forwardkinematics)gibanjeseprenaanaprej,navzdolpohierarhijikosti

    inverznakinematikagibanje,kjerfiksiramonekokonnokostizhierarhijeterpremikamokostivijevhierarhijiznamenom,dakonnakostmirujenaistilokaciji

    transformacija(transform)navadnoskupekorientacije,translacijeinvelikosti(scale)objekta,kosti(matrika43)

    linearnatransformacijalastnosttransformacije,kipravi,dajeravnartapredtransformacijoravnatudiponjej,karjezelouporabnoprisistemihzaupodabljanjenaosnovitrikotnikov(vsakimasevedaravnerteinploskev)

    EulerjevikotiTrijekoti,kidefinirajorotacijovvnaprejpodanemvrstemredu(recimoxyzalizxz(ne,ninapaka));vsakarotacijaseizvrinarezultatuprejnje.Problem:ninujno,dakotipodajajounikatnoorientacijo(xyz(90,90,90)=(0,90,0)).Astronombosicernapodlagiobehtrojkpogledalvistosmer,vendarseprianimacijipogostoopiramonainterpolacijo,kipanajbibilaenostavno,hitroizraunljiva:(0,88,0)in(88,90,90)statrojki,kidelujetazelorazlini,astavresnicizelopodobni,enostavnainterpolacija,kidarezultat(44,1,45),pajepovsemzgreena.

    rotacijskamatrika33matrika,kipredstavljaalternativoEulerjevimkotominjoodlikujepredvsemenostavnostzapisa,berljivostterenostavnoraunanjeinterpolacije.Problem:potrebujemotrikratvespominakotzaEulerjevekote(spominjeprianimacijikljunegapomena),vrednostilahkopolegrotacijehranijotudivelikost(scale),karpomeni,dainterpolacijaniistarotacijaintemuprimernomoramomatrikoortonormirati,kinipocenioperacija.

    kvaternioniPredstavljajonajboljometodozaopisrotacije,brezproblemovEulerjevihkotovinrotacijskematrike.etverec(x,y,z,w)definiraosrotacije(x,y,z),dolinavektorja(x,y,z)podasinuspolovicekotarotacije,wpapodacosinuspolovicekotarotacije.Navadnoseuporabljajoenotskikvaternioni(unitlenght),zakateredodatnoveljax2+y2+z2+w2=1.

  • TINR@FRI,draftv09,PeterPeer++ 28

    Majhnapomanjkljivostkvaternionovjeleta,dalahkoenorotacijoopiemozdvemakvaternionoma((x,y,z,w)=(x,y,z,w)),kipanepredstavljabistvenegaproblemapriraunanjuinterpolacije;navadnosemedkvaternionomavinterpolacijinajprejizraunaskalarniproduktinejetanegativen,seenegaodnjijunegirapredizraunominterpolacije.

    poza(pose)skupnatransformacijaogrodja/okostjavnekemtrenutku verteksalivrhkota(vertex)trikotnikdefiniramostremitokami,vsetrisoverteksitega

    trikotnika,polegsamelokacijepalahkovsakaizmednjihvsebujeekopicolastnosti:normala,povezavastokonateksturiipd.

    animacijaindeformacijaAnimacijanavadnonepoznainformacijeoverteksih,enostavnoopiepoze,nadrugistranipadeformacijanepoznakonceptaasa,leprelijepozonavertekse!Natanaindefiniramooitnolonicomedupodabljanjem(rendering)inanimiranjem,karomogoatudi,dafunkcijaupodabljanjateehitrejeodostalihdelovigre.VeinapogonovzaanimacijouporabljaCPU,zadeformacijopaGPU.

    4.Vsebine

    Pomembendodatekzaprogramerjeigerjeuporabagrafinekartice,kijeskorajraunalnikvmalem,sajimaprocesnoenoto(GPU)sestavljenoizvelikoparalelnodelujoihprocesorjev(reemojimsenilniki),kottudisvojpomnilnik.Sicerpajegrafinakarticaevednovhodno/izhodnanaprava,lezaradipotrebpoogromniizmenjavipodatkovsijeizborilasvojevodilo(najprejAGP,danesePCIExpress).

    Zdajjejasno,dabomorabilinainzanalaganjeprogramovinpodatkovvgrafinokartico(vXNAjujetoobjektGraphicsDevice).Naslednjarazumevanjapotrebnastvarjecevovodvsebine(contentpipeline).Enaodnaihprvihnalogbonazaslonizrisatisliko,kismojopredtemnarisalivpoljubnemrisarskemprogramuinzanakonkretniprimershranilivdatotekozimenomrecimoslika.png(portablenetworkgraphics).Zatobopotrebnosliko/teksturzdiskanaloitivpomnilniknagrafinikartici,stem,dajeodvisnoodformatazapisa,kakojetrebadatotekopravilnoprebrati.Temalgoritmomreemouvozniki(importers)(vXNAsodelcevovodavsebine).Namjepotrebnodatotekopreprostododativprojekt(addexistingfile).VXNAsebovprimeruslikeali3Dmodelasamodejnooznailkotdelvsebine,namenjenuvozuvcevovod.ObprevajanjuvXNAbodouvoznikiizizvornihformatovprebralipodatkeinjihzapisalivobjektprimernegatipa(recimoTexture2DzaslikeinModelza3Dmodele)terjihvciljnomapospostopkomserializacijeposnelivdatotekeskonnicami.xnb.(VXNAznotrajigrezaponovnonalaganjeskrbiobjektContentManager,skaterimdostopamodovsehuvoenihvsebin.)(VXNIjecevovoddrugaen,datotekxnbni!)

  • TINR@FRI,draftv09,PeterPeer++ 29

    Cevovodvsebinedetalneje:

    izdelavavoblikovalskemprogramuo 2D:Photoshop(.psd),Gimp(.xcf)o 3D:3dsmax(.max),Blender(.blend)

    izvozvizmenjevalniformato 2D:png,tga,jpgo 3D:fbx,x,3ds,objo zvok:wav,mp3,acco pisave:ttf,otfo stopnje:specifino

    nalaganjevcevovod(import)o 2D:vXNATextureContent(metaobjekt)

    predpriprava(preprocessing)o 2D

    spreminjanjedoloenebarvevprozorno(colorkey) generiranjepomanjanihslik(mipmaps) spreminjanjevelikostinan^2 spreminjajeformata(DXkompresiraniformati,pvrtc)

    o 3D spreminjanjevelikosti(scaling) spremembavrstnegaredaverteksov(windingorder) rotacijaokoliosi

    izdelavakonnegaobjektainserializacija(shranjevanje/nalaganje)zahitronalaganjeo 2D:VXNATexture2D(konniobjekt,kivsebujevsepodatkeoteksturi,shranjenv

    .xnbformat)

    Dodatniviri:

    [1]http://www.gogorobot.com/2010/03/20/textureatlasspritesheetgenerator/[2]Cevovovvsebine:http://msdn.microsoft.com/enus/library/bb447745(v=XNAGameStudio.31).aspx[3]Dokumentiranjeinformacijsketehnologije(metoderazvojaprogramskeopreme):http://lrv.fri.unilj.si/~peterp/DIT/DIT.htm

  • TINR@FRI,draftv09,PeterPeer++ 30

    Naloganavajah:

    izdelanXcodeprojektzaigro izdelanazaasna2Dgrafikazaprvostopnjo/zaslon [izrisvsehelementovprvegazaslona(ebrezinterakcije,postavitevelementovshranjena

    direktnovkodi)].