• Nie Znaleziono Wyników

Architektura i programowanie wieloplatformowych silników gier video

N/A
N/A
Protected

Academic year: 2021

Share "Architektura i programowanie wieloplatformowych silników gier video"

Copied!
171
0
0

Pełen tekst

(1)
(2)

Wojciech Borczyk (mgr inż.), absolwent kierunku Informatyka na

Politechni-ce Śląskiej. Napisał doktorat z zakresu syntezy fotorealistycznych obrazów z

wykorzystaniem modelu oświetlenia globalnego na wydziale Informatyki

Po-litechniki Śląskiej. Prowadzi wykłady i zajęcia na Politechnice Śląskiej oraz

PJWSTK. Wieloletni pasjonat gier wideo, a od 2005 roku związany zawodowo

z przemysłem produkcji gier wideo. Aktualnie pracuje jako project leader oraz

assistant producer, prowadząc katowicki oddział City Interactive. Brał udział

przy tworzeniu ponad 10 projektów na platformy PlayStation3, Xbox360, PC,

Nintendo Wii oraz Nintendo DS.

Jacek Kujawski (mgr inż.), absolwent kierunku Informatyka na

Politechni-ce Śląskiej w Gliwicach. Od dzieciństwa marzył o zostaniu programistą gier

video; od 4 lat zajmuje się zawodowo ich tworzeniem. Obecnie pracuje na

stanowisku engine programmer w katowickim oddziale City Interactive,

bio-rąc udział w projektach na takie platformy jak: PlayStation3, Xbox360, PC,

Nintendo Wii, Nintendo DS. Oprócz gier interesuje się motocyklami i

moto-ryzacją zabytkową.

Krzysztof Marzec (mgr inż.), absolwent kierunku Informatyka na Politechnice

Śląskiej oraz Coventry University. Z przemysłem gier wideo związany

zawo-dowo od 2007 roku, przy pracy nad projektami na platformy PlayStation3,

Xbox360, PC, Nintendo Wii oraz Nintendo DS . Obecnie pracuje jako senior

engine programmer w Katowickim oddziale City Interactive. Specjalizuje się

w programowaniu systemów niskopoziomowych oraz projektowaniu

architek-tury kodu gry i silnika gier wideo.

Streszczenie

Książka omawia najważniejsze zagadnienia z zakresu projektowania i

progra-mowania wieloplatformowych silników gier wideo. Czytelnik dowie się o

zasto-sowaniach tego typu silników i założeniach które leżą u ich podstaw.

Książ-ka przedstawia architekturę silniKsiąż-ka i opisuje zagadnienia charakterystyczne

związane z wieloplatformowoscią. Szczegółowo omówiono aspekty

wirtualiza-cji, zarządzania pamięcią oraz narzędzi diagnostycznych.

(3)

Edytor serii: Leonard Bolc

Tom serii: 57

(4)
(5)

Krzysztof Marzec

Warszawa 2011

c

Copyright by Wydawnictwo PJWSTK

Warszawa 2011

Wszystkie nazwy produktów są zastrzeżonymi nazwami handlowymi lub znakami

towarowymi odpowiednich firm. Książki w całości lub w części nie wolno powielać

ani przekazywać w żaden sposób, nawet za pomocą nośników mechanicznych i

elek-tronicznych (np. zapis magnetyczny) bez uzyskania pisemnej zgody Wydawnictwa.

Edytor

Leonard Bolc

Kierownik projektu

Prof. dr hab. inż. Konrad Wojciechowski

Korekta

Anna Bittner

Redaktor techniczny

Aneta Ługowska

Komputerowy skład tekstu

Grażyna Domańska–Żurek

Projekt okładki

Andrzej Pilich

Wydawnictwo

Polsko-Japońskiej Wyższej Szkoły Technik Komputerowych

ul. Koszykowa 86, 02-008 Warszawa

tel. 22 58 44 526, fax 22 58 44 503

e-mail: oficyna@pjwstk.edu.pl

Oprawa miękka

ISBN 978-83-63103-09-5

nakład: 150 egz.

Projekt „ Nowoczesna kadra dla e-gospodarki – program rozwoju Wydziału Zamiejscowego

Informatyki w Bytomiu Polsko- Japońskiej Wyższej Szkoły Technik Komputerowych.

Współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu

Społecznego. Poddziałanie 4.1.1 „ Wzmocnienie potencjału dydaktycznego uczelni” Programu

Operacyjnego Kapitał Ludzki

Wersja elektroniczna

ISBN 978-83-63103-62-0

(6)

Spis tre± i

1 Wstp ... 1

1.1 O zymidlakogojesttaksi¡»ka... 1

1.2 Przemysªgierwideo ... 1

2 Wieloplatformowy silnikgier wideo... 5

2.1 Silnikgierwideo ... 5

2.1.1 Pro estworzeniagrywideo... 5

2.1.2 Ideasilnikagierwideo ... 14

2.2 Ideawieloplatformowegosilnikagierwideo... 24

2.2.1 Tworzenie gry wideo na urz¡dzenie niebd¡ e komputerem... 24

2.2.2 Tworzeniegierwideoprzezna zony hnawieleplatform 31 2.2.3 Wieloplatformowysilnikgierwideo ... 41

3 Ar hitektura silnikawieloplatformowego... 53

3.1 Wybór jzykaprogramowania... 53

3.1.1 Rodzajejzykówprogramowania ... 53

3.1.2 Jzykprogramowaniaaprzezna zeniesilnikagierwideo 56 3.1.3 Ce hyjzykówprogramowania... 61

3.1.4 Wybórjzykadla elówtejksi¡»ki... 63

3.2 Organiza jalogi zna... 63

3.2.1 Podziaªfunk jonalnyelementówsilnika ... 63

3.2.2 Strukturalogi znasilnika... 67

3.2.3 Przepªywsterowaniawsilniku ... 70

3.3 Organiza japrojektusilnika ... 73

3.3.1 Strukturapodprojektów... 73

Borczyk, W., Kujawski, J. & Marzec, K., 2011. Architektura i programowanie

wieloplatformowych silników gier video. Warszawa: Wydawnictwo PJWSTK.

(7)

3.4 Organiza jakodu... 77

3.4.1 PrzydatneMe hanizmyC++ ... 77

3.4.2 Separa jakoduposz zególny hplatform... 80

4 Problemyzwi¡zane z wieloplatformowo± i¡ ... 91

4.1 Wyzwaniadlawieloplatformowegosilnika... 91

4.2 Ró»ni esprztowe ... 92

4.3 Wirtualiza jasprztu ... 95

4.4 Przykªadywirtualiza ji... 96

4.4.1 Wirtualiza jakontrolerówwej± ia ... 96

4.4.2 Wirtualiza japami iopera yjny h... 99

4.4.3 Wirtualiza japami imasowy h ...100

4.4.4 Wirtualiza jaurz¡dze«gra zny h ...103

4.5 Wykorzystaniespe y zny hjednostekwpro esora h...105

4.6 Ró»ni eformatówdany h ...109

4.7 Ró»ni ewimplementa jigry...111

5 Zarz¡dzanie pami i¡ opera yjn¡ ...115

5.1 Pami¢ opera yjna...115

5.2 Aloka jaorazdealoka japami i ...116

5.2.1 StertavsStos...116

5.2.2 Alokatormaªy hobiektów...118

5.2.3 Pami ioró»nym zasiedostpu...119

5.2.4 Implementa jaalokatorów...119

5.2.5 Alokatoryawielow¡tkowo±¢ ...126

5.2.6 Podsumowaniealokatorów...126

5.3 Menad»erzasobów...127

5.3.1 Ideamenad»erazasobów ...127

5.3.2 U hwyty,klu ze...128

5.3.3 Zli zaniereferen ji...135

5.3.4 Buforowaniei a he'owaniezasobów ...138

5.3.5 Wspóªpra amenad»erazasobówzalokatorem...139

5.4 Wielow¡tkowo±¢azasobyplikowe...140

6 Narzdziadiagnosty zne...141

6.1 Bªdy...141

6.1.1 Przy zynybªdów...141

6.1.2 Typybªdów...142

(8)

6.2 Debugger...144

6.3 Wykorzystanie kompila ji warunkowejdotworzeniawersji testowy h ...146

6.4 Aser je...147

6.5 Konsoladiagnosty zna ...149

6.6 ‘ledzeniewy iekówpami i...150

6.7 Proler...152

6.8 Monitorzasobów...155

7 Podsumowanie...159

7.1 Wspóª zesne silnikikomer yjne...159

7.2 Wspóª zesne silnikiopensour e'owe ...163

(9)

Wstp

1.1 O zym i dla kogo jest ta ksi¡»ka

Ksi¡»kataprzedstawiapro espowstawaniagierwideooraz elistnieniai spo-sóbwykorzystaniawieloplatformowy hsilnikówgierwideowi h implementa- ji. Wpra yprzedstawionajesttak»epodstawowaar hitekturataki h syste-móworazelementów,zktóry hs¡zbudowane,jakrównie»problemy,jakie mo-g¡wynikn¡¢przyi hprojektowaniui implementa jinaró»ny hplatforma h sprztowy horazprogramowy h.Celemtejpublika jijestprzedstawienie ró»-ny h rozwi¡za«stosowany hprzyrozwojusilnikówgierwideo w elulepszej o enyprzywyborzeistniej¡ egosilnika,lubte»pomo ywprojektowaniu wªa-snegosystemu.

1.2 Przemysª gier wideo

Rynek gier wideo na ±wie ie

Przemysªgierwideojestbran»¡,któraposiadaju»kilkudziesi ioletni¡ trady- j.Pierwsze,bardzoprostegrywideoza zªypowstawa¢ju»wlata h40-ty h XXwieku.Niebyªytoprogramy,le zsamodzielneurz¡dzeniazaprojektowane zwykorzystaniemelektroni zny hukªadówanalogowy h,nierzadko wykorzy-stuj¡ elaboratoryjneos yloskopydogra znejprezenta jiprzebiegu rozgryw-ki.Wrazzpowstaniempierwszy hkomputerów yfrowy hpojawiªysitak»e pierwszegrywideobd¡ eprogramamikomputerowymi.Programytew tam-tymokresieniebyªyni zymwi ejni» iekawostkami,tworzonymiwwolnym zasieprzezzapale« ówihobbystów.

Po z¡tekkomer yjnegorynku gierwideo miaªmiejs ew1971roku,wraz zpremier¡automatu ComputerSpa e.Byªtopierwszy automatstworzony w ela hzarobkowy h.Zostaªonwyprodukowanywli zbie1500egzemplarzy

(10)

kiegosuk esu(byªatrudnawobsªudze),jednakniew¡tpliwiezapisaªasiw hi-storiijakopo z¡tekistnieniatejbran»y.

Dzisiajbran»agierwideo,obokprzemysªulmowegoorazmuzy znegojest jedn¡znajwikszy hgaªziprzemysªurozrywkowego.Wedªuggsales

1

przewi-dywanawarto±¢rynkugierwideow2012rokuwyniesie68mlddolarówi b-dzienajszyb iejrozwijaj¡ ¡sigaªzi¡przemysªurozrywkowego.Jesz ze kil-kana± ielat temu studiaprodukuj¡ e gry wideo byªyrelatywnieniewielkimi przedsibiorstwami,posiadaªyniewielkiebud»etyi zstokilkupra owników. Dzisiaj rozma h orazbud»et przyproduk ji najwikszy h±wiatowy hhitów porównywalnymo»eby¢tylkozprzemysªemlmowym

2

,za±olbrzymi marke-tingsprawia,»eoproduk ja hty hgªo±nojestwewszystki hmo»liwy h ±rod-ka h masowego przekazu. Wysokobud»etoweproduk jezgarniaj¡ o zywi± ie ogromn¡ z±¢do hodówztegorynku,jednak»enajwiksz¡sprzeda»¡mog¡ obe niepo hwali¢siprodu en igierwideodlatakzwany hodbior ów asua-lowy h.Odbior y iniezwra aj¡uwaginanajwy»szejjako± igrak zyinne najnowszetrendyte hnologi znewgra h, le zo zekuj¡prostejiprzyjemnej rozrywkina odzie«,naj z± iejwgronierodzinylubznajomy h.Wrazz ol-brzymimwzrostemdostpno± iwszelaki hurz¡dze«,dlaktóry hwydawanes¡ grywideo,odbior y istalisinajwiksz¡grup¡wtejbran»y.Przegl¡daj¡ za± statystykisprzeda»ynaportaluVGChartz

3

