Mi az a Unity 3D? • Cross platform játékmotor + szerkesztő • Támogatott platformok – Desktop: Windows, Linux, OSX – Böngésző: Unity plugin, Google Native Client, Flash – Mobil: iOS, Android – Konzol: Xbox 360, PS3, Nintendo Wii – További várható platformok • Windows Phone 8, Blackberry OS
Mik készültek vele?
Mik készültek vele?
Mik készültek vele?
Mik készültek vele?
Mik készültek vele?
Mik készültek vele?
Mik készültek vele?
Mennyibe kerül? • Az alap verzió ingyenes – Fordítás desktopra, web playerre, Google Native Clientre, Android-ra, iOS-re – Nem tartalmaz néhány fejlettebb funkciót (ezekről később)
• Fizetnünk kell, ha: – Konzolra fejlesztenénk - ? $ / játék • Contact sales...
– Egyéb platformra fejlesztenénk, vagy Pro-beli funkciókat használnánk – 1500 $ / fejlesztő
Miért használnánk? • Mert egy multiplatform 3D játékmotort összerakni – Sok idő & pénz – Játékot vagy játékmotort fejlesztenél?
• Aktív fejlesztői közösség • Jó dokumentáció • Számos példaprojekt, könyv, szöveges ill. video tutorial található szerte a neten • Asset store!
Asset Store • Általában egy játékhoz sokféle tudás kell – Programozó, animátor, 2D és 3D grafikus, hangmérnök, zeneszerző, stb. – Könnyen lehet, hogy valamelyik feladatra nincs meg a szükséges tudásunk / emberünk
• Nézzünk szét az Asset Store-ban! – Ingyenes és fizetős erőforrások játékfejlesztőknek • 3d modellek, animációk, hangok, zenék, textúrák, scriptek, Unity plugin-ek, részecskerendszerek, …
– Mi is tölthetünk fel tartalmat -> $$$
Az interfész bemutatása
Árnyékok • Integrált Beast lightmapping rendszer – Az ingyenes verzióban is használható, de… – A Light Probe-ok csak a Pro-ban elérhetőek
• A realtime hard ill. soft shadow funkció csak a Pro verzióban működik • Az ingyenes verzióban csak egyszerűbb realtime árnyékokat tudunk használni – Pl. Blob shadow projektorral
Erőforrások importálása • Mik az erőforrások (asset-ek)? – Textúrák, 3d modellek, animációk, hangok, scriptek, stb.
• Általában külső alkalmazással készítjük őket – Photoshop, Gimp, Maya, Max, … – Importáláshoz egyszerűen be kell másolnunk a fileokat a projekt könyvtárába – A legtöbb ismert formátumhoz van importer – Platformonként módosíthatjuk az importálás beállításait • Pl. Mobilokon alacsonyabb felbontású textúrákat használunk mint desktop rendszereken.
Scriptek írása • Kódunk a Mono framework segítségével fut valamennyi platformon – A Mono szükséges elemei a játékunkba épülnek, a felhasználónak nem kell azt külön telepíteni
• Milyen nyelveket használhatunk? – C#, JavaScript, Boo – Ezeket akár keverhetjük is fájlonként
• Milyen fejlesztőkörnyezetben dolgozhatunk? – A Unity telepítésével megkapjuk a MonoDevelop némileg módosított változatát (pl. Debugging support, fejlettebb code completion JavaScript-hez, stb.) – De tetszőleges IDE-t használhatunk • NotePad++, VisualStudio, …
Egy C# script felépítése • Minden script komponens egy osztály, ami a MonoBehaviour osztályból származik • Hasznos örökölt mezők – transform, enabled, tag, name, renderer, …
• Hasznos örökölt metódusok – Destroy(): GameObject vagy component megsemmisítése – GetComponent(): Komponens keresése típus alapján a szülő GameObject-en – GetComponentInChildren(): Ugyanaz, csak a gyerek GameObject-ekben keres
Input kezelés •
Az Input osztály metódusain keresztül – Egér, billentyűzet, gamepad, joystick, érintőképernyő kezelés – Egyszerre több gamepad / joystick és multitouch támogatása
•
Input.GetKey() – Egy bizonyos gombra figyel, bedrótozva – Pl. Input.GetKey(KeyCode.B);
•
Input.GetButton() – Egy absztrakt gombra figyel, amit a játékos átkonfigurálhat a beállításokban – A megfeleltetéseket az InputManager-ben adhatjuk meg Pl. “Fire1” -> egér bal gomb – Ezt javasolt használni a .GetKey()-el szemben
•
Input.GetAxis() – Egy virtuális tengely menti -1 … 1 közti float értéket kapunk vissza – Pl. Gamepad analóg kar X és Y tengely – Az InputManager-ben szabályozható az érzékenység és egyéb paraméterek
•
Demo, irányítsuk a karaktert!
Animáció • Mecanim – a Unity 4.0-tól bevezetett új animációs rendszer – A korábbi “legacy” animációs rendszer továbbra is használható, de nem javasolt már új projektekhez
• A Mecanim előnyei – Nagyban megkönnyíti humanoid karakterek animálását • Képes a “retargeting”-re, vagyis egy bizonyos karakterhez készült animáció más arányokkal rendelkező karakterre való automatikus átszabására
– Egyszerűbben, egy grafikus szerkesztő segítségével lehet definiálni az állapotgépet ami leírja az animációkat menedzselő logikát • A korábbi verziókban ezt kódban, nehezebben kezelhetően kellett megoldani
Mecanim állapotgép
Demo!
Mi maradt ki? • • • • • • •
Mesterséges intelligencia Útvonaltervezés (Recast) Multiplayer hálózaton keresztül Részecskerendszer (Shuriken) Substance rendszer GUI kezelés … és még sok más
Kérdések?