2014. április 25., péntek

Pioneer Project - Bevezető


Miért kezd valaki bele egy MMORPG készítésébe?
Régóta ott motoszkált a fejemben. 2013-ban nagy csalódást okozott a Neverwinter Online (vagy én vártam túl sokat tőle?) , melyet úgy hirdettek, hogy méltó utódja a klasszikus Neverwinter Nights-nak (ami egyébként az első mmo élményem volt réges rég). Hát nem lett méltó utód... maradjunk ennyiben. :) De végülis innen jött az ötlet, hogy ha a modern mmo-k nem tudnak olyat felmutatni, ami nekem tetszik, akkor "kénytelen" vagyok magam megcsinálni.
2013-ban belevágtunk egy projektbe (Worldshaper), ami aztán rövid úton be is halálozott. Rossz kezdés, de legalább tanulságos volt. 2014 februárjában aztán kezdetét vette a Pioneer Project.



Miről is van szó?
Pioneer Project egy újfajta megközelítést próbál megvalósítani az mmorpg témakörben. A hagyományos rpg (nem mmo!) elemeket igyekszik vegyíteni a modern harcorientált játékok (főként a mobák) rendszerével. Választási lehetőséget felajánló küldetések, csapdák, rejtvények lesznek kombinálva az alapvetően "skillshot" alapú harcrendszerrel.
A karakterek ereje a kevésbé fog függni a felszerelésétől mint a jelenleg divatos mmo-kban, és jobban a játékos ügyességétől, mind pvp, mind pedig pve terén.

Mielőtt még valaki megemlíteni, hogy egy mmo fejlesztése milyen kemény feladat, jelzem: tudom. :) Csomó blogon jártam, és az esetek 90%-ában a tanács a "hogyan csináljak mmo-t"-ra az, hogy "ne csinálj!". Másrészt már negyedik hónapja foglalkozok vele, sorra jönnek elő olyan dolgok, amikre korábban nem számítottam. Viszont én élvezem ezeket a kihívásokat, és azt hogy jobban beleláthatok az mmo-k működésébe.

In Game GUI és HUD
Hogy áll most a projekt?
Unity3d és a Photon Server segítségével összeraktam egy szerver oldali alkalmazást, ami biztosítja az alapvető működést, kicsit tovább tartott, mert szeretem a rugalmas rendszereket, amik esetleg később más játékokhoz is hozzáigazíthatóak a legkevesebb változtatással, nos ez ilyen lett.
Kész van a karakter statisztika, az inventory rendszer és a skill rendszerből is csak néhány dolog van hátra.
Ezen a héten létrehoztam és implementáltam UMA (Unity Multipurpose Avatar) segítségével a karakterek kinézetének testreszabási lehetőségét (még a csúszkákat kell valami normális intervallumba szorítani).

Egyfős csapatom időközben kettőre bővült párom lévén (Skyie néven szerepel itt a blogon), aki összerakta a GUI dizájnját, valamint elkezdett ismerkedni a particle készítés és scene rendezés világával. Röviden az ő munkáját dicséri az amit látni fogtok, az enyémet az amit nem.  :)

További GUI tervek, jelenleg még csak photoshopban, illetve a háttérben a leendő karakter választó scene.
Itt jegyezném meg, hogy örömmel fogadunk mást is a köreinkbe, de le kell szögezni, hogy a projekt alapvetően hobbi alapú (ami azt jelenti: dolgozz mint a güzü, de nem kapsz érte pénzt :P).

Ahogy haladunk előre a projektben, újabb információkat fogunk majd közzétenni, addig is várjuk az esetleges kérdéseket, illetve a felajánlásokat az ingyen munkára :D

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

Asset Ajánló: Sample Assets Beta (Free)


Unity saját fejlesztésű csomagja. Van benne minden, ami egy játék kezdéséhez kell. Remek kiindulási alapot nyújt FPS, TPS, autós, repülős vagy akár 2D-s platform játékhoz. De nem csak a kezdéshez, hanem a különféle elemek működésének megértéséhez is remek a példa scene-jei által.

Webplayer Demo: http://files.unity3d.com/benp/SampleAssetsWebplayer/
Asset Store link: https://www.assetstore.unity3d.com/#/content/14474

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.

Játékfejlesztés - mire lesz szükségem?