,mo»emyzaobserwowa¢domina j wsprzeda»yproduktówzgatunkugierrekrea yjny hdlakonsolNintendoWii orazNintendoDSnadinnymigramidlabardziejwymagaj¡ y hgra zy, prze-zna zony h ho ia»bydlapopularny h konsol Xbox360i PlayStation 3. Do-mina ja ta wynika z kierunku,jaki obraªoNintendo dla swoi h produktów, aletak»ezogromnegowpªywumarki,któr¡rmatabudowaªaprzezlatajako dostaw agierprzyjazny hdlau»ytkownikówwka»dymmo»liwymwieku.

Dzikitemu,»egry asualowezazwy zajniewymagaj¡takdu»egonakªadu ±rodkówipra ywi hwytworzeniu,mo»nazaistnie¢wtejbran»ybez dyspono-waniawielomilionowymbud»etem.Ostatnimi zasyszansatastaªasiwiksza ni»kiedykolwiek.Ogromnailo±¢ ró»negorodzajuurz¡dze«,taki hjak telefo-nykomórkowe,netbooki,tablety,konsoleprzeno±neorazpopularno±¢ Flash-owy h giernastrona hinternetowy hspowodowaªawielkiezapotrzebowanie naprostegry,wktóry htaksamojakwpo z¡tka hbran»ydobrypomysªi wy-konanie li zysi o wiele wi ej ni» dostpny bud»et. Nie bez zna zenia jest tutaj tak»esposóbdystrybu ji,którywtaki hurz¡dzenia hrealizowanyjest naj z± iej przezInternet iró»nego rodzajuusªugi online.Brakkonie zno± i produk ji wersjipudeªkowy h zna znieograni zakosztyorazuªatwiastart niewielkimrmom.Zdrugiejstronyogromniezwikszakonkuren j.Narynku obe ny hjestbardzodu»oniewielki hdeweloperóworazwydany hprzezni h

1

http://vgsales.wikia. om

2

Dla przykªadubud»et hiturmy Ro kstar z 2008 roku -GTA IV, zamkn¡ª si kwot¡wprzybli»eniu100mlndolarów

(11)

gier,wzwi¡zkuz zymprzebi iesizwªasnymproduktemniemusiby¢w ale prost¡spraw¡.

Silnikigier wideo

Wikszo±¢produkowany hgier komputerowy hzawierawsobiewiele wspól-ny helementówtaki hjaknp.me hanizmyrenderowaniagraki,odgrywania d¹wików zyobsªugizyki.Spowodowaªotowyodrbnieniesipewny h sys-temówprogramowy hzawieraj¡ y hi hobsªugorazuªatwiaj¡ y htworzenie gierzi h wykorzystaniem-silnikówgierwideo.

Silnikwieloplatformowywdzisiejszy h zasa h jestju» wªa± iwie wymo-giem.Spowodowanejesttoobe no± i¡narynkutakwieluplatformdogier, po- z¡wszyodkomputerówosobisty hwyposa»ony hwró»nesystemy opera yj-ne,poprzezkonsoledogier(sta jonarne iprzeno±ne),dotelefonów komórko-wy h.Tworzeniegiernapodobneplatformywopar iu otakisilnikjest opªa- alne,gdy»traaonadowikszejrzeszyodbior ów,ni»gdybybyªa dedykowa-nanajedn¡tylkokonkretn¡platform.Tworz¡ grwieloplatformow¡,w opar- iuopewnezaªo»enia,otrzymujemykilkaproduktówkorzystaj¡ y hzbardzo wieluwspólny helementów.Grapowinnazosta¢zaprojektowanawtaki spo-sób,abyposiadaªamaksymalniedu»owspólny helementów,niezale»ny hod platformy,robi¡ tylkoniewielkiewyj¡tkidla z± i,którewlepszysposób wy-korzystuj¡danespe y zne e hywkonkretnejplatformie.Wopar iuodobry projektgrymo»liwejeststworzeniemodelitrójwymiarowy howystar zaj¡ o du»ympoziomiesz zegóªowo± idla najmo niejszejplatformy,grak dwuwy-miarowy hwnajwy»szejmo»liwejrozdziel zo± ijakrównie»d¹wikówi mu-zykiwnajlepszejjako± i.Dlasªabszy hplatformwystar zyod hudzi¢wy»ej wymienionezasoby.Wikszo±¢tªuma ze«pod zaslokaliza jigrypowinnaby¢ równie» wspólna. Przy dobrze zaprojektowanym silniku gry, kod logiki gry mo»ewªa± iwiesinieró»ni¢zale»nieodplatformy.Dzikisilnikowi wielopla-tformowemuwykorzystujesiwkilkuprodukta hpra wykonan¡przez pro-jektantów,graków,d¹wikow ów,muzyków,tªuma zy,programistówiwielu inny hludzizaanga»owany hwprojekt.

Wielermdeweloperski hrozwijawªasnysilnikgiernapotrzebytworzenia swoi hproduktów.Stworzenie wydajnego,dojrzaªegoi nowo zesnegosilnika jestjednak pro esem bardzozªo»onym iw zwi¡zkuztym drogim,nierzadko zbytdrogim,abysilniktakisªu»yªjedynienawªasnepotrzeby.Czst¡ prakty-k¡stosowan¡przezdeweloperówjestodsprzedawanieli en jinawykorzystanie silnikatymrmom,któreniezde ydowaªysi,alboniemaj¡±rodkówna pra-  nad wªasnym, lub wr z skon entrowaniesitylko na rozwojusilnikana sprzeda»,bezproduk jiwªasny hgier.

W przypadkumaªej rmy,której elemjest wej± ie narynekgier wideo, powstajepewiendylemat-kupi¢li en jnasilnik, zyrozwija¢swojewªasne rozwi¡zanie.Wykorzystaniegotowegosilnikajestgodnerozwa»enia-mo»emy

(12)

konsolilub innego urz¡dzenia. W zale»no± i od wybranegosilnikaprzyjdzie namjednakmniejlubwi ejzapªa i¢lubwr zpodzieli¢sizyskamize sprze-da»ywydanejgrywideo.Silniktakimo»ebowiemnieobsªugiwa¢wybrany h przeznasplatformjakte»niewspiera¢wwystar zaj¡ ysposóbme hanizmów, zktóry hmamyzamiarskorzysta¢.Dlatego zasemwartozastanowi¢sinad rozwojemwªasnegosilnika.Istniejete»trze iamo»liwo±¢,wktórejkorzystamy zgotowegosilnikairozbudowujemygooniezbdne dlanaselementy.Totak naprawdnaj zstszys enariuszzarównowmaªy hstudia hdeweloperski h, jakiudu»y hprodu entówgier wideo.

Wka»dymzwymieniony hpowy»ejprzypadkówprzydatnabdzie znajo-mo±¢podstawowejar hitekturysilnikówgierwideoielementów,zktóry hsi skªadaj¡.Pomo»enamtowsposóbprzemy±lanydokona¢wªa± iwegowyboru spo±ródwieludostpny hnarynkulubzwiksz¡wiedz¡zabra¢sido projek-towaniawprzypadkuwªasnejimplementa ji.

(13)

Wieloplatformowy silnik gier wideo

2.1 Silnik gier wideo

2.1.1 Pro es tworzenia grywideo

Poziom skomplikowania przedsiwzi ia

Wieluspo±ródty h,którzypróbuj¡profesjonalnielubhobbysty zniezgªbia¢ tajnikiprogramowaniawwybranym jzykuprogramowania,prdzej zy pó¹-niejstawiaprzedsob¡wyzwanienapisaniabardziejlubmniejskomplikowanej grykomputerowej.Prakty znieka»dy,ktomiaªkiedy±kontaktzkomputerem, zagraªwswoim»y iuwprzynajmniejjedn¡gr,naprzykªadsªawnyju»w biu-ra hPasjans.Stworzenieaplika ji,jak¡jestgrakomputerowa,makilka kon-sekwen ji.Przedewszystkim,bdziemytworzyliprodukt,którybdziemiaªza zadaniewywoªa¢uodbior yemo je.Wieleemo jibdziete»udziaªemsamego autora,gdy»sampro estwór zybdzieniminazna zony.Ponadtobdziemy musielizmierzy¢siz aª¡gam¡wyzwa«typowy hjedyniedlagier.Wszystko topowoduje,i»programowaniegierjestzna z¡ oró»neodprogramowania ap-lika ji,aledlawieluosóbró»newpozytywnymaspek ie- iekawsze, stanowi¡- ewyzwanieidaj¡ ezna zniewi ej satysfak ji.

Pod zaspisania pierwszy hgier zauwa»amypewienbardzoistotnyfakt -mianowi ie,jesttopro esbardzo zaso hªonny.Wzasadzietworzeniegier wi-deojestjednymznajbardziejzªo»ony hi zaso hªonny hpro esówze wszyst-ki hrodzajówoprogramowania.Pisz¡ naszepierwszegry,któres¡naj z± iej klonamijednejzprosty hgiertypuArkanoid,Tetris, zyWar aby, mo»e-myspdzi¢nadnimikilkatygodnilubmiesi y,anadalznalazªobysi o±, o mo»nabydopra owa¢.O zywi± iewrazzrozwojemnaszy humiejtno± i b-dziemypotralitworzy¢ oraz sprawniej,le z niewiele ratujetosytua j, bo ka»dagra,którejnapisaniasipodejmiemy,bdzie orazbardziej skompliko-wana.Bdziemywykorzystywa¢ orazwi ejzagadnie«zwszelki hdziedzin, zale»nieodtematykinaszegoprojektu:matematyki,zyki,graki

(14)

komputero-dzimydonieu hronnegowniosku-je»eliniejesttonaszhobbysty znypomysª z dªugoterminowym, kilkuletnim zasem realiza ji, to potrzebujemy wi ej programistów.

Ar hitektura Monolit

Wobe ny h zasa hwikszo±¢komer yjny hgierwideo pisanajestprzez zespoªykilku-kilkunastuprogramistów.Odlegªyjestju»pionierskiokres, kie-dygry powstawaªywgara»u,ajedenpasjonat bd¡ yjedno ze±nie progra-mist¡, grakiem i muzykiem nierzadkopotraª stworzy¢produkt, którybyª konkuren yjnynaów zesnymrynku.Dzisiaj,gdybud»etygªo±ny hgierwideo porównywalnes¡zbud»etamiwprzemy±lelmowym, takasytua jajest rza-dkaiowiele trudniejszadoosi¡gni ia.

Pra anadwspólnym kodem jestklu zowymzagadnieniemin»ynierii pro-gramowaniaipod zaspierwszy h prób zsto przy hodziztrudem. Jednym zgªówny hpowodówtegostanujestfakt,»epierwszeprogramymªody h pro-gramistów(itoniekonie zniegrykomputerowe,aleprogramywogóle) zsto przypominaj¡takzwanymonolit.

Monolitjesttoprogram,wktórymniemo»nawªatwysposóbwydzieli¢ se-k ji odpowiedzialny h za posz zególne zadania,np.algorytmika,obsªuga in-terfejsuu»ytkownika.Kodpowstajewmiejs u,wktórymakuratjest potrze-bny,zwykorzystaniemwieluzmienny hglobalny h.Ka»dafunk jaw progra-miemo»e odwoªywa¢sidoka»dejinnejfunk ji, wzwi¡zkuz zympowstaje skomplikowanasie¢poª¡ ze«,którawi¡»ewnierozerwalnysposóbkod powsta-j¡ egoprogramu.Naj z± iejkodznajdujesiwjednympliku¹ródªowym.

Monolitutrudniatworzeniewikszy hprojektów,poniewa»:

Jesttrudnywzarz¡dzaniu.Popewnym zasiepoª¡ zeniaizale»no± iw pro-gramiestaj¡ sibardzoskomplikowane.W tym momen ieka»da mody-ka jalubrozbudowafunk jonalno± ipowodujeniezamierzoneefektyw zu-peªnieinnej z± iprogramu,prowadz¡ edobardzotrudny hw odnalezie-niubªdów.Zale»no± i wtakim programiepo pewnym zasie uniemo»li-wiaj¡wr zwprowadzeniejaki hkolwiekmodyka jibezprzebudowy zna- znej z± ikodu.

Bardzoutrudnioneponowneu»y iekodu.Opra owaneprzeznas rozwi¡za-niaialgorytmypowinnyby¢u»ytewszdzietam,gdziejesttotylko mo»li-we,zamiastby¢implementowanenanowowtedy,gdyzajdziepotrzebai h u»y ia.Dzikitemuosz zdzamynaprawdwiele zasu.Doty zyto zarów-nowykorzystaniapewny hfunk jonalno± iwtymprojek ie,jakte» stwo-rzeniabibliotekizalgorytmamidlaprzyszªy hnaszy hprojektów. Nieste-ty,jestto niemo»liwe,je±li te rozwi¡zanias¡ zaszyte gdzie±w gªbi na-szegokodu.

