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)].