Vývoj technologií počítačových her

Rozměr: px
Začít zobrazení ze stránky:

Download "Vývoj technologií počítačových her"

Transkript

1 UNICORN COLLEGE Katedra informačních technologií BAKALÁŘSKÁ PRÁCE Vývoj technologií počítačových her Autor BP: Jan Veselý Vedoucí BP: Ing. David Hartman, Ph.D Praha

2

3

4 Čestné prohlášení Prohlašuji, že jsem svou bakalářskou práci na téma vývoj technologií počítačových her vypracoval samostatně pod vedením vedoucího bakalářské práce a s použitím výhradně odborné literatury a dalších informačních zdrojů, které jsou v práci citovány a jsou také uvedeny v seznamu literatury a použitých zdrojů. Jako autor této bakalářské práce dále prohlašuji, že v souvislosti s jejím vytvořením jsem neporušil autorská práva třetích osob a jsem si plně vědom následků porušení ustanovení 11 a následujících autorského zákona č. 121/2000 Sb. V. dne...

5 Poděkování Děkuji svému vedoucímu bakalářské práce Ing. Davidu Hartmanovi Ph.D. za účinnou metodickou, pedagogickou a odbornou pomoc a další cenné rady při zpracování mé bakalářské práce.

6 Vývoj technologií počítačových her Development of computer games technologies 6

7 Abstrakt Nejtěžší částí na poli herního průmyslu byly vždy technologie. V časech minulých byly herní technologie převážně o nízko-úrovňové optimalizaci, tj. psaní kódu, který na cílové platformě počítačů poběží rychle a efektivně. Nicméně v minulých patnácti letech nabyly hry na komplexnosti a vývoj na složitosti. Dnes je při výrobě hry primárním cílem učinit kód funkční a konečným produktem co nejvíce uspokojit původní vizi projektu. Dříve byli autory převážně jednotlivci nebo drobné skupiny vývojářů pracující převážně na 2D vykreslování. Nejvíce požadovanou vlastností hry byla hratelnost, tedy schopnost zabavit hráče na co nejdelší periodu času. Nyní hry produkují sofistikovaná herní studia, přičemž každé větší studio vlastní svůj herní engine a dokončení projektu trvá měsíce, někdy i roky. Na takovém projektu se podílí větší počet lidí s jasně určenými rolemi. Každá pozice je sama o sobě natolik sofistikovaná a náročná, že v odvětví herního průmyslu máme pouze velmi omezené procento kvalifikovaných lidí. Naprostý nedostatek odborníků je v oblasti game-designu. Game-design je schopnost navrhovat hry tak, aby byly hratelné, zajímavé a hlavně realizovatelné. Nedostatek je rovněž grafických designerů. Náplní práce grafika je kreativně navrhovat herní prostředí a postavy. Vytvořené návrhy dokáží konvertovat do digitální podoby a předat je programátorům, nejčastěji ve formátu 2D spritů, animací nebo 3D modelu. V dnešní době slouží jako jádra her takzvané herní enginy. Jedním z těchto enginů je rychle se rozvíjející Framework Unity. Unity je flexibilní a velmi rozsáhlá platforma pro tvorbu multiplatformních 2D her, 3D her a animací. Jako obrovský a stále rostoucí ekosystém usnadňuje a rozšiřuje možnosti herních vývojářů. Unity je plně podporovanou platformou, kterou lze použít k sestavení her pro prostředí jako je iphone, Mac, Windows a další. Klíčová slova: vývoj, hry, herní engine, unity, game-design, herní technologie 7

8 Abstract The most difficult part in the field of gaming industry has always been technology. Gaming technologies used to be mostly about low level optimization, i. e. writing code which would run smoothly and efficiently on target group of computers. However, in last fifteen years, games have grown more complex and their development more difficult. Nowadays, the primary goal while developing a game is simply to make the code work and to hold to the original vision of the project as much as possible. Previously, the authors were mostly individuals or small groups of developers working mostly on 2D rendering, and most desired aspect of the game was gameplay i.e. ability to entertain players for the longest time possible. Now there are sophisticated development studios, bigger ones owning their own game engine and the project takes months, sometimes years. These projects involve dozens of people with strictly defined roles. Each role itself is so sophisticated and demanding that the number of qualified people is very low. Complete lack of people is in the field of game design. Game design is an ability to design the games so that they are playable, interesting and above all feasible. There is shortage of graphic designers as well. Graphic designers are people who are able to design game characters and environment. They are of course able to digitize these designs and hand them over to coders in the form of 2D sprites, animations or 3D models. Nowadays, the so-called game engines serve as the game cores. One of these engines is a rapidly developing Framework Unity. Unity is a very flexible and large platform for creating cross-platform 2D games, 3D games and animations. As a huge and evergrowing system, it extends the capabilities of game developers, who can use it as fully supported platform to build games for iphone, Mac, Windows and other environments. Keywords: development, games, game engine, unity, game-design, game technologies 8

9 Obsah Úvod Historie herních technologií Čtyřicátá léta Padesátá léta Šedesátá léta Sedmdesátá léta Devadesátá léta a začátek třetího tisíciletí Technologie moderních her Herní hardware Centrální procesorová jednotka Grafická procesorová jednotka Využití GPU GPU Akcelerace Heterogeneous System Architecture OpenCL benchmark Grafika a 3D Rendering Kartézská soustava souřadnic základem modelu Knihovny pro usnadnění vykreslování Shadery Funkcionalita základních shaderů Grafiky, textury a sprity D Modelování Osvětlení Globální osvětlení Fyzika

10 2.3.1 Physics Engine Rozdělení jader pro fyziku Vektory Hra více hráčů Lokální hra více hráčů Rané přístupy k síťovaným hrám Místní síť Online hry Konektivita Herní engine Teorie herních enginů Unity Založení nového projektu a scény Uživatelské rozhraní a import assetů Herní objekt Herní prostředí a šablony objektů Fyzika s Rigidbody Player Controller Animátor a Animace Programování kamery a rekapitulace WEBGL Základy WEBGL Immediate-mode API Build hry Kompilace Unity projektu do WebGL Závěr

11 Summary Seznam použitých zdrojů Seznam obrázků Seznam tabulek Seznam příloh

12 Úvod Jedním z cílů této práce je upozornit, že herní technologie a jejich rozvoj mají významný podíl na současné podobě IT. Díky poptávce herního průmyslu je stále vyvíjen tlak na výkonnost počítačového prostředí. Společně se zvyšováním požadavků na kvalitu her jsou kladeny vyšší požadavky na kvalitu hardwaru a softwaru, které následně obohacují všechna odvětví informačních technologií. Videoherní průmysl (častěji nazýván herní průmysl) je odvětví zabývající se tvorbou a prodejem videoher. Tato práce se zabývá především tvorbou počítačových her, k jejichž vzniku je zapotřebí desítky specializovaných profesí (příkladem může být herní návrhář, programátor, grafik). Dějiny videoher sahají téměř sedm desetiletí do minulosti a dnes jsou součástí populární kultury. Ačkoliv se v Československu tento trend uchytil až po roce 1989, stal se herní průmysl jedním z nejrychleji rostoucích odvětví v Česku. Jeho obrat se ročně pohybuje v řádech miliard českých korun a stále roste. Zprvopočátku byly na poli herního průmyslu největším problémem technologie. Programování bylo převážně o psaní nízko úrovňové optimalizace, tj. psaní kódu, který na cílové platformě počítačů poběží rychle. Nicméně v posledních patnácti letech se i do průměrných domácností dostaly relativně výkonné počítače, tablety a další elektronika. Nyní již herní studia, jakožto společnosti zabývající se vývojem her, cílí na obrovské množství hráčů s dostatečným výpočetním výkonem. Při vývoji her je proto primárním cílem jednoduše učinit kód funkční a co nejvíce uspokojit konečným produktem původní vizi projektu. Každé větší herní studio si vytvořilo a udržuje svůj vlastní, herní engine. Herní engine je framework, který ulehčuje vývoj počítačových her. V této práci se budeme věnovat hernímu enginu Unity a technologiím, které s vývojem her souvisí. Příkladem mohou být technologie pro sdílení herní relace mezi více hráčů (multiplayer) nebo frameworky pro zobrazení 3D efektů ve webových prohlížečích. V práci bude také věnován prostor procesorovým jednotkám a jejich rozdílům. Dále základům vykreslování 3D grafiky a základním principům fyziky ve hrách. Cílem této práce tedy je předat ucelené informace začínajícím herním vývojářům. Souhrnně podat informace o dějinách vývoje technologií počítačových her. Cílem praktické části je uvedení příkladu práce s Unity a detailní popis rozhraní, které framework nabízí. Výstupem praktické části je prototyp archaické hry Mario. 12

13 Ve zpracování této bakalářské práce je využito autorových znalostí, znalostí získaných z odborné literatury a z internetových článků. 13

14 1. Historie herních technologií Videohry jsou jedním z významných fenoménů našeho století a jejich rozmach ve společnosti je stále znatelnější. Videohernímu průmyslu se daří díky neustálému přílivu inovací v odvětví grafických a procesorových čipů, se vzrůstající komunitou herních vývojářů a se zvýšeným využíváním internetu v multiplayerových hrách. Počítačová hra či videohra je program s interaktivním obsahem, který lze spustit na různých elektronických platformách. Příkladem může být osobní počítač, mobilní telefon nebo specializovaná herní konzole jakou je třeba PlayStation. Hry neměly vždy takovou podobou, jakou známe dnes. Tento průmysl se vyvíjel velmi dlouho a měl obrovský vliv na vývoj informačních technologií. Herní vývojář by měl alespoň stručnou historii herního průmyslu znát. Právě této historii se věnuje první kapitola této práce. 1.1 Čtyřicátá léta Leckdo považuje rok 1947 za rok vzniku první hry počítačového světa. Hra "Cathode Ray Tube Amusement Device", vyvinutá Thomasem Goldsmithem a Estlem Mannem, byla vyvinuta na technologii katodových trubic a pracovala velmi jednoduše. Osm katodových trubic bylo využito k simulaci střely odpálené na cíl. Cílem hry bylo trefit raketami, zobrazujícími se jako tečky, cíl svítící na radaru. Hru bylo možné ovládat několika tlačítky (změna dráhy a rychlosti střely). Zařízení používalo čistě analogovou elektroniku. Hra nevyužívala žádnou paměť a nebylo zapotřebí nic programovat. Grafický výstup byl zobrazován pomocí fólie na CRT monitoru. Je to vůbec první známé využití CRT monitoru pro herní účely. Hra byla inspirována radary použitými ve druhé světové válce. Tato hra nebyla nikdy prodána veřejnosti, takže i když je považována za první videohru, neměla na vývoj budoucnosti počítačových her prakticky žádný vliv. 1 1 The 'CRT Amusement Device' that spawned a multi-million dollar industry. New Atlas [online]. Australia: Bridget Borgobello, 2011 [cit ]. Dostupné z: 14

15 Obrázek 1: CRT Amusement Device Zdroj: Padesátá léta V roce 1952 Alexander S. Douglas na základě tehdejší studie o interakce člověka s počítačem vyvinul hru OXO. OXO byla grafická verze známé hry piškvorky. Hra byla opět veřejnosti nedostupná, neboť používala archaický počítač EDSAC, který byl exkluzivně zkonstruován profesorem Mauricem Wilkesem a jeho týmem na univerzitě Cambridge. EDSAC byl první v praxi využitý počítač pracující s uloženým programem. Používal se převážně k řešení matematických úloh a výstup zobrazoval na CRT monitoru. OXO hrál vždy jeden hráč proti umělé inteligenci EDSACu. Jako vstup hráči sloužila rotační číselnice. Na číselnici hráč zadával číslo, které představovalo pozici ve dvoudimenzionálním poli. 15

16 Obrázek 2: EDSAC a OXO spuštěné v emulátoru. Vpravo 2D pole s pozicemi Zdroj: EDSAC ostatní vlastní zpracování Za zmínku určitě stojí i nukleární fyzik William Higinbotham, neboť mnoho lidí přiznává vynález videoher právě tomuto muži. V roce 1958 vytvořil hru zvanou Tennis For Two a to proto, aby zabavil návštěvníky v Národní laboratoři Brookhaven v New Yorku. Hra byla postavená na analogovém počítači a grafický výstup byl zobrazen na osciloskopu. Jednalo se o zjednodušený tenisový kurt. Míček musel být odehrán přes zobrazující se síť a to za pomocí objemného ovladače, na němž byla tlačítka pro ovládání trajektorie a odpálení míče přes síť. Jako první tato hra počítala s jednoduchou simulací fyziky, neboť míček podléhal gravitaci. 2 Jednalo se o velmi důležitý milník pro budoucnost videoher, neboť hra byla zpřístupněna veřejnosti a došlo tedy ke styku obyčejného člověka s videohrou. Hra byla následně demontována v roce Doteď si nadšenci podle zveřejněných schémat tuto hru konstruují. 2 CAMPBELL-KELLY,

17 Obrázek 3: Rekonstrukce hry Tennis For Two 1.3 Šedesátá léta Zdroj: Na přelomu šedesátých let už mnoho jednotlivců zkoušelo programovat hry na univerzitních počítačích. Hry byly převážně programovány studenty v jejich volném čase, nicméně z důvodu stále velké nedostupnosti hardwaru bylo těchto her jen velmi málo a většina byla velmi brzy zapomenuta. Taková skupina studentů spolu s osobností významného počítačového vědce Steva Russella vyvinula v roce 1961 hru Spacewar. Hra byla pro dva lidské hráče, každý ovládal jednu vesmírnou loď schopnou pohybu a útočení za pomoci raket. Uprostřed mapy byla černá díra, která k sobě oba hráče vlivem gravitace stahovala. Hra tedy znovu počítala s jednoduchou fyzikou, i když na rakety se gravitace nevztahovala, neboť na to již nezbyl procesorový výkon. Spacewar využívala platformu PDP-1 (Programmed Data Processor-1) od společnosti DEC (Digital Equipment Corporation). Počítač PDP-1 byl vybaven feromagnetickou pamětí organizovanou do slov s poněkud neobvyklou šířkou 18 bitů. Maximální kapacita paměti byla 144 kilobajtů. Počítač byl rovněž vybaven jednotkou pro děrné štítky. Počítačů bylo celkově přes padesát a vlastnili je převážně větší firmy či instituce. V mnoha ohledech se jedná o velmi zajímavý počítač, který zaznamenal hned několik prvenství a jeho vliv nepřímo vedl ke vzniku minipočítačů, operačního systému UNIX i hackerské subkultury. 3 3 PDP-1: počítačový dědeček na cestě k unixu. Root.cz [online]. Praha: Pavel Tišnovský, 2009 [cit ]. Dostupné z: 17

18 Obrázek 4: DEC PDP-1 Obrázek 5: Spacewar na PDP-1 obrazovce zdroj: Spacewar byla následně rozvinuta a použita v prvním hracím automatu založeném na mincovém principu. Mincový princip bude dále rozveden v následujících kapitolách. 1.4 Sedmdesátá léta Do této doby bylo ke hraní počítačových her stále potřeba drahých a složitých mainframů. Příkladem může být výše zmíněná hra SpaceWars, kterou bylo možné hrát jen na počítači PDP-1. Vývoj her byl stále o znalostech hardwaru a vyvinout hru tedy, kromě navržení hratelnosti, znamenalo kreslení elektronických schémat a nekonečného pájení součástek. Tento koncept vývoje her se ještě pár let nezměnil. Ovšem potenciál pro masové využití her v domácnostech na tomto mladém trhu byl, odhalil jej Ralph Baer. Grafický výstup byl stále zobrazován CRT monitory, které byly tehdy pro mainframy běžné. Nikoho nenapadlo použít jako grafický výstup to, co bylo tehdy již pro každou domácnost běžné. Použijme slova Ralpha Baera: V roce 1966 bylo okolo čtyřiceti miliónů televizí v domácnostech na území Spojených států amerických. Nemluvě o dalších miliónech televizí ve zbytku světa. Tyto spotřebiče doslova prosily i o jiné využití než jen zobrazování komerčních televizních vysílání. Tento nápad jsem 18