Trudnadiagnostyka.Wka»dymprogramieprdzej zypó¹niejpojawi¡si bªdy.Monolit skute znie utrudnia odnalezienie ¹ródªa bªdny h dany h

(15)

tozewzgldunabrakwielokrotnegou»y iakodubardzoprawdopodobne jest,»ebdziemymusielipoprawia¢kodwwielumiejs a hprogramu.

Niemo»liwawspóªpra a.Pisaniekoduwposta imonolituprzypomina bu-dowaniedomuzkart.Dodanieka»dejkolejnejkartyjest oraztrudniejsze i zwiksza prawdopodobie«stwowidowiskowej katastrofy. Budowanie ta-kiegodomuprzezwi ejni»jedn¡osobjedno ze±niebardziejprzypomina sztuk yrkow¡,je±liwogólejestwykonalne.Zty hsamy hpowodów nie-mo»liwajestjedno zesnawspóªpra anadkodem, wktórymwszystko za-le»yodwszystkiego,iwdodatkukod aªegoprogramuznajdujesiw jed-nympliku¹ródªowym.

Pisanie pierwszy hprojektów zawszejest pewnegorodzaju eksperymentem, gdzie h emysprawdzi¢jakie±nowerozwi¡zanialub zegosiostatnio nau zy-li±my.Wwynikutegopisanykodjestprostyinastawionynaszybkiefekt.Po jegouzyskaniudogrydopisywanes¡kolejneelementyiusprawnieniaw miejs- a h gdziepoprostu jestto mo»liwe.W ten sposób bardzo szybkopowstaje bardzozawiªyinienajlepszykod.

Powstawaniemonolitówwpo z¡tkowy hetapa hnaukiwydajesijednak nieuniknione.Wikszo±¢podr znikówdonaukiprogramowaniawdowolnym zjzykówwtensposóbprezentujekodprzykªadowy hprogramówi¢wi ze«. Tosamodoty zyró»ny hsamou zkówu z¡ y hprogramowaniaz wykorzy-staniembibliotekjakOpenGL

1

zy Dire tX 2

. Wtensposóbªatwiejnau zy¢ sinarzdzia,jakimjestjzyklubbiblioteka,gdy»kodskupiasitylkona as-pekta hzwi¡zany hztymnarzdziem.

Programowaniewikszy hsystemówjestjednak zym±wi ej.Jestto sztu-kawykorzystaniategonarzdziaw eluuzyskaniapo»¡danegoefektui utrzy-maniaprojektu wryza hniezale»nieod jego wielko± ii li zby programistów nadnimjedno ze±niepra uj¡ y h.

›eby uzyska¢ taki efekt, program musi by¢ bardziej przemy±lany. Przed przyst¡pieniemdoimplementa jiwartopo±wi i¢tro h zasunajego zapro-jektowanie.Wªo»ona pra a,mimopozorniedodatkowego zasu, który musi-my po±wi i¢,szybkozwró i siz nawi¡zk¡przy ka»dejpó¹niejszejzmianie wkodzie zydodawaniunowejfunk jonalno± i.Modyka jestan¡siowiele prostszedowykonania iowiele mniej inwazyjnewstosunkudopozostaªy h z± iprogramu.

Pro es projektowania grywideo

Ka»dyzªo»onysystempowinienby¢zaprojektowanyprzedrozpo z iemjego powstawania.Doty zytojaknajbardziejoprogramowaniaigierwideo,które

1

OpenGL - uniwersalny interfejs do generowania graki implementowany przez bibliotekinawikszo± isystema hopera yjny h-http:/www.opengl.org

2

Dire tX-interfejsdogenerowaniagraki,d¹wikuiobsªugiurz¡dze«wej± iowy h rmyMi rosoftimplementowanyprzezbibliotekidlasystemówWindowsikonsol

(16)

mog¡by¢bardzozªo»onymisystemami.Projektjestpewnegorodzaju szablo-nemnakre±laj¡ ymogóln¡kon ep jikierunek,wktórymbdziemyrozwija¢ naszeoprogramowanie.Sz zególniewa»nejesttowtrak iepierwszy h proje-któw, pod zas który h najprawdopodobniej bdziemy badali ró»ne mo»liwe rozwi¡zania.Napo z¡tkuniemo»emyokre±li¢,naktóresizde ydujemy,lub bd¡ one wymy±lane na bie»¡ o pod zas pisania kolejny h elementów gry. Ogólnyszkieletpozwoliza howa¢namporz¡dekijaki±ksztaªt aªo± i, nieza-le»nieodtego,jakabdzie wersjaostate zna.

W trak ie programowanianieomal»e samoistnie bdzie sinam narzu a¢ strategiadzieli zwy i»aj,zktórejwartoskorzysta¢.

Deni ja 2.1 -Strategia dzieli zwy i»aj

Strategiakonstruowaniaoprogramowaniadzielizwy i»ajpolegana re-kuren yjnympodzialedanegoproblemunadwalubwi ejpodproblemów, a»powstaªezadaniabd¡ wystar zaj¡ omaªe,abywszybkisposób roz-wi¡za¢jebezpo±rednio.

Wka»dymprogramiemo»emywyró»ni¢ onajmniejkilkazupeªnie odrb-ny hmoduªówfunk jonalny h.Wprzypadkuprostejgrykomputerowejmog¡ toby¢np.:sterowanie(obsªugaklawiatury,myszy,gamepada,itp.), rendero-wanie

3

graki,obsªugad¹wikuorazlogikagry.Ka»dyzty helementów po-winienby¢projektowanyjakoniezale»nyodinnegoimo»ezosta¢zpewno± i¡ podzielonynamniejszefragmenty.Wwynikuty hpodziaªówotrzymamy pe-wnegorodzajuhierar hi,którapozwolinampod zasrozwi¡zywaniadanego problemu skupi¢siwyª¡ zenie nanim. W przypadku,gdy bdziemy h ieli usprawni¢lubzmieni¢sposóbdziaªaniaktórego±zelementów,poprostu mo-»nagowymieni¢lubzmodykowa¢,bez wpªywunainne.

Obe nie ogólnieprzyjtym paradygmatemprogramowaniadlawikszo± i zastosowa«jestprojektowanieobiektowe.Jesttopodej± iemo»liwienajbli»sze opisowirze zywisto± i,któr¡ h emyzapomo ¡oprogramowaniamodelowa¢. Bardzodobrzesprawdzisionorównie»przyprojektowaniugier komputero-wy h,która zstoprzedstawiajaki±fragmentrze zywistego±wiataiwsposób prakty znienaturalnyprzekªadasinaobiektyjzykaprogramowania.Tak»e takie e hyjaknp.enkapsula ja

4

idziedzi zenieuªatwiaj¡stworzeniespójnej, ogólnej ar hitekturynaszego programu,niezale»nej od fakty znej implemen-ta jiposz zególny helementów, dziki zemu w ªatwysposób bdzie mo»na podzieli¢pra pomidzyposz zególny hprogramistów.

3

Wgra hwideorenderingjesttogenerowaniedwuwymiarowegoobrazu stanowi¡- egopojedyn z¡klatkanima jinapodstawiedany hopisus enytaki hjak mo-deleznajduj¡ y hsinaniej,opiso±wietleniaitp.

4

Enkapsula ja-zabronieniedostpuzzewn¡trzdopólimetodklasystanowi¡ y h sz zegóª implementa yjny,nieistotny zpunktuwidzeniainterfejsu, zjakiminne

(17)

Rysunek2.1.Przykªadowahierar hia funk jonalno± iwgrzewideo

Wpra ytejdlapotrzebprojektowaniabdziemywykorzystywa¢model obiek-towy.WygodnymsposobemopisutakiegomodelujestjzykUML,przy wyko-rzystaniu któregoprzedstawia¢ bdziemy diagramyklas oraz inne elementy projektu.

Warstwowo±¢ oprogramowania

Projektowaniear hitekturyz wykorzystaniemparadygmatuobiektowego sa-mowsobieniegwarantujenamporz¡dku.Šatwowyobrazi¢sobiesytua j,gdy wwikszymprojek iepowstajedu»ali zbaklas,który hpowi¡zaniazesob¡ orazbardziejsikomplikuj¡, oprowadzidopowstanianierozerwalnej aªo± i i kodu, który trudnowspóªdzieli¢pomidzyró»nymi projektami.Sposobem, którypomagaunikn¡¢ty hproblemów,jestar hitekturawarstwowa.

Strategiadzieli zwy i»aj omawianapowy»ejmapewn¡niedogodno±¢. Zgodniez któr¡bardziej skomplikowaneklasy,posiadaj¡ e du»¡ funk jonal-no±¢niebd¡pisane aªeodzera,le zbd¡ implementowanez wykorzysta-niemmniejszy hklas,naktóretfunk jonalno±¢podzielili±mypod zas proje-ktowania.Podziaªwedªugtejstrategiipowodujepowstawaniestruktury drze-wiastej,gdzieli zbaklasnaposz zególny hpozioma hbdzie rosªawsposób wykªadni zy.Przy wikszy hprojekta htrudno jestzapanowa¢nad porz¡d-kiemwni»szy hpozioma hdrzewa,gdzieposz zególneklasypoprostumusz¡ zawiera¢to, zegowymagaj¡poziomywy»sze, zstozawieraj¡ podobnelub wr zpowtarzaj¡ esifragmentykodu.

Warstwowo±¢jest e h¡projektowania,którawprzypadkugierwideo po-jawiasiwsposóbnaturalny.Uzupeªniaonadoskonalestrategidzieli

(18)

zwy-Deni ja 2.2 -Oprogramowaniewarstwowe

Oprogramowaniewarstwowezbudowane jest zpewnegorodzaju wyspe- jalizowany hwarstwlogi zny h,komunikuj¡ y hsimidzysob¡za po-mo ¡± i±leokre±lony hinterfejsów.

Ide¡warstwowo± ijestto,byniedzieli¢funk jonalno± ika»dejklasyz oso-bna,le z sporz¡dzi¢pewn¡grupmniejszy h klastakdobrany h,aby stano-wiªypewnegorodzajuprefabrykaty,zktóry hbdziemo»naskªada¢ obiek-tywiksze.Tak¡grup¡klasjestwªa±niewarstwa,któraskªadasizobiektów opodobnympoziomieabstrak jiiktórebd¡wykorzystanedlatworzenia obie-któwowy»szympoziomieabstrak ji- kolejnejwarstwy.

Dzikipodziaªowinawarstwy,li zbaobiektówwni»szy hpartia hdrzewa orazi hzawarto±¢bdzie bardziejprzewidywalnai uporz¡dkowana.Kolejn¡ zalet¡jestto,»efunk jonalno± ikolejny hwarstwbd¡odseparowane.Ka»da kolejnawarstwazale»¡ aodsamejsiebieiwarstwni»szy hjestprojektowana i implementowana niezale»nie oraz rozwi¡zuje naj z± iej problemy ze sob¡ powi¡zane.Wystawia pewieninterfejsdlawarstwywy»szej,ukrywaj¡ przed ni¡sz zegóªyimplementa yjne.

Wprzypadkugierwideoar hitekturawarstwowabardzouªatwiai h proje-ktowanie.Podziaªfunk jonalno± inaposz zególnewarstwyjestzawsze pªyn-ny idyskusyjny,le zprzykªadowaar hitekturawarstwowa,którawystar zy dostworzeniazaawansowanegoprojektu,mogªabywygl¡da¢ wtensposób:

 Systemopera yjny/SDK 5

-warstwazawieraj¡ afunk jeiobiekty udostp-nianeprzezsystemopera yjnypodktórypiszemy,jakrównie»system gra- zny(np.Dire tX,OpenGL)id¹wikowy(np.Dire tSound

6

,OpenAL 7

), który h h emyu»ywa¢.Zt¡warstw¡za zynamypra ,de yduj¡ sina implementa j pod dan¡platform sprztow¡i programow¡.Naj z± iej mamyju»j¡gotow¡,le zwniektóry h,skrajny hprzypadka h(np.pisanie emulatorainnejplatformy,implementa japrogramowegorenderera gra-ki)bdzietrzebaj¡odpowiedniodostosowa¢.

 Obsªugaurz¡dze«izasobów -warstwazarz¡dzaj¡ azasobamigra znymi, d¹wikowymi,pami i¡opera yjn¡orazdeniuj¡ aobiektyobsªugi urz¡-dze«wej± iowy h,pami imasowejitp.

 Frameworkgier -warstwazawieraj¡ aobiekty,którebd¡ u»ywaneprzez programistówprojektuj¡ y hi pisz¡ y h konkretn¡gr, np.obiekty

gra-5

SDK(SoftwareDevelopmentKit)-zestawnarz¡dziprogramisty zny h, dokumen-ta jiibibliotekwspomagaj¡ y htworzeniepewnegorodzajuoprogramowania

