A következő címkéjű bejegyzések mutatása: unity használata. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: unity használata. Összes bejegyzés megjelenítése

2014. május 8., csütörtök

MOBA SK Projekt - Előkészületek

Mint a bevezetőben említettem, nem fogok mindent lépésenként részletezni, ha esetleg káoszt érzel az itt leírtak kapcsán, nézz utána! Bár sokan úgy gondolják, hogy a félangol-félmagyar mondatok idegesítőek, itt bizony csak ilyeneket fogsz találni. Ennek nem szókincsbeli hiányosságom az oka, egyszerűen csak bizonyos szakszavakat érdemes megtanulni, hogy tudj keresni rá, ha netán valahol elakadsz.
Egy lehetőség: http://unity3d.com/learn/tutorials/modules

Terrain előkészítése:
Nem kell túl gondolni a dolgot. Egyenlőre bőven elegendő ha van egy terrain-ünk, egy-két directional light-unk és egy Main Cameránk a scenen. Később majd kell valamennyit alakítani rajta, de egyenlőre még textura sem szükséges hozzá.

Character prefab létrehozása:
Nem szeretem kockákkal (értsd mindenféle grafika nélkül, egy kockát tologatva) kezdeni a fejlesztést. Korábban kihagytam a karakter kinézetét és az animációt, aztán előfordult, hogy újra kellett gondolnom pár dolgot mikor be akartam rakni őket. Úgyhogy már az elején érdemes szerintem egy humanoid charactert lérehozni (vagy amilyet akarsz).

Én alapvetően Mecanim animáció rendszert használok, Root Motionnal, a karakterre pedig rigidbody-t és capsule collidert teszek. Vannak akik a Character controllert jobban szeretik. Ezen lehet vitatkozni, de egyrészt kényelmesebb az első megoldás, másrészt a unity csapata és közössége is erre felé hajlik inkább.
A mecanim rendszer nagy előnye hogy átirányítható (retargetable) animáció rendszert lehet vele létrehozni. Az átirányíthatóság azt jelenti, hogy egyik modellen lévő animációt könnyedén alkalmazhatod egy másik modellen.

Retargetable Character
A Sample Assets Beta csomagban találtam egy ötletes megoldást erre (nekem újdonság volt, bár lehet csak bamba voltam :D): egy Empty GameObject-ből készítünk prefabot. Erre rakunk egy Animator komponenst, ide helyezzük a Animator Controllerünket. Magát a tényleges karakter modelt ebbe az Empty-be fogjuk berakni gyermek objektumként. A megoldás szépsége, hogy a modelt akár futás közben is létrehozhatjuk, vagy váltogathatjuk. Ehhez persze kell, hogy amikor új model kerül a Character prefab-ba, megadjuk neki az aktuális avatárt amire az animátornak hatnia kell. Mivel egyenlőre nem akarjuk dinamikusan váltogatni, elég a scene indításakor megtenni:

void Start () 
{
   anim = GetComponent();
   foreach (Animator childAnimator in GetComponentsInChildren()) 
   {
      if (childAnimator != anim) 
      {
          anim.avatar = childAnimator.avatar;
          Destroy (childAnimator);
          break;
      }
   }
}
A fenti script végignézi az összes olyan gyermek objektumát a karakernek, amin van Animator komponens. Fontos észben tartani, hogy a GetComponentsInChildren 0. eleme maga a karakter objektumunk lesz (hiszen annak is van Animator komponense).
Amikor megtaláltuk, beállítjuk az Avatárt, majd töröljük a gyermekről az Animatort, hiszen innentől kezdve nincs szükségünk rá.

A következő lépés, hogy össze kell raknunk, egy nagyon egyszerű animator controllert. Én egészen konkrétan két teljes animációt raktam bele, mind a kettő a Sample Asset Beta-ból van. A flowchartom így néz ki:
Nagyon egyszerű animation flowchart
Egyetlen paramétert határoztam meg speed néven. Ami fontos lehet (főleg később), hogy a Transaction ablakban az Atomic ne legyen bepipálva! Ez annyit mutat, hogy az animáció megszakítható-e bármikor. Ha be van pipálva, akkor csak bizonyos pontokon szakítja meg.

Miután ez megvan, húzzuk be a character objektumunk megfelelő helyére. És készen is vagyunk az előkészületekkel.
Teszteléshez indítsuk el a scene-t, és ha a karakter lejátsza az idle animációt, akkor jól csináltuk az előkészületeket!


2014. április 24., csütörtök

Tutorial: Multiplayer FPS