19 měl již v roce 1955, ale tehdy mi to vedení mé firmy zatrhlo. Od roku 1966 myšlenky na hraní her pomocí televizoru již nešlo zadržet. 4 Ralph Baer tento koncept nazval Televizní hry. Později se televizní hry přejmenovaly na videohry. V roce 1968 vznikl první prototyp herní konzole, na které se po připojení k televizi dalo několik jednoduchých her hrát. Baerovi tehdy asistovali dva další inženýři. Byli to William Harrison a William Rusch. Prototyp odkoupila společnost Magnavox a v roce 1972 jej vydala pod jménem Odyssey. Tento přístroj se tak stal první distribuovanou herní konzolí na světě. Podle webu bmigaming v roce 1971 Nolan Bushnell spolu s Tedem Dabneyem předělali hru SpaceWar. Tento koncept od něj odkoupila společnost Nutting Associates a vyrobila přes 1500 hracích automatů s hrou Computer Space. Tento automat se tak stal prvním masově vyráběným hracím automatem na mince s videohrou v celém počítačovém světě. Prvním podobným automatem, který ovšem nikdy nebyl komerčně prodán, byl automat s hrou Galaxy game. Ten byl nainstalován na Stanfordově univerzitě v Kalifornii. Obě hry byly založené na originální hře Spacewar. Obrázek 4 Computer space automat Zdroj: 4 Genesis: How the Home Video Games Industry Began. Ralph Baer [online]. Rodalben: Ralph Baer, 2013 [cit ]. Dostupné z: 19

20 Computer space ve skutečnosti nebyl úspěšný projekt. Veřejnost hře nepropadla. V jednom z pozdějších rozhovorů Bushnell vysvětloval, v čem viděl hlavní problém své první hry: Abyste mohli hrát, museli jste si přečíst návod. Lidé ho nechtěli číst. Abych byl úspěšný, musel jsem přijít s jinou hrou. S takovou, aby lidé věděli, jak ji hrát. Něco tak jednoduchého, že by to mohl hrát i opilec v nějakém baru. 5 Dle sbírky Chantala 6 založil Nolan Bushnell v roce 1972 spolu s Tedem Dabneyem společnost Atari. Svůj herní průmysl nastartovala původní hrou PONG. Hra byla založena na stolním tenise a princip byl jednoduchý: hra byla pro dva lidské hráče, přičemž každý ovládal obdélník v pravé nebo levé straně. Plošinka se pohybovala vertikálně a smyslem bylo nenechat míč proniknout za hranice vaší plochy. Atari prodala přibližně 38 tisíc automatů s hrou PONG. Později se PONG dostal i do domácností jako konzole, kterou bylo možné připojit k televiznímu monitoru. Domácí verze pongu byla ještě úspěšnější než automat. Obrázek 5: Automatová hra PONG Zdroj: 5 Historie firmy Atari ( ). Historie firmy Atari [online]. Praha: Historie firmy Atari, 2006 [cit ]. Dostupné z: 6 All about Pong. Pongmuseum.com [online]. Paris: Sylvain De Chantal, 2001 [cit ]. Dostupné z: 20

21 S úspěchem Atari přišel i první soudní spor v dějinách herního průmyslu. Cituji článek z webu zabývajícího se historií společnosti Atari: Zanedlouho po veřejné demonstraci Pongu objevila jeho existenci firma Magnavox a jelikož ji velmi připomínal její vlastní hru TV tenis z konzole Oddysey, následovala soudní žaloba za údajně ukradený nápad a patent. Ať už byl původce myšlenky na Pong kdokoliv, Magnavox měl registrován U.S. patent na "Elektronické hry promítané na televizní obrazovku" a to byl zjevně Bushnellův Pong také. Bushnell se bál jít do otevřeného soudního sporu (prohra by Atari zruinovala) a proto se radši s Magnavoxem dohodl na mimosoudním vyrovnání a zaplatil raději 700 tisíc USD za licence. Magnavox si mimo to vymínil roční exkluzivní práva na všechny případné nové produkty Atari - na což Bushnell reagoval promptně - a vše nové si rok pozdržel. Paradoxně však zřejmě ukradený Pong pomohl oběma stranám. Atari díky němu i přes velkou pokutu slušně vydělávala a Magnavox měl peníze na další obchody se svojí konzolí Oddysey. Další zisk měl Magnavox ostatně z prodeje licence dalším výrobcům her, neb se záhy ukázalo, jak důležitý patent to ve skutečnosti vlastní. 7 Později v roce 1978 vydává konkurenční společnost Taito arkádu Space Invaders. Touto hrou začala ve Spojených státech zlatá léta hracích automatů, neboť hra inspirovala desítky nových výrobců ke vstupu na trh a k vydávání vlastních videoher. Arkádové herní automaty zůstaly obrovským hitem až do konce 80. let. Arkádové hry byly prvním žánrem ve video herním průmyslu. Hrají se nejčastěji na kola, kde každé další kolo je obtížnější než kolo předchozí. Vyznačují se převážně tím, že vyžadují postřeh, hbitost prstů, logické myšlení a trpělivost. Zlatá éra arkádových videoher v sedmdesátých letech byla éra velkých technologických pokroků. Herní vývojáři se stále potýkali s problémy nedostatku procesorových prostředků a velikostí operačních pamětí. Tento nedostatek stále tlačí počítačové technologie kupředu. 8 Počítačové hry se šířily napříč Severní Amerikou, Evropou a Japonskem. Video herní automaty se šířily do supermarketů, barů, likérek, restaurací a dalších podobných podniků. Netřeba podotýkat, že hry si zamilovali hlavně mladí lidé. Průměrný automat v té době dokázal vydělat okolo šedesáti amerických dolarů týdně. 7 Historie firmy Atari ( ). Historie firmy Atari [online]. Praha: Historie firmy Atari, 2006 [cit ]. Dostupné z: 8 KENT,

22 Kromě Atari existoval další obrovský gigant zabývající se arkádami. Byla to japonská společnost Namco. Nejprodávanějším titulem společnosti Namco byl v osmdesátých letech Pac-Man. Tyto dvě společnosti zápasily o první místo na trhu mnoho let a existují do dnes. Kromě těchto gigantů vznikly ještě Sega, Nintendo, Capcom, Konami, Cinematronics a další. Hry se stále rozvíjely i v nekomerčním sektoru. Byly to snahy převážně studentů větších univerzitních škol. Většina her se nedochovala z důvodu uložení na tehdejších magnetických páskách, které již dávno zanikly. Z tohoto důvodu se o této kategorii her ví jen velmi málo. Přesto zmiňme některé důležité milníky: 9 Rok 1974: Objevují se tituly, jako Maze Wars (Války v bludišti) první pokusy o trojrozměrné hry z pohledu první osoby. Rok 1975: Objevila se první jednoduchá, neoficiální implementace hry Dungeons and Dragons pojmenována Dungeons. Byla to prakticky první videohra, která spadala do tehdy ještě neexistujícího žánru RPG. Rok 1977: Skupina studentů naprogramovala první, textový, letecký simulátor nazvaný Air. Tato skupina se zasloužila o předchůdce grafických her pro více hráčů. Rok 1980: Vzniká titul Rogue. Následník hry Dungeons a první RPG hra s náhodně generovaným prostředím. Skupina nespokojených programátorů společnosti Atari se v roce 1979 odtrhla a založila vlastní společnost s názvem Activision. Důvodem byly nízké platy herních programátorů tehdejší doby. Zpočátku se zaměřovali na vývoj konzolových her pro herní konzole od Atari. Když začal trh s herními konzolemi upadat, začala se společnost zaměřovat na hry pro domácí počítače. Společnost Activision existuje do dnes. 9 KENT,

23 1.5 Devadesátá léta a začátek třetího tisíciletí Devadesátá léta a počátek třetího tisíciletí přinesl mnoho vylepšení souvisejících s herním průmyslem. Mezi ně patří: Popularizace uložišť založených na CD-ROM a lepší distribuce softwaru. Popularizace operačních systému s grafickým rozhraním (Microsoft Windows, Mac OS,...) Pokročilejší 3D grafiku a masivní adaptaci grafických karet do osobních počítačů. Zdokonalení a sofistikace CPU. Miniaturizace hardwaru a mobilních zařízení, které vedlo k hrám pro mobilní přístroje. Během tohoto období vzniklo několik nových, herních konzolí. Tyto konzole byly později rozděleny do takzvaných čtvrtých, pátých a šestých generací. Čtvrté generace byly převážně 16-ti bitová zařízení a známým zastupitelem je například Game Boy od společnosti Nintendo. Game Boy se stal nejprodávanější konzolí devadesátých let. Za pátou generaci herních konzolí jsou považována herní zařízení vyvinuté mezi lety 1994 a Byly to již 32 a 64 bitové počítače. Mezi hlavní představitele patří Nintendo 64, PlayStation od společnosti Sony a Sega Saturn vyráběn společností Sega. Toto období je převážně významné expanzí herní grafiky do třetího prostoru. 2D sprity tak byly nahrazovány polygony a ty byly zobrazovány ve 3D prostoru. Tyto technologie budou dále popsány v dalších kapitolách. 10 Dvacátá léta začala prosazovat nutnost zavedení a popularizace internetu, který se ke konci druhého tisíciletí stal základem pro síťované a online hry. Video herní průmysl generoval světově tržby ve výši téměř 20 biliónů amerických dolarů. 10 The History Of Video Arcade Games. BMIGaming.com [online]. Florida: BMIGaming, 2012 [cit ]. Dostupné z: 23

24 2. Technologie moderních her Nové tisíciletí s sebou přineslo nové termíny a postupy. Informační technologie začaly být standardizovány a postupně na každou IT oblast vznikaly frameworky, které práci s danou problematiku ulehčovaly. Společnosti zabývající se programováním her začaly být nazývány herní studia a postupně se z garáží přesunuly do vlastních sídel. Herní studia dále vyvinula vlastní frameworky pro usnadnění tvorby videoher. Těmto frameworkům se začalo říkat Game Engines neboli herní jádra a s jejich pomocí se vývoj her zefektivnil a takřka standardizoval. Tituly vydané za pomoci jednoho jádra byly jasně rozeznatelné od titulů postavených na jiných enginech. V této práci jsme si jako příklad herního frameworku vybrali open-sourcový projekt Unity. Herní vývojář by nejdříve měl pochopit základní funkcionality, které Unity a jiná herní jádra musí řešit, než se do vývoje her sám pustí. Následující kapitoly se věnují právě této problematice. 2.1 Herní hardware Abychom dále mohli rozebrat jednotlivé herní technologie, frameworky a práci s 3D grafikou, musíme nejdříve porozumět nejnižší úrovni celého modelu. V následujících kapitolách se budeme věnovat rozdíly mezi centrální procesorovou jednotkou, grafickým procesorem a možnostmi akcelerace výkonu aplikací za využití grafických procesorů. V kapitole jsou pro příklady používány procesorové jednotky, drivery a jiný software od firmy Intel a společnosti NVIDIA Centrální procesorová jednotka Centrální procesorová jednotka (zkratka CPU, anglicky Central Processing Unit) vykonává základní strojové instrukce, ze kterých je složen počítačový program a obsluhuje jeho vstupy a výstupy. Historicky CPU obsahoval mnoho elektronických součástek, avšak s příchodem integrovaných obvodů byly všechny potřebné obvody sloučeny právě do jednoho integrovaného obvodu, který je označován jako mikroprocesor. Každá architektura procesoru definuje svůj vlastní strojový jazyk. Vyšší programovací jazyky jako je JAVA, C# a mnoho dalších jsou za pomocí překladačů nebo interpretů do strojového jazyka překládány PATTERSON,

25 Moderní procesory obsahují více fyzických jader. Příkladem je procesor INTEL CORE i5 obsahující čtyři fyzická jádra. Některé procesory podporují takzvaný Hyper- Threading, který umožňuje fyzická jádra virtualizovat a zvýšit tak jejich počet virtuálně na dvojnásobek. Takovým procesorem je například INTEL CORE i7. Takový procesor zvládne obsluhovat až osm vláken paralelně. Maximální výkon procesoru se tak sice dramaticky zvýší, ale je třeba mít na paměti, že počet fyzických jader zůstává stejný. Z toho jasně vyplývá, že nelze očekávat zvýšení výkonu lineárně. Centrální procesorová jednotka zastává takzvaný SISD (Single Instruction, Single Data). Tyto procesory jsou dobré ve vykonávání operací typu: načíst vstup, provést s ním operaci, přesunout ho jinam, zapsat výsledek a tak dále. Vykonávají jednoduché operace, které načtou jeden nebo více vstupů a vrátí jeden výsledek. Tyto operace jsou vykonávány sekvenčně Grafická procesorová jednotka Grafická procesorová jednotka (zkratka GPU, anglicky Graphic Processing Unit) je specializovaný mikroprocesor, který zajišťuje rychlé grafické výpočty a změny obsahu framebufferu, které jsou posléze zobrazovány na displeji. Moderní grafické procesory jsou dnes již využívaný i pro jiné druhy výpočtů než jen ty grafické. Výkonu grafických čipů využívá například obor kryptoanalýzy. V dalších kapitolách tyto možnosti probereme. Operace GPU jsou dobře paralelizované a manipulují grafickými daty velmi rychle. Termín GPU byl poprvé představen firmou NVIDIA v roce 1999, kdy byl představen produkt GeForce 256, jakožto první grafický mikroprocesor. 12 Grafická procesorová jednotka zastává takzvaný SIMD (Single Instruction, Multiple Data) přístup, což znamená, že stejná operace je vykonávána na větším množstvím dat paralelně. Příkladem takové operace může být následující: Mějme na vstupu 128 hodnot X1- X128 a 128 hodnot Y1-Y128. Tyto hodnoty mezi sebou vzájemně v párech vynásobme a vraťme 128 výsledků. Procesor, který zastává SISD přístup by musel provést 128 operací (+ I/O operace do paměti). SIMD procesory to dokážou v jednotkách kroků. Záleží na tom, kolik čísel se jim vejde do registru ŠILC, NAM, Byeong-Gyu a Hoi-Jun YOO,

26 GPU je typicky implementováno jako vykreslovací řetězec neboli pipeline, kde v datech dochází k přechodu z jednoho stavu do stavu druhého. Grafická pipeline reprezentuje celý proces zpracování 3D scény a její reprezentace ve 2D obrazu. Může být hrubě rozdělena do tří velkých fází: Aplikační fáze Geometry fáze Fáze rasterizeru Obrázek 6: Fáze grafické pipeline (zpracování 3D obrazu) Zdroj: Vlastní zpracování Aplikační fáze stojí na samém počátku a jejím vstupem jsou informace o scéně. Tyto data obsahují informace o tvarech objektů, zdrojích světla, kameře a tak dále. Tvary objektů jsou složeny z primitivních typů. Tato fáze reprezentuje všechny činnosti, které se musí stát, než se zpracovávání scény posune grafickému hardwaru. Geometry fáze je složena z mnoha menších operací. Je zodpovědná za zpracování a manipulaci dat předaných scénou z aplikační fáze. Jejím výstupem jsou data, jimiž lze scénu a její objekty reprezentovat 2D obrazem. Příklady operací, které se v této fází provádějí: 14 Aplikace transformací pro umístění objektů na správné místo ve scéně Aplikace pohledových transformací z důvodu renderování jen toho kusu scény, který bude zobrazen (umístěny kamery ve scéně). Vypočítat množství světla, které dopadne na každý bod viditelného kusu scény. Adaptace a reprezentace 2D obrazu na základě rozlišení displeje. Fáze rasterizace funguje trochu jako tiskárna. Vstupní data z geometry fáze obohatí o barvy a stará se o aplikování textur. Další důležitou operací je setřídění objektů podle vzdáleností, ve kterých se nacházejí od kamery MÖLLER,

27 Všechny dosud zmíněné operace musí probíhat rychle, protože je potřeba je provést pro každý snímek obrazovky zvlášť. Z tohoto důvodu jsou operace grafické pipeline rozděleny tímto způsobem a zpracovávány paralelně. Výhodou této architektury je fakt, že pokud například výpočet fyzikálních vlastností skončí a zpracovávání snímku se předá komponentě pro zpracovávání osvětlení, tak můžou začít výpočty pro fyzikální vlastnosti dalšího snímku. Tím je zajištěna maximální efektivita využití grafické procesorové jednotky. Rozvržení komponent pro GPU pipeline je znázorněné na obrázku 8. Když jsou grafická data v řetězci zpracována dochází k jejich uložení do framebufferu. Framebuffer je paměť, která obsahuje informace, které jsou potřebné k zobrazení obrazu na displeji. Fyzicky může být tato paměť lokalizována i jinde. Například může být součástí hlavní operační paměti, ale moderní grafické karty mívají tuto komponentu separovanou a blízko u GPU čipu, aby byl umožněn co nejrychlejší přístup k datům. Framebuffer se většinou skládá ze tří dalších různých sub-bufferů. Prvním z nich je Color Buffer. Tento typ bufferu si lze představit jako obdélníkové pole reprezentující každý pixel na obrazovce. Tyto informace uchovává v RGB nebo RGBA formátu. Tento buffer má určité množství bitů vyhrazené pro každý pixel. Tento počet bitů se nazývá barevná hloubka color bufferu. Nejmenší buffery tohoto typu mají vyhrazeno 16 bitů pro jeden pixel a znamená to tedy, že jsou schopni zobrazení 2 16 = barev. 15 Z-Buffer je také označován jako depth buffer neboli hloubková pamět. Tento buffer uchovává informace o vzdálenosti objektu od místa pohledu na scénu. Tyto informace přitom uchovává pro stejný počet pixelů jako Color Buffer. Společně tak 3D prostor dokáží reprezentovat jako 2D obraz. Zjednodušený model komponent GPU lze vidět na obrázku dále: 15 MATSUDA,