6

Dire tSound -interfejssªu»¡ ydoodtwarzaniairejestrowania d¹wiku,bd¡ y z± i¡ skªadow¡interfejsu Dire tX

7

OpenAL-uniwersalnyinterfejsdoodtwarzaniad¹wikuimplementowanyprzez bibliotekinawikszo± idostpny hsystemówopera yjny h-http:/www.openal.

(19)

Rysunek2.2.Przykªadowypodziaªwarstwowygrywideo

 zne2D/3D, obiekty d¹wikowe, systemy obsªugi kolizji, systemy z¡s-te zkoweitp.

 Implementa jame hanikigry -pierwszawarstwa,wktórej implementowa-najestkonkretnagrawideo.Wprzypadkupierwszy hgierpisany hprzez po z¡tkuj¡ y hprogramistówjestjedyn¡warstw¡,opró zSO/SDK,która zawierawsobiewszystkiepozostaªe,poª¡ zonewjedn¡ aªo±¢.Warstwata powinnajednakzawiera¢tylkome hanikgry.Je±liwnaszejgrze posz ze-gólnepoziomypotrzebuj¡dodatkowegooprogramowania,toi h implemen-ta japowinnasiznale¹¢wkolejnejwarstwie,natomiastwtej,pozostawi¢ ogólnereguªygry.

(20)

posz ze-samym jzyku o kod me haniki gry, le z dobrym pomysªem jest u»y ie odrbnegojzykaskryptowego.Dzikitemupod zaska»dejmodyka ji ist-niej¡ ego zypodoªo»eniukolejnegopoziomuniebdziepotrzebna rekom-pila ja aªegoprojektu.Pozatymotrzymujemywyra¹n¡grani pomidzy logik¡ame hanik¡poziomu wgrze.Skryptyniemaj¡prakty znie»adnej mo»liwo± i ingeren jiwlogikzaimplementowan¡ wwarstwa hni»szy h, otrzymuj¡ tylko± i±leokre±lon¡funk jonalno±¢.Jesttobardzowa»na za-leta,którasprawia,»egrawideostajesiowielebardziejodpornanabªdy popeªnianepod zaspisaniaskryptów.Dzikitemui himplementa j mo-»emybez obawpowierzy¢osobieniebd¡ ej programist¡.

Spe jaliza japrogramistów

Dzikiprawidªowejar hitekturzeistrukturzewarstwowejgrawideomo»eby¢ pisanaprzezwieluprogramistówjedno ze±nie.Jestelasty znapodwzgldem wprowadzaniazmianwka»dejzwarstwpod warunkiemtylkobrakulub nie-wielki hzmianwinterfejsiepomidzynimi.

Tutajnasuwasikolejnywniosek. Otó»tworzeniegrywideo jestjak naj-bardziejpro esemwytwór zym,awka»dymtakimpro esieklu zemdo uzys-kaniaoptymalnej wydajno± i i jako± i produk ji jest spe jaliza ja pra owni-ków.Podziaªwarstwowyuªatwia izarazemdeniujet spe jaliza j. Progra-mi± inies¡dobieraniwsposóbdowolnydozada«zwi¡zany hzimplementa j¡ danegoprojektu,le z z± iejspe jalizuj¡sidozada«wrama hktórej± wa-rstwy,wzale»no± iodwªasny hpreferen ji zy umiejtno± i.

Pierwszetrzywarstwys¡domen¡programistówsilnikowy h(Engine pro-grammers).Mo»napowiedzie¢,»enie s¡onizwi¡zanizbytmo no ztym,jak wygl¡datworzonagrawideo orazzjejme hanik¡.I hzadaniemjestgªównie dostar zeniejaknajbardziejkompletnejiwydajnejfunk jonalno± ipotrzebnej przyjejtworzeniu.Przypierwszejwarstwie(SystemOpera yjny/SDK)pra a polega gªównie na wspóªpra y z pomo ¡ te hni zn¡ dostar zy iela sprztu iewentualnymwprowadzaniupoprawekiaktualiza ji.Kolejnedwiewarstwy (Obsªugaurz¡dze«izasobóworazFrameworkgier)mog¡podzieli¢ programi-stówsilnikowy hnaniskopoziomowy hiwysokopoziomowy h(mowa o zywi-± ie opoziomieabstrak ji,anie poziomie umiejtno± i).Pierwszazni hjest warstw¡wewntrzn¡,wi gªównyna iskjestpoªo»onynawydajno±¢oraz fun-k jonalno±¢rozwijany hrozwi¡za«,pod zasgdydrugajestwarstw¡,zktórej korzysta¢bdzie kolejnaspe jaliza japrogramistów,wi bardzo wa»najest tak»ear hitekturai projektudostpniony hfunk jonalno± i.

Drug¡spe jaliza j¡s¡programi± igier(Gameplayprogrammers). Korzy-staj¡zFrameworkuiodpowiedzialnis¡zawarstwme hanikigry.Toodni h zale»y,jaktagrabdziewygl¡da¢,dziaªa¢i zybdziemiaªaprzyjazne stero-wanie(o zywi± ieprzywspóªpra yzdesignerami,grakamiid¹wikow ami). Dlatejgrupyprogramistówwa»niejszajestumiejtno±¢interdys yplinarnego

(21)

najbardziejwydajnegorozwi¡zania.Tutajrównie»bardzowa»najest ar hitek-tura,któramusiby¢elasty zna,gdy»jesttowarstwa,którabdzienajmo niej poddawana modyka jompod zasdodawanianowy h elementówdogrylub i husprawniania.

Ostatni¡warstw¡zajmuj¡siskryptow y(S ripters).Odni hzale»y uroz-mai eniei iekawo±¢posz zególny hpoziomów wgrze.Zalet¡ udostpnienia tejwarstwywposta iniezale»negood kodugry skryptujestto, »e niekonie- zniemusz¡sini¡zajmowa¢programi± i.Skryptys¡naj z± iejnatyle pros-te,»emo»ejepisa¢osobnagrupaprojektantówpoziomów,niekonie znie obe-znany hzjzykamiprogramowania.

Ponownewykorzystanie wspólnegokodu

Jednymzgªówny hzaªo»e« rmzajmuj¡ y hsitworzeniemgier wideojest wydanieprzynajmniejkilkutytuªów,aniezako« zeniedziaªalno± ipo pierw-szymproduk ie.Pra aprogramistówstanowizna zn¡ z±¢kosztówtakiego projektu,dlategoniezale»nie, zystrategi¡rmyjesttworzeniekilku projek-tównaraz, zypra anadnimikolejno,bardzowa»nejestponowne wykorzy-staniekodu.

Prakty zniewszystkiegrywideo,niezale»nieodi hgatunku,wielko± i zy tematykibd¡posiadaªyzna zn¡ z±¢wspóln¡.Bdzietou»y iepami i, za-sobówgra zny h,zasobówd¹wikowy h,wykorzystanieurz¡dzenia wej± io-wegodosterowania zyte»renderowaniegraki2Dlub3D.Opró zpewnego zbiorufunk jonalno± i,któreznajd¡wykorzystaniewka»dejgrzewideo, mo»-nawydzieli¢zbiórtaki h,którebd¡wystpowaªywprojekta hdosy¢ zsto, zale»nieodi h gatunku.

Wspólnafunk jonalno±¢pokrywasizpierwszymitrzemawarstwami zap-rezentowanejar hitekturygrywideo,dlategoprostymsposobemnaponowne wykorzystaniekodujestwydzieleniety hwarstwdoosobnegoprojektu,wten sposób,»ebywszystkieistniej¡ eprojektygiergowspóªdzieliªy.Wspólny pro-jekt mo»e by¢wykorzystanyjakobiblioteka dynami zna,staty zna lubjego kodmo»eby¢u»ytybezpo±rednio.

Wydzieleniewspólnej z± imawielezalet.Ka»dadodanafunk jonalno±¢ lubpoprawkibªdóws¡ jedno ze±niedostpnewewszystki h inny h

(22)

projek-ta h.Cz±¢wspólnabdzieewoluowaªairozwijaªasinado±wiad zeniu kolej-ny hgierwideo,tworzony hzjegowykorzystaniem,dziki zemubdziemiaªa oraz mniej bªdów,bdzie oraz wydajniejsza i bardziejkompletna.Wa»n¡ zalet¡jestto,»ebdzieniezmiennadlaprogramistówkorzystaj¡ y hz warst-wyFramework.Dzikitemu ka»dyprogramistagier bdzie mógªszybko roz-po z¡¢pra wdowolnymprojek ie,bez zaso hªonnegoprzestawianiasina inn¡te hnologi.

2.1.2 Idea silnika gier wideo

Silnikobejmujedrug¡itrze i¡warstwar hitektury(Obsªugaurz¡dze«i zaso-bóworazFrameworkgier)napisany hnapodstawiewarstwypierwszej, zyli przyjtego systemu opera yjnego oraz SDK gra znego. Mo»emy je imple-mentowa¢sami,le zje±liznajdziemygotowypodsystem,któregoar hitektura nam odpowiada,ali en japozwala namnajego u»y ie,mo»emyzawrze¢go wswoimsilniku.

Deni ja 2.3 -Silnikgier wideo

Silnikgierwideo jestto systemoprogramowania,zaprojektowanyw elu wspomaganiaprojektowaniaitworzeniagier wideo.

Przykªadowyzbiórpodsystemówsilnikagierwideo mo»ewygl¡da¢tak:

Podsystemy niskopoziomowe(Core)

Alokatorpami iopera yjnej -u»y iesystemowegoalokatorapami i opera- yjnejniezawszejestnajlepszymrozwi¡zaniem.Systemowyalokator po-przezogromn¡ilo±¢wpisów,jak¡musizarz¡dza¢,orazprzezkontrole spój-no± ipami i, jak¡wykonuje pod zas jejrezerwa jiizwalniania,jest re-latywnie wolny, o mo»e mie¢ istotny wpªyw na wydajno±¢ gry wideo, je±li potrzebujemy aloka ji du»ej ilo± i maªy h bloków pami i. Innym problemem jest fragmenta ja pami i, która mo»e pojawi¢ si po pew-nym zasiedziaªaniaaplika jinaurz¡dzenia hposiadaj¡ y htejpami i niewiele,bezsystemustroni owania.Efektemfragmenta jijestbrak mo»-liwo± i zarezerwowaniawikszy h blokówpami i, o mo»esipoprostu sko« zy¢ zawieszeniem naszego programu. Dobry alokator pami i spe- jalizowanypodwzgldemszybko± ialoka jib¡d¹prze iwdziaªaj¡ y frag-menta jimo»eby¢klu zowypodwzgldemstabilno± i,jakte»wydajno± i aªegosilnika. Nale»y jednak pamita¢, »e ¹le napisanywªasny alokator pami ibdziezazwy zajmniejwydajnyodalokatorasystemowego, jed-no ze±niestanowi¡ poten jalne¹ródªopowa»ny hbªdów.

(23)

generowanedynami znie,któres¡potrzebnedlafunk jonowaniaró»ny h obiektówsilnikowy himog¡by¢przezniewspóªdzielone.Mog¡toby¢np. tekstury,daned¹wikowe,anima je,siatkitrójk¡tówitp.Rol¡menad»era zasobówjestdbanie,abywszelkiezasobybyªydostpnewpami i,kiedy obiektysilnikowebd¡ i hpotrzebowaªy.Obejmuje tow zytywanie zaso-bów dopami i,strumieniowaniedu»y h zasobów,usuwanie niepotrzeb-ny hzasobów zyte» a he'owaniezasobów.

Obsªuga pami i masowej - systemobejmuje obsªug blokowegooraz stru-mieniowegozapisuiod zytudany hzurz¡dze«pami imasowy h.W za-le»no± iodplatformy,której doty zysilnikgierwideo,mo»eto by¢dysk twardy,napdDVD,pami¢ash, kartrid».

Obsªugaurz¡dze«wej± iowy h-systemobsªuguj¡ ypodª¡ zanie/odª¡ zanie urz¡dze«wej± iowy h i pobieranie dany h z ni h otrzymywany h. Urz¡-dzeniawej± iowe obejmuj¡ w zale»no± i od platformy mysz, klawiatur, gamepad,joysti korazinneak esoriawposta ikierowni y,pistoletu ±wie-tlnegoitp.

Obsªugaurz¡dze«d¹wikowy h-systemodgrywaniad¹wikówwró»ny h for-mata h, obsªuga mikserad¹wikowego, DSP, efektówd¹wikowy h oraz d¹wikuwielokanaªowego.

