játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5471
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2525

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2194
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
2006/12 - White Stone - Wing: Released Spirits 2006.12.03 22:00


A decemberi HGP rovatunkban a Wing: Released Spirits című projectről olvashattok. A White Stone játéka egy fantasy szigetvilágban játszódó RPG, amelyben minden szereplő az elejétől a végéig él és mozog. Habár a játék fejlesztése már több éve folyamatosan tart (jelenlegi formájában pedig már meg is vásárolható az interneten), de a Wing fejlődése még korántsem ért véget. ;) Olvassátok szeretettel Atu és Csilla bemutatkozó írását, és a Wing project krónikáját! :)





A csapatról...

Szalkai Attila

Ötödikes voltam, amikor egy osztálytársam ZX81-et kapott. Csúfoltuk, hogy gépagy kell neki. Egy évre rá, 1985-ben már nekem is volt. Anyukám nem tudott elmenni a Máté Péter temetésére, mert akkorra kaptunk időpontot a bolttól. Újabb 1 év múlva már 32KB bővítőm is volt, mert az 1 KB kevésnek bizonyult: 1 képernyőnyi Basic forráskód. 1 év és jött a ZX Spectrum. Amikor átjött a haverom 1 óra alatt mindig beírtam valami primkó játékot, az űrhajó így nézett ki pl.: (-O-) és azt nyomtuk. Aztán elkezdtek jönni kazettán a profi progik. Például amikor autóversennyel játszottunk, az egyikünk a játékos széke mögött ült, és rázta, ha az lement az útról. Amikor megjött az Enterprise szintén Z80-as procival, és programozható videokártyával, elkezdtük áthekkelni rá a Spectrumos játékokat. Felfigyelt ránk a Novotrade az Enterprise klubban, így a Flight Simulatort és az Elit-et így Enterprise-ra még a Centrum áruházban is lehetett kapni. Ezután nem foglalkoztam játékokkal 6 évig, nem is játszottam. Amigám lett, az AI, majd a 3D kezdett érdekelni, animációkat készítettem, 3D modeller és animátor volt 94-ben a szakdolgozatom. Akkoriban kezdett terjedni az AutoDesk 3D Studio is. Első munkahelyemen Videomátrix táblákra készítettem kezelőprogramot, és animációkat is. Egyik animációm az MTV1-en is megjelent, anélkül hogy megostromoltam volna. Ezután saját vállalkozásban játékot kezdtem írni, de végül újabb 3D modeller/animátor fejlesztésbe torkollott. 96-ban elmentem a Novotrade-hez, ami később Appaloosa-vá vált, azóta játszok, és fejlesztek is. Miután vitánk támadt a szerződés feltételeiről, 99-ben átnyergeltünk páran a Lottóiparba, ez is játék csak máshogy. Itt hamar menedzserré koronáztak, de hiányzott a programozás, ezért kiléptem. Négyen volt Appaloosa-sok G-Dimension néven fejlesztőcsapatot alapítottunk, és a Channel42-vel szerződtünk. A 2001-es E3 előtti napon 37 órát dolgoztunk egyben, hogy a legjobb 3D űrstratégia demó kerüljön ki. Végül nem mi kaptuk a megrendelést, és családi okokból is visszatértem a Lottóiparba. Szóval most ezt csinálom nappal.


Zsembery Csilla

Szeretek rajzolni. Gimi másodikban kaptam egy Commodore Plus 4-est, arra írtam rajzoló programot. Animátornak szerettem volna továbbtanulni, de csak másoddiplomás képzésben volt olyan. Matek vagy történelem? Matek. Fizika vagy irodalom? Fizika. Ezért mentem villamosmérnöknek. Nyári munkában a Pannon Rajzfilmstúdióban dolgoztam. Szakdolgozatom egy általuk kiadott rajzfilmkészítő szakkönyv alapján készített oktatóprogram volt, amiben lehetett gyakorolni is a technikákat. Én magam nem sokat játszottam. Attila elkezdte a játékfejlesztést, és mutogatta a játékokat. Aztán egyszer hozott egy Nintendo N64-est, azon a Mariót majdnem teljesen végigtoltam. Ez volt az első 3D-s játékom. Igaz, hogy nem volt a legszuperebb grafikája, de nagyon jó játékélményt nyújtott. Ezt a színvonalat akartam elérni a mi játékunknál is.

Miért a játékfejlesztés?