28 Obrázek 7: Zjednodušený model grafických komponent a jejich součinností Zdroj: Vlastní zpracování podle autora Matsuda, Kouchi. Kniha WebGL programming guide: interactive 3D graphics programming with WebGL (str. 9) Obrázek 8: Rozvržení GPU pipeline komponent Zdroj: gamedevs.org 28

29 Tento model fungování grafické pipeline za pomocí vnitřních shaderů je platný od roku Představila jej nová verze Direct3D 10. Herní vývojáře by mělo především zajímat, jakým způsobem fungují Vertex, Geometry a Pixel shadery. Tyto shadery jsou, jak už ukazuje obrázek výše, programovatelné. Tedy je nabízené rozhraní pro jejich implementaci, například pomocí DirectX. 16 Více o shaderech v kapitole Grafická pipeline a celá operace převedení 3D scény do 2D obrazu je velmi složitý proces, který je téměř nemožné shrnout do pár odstavců této práce. Pro opravdové zájemce programování grafických operací doporučujeme třetí vydání knihy Real-Time Rendering od Tomase Mollera uvedenou v referencích této práce Využití GPU SISD procesory pracují skvěle pro většinu běžných situací, protože většina těchto situací vyžaduje sekvenční přístup. Existují algoritmy, které vyžadují zpracování stejnorodých operací na velkém množství dat. Příkladem může být vykreslování grafiky na displej a renderováním videí. Další zajímavé případy užití přineslo jednadvacáté století. To přineslo úlohy související s prolamováním hesel brute-force přístupem. Tento přístup spočívá v pokusech o prolomení šifer tak, že se ve velkých počtech pokusů pokusíme odhadnout klíč nebo jinou klíčovou vlastnost šifry. Této problematice se věnuje vědecký obor nazývaný kryptoanalýza. Finanční sektor přinesl další případ užití, a to těžení bitcoinů. Těžení bitcoinů spočívá v propůjčení výkonu počítačové stanice třetím stranám, které jej využívají pro operace složité na výpočet. V posledních letech se o využití hlásí i umělá inteligence v autech, dronech a dalších robotech GPU Akcelerace GPU-Akcelerace je založena na kooperaci grafického procesoru spolu s CPU s cílem urychlit náročné aplikace. Poprvé byl tento pojem představen v roce 2007 společností NVIDIA a nyní je tato praktika využívána v mnoha vládních laboratořích, univerzitách, velkých podnicích po celém světě. Pro urychlení aplikací za pomocí GPU akcelerace je klíčová správná identifikace částí aplikačního kódu vhodného pro paralelní zpracování. 16 MÖLLER,

30 Rozdělení aplikačního kódu je patrné z obrázku níže. Vhodného kódu pro zpracování na straně GPU můžou být jen jednotky procent, ale vliv na výkon aplikace může být obrovský. 17 Obrázek 9: Jak funguje akcelerace GPU Zdroj: Tento přístup k programování s sebou nese potíže, které nemusí být na první pohled zřejmé. Jedním z největších problémů tohoto přístupu je sdílení výsledků mezi oběma architekturami. Předpokládejme standartní situaci, kdy CPU a GPU paměť nesdílí. V takových situací jsou obě paměti připojené na PCI-Express bus a i když je tato sběrnicí duplexní, tedy umožňuje přenos v obou směrech, tak přenos informací celý proces velmi zpomalí. Synchronizace dat mezi GPU a CPU je velmi složitá a velmi nízko-úrovňová problematika, proto existují knihovny třetích stran, které programátora od těchto potíží odstíní. NVIDIA na svých stránkách uvádí velké množství frameworků buď z dílny NVIDIA anebo z dílen třetích stran, které NVIDIA podporuje. Tabulka níže uvádí výčet těch nejpoužívanějších GPU Computing [online]. [cit ]. Dostupné z: 30

31 Tabulka 1: Frameworky pro GPU akceleraci Framework Podporované jazyky a IDE Popis CUDA TOOLKIT C/C++ Komplexní řešení pro C a C++ vývojáře pro tvorbu GPU akcelerovaných aplikací. OpenACC C/C++/Fortran Poskytuje jednoduché, ale přesto robustní řešení pro GPU akceleraci. Existující kód může být před kompilaci označen pragmami a speciálním kompilátorem překompilován tak, aby vyhovoval paralelnímu zpracování na GPU. PyCUDA Python Zpřístupňuje CUDA funkcionality pro Python MathWorks Matlab NVIDIA Nsight Matlab Visual Studio, Eclipse Matlab má nativní podporu pro CUDA funkcionality Mocný nástroj pro analýza heterogenních aplikací. Poskytuje debuggovací a profilovací nástroje pro některé IDE nástroje. Optimalizace kódu a analýza úzkých hrdel aplikací. QuantAlea.NET / Mono Starší nástroj pro vývoj GPU procesů. Crossplatform nástroj pro Windows/Linux/ OS X. Vychází z CUDA pro C/C++ a Fortran. Pro nové implementace již není používaný. OpenCL C / C# OpenCL (Open Computing Language) je nízkoúrovňové API pro programování heterogenních systému využívajících CPU, APU, GPU. Zdroj: Vlastní zpracování 31

32 2.1.5 Heterogeneous System Architecture Aplikacím, které pro svoje funkcionality využívají více druhů procesorových jednotek, se postupem času začalo říkat heterogenní systémy. Heterogenní systémy mají stále spoustu nedostatků. Hlavním nedostatkem je, že vývojář, který o implementaci heterogenního systému uvažuje, musí mít velkou sadu znalostí. Programátor musí znát nízko-úrovňové jazyky, architekturu koncových stanic a mít obecné povědomí o fungování procesorových jednotek, pro které kód píše. Současným trendem programování je právě od těchto problémů programátory odstínit. Za tímto účelem vznikla nezisková organizace Heterogenous System Architecture neboli HSA. 18 Dle autora Wen-Mei HWU se HSA snaží o standardizaci přístupu k programování heterogenních systémů. Do tohoto konsorcia patří mnoho významných IT subjektů. Patří mezi ně například: AMD, ARM, SAMSUNG, HUAWEI, UBUNTU a mnoho dalších. Tito členové se za společné spolupráce snaží o vytvoření lepšího ekosystému pro heterogenní aplikace, který by ubral na celkové složitosti HSA řešeních. Snaží se rozvoj výpočetní síly tlačit k tomu, aby přemýšlel nad tvorbou rozhraní, která by usnadnila spolupráci s ostatními výpočetními jednotkami. Sami tvoří mnoho frameworků, které se snaží vývojáře odstínit od problémů na nejnižších úrovních jako je například výše zmíněné sdílení paměti dvou a více druhů výpočetních jednotek. Jednou z důležitých abstrakcí bylo vydefinování jazyka HSAIL (Heterogeneous Systém Architecture Intermediate Language). HSAIL je mezi-kód, do kterého je překládán kód vyšších programovacích jazyků pro HSA aplikace. Tento kód je následně za pomocí virtuálního stroje vykonáván na cílových platformách a tím je zajištěno odstínění od strojových kódů konkrétních platforem. Problematice heterogenních aplikací se věnuje kniha Heterogeneous system architecture: practical applications for industry od autora HWU. Tato práce HSA již dále probírat nebude OpenCL benchmark V této kapitole se budeme věnovat benchmarku jednoduchého algoritmu pro hledání prvočísel na jednotlivých procesorových platformách. Pro experiment využijme knihovnu třetí strany OpenCLib.dll, která zjednodušuje práci s procesorovými jednotkami a jejich pamětí. Tato knihovna je postavena nad OpenCL a její zdrojové kódy mohou být nalezeny 18 HWU, Wen-Mei,

33 na codeproject.com. Knihovna dále využívá Nuget balíček Cloo, který je využíván pro volání OpenCL. Projekt samotný nabízí tři třídy: EasyCL (Pro volání jednoho druhu Kernelu) MultiCL (Pro volání všech Kernelů podporovaných OpenCL) OpenCL (Pro získání informacích o Kernelu) Pro experiment bude využita třída EasyCL, pomocí které zkusíme algoritmus spustit na jednotlivých procesorových platformách. Na konci experimentu využijeme MultiCL, která bude distribuovat instrukce mezi všechny Kernely dostupné na počítači. Od tohoto maximálně efektivního přístupu očekáváme nejlepší výsledky. Mějme situaci, kdy potřebujeme analyzovat prvočísla ve velkém vstupním poli. To co s výsledkem budeme dále dělat není podstatné. Kód pro paralelní zpracování pole čísel by mohl vypadat třeba takto: Obrázek 10:Příklad C# funkce pro prvočísla Zdroj: Vlastní zpracování Stejný kód přepišme do OpenCL C podoby, aby mohl být za pomoci OpenCL přeložen pro jednotlivé procesorové architektury. 33

34 Obrázek 11:Příklad OpenCL C funkce pro prvočísla Zdroj: Vlastní zpracování Následující metoda byla využita pro měření výkonu jednotlivých procesorových architektur. Metoda využívá OpenCLib pro zjednodušení práce s architekturami procesorů. Obrázek 12: C# funkce pro měření výkonu za pomocí OpenCLib Zdroj: vlastní zpracování 34

35 Tabulka 2: Výsledky benchmarku procesorových architektur Architektura Výkon (Přirozená čísla v miliónech / sec) CPU 4,811 GPU 9,009 Multi (CPU+GPU) 13,644 Zdroj: vlastní zpracování Tabulka výsledků ukazuje výkon jednotlivých architektur. Číslo je reprezentováno jako počet zpracovaných prvočísel v milionech za sekundu. Z výsledků jasně vyplývá, že pro paralelní zpracování algoritmu pro prvočísla bylo GPU lepší, než CPU. Z tabulky dále vyplývá, že pokud obě architektury spolupracují, tak je dosaženo maximálního výkonu a počet zpracovaných prvočísel by byl největší. Tím je dokázán pozitivní vliv heterogenní spolupráce na výkon aplikací. Projekt využitý k benchmarku procesorových architektur je k nalezení v přílohách. 2.2 Grafika a 3D Rendering Základním principem 3D hry je vykreslování (renderování) statických snímků v reálném čase. Snímky jsou tvořeny na základě 3D modelů, textur a osvětlení. Tyto snímky jsou vykreslovány v rychlém sledu za sebou a rychlost jakou jsou vykreslovány se měří v FPS (Frame-per-second). Počet snímků za sekundu výrazně ovlivní celkový herní zážitek. Pro lidské oko se již při cca 25fps jeví výstup jako plynulá sekvence a jednotlivé snímky nezaznamená, na tomto principu je postaven film. Od zhruba 60fps výše již není člověk schopen rozpoznat rozdíly ve výstupu. Hlavní uplatnění této technologie je v počítačových hrách, dále pak v simulacích a návrhářských programech. 19 Klasický výpočet (offline rendering) jednotlivé snímky (ať už v sekvenci nebo samostatné) vykreslí podle předem nastavených parametrů a s výsledkem uživatel již nemůže interagovat. Tento druh renderingu používá k vykreslování složitější postupy (např. raytracing) díky kterým má realističtější výstupy, využívá se např. pro tvorbu animovaných filmů a digitálních efektů pro filmy klasické. Při zpracování snímků na základě 19 AKENINE-MÖLLER,

36 uživatelských vstupů (např. myš, klávesnice) je pro dojem interaktivity důležitý také reakční čas, tedy za jakou dobu se uživatelský vstup projeví v renderovaném obrazu. Hlavní výhodou výpočtu 3D scén v reálném čase je interaktivita a nevýhodou kompromis v realističnosti výsledných snímků kvůli potřebě jejich rychlé obměny Kartézská soustava souřadnic základem modelu Ať už chceme 3D prostor v počítači definovat za účelem studia zvuku či obrazu, musíme disponovat použitelným modelem k reprezentaci vytvářených či upravovaných objektů ve třech rozměrech, jimiž jsou délka, šířka a hloubka (či výška). Takový model existuje a vychází z kartézské soustavy souřadnic. Tuto soustavu souřadnic by měl herní vývojář předpokládat v každém modelovacím nástroji nebo herním enginu. Proto zde kartézskou soustavu souřadnic zmiňujeme. Obrázek 13:Bod v 3D prostoru reprezentován souřadnicemi Zdroj: 20 Animace, osvětlení a výpočet v reálném čase 3D prostoru [online]. Praha: 3.0 Česko, 2014 [cit ]. Dostupné z: 36

37 2.2.2 Knihovny pro usnadnění vykreslování Pro vykreslování 3D scény v reálném čase je potřeba velké množství složitých výpočtů. Tyto výpočty probíhají uvnitř GPU a aby se vývojář znovu nepotkal s nízko úrovňovou problematikou hardwaru, vznikly API, které tuto práci usnadňují. OpenGL a DirectX jsou dva nejrozšířenější průmyslové standardy. OpenGL je vyvíjena neziskovou organizací Khronos a je multiplatformní. Lze ji využít na operačních systémech typu Windows, Linux a Mac. Existuje i zjednodušená verze OpenGL ES, která je určena pro ios, Android a herní konzole jakou je například PlayStation. DirectX je vyvíjen společností Microsoft a obsahuje pokročilejší vykreslovací postupy a efekty, než je tomu u OpenGL Shadery Pokud chceme na obrazovku vykreslit jakýkoliv objekt, tak ho budeme vykreslovat pomocí primitivních typů nebo pomocí mřížky (anglicky mesh), která se z primitivních typů skládá. Tento grafický úkon samozřejmě přísluší grafickému čipu a částím, které grafický čip obsluhují. O vykreslení se postará několik specializovaných programů, které se nazývají shadery. Shader je program obsluhující jednotlivé části programovatelného grafického řetězce (dále jako pipeline) grafického procesoru. Shadery jsou psané ve vyšších programovacích jazycích, které se také nazývají shader jazyky. Příkladem je jazyk GLSL pro OpenGL, Cg od společnosti NVIDIA nebo HLSL vyvinutý společností Microsoft s podporou DirectX. Shaderů existuje několik typů v závislosti na tom, pro kterou část pipeline jsou určeny. Shadery se dělí na: Vertex Shader Pixel (Fragment) Shader Geometry Shader Compute Shader Tesselation Shader Funkcionalita základních shaderů Dříve existovaly pouze tři druhy základních shaderů, a to vertex, pixel a geometry shader. Pokud bychom tedy chtěli vykreslit objekt, tak tento objekt bude reprezentován primitivními typy. Primitivním typem je myšlen bod, přímka a trojúhelník. GPU musí zpracovat jednotlivé body těchto primitivních typů. O body se stará vertex shader (vrcholový 37

38 shader). Vstupem pro jednu operaci shaderu je balíček informací o jednom konkrétním vrcholu (např. pozice a barva). Výstupem je modifikace těchto vstupů a další data, která jsme od shaderu požadovali. Výstup vertex shaderu míří k rasterizeru, který se postará o takzvanou rasterizaci. Úkolem rasterizace je, pro vektorová data získaná od vertex shaderu, najít příslušné pixely, na které bude objekt vykreslen. Proces popisuje obrázek níže: Obrázek 14: Proces rasterizace Zdroj: Data získaná rasterizerem jsou předána na vstup pixel shaderu, který podobným způsobem jako vertex shader zpracovával vrcholy, zpracuje jednotlivé pixely. Výstupem jsou informace, které pomůžou k vykreslení pixelů na displej. Tady se pozastavme. Všechny doposud probrané operace shaderů jsou přímo ukázkovým případem pro paralelní zpracování. Pokud bychom tyto jednoduché operace prováděli sekvenčně na CPU, trvalo by jejich provedení moc dlouho. I tak si je třeba uvědomit, že zpracování těchto paralelních operací není triviální a čím více pixelů je na obrazovce, tím déle budou operace trvat. Konfigurace rozlišení obrazovky má proto asi největší vliv na celý výkon hry. Herní vývojář má možnost vytvořit si shadery sám. Některé herní enginy jako je například Unity nabízí možnost implementovat takzvaný surface shader. Tento typ je abstrakcí obou dvou typů předchozích a je jednoduší na implementaci. Surface shader je následně přeložen (vygenerovaný kód) do vertex i pixel shaderu. Vývojář tak nemá plnou kontrolu nad kódem, ale je od této problematiky odstíněn. K shaderům je možné definovat takzvané sub-shadery. Sub-shader umožňuje definovat rozdílná chování podle typu hardwaru na kterém je spuštěn. 38