A BurgZerg-es tutorialhoz hasonlóan a GTGD (Gamer To Game Developer) videóit is nagyon hasznosnak találtam. Amíg a Hack&Slash RPG főként az egyszemélyes játékok készítését tanítja, addig a GTGD a többszemélyes, LAN-on játszhatóakhoz szükséges tudást adja át.
Persze vannak átfedések a kettő között, de érdemes végig nézni a teljes sorozatot.

Sajnos a második nekifutásra csak két videót sikerült alkotnia a szerzőnek, de még így is 36 videónyi anyag áll rendelkezésünkre.

Tutorial: Hack & Slash RPG


Annó, amikor elkezdtem a Unity-vel foglalkozni, elég sok tutorial-t csináltam meg. Voltak jobbak, és kevésbé jók. Az egyik első tutorial a BurgZerg Arcade honlapról van.

Nagyon jó kis videó sorozat, melyben az elejétől építi fel a Hack & Slash típusú RPG játékot Petey. Érdekessége, hogy a programot majdnem teljesen "élő adásban" írja meg, tervek nélkül. Ennek ellenére, elég átgondolt és jó tananyagnak tartom, és csak ajánlani tudom mindenkinek.

A videóban írt szkripteket 10 dollárért lehet megvenni tőle, de nem szükséges, mert remekül lehet követni a videó alatt. Én mondjuk megvettem, mert úgy a 100. videónál valamit összekuszáltam a projektemben, és nem volt kedvem elölről ismét végignézni a videókat. :)

Link: http://www.burgzergarcade.com/hack-slash-rpg-unity3d-game-engine-tutorial

2014. április 23., szerda

Unity Alapok 1 - Kezelő felület

Unity-t először elindítva az alábbi kép fogad minket. Elsőre talán összetettnek tűnik a kezelő felület, de jó logikával van felépítve és gyorsan ki lehet rajta igazodni. Ebben a cikkben sorra veszem a felület különböző részeit. Az alábbi képen látható elrendezést használom, de jó tudni, hogy a Unity öt beépített elrendezéssel rendelkezik. Ezeket a Window/Layouts menüpont alatt találhatjuk, van arra is lehetőség, hogy saját elrendezést használjunk, és ezt el is menthetjük.

Unity3d 4.3.4 kezelő felülete

Mielőtt neki kezdünk a különböző panelek, ablakok áttekintésének, szükséges néhány alapfogalmat tisztázni:
  • Project: Aki valamennyire jártas programozásban és használt valamilyen IDE-t (Integrált Fejlesztői Környezet - pl: Visual Studio, NetBeans...stb.) már találkozhatott ezzel a kifejezéssel, lényegében itt is hasonlót kell érteni alatta. A többieknek pedig röviden egy adott alkalmazáshoz használt részek gyűjteményét jelenti. Jelen esetben a játékunk különböző részeit (szkriptek, hangok, modellek, animációk..stb) tartalmazza.
  • Scene: Unity a játékokat scene-ekre tagolja. Máshol ezt level-nek vagy map-nak is nevezik. Leegyszerűsítve mondhatjuk azt, hogy amikor töltőképernyő jelenik meg egy játékban, egy új scene töltődik be. Ez persze nem felel meg teljesen a valóságnak, de egyenlőre maradjunk ennél a meghatározásnál, és majd később pontosítjuk.
  • Asset: Minden tartalmat, ami a játékunkba kerül assetnek nevezünk. Ide tartoznak a scriptek, 3d modellek, hangok, animációk, textúrák, shaderek, particle rendszerek. Ezek összefoglaló neve Asset. A projekthez tartozó assetjeinket a Project ablakban találjuk.
  • Package: A projektünket, vagy annak egy részét csomagba tömörítve exportálhatjuk, illetve importálhatjuk.
  • Asset Store: Unity3d közösség építésének köszönhetően nagy mennyiségű játék tartalom gyűlt össze, melyet bármelyik unity fejlesztő elérhet az Asset Store-n keresztül.
Project
Ebben az ablakban találhatjuk az összes assetünket. Mappákba szervezhetjük őket, a jobb átláthatóság érdekében. Ahhoz, hogy a játékunkban megjelenhessen egy asset, először be kell importálnunk a projektünkbe. De létre is hozhatunk új assetet a unity-n belül.