Renderer -wsilnikugierwideoobsªugujewszystkieurz¡dzeniarenderuj¡ e (karty gra zne). Zadaniem rendererajest obsªuga kamerw tryba h 2D i3D,le zprzedewszystkimrysowaniewszelki hsilnikowy hobiektów gra- zny h,wtakisposób,abyzostaªywy±wietlonepoprawnie.Obejmujeto okre±laniewido zno± i obiektów wka»dej klat e,rysowaniei h w odpo-wiedniej kolejno± i orazz odpowiednimiustawieniami urz¡dzenia rende-ruj¡ ego.

Podsystemy wysokopoziomowe(Framework)

Systemkolizyjny-jestpodstawowymelementemsilnika,dzikiktóremu mo»-naokre±li¢wyst¡pieniezy zny hinterak jipomidzyobiektamina s e-nie.Systemtenpozwalazdowolnieprzyjt¡dokªadno± i¡ustali¢, zydwa dowolneobiektyza hodz¡ nasiebieorazkiedytakolizjanast¡piªa. Dzi-kiniemu jest mo»liwaimplementa ja wszelki huderze«, trae« po iska-mi,aletak»eporuszaniasipotereniel¡dowymiograni ze«ru huprzez ± iany.

Systemzy zny -pozwalasymulowa¢interak jepomidzyobiektamina s e-niezgodniezprawamizyki.Obiektomprzypisujesi e hy,takiejak ma-sa,ksztaªt,prdko±¢liniowaik¡towa.Dzikitemumog¡nasiebie oddzia-ªywa¢pod zaszderze«.Baz¡dlasystemuzy znegojestsystemkolizyjny. Systemsztu znejinteligen ji -Jesttozbióralgorytmówinarzdzisªu»¡ y h dopodejmowaniade yzjiprzezkomputerowegogra za.Wi hskªad w ho-dz¡algorytmydowyszukiwaniadrogi,rozpoznawaniaksztaªtów

(24)

podejmo-stosuj¡ te hnologie takie jak: logika rozmyta, sie i neuronowe, systemy ekspertowe,maszynystanów,itp.

Parsery 8

i interpreteryjzyków skryptowy h i XML - Parser jzyka XML wspieraobsªugplikówdany hwtymforma ie,któremog¡zawiera¢ usta-wieniakongura yjnegry,obiektówgra zny h,materiaªów,anawetdane aªy hsiatektrójk¡tówobiektów3D.DokumentyXMLs¡tak»e wykorzy-stywaneprzyprzesyªaniukomunikatówpoprzezsie¢.Interpreteryjzyków skryptowy h,takiejaknp.LUAwspomagaj¡tworzenieskryptówz zewn-trzn¡logik¡,któr¡mo»eby¢naprzykªadkodpoziomugry.

System z¡ste zkowy -systemsªu»¡ y domodelowaniairenderowania efek-tówgra zny h,taki hjakogie«, dymlubopadyatmosfery zne.System tenwykorzystujedu»¡ilo±¢ punktowy h z¡stek,któreulegaj¡interak ji midzysob¡,zoto zeniem,atak»eulegaj¡silewirtualnejgrawita ji. Ren-derowanes¡jakopojedyn zesprite'y

9

ipo»¡danyefektpowstajepoprzez odpowiednienagromadzeniedu»eji h ilo± iwjednym miejs uekranu. Zbiórobiektów gra zny h -Jesttozbiórobiektów,którepotranarysowa¢

rendererizktóry hmo»ekorzysta¢programistaw eluutworzenias eny. Wi hskªadw hodz¡takieobiektyjak:kamery,±wiatªa,sprite'y,obiekty tekstowe,modele3Dstaty zneianimowane,systemyrenderowania hmur itp.

Zbiór obiektówd¹wikowy h -Jesttozbiórobiektówkorzystaj¡ y hz urz¡-dze«d¹wikowy h,przezna zony hdoumiesz zenianas enieprzez prog-ramist.Obiektyte symuluj¡zy zneistnienie ¹ródªad¹wikuw przest-rzenis enyzgodniezprawamizyki.Naprzykªadporuszaj¡ wwirtualnej przestrzenitakim¹ródªemd¹wiku, automaty zniezostaniezastosowany odpowiednioefektDoppleraipozy jonowanied¹wiku,korzystaj¡ z gªo-±ników.

Systemobsªugilokaliza ji -Wikszo±¢dzisiejszy hgierwideojestwydawana przynajmniejwkilkuwersja hjzykowy h.Systemlokaliza jizarz¡dza da-nymi zale»nymi od wersji jzykowej (danetekstowe, d¹wikowe, gra z-ne)idostar zaodpowiedni¡i hwersjwzale»no± iodaktualniewybranej kongura jijzykawgrze.

Interak ja z u»ytkownikiem

Jednymzesposobówklasyka jisilnikówgierjestto, wjaki sposób zrealizo-wanajestinterak jazu»ytkownikiem, zyliosob¡,którazajegopomo ¡ h e

8

Parserjesttoprogramanalizuj¡ ytekstw elurozpoznaniajegostrukturyi zgod-no± izpewn¡gramatyk¡formaln¡.Naj z± iejstosowanyjestdoanalizyjzyków programowanialubjzykówopisudany htaki hjakXML.

9

Sprite-wgra hwideojesttodwuwymiarowyobraz,którypoewentualny h prze-ksztaª enia htaki hjaktransla ja,skalowanieirota jajestprzenoszonynaekran,

(25)

stworzy¢grwideo.U»ytkownikiemsilnikaw aleniemusz¡by¢programi± i -mog¡toby¢designerzy,gra ylubte» aªyzespóª.Sposóbinterak jideniuje, ktonimbdzieidokogojestskierowany.

Silnikw posta iudostpnionego SDK

Jednymzmo»liwy h podej±¢jest zaprojektowaniesilnikajakobiblioteklub te» zbiórbibliotekjakiego±jzykaprogramowaniaudostpniony h wposta i SDK, zylikodubiblioteki,dokumenta jiiprzykªadowy hkodów¹ródªowy h. Jestto rozwi¡zaniebardzointui yjne, wywodz¡ esizwydzielenia wspólnej funk jonalno± igierdoosobnejbiblioteki.Wtympodej± iupra nadgr¡ wi-deorozpo zynamyodstworzeniaaplika jiwpewnymjzykuprogramowania. Naj z± iejjesttotensamjzykprogramowania,wktórymzostaªstworzony silnik,jednak»eniejesttokonie zne-wa»nejestnatomiast,bywybranyjzyk potraªzty hbibliotekskorzysta¢.Nastpniedoª¡ zamybibliotekisilnikado projektuirozpo zynamyimplementa j gry,w zympomagaj¡namzawarte wni helementy.

U»ytkownikamitegotypu silników, ojesto zywiste,s¡prawiewyª¡ znie programi± i,gdy» ka»dy elementtworzonej grytrzebapoprostuzakodowa¢. Wprzypadkuwikszy hprojektówjestjaknajbardziejwskazane,by udostp-ni¢ mo»liwo±¢ u»y ia zewntrzny h skryptówi plikówkongura yjny h,le z funk jonalno±¢tamusiby¢zrealizowanapostroniegry.

Silnikitegotypus¡bardzoelasty zne.Toprogramistade yduje, zyu»yje danejfunk jonalno± isilnika, zyte»wdanymprzypadkumo»elepiejbdziej¡ zmodykowa¢lubzaimplementowa¢samemu.Wbardzoªatwysposóbmo»na te»rozbudowywa¢takisilnikokolejnemoduªy,bd¡ epoprostukolejnymi bi-bliotekami.Dzikitemupod zastworzeniagryograni zaj¡nastylko wyobra-¹nia,mo»liwo± isprztuibud»et.

Wad¡takiegorozwi¡zaniajestjednakdo±¢du»apra o hªonno±¢przy two-rzeniaprojektu-stworzenienawetprostegoprototypumo»ezaj¡¢du»o zasu. Dostosowywaniegrypod wzgldemnp.wizualnympowinnoanga»owa¢tylko graka,niestetyprzysilnikuwposta iSDKzazwy zajniezbdnybdzie pro-gramista.Sytua jpoprawidbanieoudostpnianienarzdziiplików kongu-ra yjny h,le ztojestkolejnyelement,którytrzebaprzewidzie¢inapisa¢.To powoduje,»ewprojek iepotrzebny hjestwieluprogramistów, oo zywi± ie kosztuje.

‘rodowiskotworzenia gier wideo -silnik edytorowy

Silnikitegotypumo»nabyokre±li¢mianemedytorówdotworzeniagier. Pra- uj¡ znimi,niebdziemymusielinapisa¢ ho¢bylinijkiw»adnymnatywnym jzykuprogramowania.Silnikiteskªadaj¡sizwieluró»negorodzaju

(26)

edyto-s enie,edy jimodeliimateriaªów.Logikagrynaj z± iejrealizowanajest po-przezró»nejzykiskryptowelubwyklikiwanes hematyblokowe.

Silnikjestwªa± iwieinterpreteremdany hwposta iskryptów,plików opi-sus enyiwszelkiegorodzajuinny hzasobów.Zpunktuwidzeniau»ytkownika niejestwa»najegoar hitekturawewntrzna.Samsilnikjest zarn¡skrzynk¡, ajedyne, ou»ytkownikmo»ezoba zy¢,to interfejs,któryjestudostpniony przezedytoryinarzdzia.

Takirodzajsilnikówdosy¢jasnookre±laswoi hpoten jalny h u»ytkowni-ków.Bd¡todesignerzy,skrypterzy,gra y,d¹wikow y,którzymaj¡pomysª nagr,le zniemaj¡mo»liwo± ilubnie h ¡skupia¢sinapra y programis-ty znej.

Napisanietegorodzajusilnikajestjednak sporymwyzwaniem.Musi by¢ ondobrzezaprojektowany,awsz zególno± idoty zytointerfejsówedytorów inarzdzi.Nie mani bardziejfrustruj¡ ego,ni»brakmo»liwo± iwykonania jakiej±prostej zynno± ilubzrealizowaniaswojegopomysªunajaki±element grytylkodlatego,»eprojektan itegonieprzewidzieliijesttopoprostu nie-wykonalne.Je»elisilniktaki maby¢narzdziemuniwersalnym dopra ynad dowolnym gatunkiemgier, to musi by¢te» bardzo rozbudowany. Grywideo mog¡zawiera¢ogromneilo± iró»ny helementów,zktóry hka»dymo»e by¢ zrealizowanynawielesposobów.Silniktakibdzietymlepszyimwi ejbdzie i hzawieraª,gdy»twór agrybdziezazwy zajmógªskªada¢grtylkozty h elementów,któreznajdziewjegointerfejsie.

Niew¡tpliw¡zalet¡tegorodzajusilnikówjestmo»liwo±¢szybkiego tworze-nia,wsz zególno± ibardzoszybkiegotworzeniaprototypów.Osobaznim do-brzezaznajomionamo»ewprostysposóbwyklika¢kilkaprototypówdanego elementugry, zktóry h najlepszy zostaniewybranydo rozbudowydo wersji nalnej.

Silniktakizawszejednakbdziemniejelasty znyni»silnikdostpnyw po-sta i bibliotekiprogramisty znej.Opró z mo»liwo± i sprztowy h przez aªy zasograni zanassko« zonyzbiórelementów,którysiwnimznalazª.W naj-bardziej nawet rozbudowanym silnikuzawsze jednak zego±zabraknie, gdy» jegoprojektan iuznalitozazbdnelubwr znieopªa alne.Problememmo»e by¢równie»i hwydajno±¢.Popierwszezewzgldunalogikgry,któraw a-ªo± ibdzieinterpretowana,wposta iskryptówlubró»negorodzajugrafów, le zniebdzieszybkimkodemnatywnym.Ztegopowodumo»natak»e zapom-nie¢ojakiej±bardziejzªo»onejalgorytmi ewty hskrypta h,którepoprostu zajªybyzbytdu»omo yobli zeniowejpro esoraitrzebabyzda¢sina algo-rytmyumiesz zonewsilniku.Drugimpowodemni»szejwydajno± imo»eby¢ samaideatakiegosilnika.Grawideobudowanajesttutajzdu»y h prefabry-katów,któreniestetyniezawszewnajbardziejodpowiedni sposób s¡ doniej dopasowane.

PrzykªadowymsilnikiemgierwideotegotypujestznanyUnrealEngine, zwykorzystaniemktóregopowstaªaogromnailo±¢gierwideo,tak»ety h

(27)

naj-gªo±niejszy htytuªów.Dozastosowa«niekomer yjny hjest ondostpny nie-odpªatnie w posta i UDK (Unreal Development Kit

10

), dziki zemu ka»dy h ¡ yspróbowa¢swy hsiªmamo»liwo±¢siznimzmierzy¢.

Rysunek 2.4.Przykªadowysilnikedytorowy-UnrealEngine3