39 2.2.5 Grafiky, textury a sprity Fyzický svět je plný obrazů. Povrch jakéhokoliv viditelného objektu je ve své podstatě textura. Záleží jen na pozorovatelově poloze, a tedy měřítku objektu. Slovo textura tedy odpovídá všem vlastnostem povrchu objektu jako je velikost, tvar, hustota, uspořádání základních částí. Textura bývá často popisována vlastnostmi jako hladká, hrubá, měkká, tvrdá, jemná, matná a tak dále. Dobře vytvořená textura musí dát pozorovatelovi pocit jako by daný objekt za sklem displeje opravdu existoval. Pro tvorbu textur existuje mnoho grafických nástrojů. Příkladem může být MARI, BodyPaint 3D, ZBrush nebo Photoshop. Dobrý návrhář ovládá více než jeden grafický nástroj, neboť jeden nástroj může být dobrý na tvorbu hrubého modelu a druhý může být zase vhodnější pro dodělaní detailů. Praktická část této práce je věnována vývoji prototypu hry Maria. Než přijde na řadu vývoj v prostředí herních enginů, tak je za potřebí práce grafického návrháře herní obsahu. Úlohou herních grafiků na počátku projektu je dodat takzvané návrhy neboli sketche. Tyto návrhy přibližují prostředí a postavy, které se budou ve hře nacházet. Tyto kresby pomáhají ostatním členům herního týmu k tomu, aby si představili, v jakém prostředí se hra nachází. Lidé, kteří například navrhují herní příběhy si pak lépe představí, o čem mají psát. Tyto podklady často slouží i pro nalezení potencionálních investorů. Pro účely prototypu hry Maria nám bude stačit mnohem jednoduší koncept grafiky. Jedná se o takzvané sprity, které se využívají například i v prostředí webových aplikací. Grafický vývojář navrhne veškeré pohyby postav na jednom 2D obrázku, který je následně nahrán jako celek. Aplikace, v našem případě Unity, si tento obrázek následně rozseká na jednotlivé obrázky a ty použije pro zobrazení na určených místech. Kompletní zdroje pro vývoj hry Mario jsou k nalezení v přílohách této práce. 39

40 Obrázek 15: Ukázka 2D Spritu pro hru Mario Zdroj: Vlastní zpracování D Modelování 3D modelování se stalo nedílnou součástí všech moderních her. Zatímco u 2D her si vystačíme s texturami vytvořenými v programech jako je Adobe Photoshop, tak u 3D her potřebujeme většinou více nástrojů. Vytvoření kompletního 3D modelu se skládá z pěti fází: Úvodní modelování (hrubý model) Detailní modelování (vyhlazení modelu) Materiální modelování (shadery) Osvětlování Animace V prvním kroku modelování (Initial Modeling) je vytvořen základní model a jeho UV texturová mapa. Vytvoření UV mapy je proces promítnutí 3D modelu do 2D prostoru. Pro tyto základní úkony se hodí programy jako jsou Maya, MAX, Lightwave nebo Silo. Z těchto programů je model většinou vyexportován a pro účely detailního modelování importován do programů jako jsou ZBrush nebo Mudbox. Model s relativně nízkým rozlišením je v těchto programech vyhlazen a následně jsou do modelu vytesány a dokresleny detaily. Celý tento proces se dá představit jako práce sochaře. Nejdříve do kvádru kamene vytesá hrubý model 40

41 obličeje za pomocí dláta a kladiva. Když je spokojen, tak odloží tyto nástroje a vezme si místo nich malé rašple a štětečky a dodělá detaily. Proces materiálního modelování je činnost, kde si vývojář vybírá z dostupných shaderů ten, který se nejvíce hodí pro jeho model. Tímto vývojář předá modelu informaci, z jakého materiálu se skládá jeho povrch. Nejvíce důležitým parametrem pro tento výběr je vlastnost, s kterou má povrch reagovat na světlo. Povrch může být například velmi matný a světlo pohlcovat, nebo může být naopak velmi lesklý a světlo odrážet. Model se může skládat z více shaderů, ale vývojář musí mít na paměti, že čím více objektů ve scéně lze vykreslit za pomocí jednoho shaderu, tím bude scéna pravděpodobně plynulejší. Tvorba dobrých modelů a výběr správných shaderů má velký vliv na výkon hry Osvětlení Výpočet osvětlení probíhá na úrovni pixelů, vrcholů nebo jejich kombinaci. Hru omezuje pouze výkon cílového hardwaru a naše požadavky na kvalitu. Při výpočtech osvětlení se stejně jako při jiných výpočtech před vykreslením zanedbávají objekty v pozadí. Stínování u vzdálených objektů neprobíhá na úrovni pixelů, ale třeba až vrcholů. Tím se šetří hardwarové zdroje. K výpočtům osvětlení probíhá při rasterizaci objektu. Pro výpočty osvětlení jsou potřeba informace o 3D scéně (vzdálenosti objektů od zdrojů světel). Z těchto objektů je proveden výpočet osvětlení, a nakonec jsou 3D objekty rasterizovány a zobrazeny na monitoru. Tento způsob funguje pro jeden i více zdrojů světla. Limitací je pouze výkon a schopnosti hardwaru. Shader, který se stará o výpočty, naplníme informacemi o všech zdrojích světla a tento shader zkombinuje osvětlení zpracovávaného pixelu či vrcholu se všemi světly. Občas bývají z důvodu šetření výkonu zanedbávány vzdálené zdroje světel. Tím sice dochází k výraznému šetření zdrojů, ale mohou se vyskytovat vykreslovací chyby. Pokud například pro osvětlení objektu použijeme striktně jen tři nejbližší světelné zdroje, tak mohou být zanedbány důležité světelné zdroje v pozadí. Příkladem je situace v místnosti, kde jsou čtyři světelné zdroje: žárovka a tři slabé svíčky. Pokud objekt stojí nejblíže slabým svíčkám, tak silný zdroj světla, tedy ona žárovka, může být zanedbána. Dalším problémem může být zanedbání čelního zdroje světla (z pozorovatelovi perspektivy). Tak by do výpočtu byly zaneseny zadní zdroje světel, ty by přitom nebyly ani vykresleny, ale přední světelný 41

42 zdroj by nebyl brán v potaz. Objekt by tak z pozorovatelovi perspektivy působil tmavě. Pozorovatel, tedy kamera, musí být ve výpočtech také zahrnut. 21 Obrázek 16: Osvětlení Zdroj: vlastní zpracování Na obrázku výše je vykreslení stejné scény ve čtyřech různých případech. V prvním je objekt osvícen všemi zdroji světla. Ve druhém došlo k zanedbání horního zdroje světla (lampičky). Ve třetím došlo k chybě, kdy byl zanedbán přední zdroj světla (přední svíčky). Poslední obrázek je ideální situace. Zadní svíčka byla zanedbána ve výpočtech, ale scéna z pozorovatelovi perspektivy vypadá stejně, jako kdyby byly použity všechny čtyři světelné zdroje Globální osvětlení Globální osvětlení ve scéně mají na starost algoritmy, které simulují fyzikální šíření světla scénou. Tyto výpočty zahrnují vlastnosti povrchů jako reflexe, absorpce, přenášení a rozptýlení světelných paprsků. Snaží se tedy o fyzikálně realistický vzhled scény. Opakem tohoto principu je takzvané přímé osvětlování (direct lighting). To spočívá v tom, že paprsky se od povrchu již dále nešíří (viz. obrázek XY). Na rozdíl od algoritmů přímého osvětlení, které tedy uvažují pouze světlo přímo dopadající ze světelného zdroje, počítají metody 21 ZUCCONI,

43 globálního osvětlení s odraženými nebo lomenými paprsky. Vstupem těchto algoritmů jsou informace o geometrii, materiálech a světelných zdrojích ve scéně. 22 Existují dva přístupy k implementaci nepřímého osvětlování. Prvním je point sampling jehož nejznámějším zástupcem je metoda ray tracing. Ray tracing spočívá v sledování každého paprsku světelného zdroje a výpočtech toho, jak se zachová při dopadu na různé druhy povrchů. Tato metoda je velmi složitá na výpočet, protože světelné zdroje tvoří obrovské množství takových paprsků. Ve hrách se používají jen velmi zjednodušené verze takových výpočtů. Druhou metodou pro globální osvětlování je radiozita. 22 Obrázek 17: Rozdíly mezi metodami osvětlení 2.3 Fyzika Fyzika je velmi důležitá součást moderních her. Žádná akční střílečka se bez fyziky neobejde a tento trend se začíná šířit i do žánrů her, které fyziku původně nevyžadovaly. Tato poptávka byla většinou uspokojena produkty, které nabízely třetí strany ve formě middleware implementací, které poskytovaly výkonné fyzické simulace. Cena těchto komerčních produktů byla často velmi vysoká a vývojářům her neumožnovala potřebnou flexibilitu. Implementace vlastních fyzických jader vyžadovala spousty matematiky a znalostí, které nejsou obecně dostupné. Proto spousta frameworků pro podporu fyziky skončila po velkých skandálech v koši. 22 Global ilumination [online]. [cit ]. Dostupné z: Zdroj:

44 Fyzika je velká disciplína a v akademickém světě má stovky odvětví. Každé odvětví se věnuje jinému aspektu fungování fyzického světa. Některé tyto odvětví lze využít ve hrách. Například optika k simulaci cesty paprsku a způsobu jakým se odráží od různých druhů povrchů. Tato technika se ve hrách nazývá ray-tracing a přestože je velmi náročná na výpočet, tak se v některých herních titulech objevila. Některé druhy fyziky naopak nebereme v potaz. Takovým příkladem je asi nukleární fyziky, pokud by se jí hra přímo nevěnovala. Pokud chceme mluvit o fyzice ve hře, tak budeme především uvažovat klasickou mechaniku. Naším cílem je ve hře vytvořit umělý pocit reality, kdy se z vznášejících objektů stanou pevné věci s hmotností, které podléhají fyzikálním zákonům: gravitaci, setrvačnosti, odrazivosti a dalším Physics Engine První pokusy o simulace fyziky jsou staré již přes třicet let. V počátcích si každá hra fyziku implementovala dle svých požadavků. Pokud ve hře hráč střílel z luku a nic jiného, tak se napsal malý kus kódu, který simuloval trajektorii šípů. Hmotnost šípu byla jasně dána a ve veškerých výpočtech zahrnujících hmotnost byly konstanty. Takový kód byl nepoužitelný, pokud se hra rozšířila i o jiné druhy střelných zbraní. Čím jsou požadavky na abstrakci větší, tím je těžší dosáhnout uvěřitelnému pocitu z herního zážitku. V titulu Half- Life z roku 1998 bylo možné interagovat se spoustou objektů, ale abstrakce se občas nepovedla a způsob jakým například hráč posouval krabice nebyl moc reálný. Nelze sice moc mluvit o jádru pro fyziku, nicméně tato hra se určitě může pochlubit povedenou implementací, která byla následně znovu použita v dalších herních titulech od stejné společnosti. Právě znovu použitelnost je jeden z cílů physics engine. Další výhodou je spolupráce komponent. Pokud by existovaly různé simulátory pro vodu, vzduch a oblečení na postavě, tak by musely vzniknout i obtížné implementace mostů mezi nimi. Jinak se bude chovat kabát na postavě, pokud vlaje ve větru a jinak se bude ten samý kabát chovat, pokud je postava na půl ponořena ve vodě. Tyto kolize mezi různorodým prostředím musí mít kvalitní jádro pro fyziku vyřešeno nativně MILLINGTON,

45 2.3.2 Rozdělení jader pro fyziku Existuje několik přístupů k implementaci jader pro fyziku. Podle těchto přístupů lze jádra dělit. Prvním přístupem k aplikaci fyziky na objekt je takzvaný rigid-body (tuhé těleso) přístup. Tuhé těleso je objekt, jehož tvar ani objem se účinkem libovolně velkých sil nemění. Síly, které na těleso působí, mají jen pohybové účinky. Veškeré deformační účinky se zanedbávají a řeší se pouze pohyb a rotace objektu. Opakem je engine, který počítá s jednotlivými komponentami, které jsou k sobě nějakým způsobem přidělány. Tento typ enginu je většinou jednodušší na implementaci. Celý objekt rotuje přirozeně jako výsledek lineárního předávání sil z jedné komponenty na druhou. 24 Druhým druhem rozdělení je podle zpracování kolizí. Během jednoho snímku dochází k desítkám až stovkám malých kolizí mezi dvěma objekty. Tyto kolize mohou být zpracovány buď jedna po druhé. Tomu se říká iterativní přístup a jeho výhodou je rychlé zpracování každé kolize. Celý set kolizí může být vyřešen velmi rychle, ale mohou vzniknout situace, kdy jedna kolize ovlivní nepříznivě jinou a dojde k nesprávnému výpočtu celkového efektu na objekt. Těchto přístupů existuje více. Zmíníme si tu ještě jeden, který je více realistický k reálnému světu. To je takzvaný Jacobian-based přístup. Tato metoda spočívá v tom, že se jádro pokusí vyřešit všechny silové efekty na základě všech kolizí, které v danou chvíli vznikly. Jak už napovídá popis, tento přístup je velmi náročný na výpočet. Systém během kalkulace musí vyřešit stovky až tisíce rovnic a některé situace prostě nemívají jasné řešení. Tyto neřešitelné rovnice bohužel nastávají velmi často a vývojář si s nimi musí poradit svým vlastním kusem kódu. Tento přístup není v herních enginech moc využíván, a proto jej dále rozebírat nebudeme. 25 Posledním typem rozdělení je podle způsobu, jakým jsou kolize po zpracování vyřešeny. Existují dva typy těchto řešení. Force-based přístup, který je nejčastěji využívaný právě s Jacobian-based přístupem řešení kolizí. A další možností je impulse based přístup. Představme si knihu položenou na stole. Na tuto knihu působí síla gravitace směrem dolů. Kdyby v opačném směru, tedy od stolu, nevzniklo působení síly stejné velikosti, tak by se kniha prostě protlačila do onoho stolu. Pokud bychom aplikovali přístup založený na impulsech, tak by v každém snímku na knihu působila síla o určitě velikosti, která by knihu držela na stole. Tato síla se vypočítá podle průměrného počtu snímků za sekundu a pokud 24 MILLINGTON, MILLINGTON,

46 by došlo k výraznému výkyvu počtu snímků, tak by kniha mohla nepříznivě vibrovat na povrchu stolu. Force-based metoda aplikuje konstantní působení síly v každém okamžiku Vektory Praktickým využitím vektorů v našem případě je reprezentace souřadnic v prostoru. Pokud bychom chtěli reprezentovat pozici částice v 3D prostoru, tak by náš vektor a obsahoval tři složky: a = [x, y, z]. Každý vektor specifikuje jednu unikátní pozici v prostoru. Většina game enginů obsahující některé jádro pro fyziku, využívá vektory pouze k této reprezentaci objektů v prostoru. 25 Obrázek 18: Částice v 3D prostoru reprezentovány vektorem (souřadnicemi) Zdroj: MILLINGTON, Ian. Game physics engine development (str 16.) Další interpretace vektorů v prostředích physics enginů je reprezentace změny pozice částice v prostoru. Vektor následně neobsahuje pevnou pozici v prostoru, ale obsahuje deltu (změnu) oproti původní pozici objektu. Pokud částice a ležela v prostoru dle a = [1,1,1], tak její změnu na pozici a = [1, -2, 7] můžeme popsat vektorem b jako b = [0, -3, 6]. 26 TANAYA,