Unity3d 4.3.4 project ablaka
Asset importálására több lehetőségünk is van:
  • Egy asset importálása: A project ablak assets mappáján jobb egérgombbal kattintva importálhatunk Assetet, de az is remekül működik, ha egyszerűen a windows intézőjéből (vagy bármilyen fájlkezelőből) behúzzuk a unity project ablakába a fájlunkat.
  • Külső csomag (package) importálása: Szintén jobb gombbal az asset mappára kattintva az Import Packages/ Custom Package menüpontot választva tehetjük meg.
  • Asset store-ból letöltött tartalmainkat a Window/AssetStore menüpontból megnyitott ablakban érhetjük el. Az ablak bal felső részén lévő ikonok közül a 4.-ra kattintva. Itt listázódik az összes már letöltött illetve megvásárolt asset. Az importálás gombra kattintva tölthetjük be a projektünkbe az adott asset package-t.
  • Standard Asset importálása: Bizonyára a külső csomag importálásánál észrevetted, hogy a Custom Packagen kívül még egy csomó opció kiválásztására van lehetőség. Ezek a unity motorral adott "kezdő tartalmak". Erről és a frissebb verzióról majd még fogok írni egy későbbi cikkben. Egyenlőre legyen elég annyi, hogy ezek a legalapvetőbb asseteket jelenti (pl: karakter irányítás, textúrák..stb).
Hierarchy
A scene-ünkön megjelenő asseteink itt jelennek meg. Az itt megjelenő elemeket játék objektumoknak (GameObject) nevezzük, ezek az objektumok egymásba ágyazhatóak, innen a Hierarchy elnevezés.
Unity3d - Hierarchy ablak
Bár itt a Create gombra kattintva is létrehozhatunk új játék objektumot, én mégis a menüből szeretem kiválasztani ezeket: GameObject menüpontra kattintva választhatjuk ki, mit szeretnénk hozzáadni a scene-ünkhöz. A különböző GameObject-ekről részletesebben egy későbbi cikkben fogok írni.

Scene
Az ablak központi részét (a fenti elrendezésbe legalábbis) a Scene ablak foglalja el. Itt 3d-s térben alakíthatjuk ki a kinézetét a mappunknak. A felsősorban lévő opciók a különböző objektumok megjelenítését, elrejtését hivatottak vezérelni. Ez akkor van hasznunkra, ha nagy mennyiségű objektum között kezdünk elveszni.
Unity3d - Scene ablak
Alapvető navigáció elég kényelmes:
  • Bal egérgombot lenyomva vízszintes illetve függőleges irányba mozgathatjuk a kameránkat (a szerkesztő kameráról van szó, nem a játékban használtról).
  • Jobb egérgombot lenyomva foroghatunk körbe a 3d térben.
  • Az egér görgőjével tudunk zoomolni.
  • A billentyűzet nyilaival pedig előre-hátra, jobbra-balra mozoghatunk. - ezt akkor szoktam használni, ha a egér mozgásnál precízebbre van szükségem.

Eszközök
Az alábbi képen látható eszközök a scene-en való manipuláláshoz szükségesek. Illetve ebben a sorban középen található Play gomb segítségével indíthatjuk el a programunkat teszteléshez.

Unity3d - eszköztár

Az eszközök balról jobbra haladva a következőek:
  • Hand tool: ezzel mozgathatjuk a scene-ünket. Igazából nem túl hasznos eszköz, mivel az alap navigáció a többi eszközt választva is használható.
  • Move tool: Ha ez a mód aktív egy GameObject-et kiválasztva megjelenik egy három nyillal rendekező eszköz. A különböző nyilak a 3d tér 3 koordináta tengelyének felel meg: x, y, z. Ahol az y a függőleges tengely. A ikon három nyila különféle színnel van jelölve, ezzel is könnyítve a munkánkat. A nyilakra kattintva az adott tengely mentén tudjuk mozgatni az objektumunkat.
  • Rotate tool: az előzőhöz hasonlóan egy objektumot kiválasztva három kör jelenik meg, amikre kattintva az adott tengely körül tudjuk forgatni az objektumunkat.
  • Scale tool: az objektum méreteit változtathatjuk ezzel, szintén a tengelyek mentén.
Ha egyszerre az összes tengely mentén akarunk mozgatni, forgatni vagy növelni (általában az utóbbinak van értelme csak, a méretarány megőrzése végett) akkor a megjelenő eszköz középpontjára kell kattintani.
  • Local/Global: A koordinátákat az objektum szempontjából nézi (Local) vagy a teljes tér szempontjából (Global).
Egyenlőre elsőre ennyi volna az áttekintés, későbbiekben még fogunk foglalkozni behatóbban vele, valamivel céltudatosabban.