Mert az AI nagyon érdekel. A legnyomosabb érvem rá az Unreal Tournament. Itt a szereplők a meccs elejétől a végéig élnek egyfolytában (ha ki nem nyírom), nem csak amikor a játékos közel van. Vagyis folyamatos a szimulációjuk. Útvonalat terveznek, csapatban dolgoznak. Ha bekerülsz közéjük, ott azon a pályán ugyanolyan eszközeid vannak mint nekik, ugyanannyi időd van gondolkozni, sebességed, erőd ugyanakkora, és nem biztos, hogy te nyersz. Ott ember és AI méltó ellenfél, a határ elmosódik.
Amikor 2000 táján az akadémikus AI és az 5-dik generációs kampány kifulladt, a játékfejlesztés lendítette tovább. Nem kell a kis Anakinnak bádogból 3PO-t építenie, nem kell ceruzaelem, kismotor, ott a Dark/Blitz Basic, 3D Game Studio, a virtuális 3D világ, és elég csak a torta habjára, a bot vezérlésére fókuszálni. Persze ha azt akarod, hogy az AI-dat mások is megnézzék, akkor be kell csomagolni 3D modellekbe, animációkba, kerettörténetbe és több nyelvű User Manualba is. De hát az UT-t is be kellett, és milyen jól tették, hogy megtették.

Miért RPG?

Egyrészt ilyennel szeretek a legjobban játszani. Azt a definíciót olvastam, hogy
Ez a momentum nagyon megragadott, mert a mesterséges intelligencia is egy ilyen környezetben tud kiteljesedni.

A leginkább inspirálólag ható játékok nem mindegyike RPG:
  • Drakan: Order of Flame
  • Indiana Jones and the Infernal Machine
  • Shade: Wrath of Angels
  • Tomb Raider I-IV
  • Ultima IX: Ascensions
  • Morrowind

Persze egy jó játék sztorijára irodalmi művek is hatnak, ez nálunk:
  • Ken Follet: Katedrális
  • M.A.G.U.S gondozásában az Ynevi Kalandozások
  • Bibliai történetek

Miben új?

Mindig sajnáltam a játékokban, hogy egy gyönyörű helyszínen végigrohanok, lekaszabolok mindenkit, és aztán kong az ürességtől, rohangálhatok rajta, mintha be se lett volna rendezve. Az utcák, a terek, a folyosók s a termek amikhez emlékek kötnek felejthetőek, nem találok többé ott ismerőst, jön a következő pálya. Addig élnek a szereplők míg nem találkoznak a játékossal. Ezután vagy a játékos öli meg őket, vagy ők a játékost, és állás visszatöltés miatt van végük.

Elhatároztam, hogy nálunk ez másképp lesz. Az embereket nem kell, és nem is szabad bántani. Közöttük védelmi szövetségek vannak, a falusiak megvédik egymást, és a katona a polgárokat. Törvények vannak, és a büntetés sem azonnal lekaszabolás, hanem vagyonelkobzás, és pár percig tartó börtön, ami egy pörgős játékosnak magunk között szólva éveknek tűnhet.

Minden szereplő érez valahogy a játékossal kapcsolatban. Vannak akik elhiszik a mondákat, vannak akik kinevetik. A megismert kereskedőkhöz rendszeresen vissza lehet térni, és az ismert áraik szerint haszonra szert tenni, amiből térképek, és egyéb hasznos dolgok származhatnak.

Kihívást jelent például egy nagy hatalmú uralkodók hatalmának bemutatása. Ezek is csak 3D modellek első ránézésre, még az is lehet, hogy 3-al kevesebb poligonból áll, mint egy katonája, de mégis az interakciókból, az öt körülvevők reakcióiból ki kell fejeződnie rettegett méltóságának.



A projektről

A kezdet..

94-töl 97-ig nem tudtam, hogy miről szóljon a játék. Most már tudom mi volt a baj: nem kerestem inspiráló műveket. 96-ban egy szöveges kalandot írtam, ami kiindulásul tudott szolgálni a játékhoz. Ezután a 3D megjelenítésre fókuszáltam. Legyártottam 3D Studióban pár modellt a játékból, megröptettem felette a kamerát, és lerendereltem.

Grafika

Kiraktam egy lovat, egy embert, egy házat, és egy sárkányt, ami röpködött felette. Hosszú ideig bénáztam TrueSpace-ben a táj megrajzolásával, nehéz volt összehozni a kő, fű, út finom átmenetes illeszkedését. Ezután a Drakan editorából ellesett layeres terrain ábrázolással készítettem köré egy hegyet barlangokkal, és egy tavacskát. Ott grid alapú a táj, és vannak átmenetes textúrák a csak fű és csak kő között. Mindezt nagyon csúnyának kell elképzelni.