47 2.4 Hra více hráčů Hra více hráčů neboli multiplayer v posledních letech stále více přitahuje pozornost široké veřejnosti. Hlavním cílem této technologie je umožnit více hráčům sdílet identický, synchronizovaný svět a dát hráčům možnost vzájemné interakce. Tato kapitola se věnuje převážně síťovaným principům her pro více hráčů. Tedy zajímá nás replikování a synchronizace herního stavu napříč větším množstvím počítačů. Opakem síťované metody sdílení herního obsahu je přístup takzvané lokální hry pro více hráčů. Implementace multiplayeru se v každé hře liší diametrálně. V podstatě neexistuje žádný jednoznačný návod na to, jak multiplayer do hry implementovat. Snadno si představíte, že vytvořit multiplayer pro 2D skákací hru, kde jediným problémem bude pravděpodobně synchronizace polohy hráčů, je jednodušší než implementace stejné funkčnosti do 3D střílečky. V tak složitém programu je poloha hráčů teprve začátek. Je potřeba vyřešit sdílení složitějších herních objektů, synchronizaci herního času, rozhodovat, zda byl hráč zasažen či nikoliv. A to stále není vše. Každé herní studio si své znalosti a principy implementované ve svých produktech chrání a neprozrazuje Lokální hra více hráčů Jedná se o metodu implementace multiplayeru, která byla navržena tak, aby spolu jeden nebo více hráčů hráli na jednom zařízení. Některé lokální hry pro více hráčů jsme si představili již v kapitole 1. Konkrétně hry Tennis for Two (1958) a Spacewar! (1962). Implementace lokálních her vícero hráčů se moc neliší od implementací her pro jednoho hráče. Jediným rozdílem je například rozdělená obrazovka nebo podpora více připojených zařízení pro herní vstup Rané přístupy k síťovaným hrám Hlavní rozdíl oproti lokálnímu přístupu hry více hráčů je ten, že v síťovaném přístupu jsou k sobě propojeny jeden nebo více počítačů během jedné aktivní herní relace. První opravdu síťované hry byly hostované v malých sítích na mainframech. Jedna z prvních takovýchto sítí byl PLATO systém, který byl vyvinut na univerzitě v Illinois. Právě na PLATO systému byla realizována první síťovaná hra Empire (1973). Joshua Glazer (2015) ve své knize dále zmiňuje titul Maze War, který vznikl přibližně ve stejné době. Není zcela jasné, který z těchto dvou titulů vznikl první a stal se tak otcem síťovaných her. 47

48 Joshua Glazer (2015) ve své knize dále uvádí, že s příchodem osobních počítačů v raných osmdesátých letech museli vývojáři přijít s nějakou konvenční metodou pro synchronizaci herní relace. Jako vyhovující se ukázala komunikace přes sériové porty. Počítače tehdy obsahovaly sériové porty pro komunikace s tiskárnami nebo modemy. Sériové porty umožňují propojení a vzájemnou sériovou komunikaci dvou zařízení. Jednotlivé bity dat jsou vysílány postupně za sebou (v sérii) po jednom páru vodičů v každém směru. Toto umožňovalo vytvořit jednu herní relaci sdílenou více osobními počítači, což vedlo k prvním síťovaným hrám. Obrovská nevýhoda této komunikace spočívala v tom, že počítače měly maximálně dva sériové porty. Bylo-li zapotřebí propojit více počítačů dohromady, tak se musely volit složitější topologie zapojení sítí. Příkladem mohou být kruhové nebo hvězdicové topologie Místní síť Místní síť neboli LAN (local area network) je termín, který označuje několik zařízení propojených dohromady v relativně malé oblasti. Příkladem může být místnost nebo budova. Do kategorie místních sítí spadaly i komunikace přes sériové porty zmíněné v kapitole Nicméně termín místní sítě a vůbec zájem o tento druh sítí raketově vzrostl až s příchodem Ethernetu. Dovolme si znovu zmínit prvního a nezpochybnitelného zástupce tohoto typu her a tím je Doom (1993). David Kushner (2003) ve své knize Masters of Doom popisuje obrovský vliv tohoto titulu nejen na celý vývoj technologií her jako takových, ale i na rozvoj místních sítí pro využití v celém herním průmyslu. Doom umožňoval propojení až čtyř hráčů. Se stále vzrůstajícím počtem her podporujících technologii LAN rostl i počet hráčů vyžadujících multiplayer. V této době vznikl termín Lan Parties, který označoval shromáždění hráčů na jednom místě. Posledním problémem tak zůstávala nutnost shromáždění hráčů na jednom místě a převoz počítačových stanic z místa na místo. Tento nedostatek odstranil až příchod internetu a jeho zavedení do běžných domácností. Většina novějších her podporujících technologii LAN zároveň podporuje i technologii Online multiplayeru. 48

49 2.4.4 Online hry Krátce po místních sítích hry začaly podporovat multiplayer přes internet. V podstatě se ničím nelišily od místních her. Vývojáři si pouze museli poradit s vyšší odezvou, než na jakou byli zvyklí u ethernetu. Tyto typy her zde dále nebudeme rozvádět. V této kategorii existují mnohem zajímavější herní modely. Jedním z nich je model masivních online her pro více hráčů. Tento termín je lépe znám pod termínem massively multiplayer online games (MMOs). Tento koncept je ze všech modelů pro hry více hráčů nejkomplexnější. MMO hry hostují i tisíce hráčů najednou a pro všechny nabízejí zcela sdílený a perzistentní svět. David Miler 27 ve své práci uvádí, že perzistence je dosaženo za pomocí herní databáze což pro MMO servery znamená, že se jejich architektura podobá tradiční třívrstvé architektuře pro weby. Škálování se v tomto konceptu provádí několika způsoby. Každý hráč bývá serverem informován jen o ději v jeho nejbližším okolí. Tak dochází k částečné úspoře v komunikaci mezi serverem a klientem hráče. Často bývá aplikace škálována i horizontálně a to tak, že existuje více serverů, které se starají o každou lokaci zvlášť. Servery si tak předávají herní relace tím způsobem, že hráč například přejede do jiné lokace plavidlem. Objeví se nahrávací obrazovka a spustí se logika na transfer relace. Další možností, jak uspořit výkon na straně serveru je přesunout část logiky a výpočtů na stranu klienta. Tento způsob má několik omezení. Zvyšujeme tím požadavky na hardware klienta a zároveň otevíráme naší aplikaci a klienti mají možnost aplikační logiku narušit či nepříznivě ovlivnit průběh hry. Třeba za pomoci cheatingu. Cheating má několik podob implementací. Jedná se o způsob jak si dopsat nebo použít existující metody administrátorů k získání nadměrných práv nebo vlastností ve hře Konektivita V předchozí kapitole jsme si prozradili, že pro hry více hráčů je v současné době využíván převážně internet. Jedno z nejdůležitějších technických rozhodnutí, které bude mít obrovský dopad na finální podobu produktu, je výběr protokolu pro komunikaci na transportní vrstvě. Naneštěstí se toto rozhodnutí projeví až v koncové fázi produktu pod velkou zátěží uživatelů, jejichž připojení bude mít ke všemu abnormální odezvy. V podstatě existují jen tři možnosti: protokol TCP, UDP a kombinace obojích. TCP je spolehlivý protokol, u kterého si můžeme být jistí, že jednotlivé pakety dorazí, a navíc 27 MILER,

50 dorazí ve správném pořadí. Takový typ spojení se hodí na situace, kdy si nemůžeme dovolit ovlivnit herní zážitek tím, že server nebo uživatel nedostane informace o hráčově akci. Příkladem může být zmáčknuté tlačítko, které nevyvolá žádnou reakci. Nejhorším případem je situace, kdy se odpověď na uživatelovu interakci nedostane zpět na klienta. V takových případech může dojít k naprosté desynchronizaci mezi serverem a klientem. UDP na druhou nezaručuje doručení všech paketů a je celkově méně spolehlivý. Tento protokol se používá například pro stream videa. Mezi pozitiva UDP protokolu patří nižší odezvy přenosu. Tento protokol se skvěle hodí třeba pro data o pozicích hráčů. Pokud se paket s pozicí hráče nenávratně ztratí, tak každý další paket, který dorazí nám pozici hráče aktualizuje na správnou hodnotu. UDP se zkrátka hodí pro situace, kdy nám nezáleží na doručení všech paketů včas a v pořadí za sebou, ve kterém jsme jej odeslali. David Miler 28 ve své práci Multiplayer mód v počítačových hrách dále rozvádí technologie, jak hru pro více hráčů optimalizovat. Tato práce se této problematice již dále nevěnuje. 28 MILER,

51 3. Herní engine V předchozích kapitolách jsme si ukázali několik problematik, se kterými se herní vývojář při své práci potká. Herní frameworky existují právě z důvodu, aby žádnou z těchto složitostí herní návrhář nemusel znovu vymýšlet. Poslední část této práce je věnována herním frameworkům a práci s jedním z nich. Svět herních vývojářů se v posledních letech potkal s mnoha velkými novinkami. Velká herní studia a vlastníci předních herních enginů se dohodli, že vypustí nové verze svých nástrojů téměř souběžně, a navíc zvolili zajímavou strategii zpřístupnili je začínajícím herním vývojářům zdarma. Na trhu již sice existovali herní frameworky, které nabízeli vývojářům svoje funkcionality zdarma, ale až přechod velkých a uznávaných enginů do tohoto nového obchodního modelu, spustil zlatou éru moderního herního vývoje. Konkurence v tomto odvětví působí velký tlak na tvůrce enginů. Pro zachování konkurenceschopnosti musí neustále reagovat na nové požadavky svých uživatelů. Mezi přední enginy například patří Unreal Engine 4 od Epic Games, CryEngine od společnosti Crytek, Source 2 od Valve a nová Unity Teorie herních enginů Herní engine je softwarový framework navrhnutý pro tvorbu a údržbu videoher. Vývojáři je používají pro tvorbu her na konzole, mobilní zařízení a osobní počítače. Mezi hlavní funkcionality nabízené herním enginem patří vlastní renderovací jádro pro 2D i 3D prostředí, jádro pro počítání kolizí mezi objekty (tedy fyzika), zvuky, animace, přístup k implementacím hry více hráčů a alokace paměti. Každý engine podporuje různé druhy vyšších programovacích jazyků pro skriptování nad herními objekty. Herní frameworky dále nabízí svá prostředí pro zjednodušení práce s animacemi, zvukem, lokalizací a práci s videem pro cut-scény. Správné využití herního enginu vede ke znuvupoužitelnosti herních objektů ve více produktech. Standardem se staly už i vlastní diagnostické nástroje pro profilování herních scén. Herní engine je uprostřed celého procesu vývoje her. Často dochází k chybnému výkladu, že v herním enginu probíhá vývoj celé počítačové hry. Velká část vývoje spočívá v modelování objektů a charakterů v externích nástrojích jako je Maya, 3Ds Max, Photoshop a další. Tyto modely jsou následně importovány do enginu ve formě tzv. herních assetů. Tyto 51

52 assety se pak stávají součástí vznikající hry, které se musí v konkrétním enginu dále naprogramovat. 3.2 Unity 5.0 Začátkem roku 2015 byla vydána nová verze Unity 5.0. Hlavní předností tohoto nástroje je jeho multiplatformní využití pro jednotlivé mobilní formáty. Unity lehce zvládne převádět hru na platformy ios, Windows Phone, Android a BlackBerry. Samozřejmostí je i vývoj pro PlayStation, Xbox One a PC. Nicméně zatím se stále dá říct, že se jedná především o engine vhodný pro vývojáře her na mobilní zařízení. Do Unity lze snadno naimportovat assety ze studia Maya, Cinema 4D nebo Blender. Dále má skvělé nástroje pro import 2D assetů pro vývoj dvoudimenzionálních titulů. Studio samo nenabízí moc dobré rozhraní pro tvorbu vlastních assetů, za to nabízí vlastní Unity Asset Store, kde lze zdarma či za nízké částky nakoupit mnoho kvalitních assetů. Jedná se o výborné prostředí pro začínající jednotlivce, kteří nemají velké zkušenosti s tvorbou vlastních assetů. Unity je ke stažení na svých oficiálních stránkách unity3d.com ve třech různých edicích, Unity Personal, Plus a Pro. Začínající herní vývojář si vystačí s edicí Unity Personal, která je dostupná zdarma do ročního výdělku až sto tisíc amerických dolarů Založení nového projektu a scény Při spuštění unity dojde k zobrazení úvodní obrazovky s možnostmi přihlášení ke svému uživatelskému účtu a založení nového projektu. Uživatel si může zvolit výchozí cestu pro ukládání svých projektů. Nový projekt se skládá z nové scény s prázdnou paletou pro herní objekty. Scéna je základní pracovní prostor pro objekty hry. Scény mohou být použity pro menu, jednotlivé úrovně hry a cokoliv dalšího. Nejčastěji má hra dvě a více scén. Jednu scénu pro hlavní menu a další scény, které se posléze spouští pro jednotlivé levely. Přechod mezi těmito levely je řízen převážně v kódu. Například kontroler pro objekt hráče může kdykoliv hru navigovat do hlavní nabídky, pokud hráč umře. Každá herní scéna obsahuje objekty prostředí, překážek, nepřátel, dekorací, světel a dalších. S vytvořením nového Unity projektu dojde ke vzniku nové scény. Tato scéna není pojmenována a není ani nijak uložena. Scéna je obvykle prázdná až na výchozí objekty, které se v ní mohou předem vygenerovat. Výchozími objekty jsou kamera a přímý zdroj světla. Prototyp Maria neobsahuje úvodní scénu pro menu. Skládá se z jedné scény pojmenované Overworld. Tato scéna obsahuje postavu hráče, kameru, několik nepřátel Goombas, prostředí prototypu a UI prvky. 52

53 Obrázek 19: Kompletní scéna pro prototyp Maria Zdroj: Vlastní zpracování Uživatelské rozhraní a import assetů Unity nabízí rozsáhlé uživatelské rozhraní pro práci se scénou a herními objekty. Vývojář by měl při seznamování s rozhraním věnovat čas do rozvržení oken dle svých zvyklostí. Prostředí se dá nastavit na podobné rozvržení jako má například Visual Studio (bez grafických designerů). Prvním krokem k tvorbě herních objektů je import assetů potřebných pro implementaci hry. Tyto assety lze získat z Unity Assest store, od grafického designera nebo stažením z internetu. Assety potřebné pro tvorbu 2D hry Mario se nachází v příloze této práce. Obrázek níže ukazuje rozvržení projektu zvoleného pro praktický příklad prototypu Mario. Projekt se skládá z: Animations (složka s animacemi charakterů) Prebas (předpisy herních objektů) Scenes (složka se scénami hry) Scripts (skripty ke hře Mario) Sounds (zvuky) 53

54 Textury, případně složka se sprity. Obrázek 20: Rozvržení projektu prototyp Mario Zdroj: Vlastní zpracování Herní objekt Když jsou herní assety naimportovány v prostředí Unity, můžeme pokračovat v tvorbě herních objektů. Herní objekt (GameObject) je tím nejdůležitějším prvkem v celém Unity Editoru. Každý objekt ve hře je typu GameObject. Nicméně, tato entita ve své úvodní podobě neumí nic. Je to jen jakýsi kontejner, pod který můžeme přiřazovat vlastnosti, komponenty a skripty. Až následně se z abstraktního herního objektu může stát charakter, prostředí, zdroj světla, zvuk nebo jiný speciální efekt. Podle toho, jakého typu herního objektu chceme dosáhnout, musíme přiřadit kombinaci komponent a vlastností. Unity má spousty nativních komponent, které můžeme využívat. Vývojář samozřejmě není nijak omezen a může si vytvořit svou vlastní komponentu a implementovat ji pomocí Unity Scripting API. 29 Po přetažení textury do scény se automaticky vytvoří nový objekt pojmenovaný po textuře. V tomto konkrétním případě se vytvoří objekt mario_big_normal_create. Po kliknutí na jméno objektu v hiearchii scény dojde k zobrazení inspektoru se všemi 29 BLACKMAN,

55 komponentami, které herní objekt obsahuje. Na obrázku níže si můžeme všimnout, že objekt obsahuje komponentu Transform, která spravuje pozici, rotaci a velikost objektu ve scéně. Další komponentou, která se automaticky přidala, je Sprite Renderer. Tato komponenta se stará o vykreslení objektu ve scéně. Obrázek 21: Detail herního objektu Maria Zdroj: Vlastní zpracování Herní prostředí a šablony objektů Než herní postavu obohatíme o další komponenty a vytvoříme z ní tak plnohodnotnou hlavní postavu, tak do scény připravíme malé herní prostředí. Prostředí Maria se skládá z bloků velikosti 0.16 x 0.16 unity jednotek. Tyto bloky jsou k nalezení mezi texturami dodaných v příloze. Stejným způsobem jako s postavou Maria přetáhneme texturu bloku do scény. Tyto bloky vytvoří prostředí, po kterém bude postava chodit. Objekty, které vznikají, mají stejné vlastnosti jako postava Maria. Jediným rozdílem je jejich počet. Scéna běžně obsahuje mnoho opakujících se herních objektů. Jednoduché kopírování objektů vytváří duplikáty, které se od určitého množství mohou jen velmi obtížně spravovat. Obrázek 22: Vložené bloky pod postavu Zdroj: Vlastní zpracování 55