Amikor 2013 elején elhatároztam, hogy márpedig játékot akarok fejleszteni, elég sokat dilemmáztam, milyen programokat használjak. Kezdőként fontos volt, hogy ingyenesek legyenek az eszközök, amiket használni fogok, ugyanakkor az ideiglenes megoldásokat nem szeretem. Így szempont volt az is, hogy a későbbiekben kereskedelmi célú projekteken is tudjam őket használni.

Mik is azok a szoftverek, amikre feltétlen szükséged lesz, ha játékfejlesztésre adod a fejed?

A játékmotor (Game Engine)
Egyértelműen ez a legelső dolog amit be kell szerezni. Én a három legnagyobb, ingyenesen is elérhetőt próbáltam ki: Unity3d, Unreal Development Kit, CryEngine. Röviden leírom a tapasztalataimat az utóbbi kettőről, bár túl sok időt nem foglalkoztam velük.

  • Unreal Development Kit: Már kezdéskor ütős látvány fogad. A szerkesztőt elindítva már kezünkbe kapunk egy teljes animált és hanggal effektelt karakter rendszert, irányítással együtt. First Person és Third Person nézetet egyaránt. Ez volt a fő indok, amiért egy kicsit hanyagoltam a Unity-t. Ugyanakkor Unity-hez képest kínlódás volt, például a közelharc leprogramozása. A programnyelve egyébként egyedi, a Java-ra emlékeztet.
  • CryEngine: Az UDK-hoz hasonlóan már kezünkbe kapunk egy adag grafikát, karakter vezérlést. Viszont szintén saját scriptnyelvvel rendelkezik, aminek az elsajátításához (akkor még) nem találtam elegendő információt.

Alapvetően Unity3D-nek több előnye is van, ami miatt az én szememben megelőzte az előző kettőt:
  • Rugalmasság: bár nem kapunk csili-vili grafikát induláskor, és esetleg a karakter irányítást is magunknak kell megírnunk (ha nem felel meg az alap), viszont cserébe olyan rugalmas és könnyen kezelhető rendszert kapunk, amiben bármilyen játékot elkészíthetünk.
  • Tanulhatóság: Unity-hez nem hoztak létre egyedi script nyelvet, inkább már létező program nyelveket bővítettek további osztálykönyvtárokkal. C#-ban és Javascriptben is programozhatunk, ha pedig elakadunk valahol, csak beírjuk Google-ba és jó eséllyel kapunk róla megoldást.
  • Közösség: Amíg az UDK-t és a CryEngine-t egy adott játék fejlesztéséhez tervezték és később bővítették tovább, addig a Unity-t alapvetően azzal a céllal hozták létre, hogy minél több játékfejlesztő tudja használni projektjeihez. Ennek köszönhetően erős közösség verődött össze köré. Emiatt rengeteg információ, tutorial és asset (játékba való tartalom - 3dmodellek, hangok, program részletek..stb) érhető el könnyedén.
  • Ingyenes: az ingyenes verzióból ugyan néhány funkció hiányzik (árnyékolás például), de cserébe tényleg ingyenes és használható kereskedelmi céllal is egészen 100.000 USD (22milló forint a cikk írása idején) éves bevételig.
Én tehát emellett a játékmotor mellett voksoltam le. 


3D Modellező program
Ebben a témakörben már nincs akkora választás. Ha maradunk az ingyenes megoldások terén egyedül a Blender jöhet csak szóba. A 3d modellezés nem az erősségem, ha csak lehet kerülöm, de még így is szükségem van olykor erre a programra. Bátran állíthatjuk, hogy tudásilag a fizetős testvéreit is eléri, mind modellezés, texturázás, mind pedig animálás terén. Akárcsak a Unity köré, a Blender köré is nagy létszámú közösség jött össze, és rengeteg tutorial és információ érhető el hozzá, nem beszélve arról, hogy bizonyos unity asset készítők is ezt használják, ebből adódóan ez az elsődleges modellező eszköz, amit az asset-ük támogat.


Képszerkesztő program
Szükséged lehet még egy képszerkesztő programra is. Én Photoshop-ot használok, de természetesen ennek is van ingyenes alternatívája: a GIMP, ami szintén teljes értékű szerkesztő program.
Gimp letöltés: http://www.gimp.org/

Ezekre a programokra lesz tehát szükséged, a játékfejlesztéshez. Bizonyos játékokhoz (például multiplayer vagy MMO-khoz) másra is szükséged lehet, de ezekről majd később fogok írni.