UDK jest typowym silnikiem edytorowym, w którympod zas tworzenia grywideonienapiszemyanijednejliniikoduwnatywnymjzyku programo-wania.Caªy pro es powstawaniaprojektuza hodziw rozbudowanym edyto-rze, posiadaj¡ ym ogromne mo»liwo± i, le z li zba dostpny h w nim op ji mo»e tak»eprzytªo zy¢pod zaspierwszegopodej± ia.Zalogikpowstaj¡ ej gry odpowiadajzykskryptowyUnrealS ript Language,stworzony spe jal-nienapotrzebytegosilnika.

Podej± ie mieszane

Je±liwtejklasyka jis¡tak skrajnerozwi¡zania,jakpowy»sze,posiadaj¡ e prze iwstawnewadyorazzalety,too zywistejest,»epojawi¡sirozwi¡zania mieszane. Silnikitakiestaraj¡siª¡ zy¢ elasty zno±¢silnikówbibliote zny h zszybko± i¡iªatwo± i¡pra ysilnikówedytorowy h.

(28)

Rysunek2.5.Warstwysilnikaspe jalizowanego

Rozwi¡zaniarealizuj¡ etakie podej± ie mog¡by¢ró»ne. Jednymz przy-kªadówmo»e by¢silnik, któregopodstawaopartajest na biblioteka h udos-tpniony hwposta iSDK.Natejpodstawiezaimplementowany hjestwiele narz¡dzi,sªu»¡ y hdoszybkiegostworzeniaprototypu,którewystar zaj¡do naj z± iejrealizowany hzastosowa«.Bardziejrozbudowaneispe jalisty zne elementymo»nadodawa¢dzikiudostpnianemuSDKjakoniezale»nemoduªy lubwty zkidoistniej¡ y hnarzdzi.

Poziom abstrak ji silnika

Deni ja 2.4 -Poziom abstrak ji

Poziomabstrak jijesttopoziomzªo»ono± idanegosystemu.Imjest ni»-szy,tymwi ejdetalipotramydostrze irozró»ni¢,aimjestwy»szy,tym owikszy hibardziejzªo»ony hobiekta hmówimy,aleniewgªbiaj¡ si wsz zegóªy.

(29)

Poziomabstrak jisilnikagierwideookre±la,najakimpoziomieabstrak ji bdziepra owaªjegou»ytkownikizjakimiobiektamibdziemiaªdo zynie-nia.Silniknaniskimpoziomiebdziegªówniezawieraªobiektyproste,który h dopiero programistagry u»yjedomodelowaniabardziejzªo»ony hobiektów. Przykªadowomogªybytoby¢podstawoweobiektygra zne,takiejak Tekstu-ra,Sprite,Model3D.Natomiastsilniknawysokimpoziomiebdzie zawieraª obiektybardziejzªo»one,ªatwiejszewu»y iu,gdy»bd¡ju»wpewiensposób przygotowane. Z drugiej strony odbija si to na i h mniejszej elasty zno± i. Przykªademmógªbytuby¢obiektmodelu zªowiekazprzygotowan¡obsªug¡ anima jiszkieletowy h,systememporuszaniasipoterenieorazmo»liwo± i¡ podpi iad¹wikówpodpredeniowaneak je.

Mo»naztegowy i¡gn¡¢wniosek,»eimsilnikjestprzezna zonydobardziej ogólny hzastosowa«,tymjegopoziomabstrak jijestni»szyianalogi znie ro-±niewrazzjegoukierunkowaniempodktóry±zgatunkówgierwideo.Jestto prawd¡,le ztrzebate»zauwa»y¢,»esilnikmo»emie¢kilkapoziomów abstra-k ji. NajªatwiejotowsilnikuudostpnianymjakoSDK, gdziepoziomy abs-trak jipowstaj¡samoistniewrazzar hitektur¡warstwow¡oraz me hanizma-midziedzi zeniai polimorzmu. Trudniejotaki wa hlarzpoziomóww silni-ka hedytorowy h,naj z± iejniematamnajprostszy hobiektów.Wynikato z faktu, »e ogromna i h li zba musiaªaby by¢ stworzonana s enie, o utru-dniªoby zarz¡dzanienimi zpoziomuedytora orazwpªynªoby nawydajno±¢ takiegosilnika,gdy»obsªugaka»degoobiektuwsilnikuedytorowym wprowa-dzado±¢ spory narzutobli zeniowy.

Silnikispe jalizowane

Skorowrazzpoziomemabstrak jisilnikagrywideoro±niejegoukierunkowanie pod konkretnygatunek gier, tost¡djest ju» tylkokrokdo silników spe jali-zowany h.Grywideo,któreklasykujemywrama hjednegogatunku, posia-daj¡ wiele e h wspólny h. Wykorzystuj¡ podobne obiekty, dziaªaj¡ wedªug podobnejme hanikiiwpodobnysposóbwykorzystuj¡zasobysprztowe. Sil-nikspe jalizowanyzawieraelementyuªatwiaj¡ etworzeniepewnegogatunku gierlubwpeªniskupiasinatym zadaniu.O zywi± ienajwa»niejszy el i h istnieniatoprzyspieszeniepro esuimplementa jigry.

Silnikispe jalizowane mog¡powsta¢poprzezrozbudowsilnikaogólnego. Popierwszesprowadzasitododopisaniadoniegokolejnejwarstwy rozszerza-j¡ ejjegofunk jonalno±¢,zawieraj¡ ejwysokopoziomoweobiektyialgorytmy. Podrugierozszerzanyjestzestawnarzdzisilnikowy h, gªównie o wyspe ja-lizowane edytory pra uj¡ e przewa»nie na obiekta h dostar zony h przez t now¡warstw.

Innymrodzajemspe jaliza jis¡silnikitworzoneodpo z¡tkuzmy±l¡o da-nymgatunku.S¡tonaj z± iejsilnikiedytorowe.Interfejsudostpniony u»yt-kownikowitowªa±niewysokowyspe jalizowanyedytor,którydzikitemu,»e

(30)

Rysunek2.6.Edytors enysilnikaWintermuteEngine

kiestworzeniegrypoprzezwyklikanieorazdostar zenieewentualny h skryp-tówzawieraj¡ y hlogik.Samsilnikwtymwypadkujesttylkointerpreterem plikówdany hotrzymany hztegoedytora.Dzikiw¡skiejspe jaliza jimo»e jednakby¢bardzowydajny.

Przykªadowy silnikspe jalizowany -Wintermute Engine 11

PrzykªademtakiegotypusilnikajestWintermuteEngineDevelopment Kit, darmowysilniksªu»¡ ydotworzeniagierprzygodowy hwte hnologii2Doraz 2.5D(trójwymiaroweposta ieorazdwuwymiarowetªa s enyiobiekty).

Jestonwªa± iwiewyso ewyspe jalizowanymedytorem,stworzonymz my-±l¡otworzeniugierprzygodowy hitowdodatkuwedªugzaledwiejednej me- haniki Wska»ikliknij (Point&Cli k

12

)-opartejnawarstwa hzªo»ony h zdwuwymiarowy hteªiobiektówinteraktywny hzewentualnymi trójwymia-rowymiposta iami.Silne wyspe jalizowaniejednakograni za,niestworzymy wtymsilnikugryinnegogatunku,le znieotoprze ie» hodzi.Jego najwik-sz¡zalet¡jestto,»ejestniewielki,dziki zemujestprostywobsªudzeiszybki do nau zenia.Powoduje to, »e pro estworzeniagry wideo lubjej prototypu jestbardzoszybki, oo zywi± ieograni zakosztyjejpowstawania.

11

WintermuteEngineDevelopmentKit-http:/dead- ode.org

12

Point&Cli k jesttotypgryprzygodowej,wktórejsterowanie rozwi¡zanejest za pomo ¡ urz¡dzenia wskazuj¡ ego(np.interfejsdotykowylub mysz).Za jego pomo ¡ wskazuje si punkt na s enie, gdzie powinien przej±¢ bohater gry lub

(31)

Ró»negorodzajuak jenaprzedmiota horazlogikgrywsilniku Winter-mute oprogramowujesizapomo ¡jzykaskryptowegoWMES ript,który opartyjestnajzykuJavaS ript.

Poni»ej pokazany jest przykªadowy wy inek skryptu opisuj¡ ego obiekt wentylatoranas enie,deniuj¡ yreak jgrynaak jeObejrzyj orazWe¹ wykonanenatymobiek ie.

#in lude "s ripts\base.in "

global StateRoom;

on "LookAt" {

a tor.GoToObje t(this);

a tor.Talk("It's a fan. I an hange its spinning speed."); }