56 Scéna hry Maria obsahuje mnoho bloků, které tvoří plochu, po které Mario postupuje. Tyto objekty mají společné textury, komponenty, animace a chování. I v prostředí Unity existuje jednoduchý a elegantní způsob pro řízenou tvorbu šablon objektů a jejich následné instancování. Tento předpis objektu se v Unity terminologii nazývá Prefab. Prefab obsahuje herní objekt s kompletním výčtem jeho komponent a podřízených elementů. Prefab se chová jako šablona, ze které lze vytvářet jednotlivé instance herních objektů. Jakékoliv změny vlastností v tomto předpisu povedou ke změně vlastností ve všech instancích z něho odvozených. Jednotlivé instance lze po vytvoření odtrhnout od předpisu a zbavit je tak jeho předka. Prostředí Maria je postavené z bloků a každý tento blok má svůj předpis. Stejně tak nepřátelé a mince, se kterými se ve hře postupně setkáme Fyzika s Rigidbody Do této kapitoly jsme využívali pouze základní vykreslovací schopnosti Unity. V tuto chvíli není hra nic víc, než jen statický obraz. Aby hra ožila je potřeba vnést do prostředí Maria trochu fyziky. Naším hlavním herním objektem je charakter hráče, tedy postava Maria. Mario je typu GameObject a zdědil tak základní komponentu Transform používanou pro umístění herního objektu ve scéně. Tuto komponentu budeme dále používat pro pohyb postavy po herní scéně. Přidáním komponenty Rigidbody k objektu dojde k jeho zaregistrování pod modul kontrolující fyziku v Unity. Objekt je nyní zahrnut ve výpočtech fyziky a začnou na něj automaticky působit fyzikální vlastnosti scény. Takovou vlastností je například gravitace. Další důležitou vlastnost, kterou objekt získá, je schopnost kolidovat s ostatními objekty, pokud má na sobě komponentu Collideru. Je nesmírně důležité, aby i objekty, se kterými má naše postava kolidovat (například po nich chodit) obsahovaly komponentu Collideru. Rigidbody dále poskytuje API, které umožní vývojáři aplikovat na objekt fyzikální síly. Takto můžeme pohybovat objektem v kterémkoliv směru za pomoci vektorů reprezentujících sílu a směr pohybu. Běžným problémem při manipulaci s Rigidbody objekty je situace, kdy scéna vypadá, jako by probíhala ve zpomaleném čase. Unity vývojář se musí seznámit s jednotkami a měřítkem používaných frameworkem. Unity předpokládá, že jedna unity jednotka ve vzdálenosti představuje jeden metr ve skutečnosti. Pokud bychom importovali modely, které by byly velké sto unity jednotek, tak si sice můžeme přizpůsobit měřítko dle importovaných modelů, ale jádro fyziky se k nim bude chovat jako k obrovským předmětům. Je rozdíl, 56

57 pokud aplikujete silový vektor na objekt velký jeden metr, anebo na objekt veliký sto metrů. Unity online dokumentace vybízí vývojáře k opatrnosti, pokud manipuluje se samotnou podstatou rigidbody Player Controller Skriptování je základním stavebním kamenem ve všech hrách. Dokonce i ta nejjednodušší hra vyžaduje určitý set scriptů, které obslouží vstup od hráče a postará se o obsluhu všech druhů událostí, které mohou nastat. Kromě toho mohou být skripty použity pro tvorbu grafických efektů, kontrolu nad chováním objektů nebo pro implementace umělých inteligencí (AI) pro charaktery ve hře. Teď když náš objekt díky Rigidbody nebude propadávat texturami, je na čase mu přidat řídící skript, který bude obsluhovat pohyb hráče a komponentu animátoru. Každý Unity script musí dědit z třídy MonoBehaviour. Monobehaviour je základní předek pro všechny implementace obsluhující herní objekty. Má svůj životní cyklus, kterým prochází každý objekt z něho dědící. Mezi metody tohoto cyklu patří například metoda Awake (volaná při inicializaci), dále Update a FixedUpdate (metody volány před vykreslením každého snímku). Životní cyklus obsahuje i metody obsluhující kolize a mnoho dalších funkcionalit Unity. Unity automaticky skenuje přidanou třídu pro její veřejné vlastnosti, které posléze vykreslí v UI designeru. Pomocí těchto vygenerovaných vstupních polí může vývojář snadno, třeba za pomoci drag-and-drop přístupu, přiřadit do těchto vlastností hodnoty. Příkladem může být reference na jiný GameObject. Pokud vytvoříme veřejnou vlastnost typu GameObject, tak můžeme v designeru vytáhnout jakýkoliv objekt ze stromečku herních objektů a přiřadit jej do této veřejné proměnné. Situaci ukazuje následující obrázek: 30 DOCS [online] [cit ]. Dostupné z: 57

58 Obrázek 23: Veřejné proměnné PlayerControlleru, mapované do designeru Zdroj: Vlastní zpracování Přidejme tedy hlavní postavě komponentu reprezentující nový skript. Jako jazyk pro obsluhu herních objektů je v této práci zvolen C#. Veškeré zdrojové kódy k objektům hry Mario jsou v příloze. Za zmínku stojí implementace metody FixedUpdate, která je v životním cyklu volána před renderováním každého snímku a aplikací fyzických vlastností. V této metodě chceme získat informace o vstupu od uživatele, zda se pohybuje a kterým směrem. Následně je potřeba předat pohybový vektor komponentě Rigidbody. Metoda dále řeší otočení objektu ve směru, kam se postava podle uživatelského vstupu pohybuje. Poslední blok kódu předává animátoru informaci, aby ukončil animaci skoku, pokud právě probíhá. Animátoru se věnuje následující kapitola. 58

59 Obrázek 24: Kód metody FixedUpdate v PlayerControlleru Zdroj: vlastní zpracování Animátor a Animace Je zcela běžné, aby herní objekty měly mnoho odlišných animací, které korespondují s tím, co konkrétní objekt právě dělá. Například může herní postava dýchat, pokud se nehýbe. Pokud chodí tak se tělo pohybuje ve směru chůze a pokud postava padá, tak může například v hrůze zvedat ruce. Dveře se mohou otevírat nebo zavírat. Unity nabízí animační nástroj nazývaný Mecanim. Mecanim je vizuální komponenta, která se podobá designeru pro flow-chart diagramy, které reprezentují stavy herního objektu. Vývojář si namodeluje stavy, kterými může jeho objekt procházet a nastaví pravidla pro přechod z jednoho stavu do druhého. O obsluhu animátoru se stará komponenta AnimatorController. 59

60 Obrázek 25: Jednoduchý flow-chart diagram animací Maria Zdroj: vlastní zpracování Z obrázku výše vyplývá, že po startu scény dojde k okamžitému přechodu do stavu mario_idle. Z diagramu je jasné, že z tohoto stavu může herní postava přejít do stavu mario_run nebo mario_jump. Hráč může z jakéhokoliv stavu přejít do stavu mario_dead. Z tohoto stavu již nelze přestoupit na stav jiný. I herní logika je připravená na to, že scéna s přechodem do tohoto stavu končí. Tabulka 3: Podmínky přechodu stavů animací hlavní postavy Počáteční stav Podmínky přechodu Konečný stav Mario_idle Mario_idle && Input.GetButtonDown("Jump") && this.grounded Mario_jump Mario_jump Mario_idle Mario_jump && this.grounded Mario_idle && Input.GetAxis("Horizontal")! = 0 Zdroj: Vlastní zpracování Mario_idle Mario_run Tyto podmínky jsou vyhodnoceny pokaždé, když animace skončí. Animace pro běh nebo skok postavy Maria by proto měly být co nejkratší. Ideálně by neměly být delší než jednu sekundu. Jinak by postava působila dojmem, že například běží i pokud už několik stovek milisekund stojí na místě. Tvorbu animací má na starosti většinou grafik se 60

61 zkušenostmi cílového herního enginu. Animace pojmenovaná running se skládá ze dvou snímků obsahující záběry postavy v běhu a je dlouhá zhruba 0.2 sekundy. To znamená, že animátor se každých 0.2 sekundy podívá na stavy hry a pokud je postava stále v režimu running tak animaci zopakuje. Jinak animátor dle flowchart diagramu přejde do stavu mario_idle či mario_jump, pokud byla klávesa pro skok stisknuta. Obrázek 26: Animace "running" v detailu Zdroj: Vlastní zpracování Programování kamery a rekapitulace V tuto chvíli projekt Maria vykazuje základní charakteristiky, které ho definují jako hru. V projektu existuje hlavní postava, na kterou působí gravitace, a která se pohybuje po statickém povrchu. Postava vykazuje základní prvky animace. Umí se otočit ve směru pohybu a pokud se pohybuje, tak dochází ke spuštění animace running ve stylu nekonečné smyčky. Než budeme hru moci sestavit pro konečnou platformu a vyzkoušet tak základní funkčnosti, zbývá doprogramovat poslední důležitý prvek hry. Tímto prvkem je herní kamera. Objekt herní kamery existoval ve scéně již od vytvoření scény, tedy od inicializace projektu. Mario od kamery nevyžaduje žádné sofistikované chování. Jejím primárním úkolem by mělo být pouze sledování herní postavy po ose X. Pohyb kamery po ose Y není vyžadován. Kamera dále nesmí posunout svoji pozici za hranice objektů na ose X. To tedy znamená, že kamera nesmí zobrazit více než poslední objekt úplně vlevo a úplně vpravo na Obrázek 27: Implementace chování kamery 61

62 ose X. Na objekt kamery tak přidáme novou komponentu reprezentující C# script, jehož implementace je znázorněna na obrázku 27. Zdroj: Vlastní zpracování V tuto chvíli kamera pronásleduje hráče stejným způsobem, jako sledovala kamera hráče v originální hře. Nezbývá nic jiného než zkusit první build aplikace Mario na cílovou platformu. Jako cílová platforma byly v této práci zvoleny webové prohlížeče a z tohoto důvodu se v následující kapitole zaměříme na webové technologie pro hraní her v prohlížečích. 3.3 WEBGL Tradičně byla 3D grafika v hrách určena jen pro dedikované herní konzole a vyžadovala komplexní programování. Nicméně s rozvojem osobních počítačů a standardizací technologií pro prohlížeče bylo možné vzít některé dostupné webové technologie a zpřístupnit 3D obsah na internetu. Unity překládá svůj obsah do 62

63 JavaScriptových programů, které využívají funkcionalit HTML5 a za pomoci WebGL zobrazují svůj obsah ve webových prohlížečích Základy WEBGL WebGL je technologie umožňující vykreslování, zobrazování a interakci sofistikované 3D grafiky v internetových prohlížečích. Poskytuje nízko úrovňové API ke grafickým komponentám počítače. Je založená na OpenGL ES 2.0 a poskytuje podobné funkcionality k renderování obrazu jako OpenGL pouze s jediným rozdílem, vykresluje jej za pomocí HTML5 a Javascriptu. HTML5 nabízí jako plochu k renderování element canvas, který byl původně určen k vykreslování 2D obrazu. Canvas měl být využívaný například pro grafy anebo jiné widgety používané standardně v administrátorských rozhraních webových stránek. Tuto technologii může každý zdarma a libovolně využít k publikaci 3D obsahu na svých stránkách. Není potřeba žádné instalace zásuvných modulů do prostředí klientů. 31 Knihovny podobného typu bývají navržené dle dvou různých přístupů k implementaci grafických API: Retained-mode API Immediate-mode API Immediate-mode API WebGL je navržené dle Immediate-mode API. Při tomto typu rozhraní musí být celá scéna překreslena při každém snímku. Nezáleží na tom, zda se změnila. Grafické knihovny, které poskytují rozhraní tímto způsobem, neukládají žádné informace o stavu modelu scény ve svých vlastních strukturách. Místo toho si správu modelu musí obsluhovat aplikace, která knihovnu využívá. Z předchozích vět jasně vyplývá, že výhodou tohoto přístupu je daleko větší flexibilita a kontrola aplikace nad stavem scény. Na druhou stranu to rovněž znamená větší práci pro aplikaci. Vývojáři takových aplikací musí myslet na architekturu scén, inicializaci a úklid paměti. Diagram níže zjednodušeně ukazuje jak immediate-mode API funguje ANYURU,

64 Obrázek 28:Immediate-mode API Zdroj: vlastní zpracování Retained-mode má na druhou stranu model scén uložen v grafických knihovnách. To má za následek nižší kontrolu nad modelem ze strany vývojáře, a tak omezenost celkového řešení. Tato architektura je vyhovující převážně pro jednoduchá řešení. 3.4 Build hry Za cílovou platformou pro build prototypu hry Mario jsme si vybrali webové prohlížeče. Chceme proto využít nativní podpory pro WebGL, které Unity nabízí. Než se WebGL stalo standardem pro webovou grafiku, mělo Unity svůj vlastní zásuvný modul, který musel být do prohlížečů instalován. Tomuto doplňku se říkalo Unity Web Player a jeho podpora byla oficiálně ukončena s vydáním verze Unity 5.0. Unity nabízí přehledné rozhraní pro výběr cílové platformy a následné konfigurace buildu. V případě buildu pro WebGL je vývojáři umožněno sestavit aplikaci v takzvaném Development Buildu. Ten je sice mnohem větší, než by byl release build, ale umožňuje například použití profileru a dalších funkcionalit, které jsou dostupné jen pro build v režimu development. 64