A TrueSpace low poligon eszközei gyengének bizonyultak, és a Drakan editora is tartalmazott saját modellert, igy én is kiegészítettem a játékot beépített modell-átalakító képességekkel. Ma ez nagyon jól jön, mert ha megálmodok egy műveletet, ami sokat segítene, akár batch processz az összes modellen, könnyen belerakom a programba, és akár real time effekt is lehet a játék alatt belőle.

A pályaszerkesztő szintén a játék egy speciális futásmódja. Maga a pálya ascii formátumú. Igy akár ha kell szövegszerkesztővel is meg lehet nyitni, és ott urrá lenni a káoszon, ha elszabadult. Maga a scene tulajdonképpen objektumok felsorolása típusuk szerinti property-value párokkal, amik másik objektumokra is hivatkozhatnak. Ilyen objektumok a szereplők, a fegyverek, állatok, particle generátorok, globális beállítások, ködök, és egyéb környezeti paraméterek, hangok, effektek.

AI

Az AI-nak kezdő lökést az Appaloosahoz átigazolt volt Sega-s tesztelő Keith Hashigara által tervezett Generic Enemy vezérlés adta. Ezt ott nekem kellett implementálnom, és a benne kódolt FSM (véges állapot gép) jó koncepciónak tűnt.
Vár - meglátja játékost -> Támad - közelébe ér -> Harap

Továbbá André LaMothe: Black Art of Game Programming Gurus könyvében ismertetett tanuló és tervező algoritmusokkal jutottam. Ez az úgynevezett trial and error tanulás az állatvilágban nagyon fontos. Pl. egy tömbben számok, hogy melyik állapot jöhet ha rátámadnak. Véletlenszerűen választ. Ha rossz volt a döntés, a tömbben 1-el kevesebb helyen ez az állapot, helyette egyel több helyen az, ami jó volt. Az igazi továbblépést a híres AIMA (Mesterséges Intelligencia Modern Megközelítésben) könyvben ismertetett ágens elmélet, és tanuló ágensek jelentik.

Fizika

Saját fizikai modult használunk, de ez változhat. Az ütközésvizsgálaton sokat kellett gondolkodni, és még vannak apróbb hibák. Illusztrálom, hogy mi mindenre kellett odafigyelni:
  • A tárgyak leesnek, de csak a talajig; a nyíl röppen ívelten; az eszencia szabadon repül enyhe célkövetéssel.
  • A tűz meggyújt mindent, amihez hozzáér.
  • Vízszintes ütközésnél, hogy ne menjünk át a falon. De a szellemek átmehetnek. Ne lássanak át a szereplők. Ne is akarjanak áttámadni rajta keresztül, de a játékosnak se kináljon fel a gép falakon, zárt dobozokon keresztül elérhető tárgyakat.
  • Függöleges ütközésnél, hogy megtarson a talaj. De a tenger felszínén lebegjenek a szereplők. A halottak felússzanak a viz tetejére. Az ugrás, repülés és a búvárkodás esetében csak mozgást korlátozzon. A mocsár viszont szép lassan nyel el, de ki lehessen kecmeregni.

A script

Bár nincs külön pályatervezőnk aki ne tudna programozni, de hogy szárnyaljon a kerettörténet, le kellett róla oldani a béklyókat, amiket a C++ szigora jelent. A script saját fejlesztésű “rules” nyelven iródott. Az alapműveleteken kívül a játékot vezérlő műveletekből áll, változókat használ, konkrét játékbeli tárgyakra hivatkozik, azokat elindítja, megállítja, megöli vagy feltámasztja. Nincsen hagyományos értelemben vett elágazás, mégis van feltételes vezérlés és az elengedhetetlen goto.

Több különböző célt is ellát a script:
  • A játék kerettörténetét vezérli, pl. Wing beinditása, mérgezés.
  • A szereplők játéktörténettől is függő tartalmú dialógusai, kereskedés vezérlése.
  • Játékban speciális tárgyak, effektusok vezérlése.
  • Az átvezető animációk is ebben lettek leírva.
  • Automatikus teszteléssel végig lehet nyomni a játékot, nem lett-e valahol nagy gáz.

Tánc tánc, zene zene

