Využití 3D Myši V Herním Systému
Total Page:16
File Type:pdf, Size:1020Kb
MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Û¡¢£¤¥¦§¨ª«¬Æ°±²³´µ·¸¹º»¼½¾¿Ý Využití 3D myši v herním systému BAKALÁRSKÁˇ PRÁCE Martin Kuriplach Brno, jaro 2013 Prohlášení Prohlašuji, že tato bakaláˇrskápráce je mým p ˚uvodnímautorským dílem, které jsem vypracoval samostatnˇe.Všechny zdroje, prameny a literaturu, které jsem pˇrivypracování používal nebo z nich ˇcerpal,v práci ˇrádnˇecituji s uvedením úplného odkazu na pˇríslušnýzdroj. Martin Kuriplach Vedoucí práce: Mgr. Martin Bezdˇeka i Shrnutí Cílem práce je vytvoˇritjednoduchou poˇcítaˇcovouhru používající 3D myš jako hlavní vstupní rozhraní hry. V práci je popsáná funkce a ovládání tohoto ovladaˇce.Herní koncept je pˇrizp˚usobenovládání pomocí zaˇrízení SpacePilot PRO. Jedním z požadavk ˚una vytváˇrenouhru bylo to, aby byla implementována v nˇekterémz dostupných herních vývojáˇrskýchbalíˇck˚u (Software Development Kit – SDK). Pro výslednou hru byly vypracovány 3D modely a textury, které byly použity pro pˇrípravuprefabrikát ˚unebo jako prvky prostˇredíherních úrovní. ii Klíˇcováslova 3D mouse, 3D myš, game engine, game SDK, software development kit, game development, vývoj her, six degrees of freedom, sdof iii Podˇekování Chtˇelbych podˇekovat vedoucímu bakaláˇrsképráce Mgr. Martinovi Bezdˇe- kovi za jeho rady a pˇripomínky, a personálu laboratoˇreHCI, kteˇrími po- skytli zázemí potˇrebnék vypracování této práce. Dále dˇekujisvým rodi- ˇc˚um,sestˇrea pˇrátel˚um,kteˇrímˇepodporují po celou dobu studia na Masa- rykovˇeuniverzitˇe. iv Obsah 1 Úvod ................................... 1 1.1 Digitální hry . 1 1.2 Zaˇrízení3D myš . 2 2 Návrh hry a srovnání herních SDK ................. 4 2.1 Herní koncept . 4 2.2 Herní SDK . 5 2.3 VýbˇerSDK do srovnání . 6 2.4 Porovnání . 7 2.4.1 Esenthel Engine . 8 2.4.2 NeoAxis Engine . 8 2.4.3 Torque3D . 9 2.4.4 Unity3D . 9 2.4.5 Source Engine . 10 2.4.6 CryEngine 3 . 10 2.4.7 Unreal Engine 3 . 11 2.4.8 iD Tech 4 . 12 2.4.9 Panda 3D . 13 2.5 Závˇerporovnání . 13 3 Implementace .............................. 16 3.1 Použitý software . 16 3.1.1 UDK . 16 3.1.2 Další software . 16 3.2 Implementace DI3dCnnxn.dll . 18 3.2.1 Vstupní bod dynamické knihovny . 18 3.2.2 Získávání dat ze zaˇrízení . 20 3.3 UnrealScript . 23 3.3.1 Herní typ . 23 3.3.2 Kontrolér . 25 3.3.3 Hráˇcovalod’ . 27 3.3.4 Stˇrelba . 28 3.3.5 AI nepˇrátel . 29 3.4 Grafické prvky . 30 3.4.1 3D modely . 30 3.4.2 Uživatelské rozhraní . 31 4 Závˇer ................................... 34 Pˇrílohy PˇrílohaA – Instalace hry ........................ 37 v PˇrílohaB – Herní manuál ....................... 38 vi 1 Úvod 1.1 Digitální hry Poˇcítaˇcová hra m ˚uže být zajímavým digitálním dílem spojující prvky interaktivity[2] a narace. Autor pomocí herních sekvencí vypráví pˇríbˇeha výborná hratelnost zajistí, že hráˇcdohraje hru až do konce. P ˚uvodnˇeprogramovány jednotlivci nebo menšími skupinami pro zá- bavu, jsou dnes poˇcítaˇcovéhry zdrojem velkých zisk ˚upro herní spoleˇc- nosti, investujících miliardy dolar ˚udo jejích vývoje a marketingu. Každý z vydaných titul ˚uale ne vždy splní oˇcekávánívydavatel ˚u. Vývoj poˇcítaˇcových her se jako disciplína dostává do popˇredízájmu vzdˇelávacíchinstitucí, jelikož herní studia hledají nové talentované vývo- jáˇrer ˚uznýchzamˇeˇrení.Tyto specializace vˇetšinouvyžadují velké množství zkušeností, protože uživatelské nároky na kvalitu her, jak po technické, tak umˇeleckéstránce, se neustále zvyšují. Toto se týká pˇredevšímPC platformy a herních konzolí, kde je vývoj hnán dopˇredu[2]stále výkonnˇejšímhard- ware. U mobilních zaˇrízeníse uživatelé musí spokojit s nižší grafickou kva- litou nebo rozsahem hry. Každá hra je postavena na urˇcitémherním engine (jádˇre),které zajiš- t’uje vykreslování snímk ˚una obrazovku, manipulaci s daty a zpracování uživatelských pokyn ˚u.Zjednodušená herní smyˇckavypadá napˇr.takto: 1. Pˇreˇctivstupní data, 2. Aktualizuj herní objekty a stav hry, 3. Pˇripravsnímek pro vykreslení na obrazovku, 4. Pˇrehrajzvuky. Souˇcástíkaždé hry je její vstupní rozhraní, které umožˇnujevykonávat hráˇci herní akce. Postupem ˇcasu,jak se hry vyvíjely, se zaˇcalyvyrábˇetr ˚uznéovla- daˇce.Nˇekteréjsou si podobné, ale vˇetšinaz nich používá jiný model ovlá- dání kv ˚ulilišící se konstrukci nebo poˇctuovládacích prvk ˚u(tlaˇcítek,po- suvník ˚u,páˇcek). Momentálnˇemezi nejpoužívanˇejšípatˇrímyš, klávesnice a herní kontro- lér (Xbox 360, PlayStation 3), v menší míˇrepak joystick nebo volant. Kromˇe zmínˇených”klasických“ existují také ”exotiˇctˇejší“zaˇrízení,nˇekteráz nich vˇetšinahráˇc˚uani nezná. Jedná se o haptické ovladaˇce,r ˚uznésnímaˇcepo- hybu, datové rukavice aj. V této práci se zabývám pˇredevšímzaˇrízením3D myši. 1 1. ÚVOD 1.2 Zaˇrízení3D myš 3D myš je polohovací zaˇrízeníschopné snímat pohyb zaˇrízenína 6 osách. Zaˇrízeníjako napˇr.poˇcítaˇcovámyš nebo joystick, jsou schopné snímat pouze osy dvˇe.První 3D myši se zaˇcalyvyrábˇetpˇribližnˇeod roku 1990[8]. Jednalo se o model Logitech SpaceMouse a pozdˇeji„3D RingMouse“ od spoleˇcnosti Kantek. Obrázek 1.1: Ovládání 3D myši. Pˇrevzatoz [3] Senzor 3D myši snímá míru posunu a otoˇceníovládacího klobouˇcku. Uživatel m ˚užeovládat jednotlivé osy zvlášt’ anebo využít více os zároveˇn. Tato možnost je vhodná pro práci s 2D grafikou a CAD výkresy. Kontrolér je také schopen pomocí driveru (software ovladaˇce)zamˇenitúdaje z rotaˇcních os za data z os pohybových a naopak. Díky tomu si uživatel m ˚uževybrat styl ovládání, který mu vyhovuje. Obrázek 1.2: SpacePilot Pro. Pˇrevzatoz [3] Pracoval jsem se zaˇrízenímSpacePilot Pro, ke kterému jsem mˇelpˇrístup v laboratoˇriHCI (Human-Computer Interaction) na FI MU. Toto zaˇrízení se skládá z opˇerypro ruku, plastového tˇela,sady tlaˇcíteka ovládacího klo- 2 1. ÚVOD bouˇcku.Ovládací klobouˇcekobsahuje speciální senzor. 3Dx driver umožˇnujemˇenitnastavení pro každou aplikaci zvlášt’ a sám tato nastavení vyvolá, pokud je daná aplikace spuštˇena.Driver si také pa- matuje navolené akce pro jednotlivá tlaˇcítka.Ve výchozím nastavení lze pomocí tlaˇcíteknapˇr.:mˇenitcitlivost zaˇrízenínebo zamykat jednotlivé osy. Na zaˇrízeníse také nacházejí klávesy Ctrl, Shift, Alt, Esc. Nebot’ je SpacePi- lot Pro urˇcenpˇredevšímpro 3D modelování a CAD aplikace, funkcí dalších tlaˇcítekje zmˇenapohledu v tˇechtoaplikacích. ZaˇrízeníSpacePilot Pro nebylo navrženo jako herní ovladaˇca proto je v tomto ohledu jeho nevýhodou rozložení tlaˇcíteka síla nutná pro jejich stisk- nutí. Je velice nároˇcnépohybovat s ovládacím klobouˇckema zároveˇnse po- koušet stisknout jednotlivá tlaˇcítka.Pˇrivyužití v modelovacích nebo CAD aplikacích se tento problém nevyskytuje, protože tlaˇcítkanemají funkce, které jsou potˇrebavyvolávat i bˇehempohybu/rotace s objektem. Uživa- tel jejich pomocí pˇrepínárežimy práce nebo zobrazení, popˇrípadˇevyvolá nadefinované makro. Herní ovladaˇcevˇetšinoupˇredpokládají,že uživatel bude využívat velký poˇcettlaˇcíteka joystick (napˇr.Xbox kontrolér) záro- veˇn.Tento nedostatek jsem musel brát v úvahu pˇrinavrhování systém ˚u ovládání hry, jelikož pohodlné ovládání je základem každé digitální hry[1]. 3 2 Návrh hry a srovnání herních SDK 2.1 Herní koncept Pˇrinávrhu herního konceptu jsem musel zvážit, kolik os zaˇrízeníSpacePi- lot Pro bude hráˇcvyužívat. Pˇrivyužití všech šesti má hráˇcvetší možnosti, ale ovládaní je nároˇcnˇejšínež v pˇrípadˇe,že jich hra využívá ménˇe.Aby hráˇczískal co nejvˇetšíkontrolu, rozhodl jsem se využít všechny osy – 3 pro posun, 3 pro rotaci. Hru tedy umístím do trojrozmˇernéhoprostoru. Vhodným prostˇredím,ve kterém lze využít, nebo je to dokonce nutné, ovládání posunu a rotaci, je stav beztíže. Jako typ hry jsem tedy zvolil vesmírný simulátor. Hráˇcije pˇridˇelenavesmírná lod’, se kterou se snaží probojovat pˇrespostupné obtížnˇejšívlny nepˇrátel.Obtížnost se postupnˇe zvyšuje poˇctemnepˇrátelskýchlodí. Pˇridˇelenálod’ si své zásahové body ne- m ˚užeregenerovat a tak hráˇcmusí volit vhodnou taktiku, aby dosáhl co nejvyšší úrovnˇe. Nepˇrátelskélodˇejsou vybavené projektilovými zbranˇemi.Hráˇcse tedy m ˚užestˇrelámvyhýbat. Nepˇrátelskáa hráˇcovamunice není nijak omezena. Hráˇc˚uvpohyb je v herní úrovni omezen. Pohyb po úrovni lze omezit nˇekterýmz následujících zp ˚usob˚u.M ˚užemeumístit do úrovnˇeneviditelné stˇeny, které ale nep ˚usobípˇrílišpˇrirozenˇe.Pˇridruhém zp ˚usobuje hráˇcupo- zornˇen,že se nachází mimo hratelný prostor, a je vyzván, aby se vrátil. Po- kud tak neuˇciní,je bud’to pˇremístˇenzpˇet,anebo je jeho avatar1 zabit/zni- ˇcen.Já jsem zvolil možnost, kdy je hráˇcnacházející se mimo vymezený pro- stor pˇritahovánzpˇetdo vyhrazené oblasti. V pˇredešlékapitole jsem popisoval nedostatky tykající se tlaˇcítekzaˇrí- zení SpacePilot Pro. Rozhodl jsem se je pro ovládaní hry nevyužít právˇe kv ˚ulivýše zmínˇenýmproblém ˚um.3D myš tedy hráˇcvyužije pouze pro po- hyb lodi. Míˇrenía stˇrelbaje ovládána pomoci klasické myši. Herní ovládaní lze tedy pˇrizp˚usobitpravák ˚umi levák ˚um,jelikož SpacePilot Pro je symet- rický (kromˇeoznaˇcenítlaˇcítek). Jelikož produkce her je dynamický proces a tato práce není tak velkého rozsahu jako komerˇcníprojekty, dále jsem koncept neupˇresˇnoval,abych mohl provádˇetdalší zmˇenybˇehemvývoje. Pro hru jsem zvolil pracovní ná- zev „Adrift“. Z angliˇctinypˇreloženo– pojem znamená „unášený“. Tento název jsem vybral, protože hráˇcovalod’ je pˇripohybu setrvaˇcnostítaké „unášena“. 1. Avatar – reprezentace uživatele ve virtuální realitˇe 4 2. NÁVRH HRY A SROVNÁNÍ HERNÍCH SDK 2.2 Herní SDK Pˇriprodukci digitálních her se vývojáˇr/týmmusí rozhodnout, jaký herní engine použije. M ˚uževytvoˇritsv ˚ujvlastní,