65 Obrázek 29: Nastavení buildu pro Unity projekt Zdroj: Vlastní zpracování Kompilace Unity projektu do WebGL Aby hra mohla být spuštěna v prohlížeči, musí být všechen kód přeložen do JavaScriptové podoby. K překladu herního kódu (v našem případě C#) používá Unity technologii nazvanou IL2CPP 32. Tato technologie byla vyvinuta vývojáři z Unity, aby pomohla s buildem aplikací na platformy podporující jazyk C++. IL2CPP vezme.net bytecode a přeloží ho do zdrojových kódů C++, které jsou posléze dále přeloženy jinými nástroji do JavaScriptu. K tomuto převodu Unity používá emscripten compiler 33 což je 32 IL2CPP [online] [cit ].Dostupné z: 33 Emscripten [online] [cit ]. Dostupné z: 65

66 nástroj další třetí strany pro překlady C a C++ kódu do JavaScriptu. Technologie běžně používáné při buildu hry v Unity ukazuje následující obrázek: Obrázek 30: Technologie používané pro build her z Unity Zdroj: Il1CPP komponenta na svém vstupu přijme kompilované knihovny z Mona nebo z kterýchkoliv jiných kompilátorů. Následně vygeneruje C++ zdrojové kódy, které jsou následně přeloženy za pomocí jiných překladačů pro konkrétní platformu. Mario bude přeložen pro WebGL a HTML5. 66

Co je grafický akcelerátor

Co je grafický akcelerátor Co je grafický akcelerátor jednotka v osobním počítači či herní konzoli přebírá funkce hlavního procesoru pro grafické operace graphics renderer odlehčuje hlavnímu procesoru paralelní zpracování vybaven

Více

OPS Paralelní systémy, seznam pojmů, klasifikace

OPS Paralelní systémy, seznam pojmů, klasifikace Moorův zákon (polovina 60. let) : Výpočetní výkon a počet tranzistorů na jeden CPU chip integrovaného obvodu mikroprocesoru se každý jeden až dva roky zdvojnásobí; cena se zmenší na polovinu. Paralelismus

Více

Nvidia CUDA Paralelní programování na GPU

Nvidia CUDA Paralelní programování na GPU Mendelova univerzita v Brně Provozně ekonomická fakulta Nvidia CUDA Paralelní programování na GPU 2014 O čem to bude... Trocha historie Shadery Unifikace GPGPU CUDA Využití GPGPU GPU a jeho Hardware Nvidia

Více

Vývoj počítačové grafiky. Tomáš Pastuch Pavel Skrbek 15.3. 2010

Vývoj počítačové grafiky. Tomáš Pastuch Pavel Skrbek 15.3. 2010 Vývoj počítačové grafiky Tomáš Pastuch Pavel Skrbek 15.3. 2010 Počítačová grafika obor informatiky, který používá počítače k tvorbě umělých grafických objektů nebo pro úpravu již nasnímaných grafických

Více

Základní informace. Operační systém (OS)

Základní informace. Operační systém (OS) Základní informace Operační systém (OS) OS je základní program, který oživuje technické díly počítače (hardware) a poskytuje prostředí pro práci všech ostatních programů. Operační systém musí být naistalován

Více

Osobní počítač. Zpracoval: ict Aktualizace: 10. 11. 2011

Osobní počítač. Zpracoval: ict Aktualizace: 10. 11. 2011 Osobní počítač Zpracoval: ict Aktualizace: 10. 11. 2011 Charakteristika PC Osobní počítač (personal computer - PC) je nástroj člověka pro zpracovávání informací Vyznačuje se schopností samostatně pracovat

Více

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu Název školy Číslo projektu Autor Název šablony Název DUMu Tematická oblast Předmět Druh učebního materiálu Anotace Vybavení, pomůcky Ověřeno ve výuce dne, třída Střední průmyslová škola strojnická Vsetín

Více

27. 11. 2012, Brno Připravil: Ing. Jaromír Landa. Postprocessing videa

27. 11. 2012, Brno Připravil: Ing. Jaromír Landa. Postprocessing videa 27. 11. 2012, Brno Připravil: Ing. Jaromír Landa Postprocessing videa Digitální video Digitální video Typ záznamového zařízení, které pracuje s digitálním signálem a ne s analogovým. Proces, kdy se v určitém

Více

GRAFICKÉ ADAPTÉRY. Pracovní režimy grafické karty

GRAFICKÉ ADAPTÉRY. Pracovní režimy grafické karty GRAFICKÉ ADAPTÉRY Grafický adaptér (též videokarta, grafická karta, grafický akcelerátor) je rozhraní, které zabezpečuje výstup obrazových dat z počítače na zobrazovací jednotku (monitor, displej, dataprojektor,

Více

www.zlinskedumy.cz Střední průmyslová škola Zlín

www.zlinskedumy.cz Střední průmyslová škola Zlín VY_32_INOVACE_31_12 Škola Název projektu, reg. č. Vzdělávací oblast Vzdělávací obor Tematický okruh Téma Tematická oblast Název Autor Vytvořeno, pro obor, ročník Anotace Přínos/cílové kompetence Střední

Více

Procesory nvidia Tegra

Procesory nvidia Tegra VŠB-TU Ostrava Fakulta elektrotechniky a informatiky Procesory nvidia Tegra Petr Dostalík, DOS140 Pokročilé architektury počítačů Představení nvidia Tegra V únoru roku 2008 představila společnost nvidia

Více

Procesor. Hardware - komponenty počítačů Procesory

Procesor. Hardware - komponenty počítačů Procesory Procesor Jedna z nejdůležitějších součástek počítače = mozek počítače, bez něhož není počítač schopen vykonávat žádné operace. Procesor v počítači plní funkci centrální jednotky (CPU - Central Processing

Více

Pohled do nitra mikroprocesoru Josef Horálek

Pohled do nitra mikroprocesoru Josef Horálek Pohled do nitra mikroprocesoru Josef Horálek Z čeho vycházíme = Vycházíme z Von Neumannovy architektury = Celý počítač se tak skládá z pěti koncepčních bloků: = Operační paměť = Programový řadič = Aritmeticko-logická

Více

DUM č. 14 v sadě. 31. Inf-7 Technické vybavení počítačů

DUM č. 14 v sadě. 31. Inf-7 Technické vybavení počítačů projekt GML Brno Docens DUM č. 14 v sadě 31. Inf-7 Technické vybavení počítačů Autor: Roman Hrdlička Datum: 24.02.2014 Ročník: 1A, 1B, 1C Anotace DUMu: Grafické karty: zapojení, součásti, napájení, chlazení.

Více

AGP - Accelerated Graphics Port

AGP - Accelerated Graphics Port AGP - Accelerated Graphics Port Grafiku 3D a video bylo možné v jisté vývojové etapě techniky pracovních stanic provozovat pouze na kvalitních pracovních stanicích (cena 20 000 USD a více) - AGP představuje

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího

Více

Ing. Jan Buriánek. Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jan Buriánek, 2010

Ing. Jan Buriánek. Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jan Buriánek, 2010 Ing. Jan Buriánek (ČVUT FIT) GPU a GTC BI-MGA, 2010, Přednáška 11 1/29 Ing. Jan Buriánek Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jan Buriánek,

Více

PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200

PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200 PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200 Bc.Adam Berger Ber 208 Historie a předchůdci G200 V červnu roku 2008 spatřila světlo světa nová grafická karta od společnosti Nvidia. Tato grafická karta opět

Více

Tvorba 3D výukových aplikací pomocí technologie

Tvorba 3D výukových aplikací pomocí technologie Tvorba 3D výukových aplikací pomocí technologie Microsoft Silverlight Martin Tribula, Martin Vavrek, Michal Otčenášek Abstrakt V dnešním moderním světě je virtuální realita považovaná za rozvíjející se

Více

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit Jednoduché stránkování Operační systémy Přednáška 8: Správa paměti II Hlavní paměť rozdělená na malé úseky stejné velikosti (např. 4kB) nazývané rámce (frames). Program rozdělen na malé úseky stejné velikosti

Více

Satori. Uživatelský manuál

Satori. Uživatelský manuál Satori Uživatelský manuál Obsah Satori...1 1. Program... 3 1.1 Cíle hry... 3 1.2 Požadavky...3 1.3 Instalace... 4 1.4 Ovládání... 4 1.5 Grafika...4 1.6 Zvuky...4 1.7 Soubory...4 1.8 Menu...5 1.9 Nastavení...

Více

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Název školy: Střední odborná škola stavební Karlovy Vary Sabinovo náměstí 16, 360 09 Karlovy Vary Autor: Ing. Hana Šmídová Název materiálu: VY_32_INOVACE_13_HARDWARE_S1 Číslo projektu: CZ 1.07/1.5.00/34.1077

Více

Seznámení s prostředím dot.net Framework

Seznámení s prostředím dot.net Framework Základy programování v jazyce C# Seznámení s prostředím dot.net Framework PL-Prostředí dot.net - NET Framework Je základním stavebním prvkem, na kterém lze vytvářet software. Jeho součásti a jádro je založené

Více

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Přednáška Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského

Více

Software Základní pojmy a rozdělení. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1123_Software Základní pojmy a rozdělení_pwp

Software Základní pojmy a rozdělení. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1123_Software Základní pojmy a rozdělení_pwp Základní pojmy a rozdělení Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1123_Software Základní pojmy a rozdělení_pwp Název školy: Číslo a název projektu: Číslo a název šablony klíčové aktivity:

Více

Vzdálený přístup k počítačům

Vzdálený přístup k počítačům Vzdálený přístup k počítačům jedna z nejstarších služeb vzdálený přístup k sálovým počítačům nejprve vzdálené terminály později terminálová emulace jako jedna ze služeb počítačové sítě současnost využíváno

Více

Přídavné karty. Zvuková karta. Síťová karta

Přídavné karty. Zvuková karta. Síťová karta Přídavné karty - jsou samostatná hardwarová zařízení umožňující rozšířit možnosti počítače o nové funkce, které základní hardwarová sestava neumožňuje. - díky přídavným kartám se z počítače stává skutečně

Více

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur Přehled paralelních architektur Přehled paralelních architektur Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur Přehled I. paralelní počítače se konstruují

Více

Obsah. Proč právě Flash? 17 Systémové požadavky 17. Jak používat tuto knihu 18 Doprovodný CD-ROM 19

Obsah. Proč právě Flash? 17 Systémové požadavky 17. Jak používat tuto knihu 18 Doprovodný CD-ROM 19 Úvod.............................15 Proč právě Flash? 17 Systémové požadavky 17 Jak používat tuto knihu 18 Doprovodný CD-ROM 19 Část první Začínáme s tvorbou her ve Flashi..............21 1 První kroky........................23

Více

Úvod do problematiky. Význam počítačové grafiky. Trochu z historie. Využití počítačové grafiky

Úvod do problematiky. Význam počítačové grafiky. Trochu z historie. Využití počítačové grafiky Přednáška 1 Úvod do problematiky Význam počítačové grafiky Obrovský přínos masovému rozšíření počítačů ovládání počítače vizualizace výsledků rozšíření možnosti využívání počítačů Bouřlivý rozvoj v oblasti

Více

Pokročilé architektury počítačů

Pokročilé architektury počítačů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Pokročilé architektury počítačů Architektura Intel Larrabee 5.12.2009 Josef Stoklasa STO228 Obsah: 1. Úvod do tajů

Více

Emulátory. Autor: Martin Fiala. Spouštění programů a her z jiných OS nebo jiných platforem. InstallFest 2004. www.installfest.cz

Emulátory. Autor: Martin Fiala. Spouštění programů a her z jiných OS nebo jiných platforem. InstallFest 2004. www.installfest.cz Emulátory Autor: Martin Fiala Spouštění programů a her z jiných OS nebo jiných platforem. InstallFest 2004 Úvod Proč chceme emulovat? nemáme přístup k dané platformě nebo je problematický a nepohodlný

Více

Vektorové grafické formáty

Vektorové grafické formáty Vektorové grafické formáty Semestrální práce na předmět KAPR Fakulta stavební ČVUT 28.5.2009 Vypracovali: Petr Vejvoda, Ivan Pleskač Obsah Co je to vektorová grafika Typy vektorových formátů Souborový

Více

Představení a vývoj architektur vektorových procesorů

Představení a vývoj architektur vektorových procesorů Představení a vývoj architektur vektorových procesorů Drong Lukáš Dro098 1 Obsah Úvod 3 Historie, současnost 3 Architektura 4 - pipelining 4 - Operace scatter a gather 4 - vektorové registry 4 - Řetězení

Více

Úvod do GPGPU J. Sloup, I. Šimeček

Úvod do GPGPU J. Sloup, I. Šimeček Úvod do GPGPU J. Sloup, I. Šimeček xsimecek@fit.cvut.cz Katedra počítačových systémů FIT České vysoké učení technické v Praze Ivan Šimeček, 2011 MI-PRC, LS2010/11, Predn.3 Příprava studijního programu

Více

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010 Přednášky o výpočetní technice Hardware teoreticky Adam Dominec 2010 Rozvržení Historie Procesor Paměť Základní deska přednášky o výpočetní technice Počítací stroje Mechanické počítačky se rozvíjely už

Více

Výstavba PC. Vývoj trhu osobních počítačů

Výstavba PC. Vývoj trhu osobních počítačů Výstavba PC Vývoj trhu osobních počítačů Osobní počítač? Sálový počítač (Mainframe) IBM System/370 model 168 (1972) Minipočítač DEC PDP-11/70 (1975) Od 60. let počítač byl buď velký sálový nebo mini, stroj,

Více

VY_32_INOVACE_INF.19. Inkscape, GIMP, Blender

VY_32_INOVACE_INF.19. Inkscape, GIMP, Blender VY_32_INOVACE_INF.19 Inkscape, GIMP, Blender Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Jiří Kalous Základní a mateřská škola Bělá nad Radbuzou, 2011 INKSCAPE Inkscape je open source

Více

Vytváříme dobré aplikace vykreslovače grafiky v programovém prostředí Control Web

Vytváříme dobré aplikace vykreslovače grafiky v programovém prostředí Control Web Vytváříme dobré aplikace vykreslovače grafiky v programovém prostředí Control Web Vykreslovače grafiky nám umožňují vybrat si, jaké grafické programové rozhraní operačního systému bude použito pro zobrazování

Více

3D Vizualizace muzea vojenské výzbroje

3D Vizualizace muzea vojenské výzbroje 3D Vizualizace muzea vojenské výzbroje 3D visualization of the museum of military equipment Bc.Tomáš Kavecký STOČ 2011 UTB ve Zlíně, Fakulta aplikované informatiky, 2011 2 ABSTRAKT Cílem této práce je

Více

VY_32_INOVACE_INF.15. Dějiny počítačů II.

VY_32_INOVACE_INF.15. Dějiny počítačů II. VY_32_INOVACE_INF.15 Dějiny počítačů II. Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Jiří Kalous Základní a mateřská škola Bělá nad Radbuzou, 2011 První programovatelné stroje V roce

Více

SOU Valašské Klobouky. VY_32_INOVACE_3_01 IKT Pc grafika základní pojmy Mgr. Radomír Soural. Zkvalitnění výuky prostřednictvím ICT

SOU Valašské Klobouky. VY_32_INOVACE_3_01 IKT Pc grafika základní pojmy Mgr. Radomír Soural. Zkvalitnění výuky prostřednictvím ICT SOU Valašské Klobouky VY_32_INOVACE_3_01 IKT Pc grafika základní pojmy Mgr. Radomír Soural Zkvalitnění výuky prostřednictvím ICT Název a číslo projektu CZ.1.07/1.5.00/34.0459 Název školy SOU Valašské Klobouky,

Více

Představení procesorů od firmy Tilera a jejich architektura

Představení procesorů od firmy Tilera a jejich architektura VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA ELEKTROTECHNIKY A INFORMATIKY REFERÁT Z PŘEDMĚTU POKROČILÉ ARCHITEKTURY POČÍTAČŮ Představení procesorů od firmy Tilera a jejich architektura Školní

Více

PROCESOR. Typy procesorů

PROCESOR. Typy procesorů PROCESOR Procesor je ústřední výkonnou jednotkou počítače, která čte z paměti instrukce a na jejich základě vykonává program. Primárním úkolem procesoru je řídit činnost ostatních částí počítače včetně

Více

Specifikace projektu Ocerus

Specifikace projektu Ocerus Specifikace projektu Ocerus Tým Vedoucí: Ondřej Sýkora (ondrasej@centrum.cz) Členové: Michal Čevora (macjariel@gmail.com) Lukáš Hermann (lukas.hermann@seznam.cz) Ondřej Mocný (hardwire@volny.cz) Tomáš

Více

Základy 3D modelování a animace v CGI systémech Cinema 4D C4D

Základy 3D modelování a animace v CGI systémech Cinema 4D C4D EVROPSKÝ SOCIÁLNÍ FOND Základy 3D modelování a animace v CGI systémech Cinema 4D C4D PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Mgr. David Frýbert 2013 CGI systémy Computer - generated imagery - aplikace

Více

Piškvorky. Gymnázium, Praha 6, Arabská 16. Kristofer Filip, 1.E. Květen 2014. Stránka 1. předmět programování, vyučující Tomáš Obdržálek

Piškvorky. Gymnázium, Praha 6, Arabská 16. Kristofer Filip, 1.E. Květen 2014. Stránka 1. předmět programování, vyučující Tomáš Obdržálek Gymnázium, Praha 6, Arabská 16 předmět programování, vyučující Tomáš Obdržálek Piškvorky ročníkový projekt Kristofer Filip, 1.E Květen 2014 Stránka 1 Prohlášení Prohlašuji, že jsem jediným autorem tohoto

Více

Kategorie_řád_2 Kategorie_řád_3 Kategorie_řád_4 Atributy_podkategorie. Herní konzole. Gamepady. Joysticky. Ostatní. Poškozené.

Kategorie_řád_2 Kategorie_řád_3 Kategorie_řád_4 Atributy_podkategorie. Herní konzole. Gamepady. Joysticky. Ostatní. Poškozené. Kategorie_řád_2 Kategorie_řád_3 Kategorie_řád_4 Atributy_podkategorie Herní konzole Herní zařízení Historické počítače Herní konzole Gamepady Joysticky Taneční podložky Volanty Amiga Atari Commodore Československé

Více

Masivně paralelní zpracování obrazu v prostředí systému VisionLab. 25. 9. 2013 Liberec Roman Cagaš, rc@mii.cz

Masivně paralelní zpracování obrazu v prostředí systému VisionLab. 25. 9. 2013 Liberec Roman Cagaš, rc@mii.cz Masivně paralelní zpracování obrazu v prostředí systému VisionLab 25. 9. 2013 Liberec Roman Cagaš, rc@mii.cz Moravské přístroje a.s. - oblasti vývoje a výroby Prostředí pro vývoj aplikací Software pro

Více

GPGPU Aplikace GPGPU. Obecné výpočty na grafických procesorech. Jan Vacata

GPGPU Aplikace GPGPU. Obecné výpočty na grafických procesorech. Jan Vacata Obecné výpočty na grafických procesorech Motivace Úvod Motivace Technologie 3 GHz Intel Core 2 Extreme QX9650 Výkon: 96 GFLOPS Propustnost paměti: 21 GB/s Orientační cena: 1300 USD NVIDIA GeForce 9800

Více

Úvod do problematiky. Význam počítačové grafiky. Trochu z historie. Využití počítačové grafiky

Úvod do problematiky. Význam počítačové grafiky. Trochu z historie. Využití počítačové grafiky Přednáška 1 Úvod do problematiky Význam počítačové grafiky Obrovský přínos masovému rozšíření počítačů ovládání počítače vizualizace výsledků rozšíření možnosti využívání počítačů Bouřlivý rozvoj v oblasti

Více

VIRTUALIZACE POČÍTAČE HISTORIE A VÝVOJ

VIRTUALIZACE POČÍTAČE HISTORIE A VÝVOJ VIRTUALIZACE POČÍTAČE HISTORIE A VÝVOJ Název školy Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště Název DUMu Virtualizace počítače historie a

Více

Architektura Intel Atom

Architektura Intel Atom Architektura Intel Atom Štěpán Sojka 5. prosince 2008 1 Úvod Hlavní rysem Atomu je podpora platformy x86, která umožňuje spouštět a běžně používat řadu let vyvíjené aplikace, na které jsou uživatelé zvyklí

Více

VYUŽITÍ KNIHOVNY SWING PROGRAMOVACÍHO JAZYKU JAVA PŘI TVORBĚ UŽIVATELSKÉHO ROZHRANÍ SYSTÉMU "HOST PC - TARGET PC" PRO ŘÍZENÍ POLOVODIČOVÝCH MĚNIČŮ

VYUŽITÍ KNIHOVNY SWING PROGRAMOVACÍHO JAZYKU JAVA PŘI TVORBĚ UŽIVATELSKÉHO ROZHRANÍ SYSTÉMU HOST PC - TARGET PC PRO ŘÍZENÍ POLOVODIČOVÝCH MĚNIČŮ VYUŽITÍ KNIHOVNY SWING PROGRAMOVACÍHO JAZYKU JAVA PŘI TVORBĚ UŽIVATELSKÉHO ROZHRANÍ SYSTÉMU "HOST PC - TARGET PC" PRO ŘÍZENÍ POLOVODIČOVÝCH MĚNIČŮ Stanislav Flígl Katedra elektrických pohonů a trakce (K13114),

Více

Stru ný obsah. Úvod do Microsoft.NET Kapitola 1: Vývoj her a ízený kód...15

Stru ný obsah. Úvod do Microsoft.NET Kapitola 1: Vývoj her a ízený kód...15 Stru ný obsah Úvod...11 Úvod do Microsoft.NET Kapitola 1: Vývoj her a ízený kód...15 Základy grafiky, první hra Kapitola 2: Návrh první hry...31 Kapitola 3: Pochopení kostry aplikace DirectX...39 Kapitola

Více

monitor a grafická karta

monitor a grafická karta monitor a grafická karta monitor a grafická karta monitor slouží ke sdělování výsledků či průběhu řešených úloh a komunikaci operačního systému nebo programu s uživatelem. vše co má být zobrazeno na obrazovce,

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT Mgr. Jana Kubcová Název

Více

XNA Game Studio 3.1. Tomáš Herceg Microsoft Most Valuable Professional Microsoft Student Partner http://www.vbnet.cz

XNA Game Studio 3.1. Tomáš Herceg Microsoft Most Valuable Professional Microsoft Student Partner http://www.vbnet.cz XNA Game Studio 3.1 Tomáš Herceg Microsoft Most Valuable Professional Microsoft Student Partner http://www.vbnet.cz Agenda Úvod, motivace Struktura XNA Content pipeline Součásti XNA Paleta funkcí Herní

Více

G R A F I C K É K A R T Y

G R A F I C K É K A R T Y G R A F I C K É K A R T Y Grafická karta nebo také videoadaptér je součást počítače, která se stará o grafický výstup na monitor, TV obrazovku či jinou zobrazovací jednotku. Režimy grafických karet TEXTOVÝ

Více

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura IBM PC 5150 MS DOS 1981 (7 verzí) DR DOS, APPLE DOS, PC DOS 1. 3. Windows grafická nástavba na DOS Windows 95 1. operační systém jako takový, Windows XP 2001, podporovány do 2014, x86 a Windows 2000 Professional

Více

Název DUM: VY_32_INOVACE_2B_9_Software_-_základní_programové_vybavení_počítače

Název DUM: VY_32_INOVACE_2B_9_Software_-_základní_programové_vybavení_počítače Název školy: Základní škola a Mateřská škola Žalany Číslo projektu: CZ. 1.07/1.4.00/21.3210 Téma sady: Informatika pro sedmý až osmý ročník Název DUM: VY_32_INOVACE_2B_9_Software_-_základní_programové_vybavení_počítače

Více

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14 ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 14 0:40 1.3. Vliv hardware počítače na programování Vliv

Více

Matematika v programovacích

Matematika v programovacích Matematika v programovacích jazycích Pavla Kabelíková am.vsb.cz/kabelikova pavla.kabelikova@vsb.cz Úvodní diskuze Otázky: Jaké programovací jazyky znáte? S jakými programovacími jazyky jste již pracovali?

Více

FORTANNS. havlicekv@fzp.czu.cz 22. února 2010

FORTANNS. havlicekv@fzp.czu.cz 22. února 2010 FORTANNS manuál Vojtěch Havlíček havlicekv@fzp.czu.cz 22. února 2010 1 Úvod Program FORTANNS je software určený k modelování časových řad. Kód programu má 1800 řádek a je napsán v programovacím jazyku

Více

Pokročilá architektura počítačů

Pokročilá architektura počítačů Pokročilá architektura počítačů Technologie PhysX Jan Lukáč LUK145 Sony PlayStation 2 Emotion Engine První krok do světa akcelerované fyziky učinily pro mnohé velmi překvapivě herní konzole. Sony Playstation

Více

Návod k použití softwaru Solar Viewer 3D

Návod k použití softwaru Solar Viewer 3D Návod k použití softwaru Solar Viewer 3D Software byl vyvinut v rámci grantového projektu Technologie a systém určující fyzikální a prostorové charakteristiky pro ochranu a tvorbu životního prostředí a

Více

Prostředí pro výuku vývoje PCI ovladačů do operačního systému GNU/Linux

Prostředí pro výuku vývoje PCI ovladačů do operačního systému GNU/Linux KONTAKT 2011 Prostředí pro výuku vývoje PCI ovladačů do operačního systému GNU/Linux Autor: Rostislav Lisový (lisovy@gmail.com) Vedoucí: Ing. Pavel Píša, Ph.D. (pisa@cmp.felk.cvut.cz) Katedra řídicí techniky

Více

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC Informační systémy 2 Obsah: Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC ROM RAM Paměti typu CACHE IS2-4 1 Dnešní info: Informační systémy 2 03 Informační systémy

Více

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy VÝUKOVÝ MATERIÁL Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková

Více

architektura mostů severní / jižní most (angl. north / south bridge) 1. Čipové sady s architekturou severního / jižního mostu

architektura mostů severní / jižní most (angl. north / south bridge) 1. Čipové sady s architekturou severního / jižního mostu Čipová sada Čipová sada (chipset) je hlavní logický integrovaný obvod základní desky. Jeho úkolem je řídit komunikaci mezi procesorem a ostatními zařízeními a obvody. V obvodech čipové sady jsou integrovány

Více

Grafické karty s podporou DirectX 11 Quynh Trang Dao Dao007

Grafické karty s podporou DirectX 11 Quynh Trang Dao Dao007 Pokročilé Architektury Počítačů 2009/2010 Semestrální projekt Grafické karty s podporou DirectX 11 Quynh Trang Dao Dao007 1. DirectX 11 V posledních pár letech se rozhraní DirectX dostalo do popředí a

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT

Více

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí.

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí. Základní pojmy IT, číselné soustavy, logické funkce Základní pojmy Počítač: Stroj na zpracování informací Informace: 1. data, která se strojově zpracovávají 2. vše co nám nebo něčemu podává (popř. předává)

Více

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2014 5.3-5.8 9/14

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2014 5.3-5.8 9/14 ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2014 5.3-5.8 9/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 12 0:40 UML unifikovaný modelovací jazyk Zkratka tohoto

Více

Architektura počítačů

Architektura počítačů Architektura počítačů Studijní materiál pro předmět Architektury počítačů Ing. Petr Olivka katedra informatiky FEI VŠB-TU Ostrava email: petr.olivka@vsb.cz Ostrava, 2010 1 1 Architektura počítačů Pojem

Více

Grafické adaptéry a monitory

Grafické adaptéry a monitory Grafické adaptéry a monitory 1 Obsah přednášky Generace grafických adaptérů. Principy AGP. Rozhraní monitorů. Principy tvorby barev. Video paměť základní principy. Monitor CRT základní informace. 2 Vývojové

Více

Využití ICT techniky především v uměleckém vzdělávání. Akademie - VOŠ, Gymn. a SOŠUP Světlá nad Sázavou

Využití ICT techniky především v uměleckém vzdělávání. Akademie - VOŠ, Gymn. a SOŠUP Světlá nad Sázavou Datum: 1. 12. 2013 Projekt: Registrační číslo: Číslo DUM: Škola: Jméno autora: Název sady: Název práce: Předmět: Ročník: Obor: Časová dotace: Vzdělávací cíl: Pomůcky: Využití ICT techniky především v uměleckém

Více

pouˇzití USB nebo SPI

pouˇzití USB nebo SPI Připojení modulů IQRF k platformě Android za pouˇzití USB nebo SPI Bc. Josef Jebavý, http://xeres.cz 25. srpna 2015 Obsah 1 Operační systém Android 2 2 Moˇznosti řešení 2 2.1 USB........................................

Více

2.12 Vstupní zařízení II.

2.12 Vstupní zařízení II. Název školy Číslo projektu Autor Název šablony Název DUMu Tematická oblast Předmět Druh učebního materiálu Anotace Vybavení, pomůcky Ověřeno ve výuce dne, třída Střední průmyslová škola strojnická Vsetín

Více

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette Kapitola 1 PHP framework Nette 1.1 Úvod Zkratka PHP (z anglického PHP: Hypertext Preprocessor) označuje populární skriptovací jazyk primárně navržený pro vývoj webových aplikací. Jeho oblíbenost vyplývá

Více

Programování a algoritmizace: úvod

Programování a algoritmizace: úvod Programování a algoritmizace: úvod 2010 Dnešní přednáška o předmětu, administrativa motivace Cíle předmětu Úvod do programátorského a algoritmického stylu myšlení Obecné principy použitelné v řadě programovacích

Více

úvod Historie operačních systémů

úvod Historie operačních systémů Historie operačních systémů úvod Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu www.rvp.cz, ISSN: 1802-4785. Provozuje Národní ústav

Více

Procesor EU peníze středním školám Didaktický učební materiál

Procesor EU peníze středním školám Didaktický učební materiál Procesor EU peníze středním školám Didaktický učební materiál Anotace Označení DUMU: VY_32_INOVACE_IT1.05 Předmět: Informatika a výpočetní technika Tematická oblast: Úvod do studia informatiky, konfigurace

Více

Implementace systémů HIPS: historie a současnost. Martin Dráb

Implementace systémů HIPS: historie a současnost. Martin Dráb Implementace systémů HIPS: historie a současnost Martin Dráb martin.drab@secit.sk HIPS: základní definice Majoritně používané operační systémy disponují bezpečnostními modely, které dovolují jednotlivým

Více

Geekovo Minimum. Počítačové Grafiky. Nadpis 1 Nadpis 2 Nadpis 3. Božetěchova 2, Brno

Geekovo Minimum. Počítačové Grafiky. Nadpis 1 Nadpis 2 Nadpis 3.  Božetěchova 2, Brno Geekovo Minimum Nadpis 1 Nadpis 2 Nadpis 3 Počítačové Grafiky Jméno Adam Příjmení Herout Vysoké Vysoké učení technické učení technické v Brně, v Fakulta Brně, Fakulta informačních informačních technologií

Více

Zobrazovací jednotky a monitory

Zobrazovací jednotky a monitory Zobrazovací jednotky a monitory Zobrazovací jednotka - karta, která se zasunuje do jednoho z konektorů na sběrnici uvnitř počítače. Dva režimy činnosti: Textový režim - zobrazuje znaky uvedené v tabulce

Více

Controlweb. Úvod. Specifikace systému

Controlweb. Úvod. Specifikace systému Controlweb Úvod ControlWeb je aplikace pro řízení a indikaci v průmyslu v reálném čase. Mezi jeho základní funkce patří ovládání různých veličin spojitých, binárních nebo textových a zobrazování stavu

Více

INFORMATIKA. Jindřich Kaluža. Ludmila Kalužová

INFORMATIKA. Jindřich Kaluža. Ludmila Kalužová INFORMATIKA Jindřich Kaluža Ludmila Kalužová Recenzenti: doc. RNDr. František Koliba, CSc. prof. RNDr. Peter Mikulecký, PhD. Vydání knihy bylo schváleno vědeckou radou nakladatelství. Všechna práva vyhrazena.

Více

Dílčí projekt: Systém projektování textilních struktur 1.etapa: tvorba systému projektování vlákno - příze - tkanina

Dílčí projekt: Systém projektování textilních struktur 1.etapa: tvorba systému projektování vlákno - příze - tkanina Program LibTex Uživatelská příručka 1 Obsah Program Textilní Design... 1 Uživatelská příručka... 1 1 Obsah... 2 2 Rejstřík obrázků... 2 3 Technické požadavky... 3 3.1 Hardware... 3 3.1.1 Procesor... 3

Více

Operační systém. Mgr. Renáta Rellová. Výukový materiál zpracován v rámci projektu EU peníze školám

Operační systém. Mgr. Renáta Rellová. Výukový materiál zpracován v rámci projektu EU peníze školám Operační systém Mgr. Renáta Rellová Výukový materiál zpracován v rámci projektu EU peníze školám Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Renáta Rellová. Dostupné z Metodického

Více

Trocha obrázků na začátek..

Trocha obrázků na začátek.. Trocha obrázků na začátek.. Elementární pojmy LCD panel tower myš klávesnice 3 Desktop vs. Tower tower desktop 4 Desktop nebo Tower? 5 Obraz jako obraz? 6 A něco o vývoji.. Předchůdci počítačů Počítadlo

Více

Počítačové hry. Video games Herní žánry Herní zařízení Tvorba počítačové hry. Profese Dokumenty Vývojové fáze

Počítačové hry. Video games Herní žánry Herní zařízení Tvorba počítačové hry. Profese Dokumenty Vývojové fáze Počítačové hry Video games Herní žánry Herní zařízení Tvorba počítačové hry Profese Dokumenty Vývojové fáze Technologické trendy v AV tvorbě, PC hry 2 Počítačové hry Hry na mobil, konzole i počítač Podobnost

Více

Práce v textovém editoru

Práce v textovém editoru Práce v textovém editoru 0) Otevřete NOTEPAD a okopírujte celý tento článek do NOTEPADu. [Můžete použít zkratky Ctrl-A (označit vše) Ctrl+C(kopírovat), Ctrl+V (vložit)] 1) Najděte v tomto textu slovo "myš"

Více

2.1 Historie a vývoj počítačů

2.1 Historie a vývoj počítačů Název školy Číslo projektu Autor Název šablony Název DUMu Tematická oblast Předmět Druh učebního materiálu Anotace Vybavení, pomůcky Ověřeno ve výuce dne, třída Střední průmyslová škola strojnická Vsetín

Více

Architektura procesoru ARM

Architektura procesoru ARM Architektura procesoru ARM Bc. Jan Grygerek GRY095 Obsah ARM...3 Historie...3 Charakteristika procesoru ARM...4 Architektura procesoru ARM...5 Specifikace procesoru...6 Instrukční soubor procesoru...6

Více

3D grafika. Proces tvorby sekvence s 3D modely Sbírání údajů na natáčecím place Motion capture Matchmoving Compositing

3D grafika. Proces tvorby sekvence s 3D modely Sbírání údajů na natáčecím place Motion capture Matchmoving Compositing 3D grafika Proces tvorby sekvence s 3D modely Sbírání údajů na natáčecím place Motion capture Matchmoving Compositing Počítačová grafika, 3D grafika 2 3D grafika CGI = computer graphic imagery Simulace

Více

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP gesvindr@mail.muni.cz

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP gesvindr@mail.muni.cz Efektivní vývoj mobilních aplikací na více platforem současně Mgr. David Gešvindr MCT MSP MCPD MCITP gesvindr@mail.muni.cz Osnova 1. Kam míří platforma Windows Phone 2. Seznámení s univerzálními Windows

Více

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN Škola: Gymnázium, Brno, Slovanské náměstí 7 Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN prostřednictvím ICT Číslo projektu: CZ.1.07/1.5.00/34.0940

Více

produktů. produkty: AutoCAD Mechanical Showcase Autodesk Autodesk Designer SketchBook Autodesk Mudbox Vault Autodesk Ultimate Intel Xeon Intel Core

produktů. produkty: AutoCAD Mechanical Showcase Autodesk Autodesk Designer SketchBook Autodesk Mudbox Vault Autodesk Ultimate Intel Xeon Intel Core Autodesk Product Design Suite Standard 20122 Systémové požadavky Typičtí uživatelé a pracovní postup Konstruktérům a inženýrům, kteří vyvíjejí pozoruhodné produkty, nabízí sada Autodesk Product Design

Více

Zobrazovací a zvuková soustava počítače

Zobrazovací a zvuková soustava počítače Zobrazovací a zvuková soustava počítače textový a grafický režim grafická karta analogový a digitální zvuk zvuková karta Zobrazovací soustava Je jednou z nejdražších a energeticky nejnáročnějších částí

Více