Sokáig nagy misztikum volt számomra a zene. Jobban kellett volna figyelni énekórán: polifónia, dallamtan. Végül találtam egy könyvet ami pont ilyeneknek tárgyalja a témát, mint mi. Persze programozók frankó gyerekek, pörögnek helyettük a fogaskerekek, vagyis miután bénáztam egy sort a MOD szerkesztökkel, írtam egy progit, ami az öszhangzathoz szükséges szabályokat magától tudja, és wizard szerűen némi AI-val akár az ABAB’ ír balladai formát is generálja egy alapdallamból. Jó ötleteket adott az Easymusic, lásd easymusic.com. Végül átvettem egy pár zenét a DarkBasic szabad liszencű zenéiből, hogy megtérüljön a beruházás. Majd ha nagy leszek, lecserélem sajátokra.

Mit is tud most a játék?

Az első iteráció a prototípus. Mindegyik iteráció végén a program kiadható, és egy fokozattal többet tud, mint az előző végén. Játékos nyelven szólva szintet lép. A jelenlegi állapotában már árulom is.

Föbb tudása cimszavakban:
  • Egy nagy pálya a világ, szigetek, tenger
  • Falvak, városok, dungeonok, palota, piramis
  • Ragadozók, cápák, orkok, törpök, szellemek
  • Dialógusok, kereskedelem, törvények
  • Úszás, búvárkodás, kapaszkodás
  • Lovaglás, repülés, hajózás
  • Kardozás, nyilazás, mérgezés, vadászat
  • Láthatatlanság, sérthetetlenség, sebesség, ugrás, harc power-up-ok.

Mod

Az internet oldalunkon részletes technikai leirás található a játék módosítási lehetőségeiről, amely segítségével akár teljesen más játék is létrehozható.
  • A script nyelv és műveletei
  • A játék scene leírás formátuma
  • A 3D csontvázas modellek formátuma
  • A tájat definiáló layer fájl formátuma

A jövőről

Nagy tervek azok vannak. Pénzügyileg teljesen más a kép, mint technikailag. Miután van egyéb jövedelmünk, belefeledkezhetünk a technikai tervekbe. Ki tudja, hátha a következő dagállyal partra sodor valamit a viz.

Példákkal illusztrálom, hogy mit jelentene egy párhuzamos dimenzióban, ugyanezekkel a modellekkel és tájjal egy teljesen más, komplexebb AI viselkedése. Nem scripttelt esetleírások ezek, mindet AI dönt el:
  • Az egyik évben nagy szárazság tombol. A palota éléskamrái kiürülnek. Lord Medorak megemeli az adót. Ezt több polgár nem tudja fizetni. Egy részük csatlakozik a bujdosókhoz, akik rendszeresen rátámadnak a kereskedőkaravánokra. Az uralkodó előtt több választás áll. Vegül úgy dönt, több katona kell. Tovább emeli az adót. Végül lázadás bontakozik ki.
  • Kiéhezett farkasok verődnek hatalmas hordába. Rárontanak a városra. Az asszonyok és gyerekek a hegyekben rejtőznek el barlangokban. A katonák és a férfiak úgy döntenek, feltartják és lefékezik a hordát.
  • Jelzőtüzek a hegytetőkön jelzik az ellenség jöttét. A kontinensről nagyobb támadás indul. Az ellenséges hadvezér kommandósokat küld a jelzőtüzek öreihez. Mégis egy ha elmenekül, megpróbál gyalog vagy lóháton eljutni a palotába, hogy figyelmeztessen.
  • Teadélutánt szervez a gazdag polgár, hogy a király fia felfigyeljen lányára. Célja, hogy a rokonság révén kizárolagos textilkereskedelmi jogot szerezzen.



Ennyi lett volna az ehavi HGP rovatunk. Köszönet Atunak és Csillának, hogy bemutatták nekünk a Wing-et! :) Aki pedig még nem próbálta ki a játékot, az látogasson el a Wing honlapjára, és töltse le a kipróbálható verziót. Nem fogja megbánni. ;)

HomeGnome, 2006.12.04.



Kapcsolódó linkek:

Értékelés: 6.00

Új hozzászólás
Csaba42          2006.12.05 13:11
Én is gratulálok, élvezetes volt a játékról olvasni, főleg a "műhelytitkokról"
szeki          2006.12.04 12:41
gratulálok, megérdemelt kitüntetés
Matzi          2006.12.04 09:50
Szép leírás, de a "jövőről" címszó alatt lévőkön azért lehetett volna még gondolkodni, mert csak egy az ami ebben a formában nem totál irreális (mármint hogy megtörténjen, nem a leprogramozása). Az meg megoldható stratégiai szintű szkript rendszer bevezetésével, AI-t azért nem érdemes írni rá, mert azzal nem találkozik a játékos.
Összességében jó játéknak tűnik, mégha csiszolásra is szorul.