on "Take" {

a tor.GoToObje t(this); Game.Intera tive = false;

// get the fan entity

var EntFan = S ene.GetNode("fan");

// set the fan etity sprite depending on the state variable // (0-off, 1-normal, 2-false)

if(StateRoom.FanSpeed==0) {

a tor.Talk("It's turned off. I'll turn it on..."); a tor.PlayAnim("a tors\molly\ur \tak e1.sp rite "); EntFan.PlaySound("sounds\fan_st art. ogg") ; a tor.PlayAnim("a tors\molly\ur \tak e2.sp rite "); Sleep(1400);

EntFan.SetSprite("s enes\room\s prit es\fa n.sp rite" ); StateRoom.FanSpeed = 1; / save the new fan state }

// ... }

Listing2.1-1-Przykªadowyskryptak jiwentylatora wjzykuWMES ript

Narzdzia silnikowe

(32)

gier, ajedno ze±nieumo»liwiaj¡podziaªpra ypomidzyosobytworz¡ egr niebd¡ eprogramistami.

Pierwsz¡grup¡ stanowi¡ narzdziadiagnosty zne, przezna zone gªównie dlaprogramistów,poprawiaj¡ ekontrolnadstabilno± i¡,wydajno± i¡i wy-korzystaniemzasobówprzezgrwideo.Najwa»niejszezni h to:

debugger -podstawowenarzdziediagnosty zneka»degoprogramisty poz-walaj¡ enakrokow¡pra zprogramem,podgl¡dwdowolnymmomen ie za-warto± ipami i,zmienny horaz± ie»kiwykonywanegoalgorytmu,

konsoladiagnosty zna -pozwalaj¡ awyprowadza¢wposta itekstowej in-forma jediagnosty znezdowolnegomiejs agry,

wykrywa z wy ieków pami i - wykrywa niezwolnione obszary pami i, októrebardzoªawowwikszy hprojekta h,

proler-narzdzieumo»liwiaj¡ eo enwykorzystaniamo yobli zeniowej pro esoraprzezokre±lonefragmentykoduifunk je,dziki zemumo»na wy-kry¢izoptymalizowa¢najbardziejob i¡»aj¡ esystemfragmenty,

monitorzasobów - narzdziesªu»¡ edomonitorowaniawdowolnym mo-men iezaªadowany hprzezsilnikzasobówistopniai hwykorzystania.

Drug¡grup¡s¡narzdziadoedy jizasobów,którebd¡ªadowaneprzezsilnik. Silnikigierwideoposiadaj¡ zstowªasneformatydany hdlaró»ny h rodza-jówzasobów,dziki zemujestmo»liwei h w zytanieioptymalne wykorzys-tanie.Dzikitymnarzdziomosobyniebd¡ eprogramistamimog¡edytowa¢ zasobygry.Wskªadtaki hnarzdzimog¡w hodzi¢naprzykªadedytory mo-deli3D,anima ji, materiaªów,shaderów

13

, z ionekitp.

Inn¡grup¡narzdzis¡ edytorys enipoziomów,dzikiktórymwszybki sposóbmo»narozmie± i¢obiektynas enieorazprzypisa¢imskryptyi intera-k je.Edytory tegotypu naj z± iejs¡ elementemsilnikówedytorowy h,le z zsto s¡ równie» implementowane dla potrzeb edy ji poziomów konkretnej grywideo.

2.2 Idea wieloplatformowego silnika gier wideo

2.2.1 Tworzenie grywideo naurz¡dzenie niebd¡ ekomputerem

Pro es powstawania oprogramowania

Pierwszepodej± iadopisaniagierwideo maj¡przewa»niena elustworzenie gry dziaªaj¡ ej nakomputerze PC zjego najpopularniejszym obe nie syste-mem opera yjnym MSWindows. O zywi± ieta kongura janie jestjedyn¡,

13

Shader jest to program wykonywany przez pro esor gra zny pod zas pro esu renderingu, obli zaj¡ y kolor pikselipowstaj¡ ego pod zas tegopro esuobrazu

(33)

naktór¡tworzones¡grywideo.Ka»dysystemopera yjnymazawszetro h innyzestawfunk ji, któreudostpniaprogrami± ie,wzwi¡zkuz zymnawet wprzypadkugrywygl¡daj¡ ejidenty znienaró»ny hsystema h,i hkod b-dziesiró»niª.Rodzajili zbaty hró»ni bdziewzna znymstopniuzale»na odjzykai±rodowiska,którezostaªy wybranedotworzeniadanejgry wideo. Wznakomitejwikszo± i przypadkówniebdzie mo»liweu»y ie tegosamego kodunaró»ny hsystema h bez przynajmniej z± iowy hmodyka ji.

Taró»norodno±¢nie ko« zysinasystema hopera yjny h dla kompute-rówosobisty h.Gry wideo prze ie»s¡ tworzonetak»enawiele inny h urz¡-dze«,za zynaj¡ odtelefonówkomórkowy h,anaró»negorodzajukonsola h przeno±ny h zysta jonarny hko« z¡ .Ka»dezty hurz¡dze«jest obsªugiwa-neprzezbardziejlubmniejrozbudowanysystemopera yjnynimzarz¡dzaj¡ y. Poª¡ zeniesprztuorazsystemuopera yjnego tworzyodrbn¡platform,na któr¡mo»epowstawa¢oprogramowanie,wtym grywideo.

Deni ja 2.5 -Oprogramowaniewarstwowe

Platformajestto zestawieniear hitekturysprztoweji interfejsu progra-mowegoumo»liwiaj¡ euru hamianieoprogramowania.

Pojawiasitutajjednakpewienproblem.Oileu»ytkowaniegierwideojest wykonalnenaka»dymzty hurz¡dze«,bowko« uwtakim eluzostaªy napi-sane,tosampro estworzeniagrynienawszystki hzni hjestwogóle mo»li-wy.Przykªadowogdy h emystworzy¢grkomputerow¡naplatformLinux, najm¡drzejszymrozwi¡zaniemjestpisaniejejnakomputerzeztakimwªa±nie systemem opera yjnym. W trak ie pro esupowstawaniagry bdziemy setki razyj¡uru hamia¢itestowa¢,apra anaplatformie,którajedno ze±niejest do elowa, pozwoli zrobi¢ to szybkoi sprawnie. W przypadku tworzeniagry wideo na konsole sprawajestjednak trudniejsza. Mo»na bysobie wyobrazi¢ jakie±narz¡dzielubedytoruru hamianebezpo±rednionakonsoli,pozwalaj¡ e dopra owywa¢ró»negorodzajuparametrygrylubnawettworzy¢ aªe pozio-mylubi helementy.Jednaktworzenie aªejme hanikigry,wsz zególno± ijej ni»szy hwarstwniejestmo»liwe,gdy»byªobytobardzotrudnedo zrealizowa-niai poprostuniewygodne.W przypadkukonsolprzeno±ny hlubtelefonów komórkowy htworzeniegiertylkozi h wykorzystaniemjesttrudnedo wyo-bra»enia.

Mo»naztegowy i¡gn¡¢jeden wniosek. Pra aprzytworzeniugier wideo prakty zniezawszeodbywasizwykorzystaniemkomputerów,niezale»nieod tego,najak¡platformdo elow¡powstaj¡.Pojawia situtaj jednakkolejny problem - tworzone oprogramowanie trzeba o zywi± ie prdzej zy pó¹niej uru homi¢.Wprzypadkuwykorzystaniakompilowanegojzyka programowa-niapotrzebnejestutworzenieplikuwykonywalnego.Kompilator,którego b-dziemy u»ywa¢ na komputerze, musi mie¢ mo»liwo±¢ zbudowaniabinarnego

(34)

którejjesturu hamiany.Takitrybpra ynazywamykompila j¡skro±n¡( ross ompilation) i jest onobe nie wspierany przez wiele ró»ny h kompilatorów. Przykªadowodarmowykompilator GCC

14

, któryjestdostpnynawikszo±¢ komputerowy hsystemówopera yjny h,posiadamo»liwo±¢kompila ji skro±-nej nainne systemy,atak»enainne pro esoryiurz¡dzenia.

Uru hamianieproduktu na urz¡dzeniu do elowym

Kiedymamyju»plik wykonywalny,mo»emygouru homi¢naplatformie do- elowej.Rozwi¡za«,wjakisposóbmo»natozrobi¢,jestkilka,wzale»no± iod tego,jakisprztposiadamy.

Przeniesienie naplatform do elow¡

Pierwszy i hyba najbardziej intui yjny sposób uru homiania gry wideo tworzonej nainnej platformie to przeniesieniepliku wykonywalnegooraz plikówdany hnaurz¡dzeniedo elowe.W zale»no± iodurz¡dzeniamo»e to wygl¡da¢ wró»ny sposób. Przykªadowodla aplika ji Javanatelefony komórkowebdzieto polegaªonautworzeniuplikustanowi¡ egopakiet instala yjny(plikiJAR-JavaAR hive),którymo»emyutworzy¢na kom-puterze, korzystaj¡ z dostar zony h narz¡dzi deweloperski h, nastpnie przenie±¢dopami i telefonui uru homi¢.W przypadkukonsol zarówno sta jonarny h,jakiprzeno±ny h,aplika jeorazgryuru hamiasi, przewa-»niekorzystaj¡ zno±nikówzewntrzny h.Dlakonsolsta jonarny hbdzie tonaj z± iej no±nikopty znywposta iDVD lubBluray,natomiastdla konsol przeno±ny hno±nikiem dany h s¡ gªównieró»nego rodzaju kartri-d»e.Korzystaj¡ znarzdzideweloperski hdladanejplatformy,tworzony jest obraz dany h dysku lub kartrid»a, który nastpnie mo»emy zapisa¢ nano±niku,korzystaj¡ zodpowiedniejnagrywarkiiuru homi¢nakonsoli podobniejakka»d¡inn¡grwideo.

Sposóbtenmajednakswojewady.Aplika jpod zaspisaniapowinni±my uru hamia¢dosy¢ zsto,abymó w ze±niewykrywa¢bªdyikontrolowa¢ napisanyprzeznaskod.Pozatymwieleproblemówwystpuj¡ y hpod zas pisaniagrywideonajlepiejrozwi¡zujesido±wiad zalnie, otak»e wyma-ga zstegouru hamiania.Przygotowywaniepa zkiinstala yjnejb¡d¹ ob-razu,anastpnieprzenoszenienakonsoljestbardzo zaso hªonneimo»e siszybkookaza¢,»e tenpro es po hªanianamwikszo±¢ naszego zasu. Problememmog¡by¢tak»esameno±niki -wprzypadku konsol sz zegól-nie no±niki opty zne. Nie mog¡ to zazwy zaj by¢ zwykªe pªyty DVDR/ RW,ale drogiespe jalnepªytyjednorazowegozapisu,wi zste uru ha-mianieopró z straty zasu mo»e nasnarazi¢ nadu»y koszt.Prakty znie wszystkienowekonsole posiadaj¡ tak»ezabezpie zenia uniemo»liwiaj¡ e uru hamianiegierzno±nikównieoryginalny h.Przygotowanieno±nika,aby

14

(35)

uru homiª sinakonsoli,mo»e by¢tak»ebardzo u i¡»liwe,je»eliwogóle bdzie wlegalnysposóbwykonalne.

Jednak najwa»niejszymproblemem przytym sposobie uru hamianiagry wideojestbrakkontrolinadwykonaniemprogramu.Dopodstawowy h na-rzdzika»degoprogramistypowinnynale»e¢debuggeriproler, pozwalaj¡- enaszybkiewykrywaniebªdóworazoptymaliza jkodu.Niestety,tutaj nie mamy mo»liwo± i i h wykorzystania. Czsto jedyn¡ mo»liwo± i¡ po-siadania jakiej± kontrolinad kodem bd¡ informa je testowe, któresami umie± imynaekranie.

Urz¡dzeniedeweloperskie

Problemy zwi¡zane z powy»szym sposobem sprawiaj¡, »e jest to bardzo nieefektywnysposóbpra y.Dlategowªa±niermyprodukuj¡ ei rozwijaj¡- ekonsolezajmuj¡sitak»edostar zaniemdeweloperomspe jalny h urz¡-dze«wspomagaj¡ y htworzenieoprogramowania.Urz¡dzeniatespeªniaj¡ ró»nefunk je,zale»nieodprodu entaoraztypukonsoli.Jednymz warian-tówjestnaprzykªadspe jalnawersjakonsoli,umo»liwiaj¡ auru hamianie niezabezpie zony hno±ników,apozatymnieró»ni¡ asini zymodwersji sklepowej.Inneproblemyzwi¡zanezprzenoszeniempozostaj¡,le z urz¡-dzenietakiepozwala ho ia»bywsprawnysposóbdokona¢prezenta jigry wideowtedy,gdyjestonajesz zewwersjirozwojowej.Jednakdla progra-mistównajbardziejinteresuj¡ ymurz¡dzeniembdzietzw.zestaw dewelo-perski(DEV-KIT),któryeliminujeprakty zniewszystkiepowy»sze prob-lemy.Zestawtakijesttospe jalnieprzygotowanawersjakonsoli,a o naj-mniej urz¡dzenie,które t funk j konsolispeªnia,gdy» zasamima ono zupeªnie inn¡ budow i wersji sklepowej nawet nie przypomina. Zestaw takijestprzezna zonydowspóªpra yzkomputereminarzdziaminanim uru homionymi,komunikujesiznimpoprzezsie¢lubte»inneª¡ za,np. USB.Poª¡ zeniezkomputeremmadwagªówne ele.Pierwszymznimjest dostar zaniedokonsoliplikuwykonywalnegoidany h.Zestawtakinie po-siadanapduno±nikówzewntrzny h,le zzamiasttegowszystkiedanes¡ bezpo±rednioprzesyªanezkomputerapod zasuru hamianiaiumiesz zane wpami iwewntrznej,zazwy zajzrealizowanejwformiedyskutwardego. Dzikitemumo»naszybkoisprawnieuru hamia¢grpoka»dejkompila ji zyte»modyka jidany h.Drugim elemkomunika jizkomputeremjest bardzowa»na mo»liwo±¢ jego wspóªpra y z narzdziami deweloperskimi. Dzikipoª¡ zeniu mo»emy u»y¢ debuggerado pra y krokowej, prolera, dokonywa¢symula ji ró»negorodzajubªdów.

Zestawdeweloperskijestnajlepszymnarzdziemdotworzeniagrylub apli-ka jinakonsol.Posiadajednakjedn¡do±¢istotn¡wad - en.Ceny ta-ki hzestawóws¡bardzowysokie,mog¡przekro zy¢kosztsklepowejwersji konsolinawet kilkadziesi¡trazy.Przygrzewideo mo»epra owa¢odkilku dokilkudziesi iuprogramistówjedno ze±nie.Dostar zeniezestawu dewe-loperskiegodlaka»degoprogramistystajesinaprawdpowa»nym

(36)

wydat-przypadkuzestawymusz¡ by¢wspóªdzielonepomidzyprogramistów, o mo»eby¢u i¡»liwe,lubtrzebasobieradzi¢winnysposób.

Emulator

Gdybrakujezestawówdeweloperski h,auru hamianienasklepowy h wer-sja hkonsoljestzbytu i¡»liwe,pozostajejesz zejedensposób,mianowi ie pra azwykorzystaniemprogramowegoemulatora.Emulatorjestto opro-gramowanie,którejaksamanazwawskazujeemulujedziaªanieinnej plat-formynakomputerze.Pra aznimwygl¡dawi nabardzowygodne roz-wi¡zanie,jedynysprzt,jakiegopotrzebujemy,tokomputer,naktórym pi-szemy,kompilujemyi wka»dej hwilimo»emyszybkouru homi¢gr, ob-serwuj¡ jejdziaªanie naekraniekomputera.

Rozwi¡zanietojestobie uj¡ e,jednak»emakilkapowa»ny h niedogodno-± i.Pierwsz¡zni hjestwspóªpra aznarzdziamitakimijakdebugger

15 . Jestonamo»liwaprakty znietylkowtedy,kiedydostaw ¡emulatorajest produ entkonsoliizarazemnarzdzideweloperski halbokiedysami stwo-rzymytakiemulator.Wprzypadkuu»y iaemulatoradostar zanegoprzez strontrze i¡ mo»emyotejwspóªpra yzapomnie¢.

Dlaemulatorapewnymproblememmo»eby¢wygodneodwzorowanie urz¡-dze«wej± iowy h.Dokonsolmo»emypodª¡ zy¢wielerozmaity h kontro-lerów,zapomo ¡który hmo»liwejeststerowaniegr¡.Oilesymulowanie gamepadanaklawiaturzekomputerajestprostedozrealizowaniainawet wygodnewu»y iu,tokontroler±ledz¡ yswoj¡pozy jwprzestrzeniza po-mo ¡ak elerometrówlub»yroskopówjestwprakty eniemo»liwydo pop-rawnegoodwzorowania.Kolejnym sporymproblememprzy pra yz emu-latorem mo»e by¢ jego wydajno±¢. Komputer musi symulowa¢ dziaªanie pro esorakonsoli,którynajprawdopodobniejbdziereprezentowaª zupeª-nieinn¡ar hitekturorazwszystkieurz¡dzeniawewntrzne.Powodujeto, »emo obli zeniowakomputeramusiby¢owiele wikszani» emulowanej konsoli.Takwi oileemula jakonsolprzeno±ny hniestanowiprzewa»nie wikszegoproblemu, to dlakonsol sta jonarny h, posiadaj¡ y h naj z±- iejzbli»on¡mo obli zeniow¡dowspóª zesny himkomputerówtakie roz-wi¡zaniejestniemo»liwe.Testowana grawideo lubaplika japra owaªaby zkilkukrotniemniejsz¡ prdko± i¡, o wyklu zasensowneu»y ie takiego emulatora.Jesz zeinn¡niedogodno± i¡mo»eby¢jako±¢,zjak¡konsolajest odwzorowana w emulatorze. Konsola zy jakiekolwiek urz¡dzenie, które ma by¢ platform¡ do elow¡ dla gry wideo, jest bardzo zªo»onym syste-mem,zawieraj¡ ymwielewspóªpra uj¡ y hzesob¡ukªadów,dziaªaj¡ y h zstoasyn hroni zniewzgldemsiebie.Dokªadneodwzorowanietego spo-sobudziaªaniamo»eby¢poprostuniemo»liwedozrealizowaniazapomo ¡ oprogramowania.Powodujeto,»eemulatornigdynieodwzorowujekonsoli wsposóbdoskonaªy,wi nawetwprzypadku,gdyemula jajestgªównym sposobempra y przy pisaniugry wideo,to konie znejest zste

uru ha-15

(37)

mianiegry na urz¡dzeniudo elowym lubzestawiedeweloperskimw elu kontrolijejdziaªania.Uru hamianietakiepowinni±myprzeprowadza¢tym z± iej,im z±¢tegooprogramowaniaaktualnierozwijanabardziej zwi¡-zanajestzesprztem iSDKdanejplatformy,wi doty zytow sz zegól-no± ipra ynadsilnikiemgierwideo.

Rysunek2.7.Emulatormobilnegosystemuopera yjnegoAndroid 16

U»y ie silnika wieloplatformowego

Uru hamianie narze zywistym zy te» emulowanym urz¡dzeniu do elowym mo»eby¢problematy zne,nasz z± ieistniejeinnerozwi¡zanie.Programi± i silnikowis¡nierozerwalniezwi¡zanizesprztemiSDKdanejplatformy, nato-miastdlaka»dejwy»szejwarstwytopowi¡zaniejest oraztomniejsze.Je»eli programistawy»szy hwarstwoprogramowania, zylity hwarstwju» bezpo±-redniozwi¡zany hzkonkretn¡gr¡bdziemiaªzagwarantowanystaªyinterfejs biblioteksilnikowy h,tonie madlaniegowikszegozna zenia,najak¡ plat-formaktualnie pisze,wko« ume hanikagrywideo ijej algorytmys¡ niez-mienne.

Tutajnasuwasiodrazupewnerozwi¡zanie-silnik,napodstawiektórego pisanajestgrawideo,mógªbyte»jedno ze±niedziaªa¢naplatformie

do elo-16

(38)

-wej( zylinaprzykªadjakiej±konsoli)oraznakomputerze,takimsamymjaki u»ywanyjestprzezprogramistówpod zaspra y.Przyzapewnieniustaªego in-terfejsuprogramisty znegokod¹ródªowytworzonejgry byªbyidenty znydla obuplatformiuru homianienaka»dejzni hwymagaªobyjedynie przekompi-lowaniakoduzu»y ieminny hbiblioteksilnika,u»ywaj¡ innegokompilatora b¡d¹inny h jegoustawie«. Dlaprogramistygry wideo aªeto zamieszanie zró»nymi platformami jestprakty znie niewido zne, dziki zemupowy»sze rozwi¡zaniejestbardzowygodne.Pisaniekodu,uru hamianiego,prolowanie orazwszystkieinne zynno± izwi¡zanezjegotworzeniemmog¡odbywa¢si zwykorzystaniemjedyniekomputera,bezpotrzebykorzystaniazinny h urz¡-dze« zyoprogramowaniawposta iemulatorów.Przyspieszatozna znie aªy pro espowstawaniakodugrywideo.U»ywaniewszelki hnarzdzi diagnosty- zny hjestdu»oprostszenakomputerze, ho ia»byzewzgldunai hli zb, jakajestdostpnanarynku-niejeste±myprze ie»ju»ograni zenidojednego dostaw ynarz¡dzi, zyliprodu entaurz¡dzenia,naktóretworzymy.Pozatym programi± ikorzystaj¡ yztakiegosilnikabd¡u»ywa¢ty hsamy hnarzdzi bezwzgldunaplatform,naktór¡tworzonebdzieoprogramowanie.Dziki dobrej znajomo± inarzdzi kod gry bdzie powstawaªszyb iej i bdzie miaª zna zniemniejbªdów,niebdzie tak»epotrzebyprzeprowadzaniaszkolenia przyka»dejzmianienanow¡platform.Bezw¡tpieniazmniejszytotak»e za-potrzebowanienazestawydeweloperskie,atoozna zakonkretneosz zdno± i nansowe.

Tworzeniegrywideonakomputerze,pod zasgdyprzezna zonajestna in-nysprztmao zywi± ieswojewady.Komputerorazkonsolaposiadaj¡ró»ne mo»liwo± iizasobysprztowe.Doty zytonaprzykªadwydajno± ipro esora, ukªadugra znego zypojemno± idostpnejpami iopera yjnej. Programis-tateorety zniejestod ityodwszelki hspe y zny hwªa± iwo± iurz¡dzania, naktórebdzie przezna zoneoprogramowanie.Zadaniemtakiegosilnika wie-loplatformowegojestwko« ui hmaskowanieije»eliprogramistabdziepisaª swoj¡ z±¢kodugrywideonakomputerze,tou»ytysilnikpozwolimuw mak-symalnysposóbwykorzysta¢wydajno±¢tegokomputera.Niestety,o zywi± ie nieprzekªadasitozazwy zajnawydajno±¢np.konsoli-grabdzienakonsoli dziaªaªa du»owolniej i miaªaproblemy zwoln¡pami i¡.Pomimo posiada-nia komfortuod i ia od sz zegóªówSDK i bibliotekprogramisty zny h da-nejkonsoli,programistamusizna¢przynajmniejwprzybli»eniujejmo»liwo± i, aod zasudo zasujednakuru hamia¢naniejswójkodw elu ho ia»by kon-troli, zymo»liwo± isprztuniezostaªyprzekro zone,lubprze iwnie, zynie jestdostpnyjesz zejaki±zapasmo ydowykorzystania.

Innym problemem, podobniejak wprzypadkuu»y iaemulatora,jest od-wzorowanieurz¡dze«wej± iowy h.Wieleurz¡dze«mo»nazpowodzeniem zas-t¡pi¢kontroleramidostpnymidlakomputera,le zdlaniektóry h,sz zególnie spe y zny hdladanejkonsolibdzietoniemo»liwe.Jesttopewne utrudnie-nie,le zjegowpªywmo»naograni zy¢.Zale»nieo zywi± ieodtyputworzonej

(39)

grupprogramistów.Prawdopodobnieudaimsiwydzieli¢ konsollub urz¡-dzenie deweloperskie, na którym bd¡ mogli ten system przetestowa¢ i do-kona¢niezbdny hustawie«wtakisposób,abysterowanietobyªowygodne. Dlaresztyprogramistówniebdzietomiaªowikszegozna zenia, zypra uj¡ ze sterowaniem, którew 100% odpowiada temu, które wykorzystane bdzie wko« owymproduk ie,je±litylkowszystkiejegofunk jebd¡wjaki±sposób emulowane.

2.2.2 Tworzenie gier wideoprzezna zony h nawiele platform

Pro es powstawania wieloplatformowej grywideo

Powy»szezastosowaniesilnikaobsªuguj¡ ego wi ej ni» jedn¡ platformjest bardzopomo newpro esiepowstawaniagierwideo,le zo zywi± ieniejestto zastosowaniegªówne,którymjesto zywi± ie

. . .

wydanieproduktunawi ej ni»jedn¡platform.

Pro esproduk jioprogramowania,zwªasz zaza±gierjestpro esembardzo kosztownym,sz zególnieje±li h emystworzy¢du»y,konkuren yjnyprodukt. Wynikato ho ia»byzdu»egonakªadupra y,jak¡musz¡wykona¢ programi-± i,o zymwspomnianoju»w ze±niej,aledoty zytotak»eka»degoelementu skªadaj¡ egosinapro esjejproduk ji, zyligraki,muzyki,designu, testo-waniaitworzeniapoziomów.Tendu»ykosztwynikazprostegora hunku li z-byludzipra uj¡ y hprzyty hwszystki helementa hrazy zastrwania proje-ktu.Grawideo,»ebyjejpowstaniemiaªojakikolwieksensekonomi zny,musi nasiebiezarobi¢.Narynkuzpowodzeniemistniejekilkakonsolsta jonarny h, przeno±ny horazró»neplatformygierna telefonykomórkowe,komputerowe grysta jonarne,ashowe,anawetprzegl¡darkowe.Abyproduktprzyniósªjak najwikszezyski,trzebagowyda¢najaknajwiksz¡li zbplatform,by zmak-symalizowa¢gronoodbior ów.

Wydaniegrywideonawieleplatformmo»eby¢bardzoopªa alne.Zjednej stronypomna»amyrynekdlanaszegoproduktu,zdrugiej stronykoszty uzy-skania wersji na inne urz¡dzenie b¡d¹ system nie musz¡ by¢ bardzo wiel-kie, sz zególnieje»eli zostanie to przewidziane w ze±nie w fazie projektowa-nia gry. Wersje na posz zególne platformy nie musz¡ by¢ identy zne, le z imbardziejbd¡ dosiebiepodobne,tym wi ejwspólny h elementówtrzeba bdzie wykona¢ tylko raz. Doty zy to zarówno designu gry, graki, dany h d¹wikowy h, tekstów,ale tak»ei kodu,który mo»e by¢wspólny, dziki za-stosowaniusilnikawieloplatformowego.We¹mynp.grwideo,któr¡ h ieliby-±my wyda¢ jedno ze±nie na dwie popularne konsole sta jonarne-Xboxa 360 i PlayStation3. Wydajno±¢oraz mo»liwo± i ty h konsol s¡ bardzo zbli»one, dziki zemuprakty zniewszystkiedanegra zne,muzy zne,modele3Dbd¡ mogªy by¢ wykorzystane bez zmian w obu wersja h. Poniewa» obie konsole nale»¡dotegosamegosegmentuodbior ów,tak»e aª¡me hanikgry

Cytaty

Powiązane dokumenty

Otwierając sympozjum, prefekt watykańskiej kongregacji, w świetle Listu o nauczaniu mariologii, zwrócił przede wszystkim uwagę na formacyjny charakter nauczania o Matce

Wiedz¡c, »e straty mocy przeª¡czania stanowi¡ 50% caªkowitych strat w tranzystorze i 25% caªkowitych strat w diodzie, obliczy¢ maksymaln¡ cz¦stotliwo±¢ ª¡cze« (dla

dr Krzysztof ›yjewski MiBM rok

Ogólnie ˝yczono Rozkopaczewowi, by przepad∏ wraz z jego mieszkaƒ- cami. Ze wszech stron zwracano si´ do partyzantów z proÊbà, by zniszczyli t´ plag´. Zdecydowa∏em, ˝e

Zastanówmy się przez chwilę, w jaki sposób zapisywane są liczby. Stąd nazwa naszego systemu – system dziesiętny. Jednak cyfra cyfrze nierówna. Ta pierwsza nazwana bywa cyfrą

• zdekodowanie rozkazu - interpretacja wczytanego kodu rozkazu (zazwyczaj bajtu) jako polecenia z listy rozkazów procesora1. • wykonanie rozkazu - wczytanie kolejnych

Napisz program, który posługuj ˛ ac si˛e j˛ezykiem asembler, zapisuje do obszaru nieulotnej pami˛eci danych 1 bajt. Napisz program, który posługuj ˛ ac si˛e j˛ezykiem

• Zmiana na linii danych podczas transmisji mo˙ze nast˛epowa´c jedynie, gdy linia zegara znajduje si˛e w stanie niskim (nie dotyczy bitu startu i bitu stopu). • Bit