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

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2188
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
BlacksmithSoft - Designed 2009.12.09 08:02





BlacksmithSoft: Designed
Postmortem





1. Bevezető

A Designed egy 2D-s grafikát használó valós idejű stratégiai játék. Fejlesztését elsőéves egyetemistaként kezdtem el. Habár az eredeti elképzelés nem valósult meg, összesen 4 különállónak mondható prototípust publikáltunk belőle. Az utoljára kikerült demó, a v0.4-es az alapvető játékmenetet tekintve eléggé közel állt az általunk megszokott stratégiai játékokhoz. Az első elkészült demó után adtam fel a csapatkereső "hirdetést" a projekt honlapján és a JF.hu-n. Ezután jött létre a BlacksmithSoft csapat, mely 6 lelkes tagot számlált, grafikusoktól a honlapkészítőn a zeneszerkesztőkig.



(A nagyításhoz kattints a képre!)


2. Ami jól ment

2.1. Hatékony garázsprojekt fejlesztési modell és népszerűsítés

A fejlesztés menete talán az evolúciós modellre hajaz a leginkább. Jellemzője, hogy igyekszünk rövid távú határidőket kitűzni, amikorra elkészül a játékfunkciók egy csoportja, nevezhetjük őket mérföldköveknek. Ezeket előre bejelentjük, és igyekszünk tartani magunkat a beígért határidőkhöz. Így idő szempontjából nem folyik szét a fejlesztés, erősebb a motiváció, hogy minél előbb valósítsuk meg a szükséges fejlesztéseket. Különösen a határidőt megelőző napokban nőtt meg a projekt iránti érdeklődés, mind a fejlesztők, mind a JF.hu-s fórumozók részéről. A demókat kampányszerűen hirdettük meg a JF.hu-n. Egy ilyen hirdetési kampány tartalmazott egy fejlesztési napló bejegyzést a játék új funkcióiról, 3 képernyőképet és egy letölthető demót. A feltett képek a JF.hu portálon megjelentek a “Friss kép a galériából” rovat alatt, és ilyenkor a Friss GP kommentek között is ott szoktunk lenni. A mellékelt diagram szemlélteti, hogy a fejlesztés időszakában hogyan oszlottak el a beérkező hozzászólások. Jól látható, hogy a demó verziók közzétételét követően jelentősen megugrott a hozzászólások száma. Egy garázsprojekt esetében fontos, hogy a projekt látogatóinak állandóan tudjunk valami újat és használhatót nyújtani, amiről a véleményüket kifejthetik. Sokan látogatták a projekt adatlapját, a beérkező hozzászólások és bátorítások segítettek, hogy a játék fejlesztését továbbvigyük.


A Desinged projekttel kapcsolatos
hozzászólások alakulása


2.2. Közismert műfaj és játékstílus

Úgy érzem jól sikerült eltalálni a játék műfajának és stílusának megválasztását. Maga a játék több nagy klasszikustól merít ötletet. A játék külleme hasonlít a Dune 2000-re, a gazdasági modell és az irányítás a Starcraft-ra, az egységek összerakása pedig a Warzone 2100-at idézi. Mivel a műfaj, nevezetesen a valós idejű stratégia (RTS) sokak által ismert, nem kellett hosszasan ecsetelni, hogyan irányítsuk a játékot. Mivel a JF.hu portálnak sok RTS rajongó a tagja, illetve ebből a műfajból kevés hasonló projekt található a portálon, ezért is örvendhettünk népszerűségnek. Gyakran látok olyan projekteket, melyeket nagyon szépen kiviteleztek a készítőik, de mégsem túl sikeresek. Egy GP-ben a sikertelenség oka lehet, hogy például túl egyszerű a játékmenet vagy a műfaj ismeretlen vagy kevésbé népszerű a közönség körében (pl.: táblás játékok vagy horgászszimulátor, egyébként az utóbbi ötlet nekem nagyon tetszik).
A követelmények meghatározásához elegendő volt a piacon lévő játékokat tanulmányoznunk, pl.: milyen logika alapján mozognak az egységek, mikor támadják meg egymást, hogyan lehet nyersanyagot szerezni, hogyan gyárthatunk egységeket, hogyan tudja a felhasználó a játékot irányítani stb.


                  
A játékrendszer fejlődése                 A modellek fejlődése


2.3. GP-t minél egyszerűbben!

Arra kimondottan büszke vagyok, hogy a Designed-ban sok játéklogikai elemet tudtunk megvalósítani. Az egységek tűrhető útkereső algoritmussal rendelkeznek, alakzatokba rendezhetők, működik a gazdasági rendszer, nyersanyagot gyűjthetünk, dolgozókat és katonákat gyárthatunk, épületeket építhetünk. Ehhez a funkcionális sokszínűséghez hozzájárult, hogy a fejlesztés során nem vesztünk el a részletekben. Ennek egyik sarokköve, hogy a játékhoz 2D-s grafikát választottunk, és megúsztuk a sok szívást, ami egy 3D-os grafikai világ felépítésénél jelentkezett volna (terep megjelenítése, részletességi szintek, fények, árnyékok, 3D-s modellek játékba illesztése). Mivel erőforrásaink egy GP esetében (erősen) behatároltak, fel kellett mérnünk mibe fektetjük az energiánkat. Törekedtünk, hogy a játékmenet minél teljesebb, játszhatóbb legyen, a játékos minél több időt eltölthessen vele, még ha ez itt-ott a látvány rovására ment. Ha belemegyünk apró részletek boncolgatásába, akkor a lényegi játékelemekre nem jut idő, energia, lelkesedés. Példának okán a Designed-ban szerintem csúnya a lövedékek mozgása, nem igazán élethű. Meg szerettem volna valósítani, hogy a lövedék a tankot az ágyúcsöve végénél torkolattűz kíséretében hagyja el. Ehhez szükség lett volna torkolattűz effektekre (sprite animációként vagy részecskerendszerként), illetve a kilövési pont pozícionálására. Ezzel nem csupán az a probléma, hogy a forgó ágyúcsőnél mindig változik a kilövési pont (valamilyen ellipszis pálya mentén), hanem a különböző lőtornyoknál (pl.: rakétavető, mozsár, lángszóró) is változik a pozíció, sőt a torkolattűz animációja is. Ehhez valamilyen külön kalibráló eszközt kellett volna készítenünk, és minden új egység játékba illesztése plusz munkát rótt volna a vállunkra, ezért nem is került sor a megvalósítására.



Lövedékek csata közben


3. Ami rosszul ment

3.1. A vezető látványtervező (dizájner) hiánya

A csapatban voltak grafikusok, de nem volt vezető dizájner, aki a játék képi világát megálmodta volna. Aki ránéz a játékra annak az innen-onnan összeszedett Starcraft és Age of Empires tereptárgyak mellett feltűnhet, hogy a játék látványvilága nem egységes. Az épületek és a GUI elemek helyenként a világháborút idézik, míg a játék alapvetően modernebb korszakban játszódna, mindenféle full speckós fegyverekkel: légpárnás hajó, rakétavető, repülő vagy láthatatlan tank. A játéktörténetet sem sikerült teljesen összekalapálni a játékkal. Szerettünk volna különálló klánokat speciális egységekkel felszerelni, de ezekre már nem került sor. Jómagam programozóként próbáltam egy világot felépíteni a játékfunkciókra koncentrálva. Például figyelembe vettem, hogy ha változatosabb egységeket és fegyvereket akarunk a játékba tenni, célszerűbb a játékot a modern korban elhelyezni. A dizájnnal kapcsolatos elképzeléseimet egy szöveges dokumentumban foglaltam össze, de ez kevésnek bizonyult, hogy a grafikusok egy összefüggő játékvilágot felépítsenek. Célszerűnek tartom, hogy egy ilyen kaliberű projekt esetében a játék látványvilágának megtervezését inkább egy grafikus, mintsem egy programozó végezze el.


                  
Látványterv                                        Látványterv gyurmával


3.2. A forráskód ad-hoc jelleggel készült

A program forráskódjának megírása mellőzött mindenféle különösebb tervezést. A megjelenő új játékfunkciók iteratív módon kerültek bele a játékba. Egy idő után már minden objektum függött minden mástól. Készültek feleslegesen osztályok. Nem alkalmaztunk következetesen kódolási konvenciókat, sok változót egy vagy két betűvel neveztünk el, és hemzsegtek a globális változók. A kód egy idő után teljesen átláthatatlanná vált. A sok hard-kódolt adat miatt nehézkessé vált a játék tartalmának bővítése: új egységek, tereptárgyak és pályák hozzáadása kódszinten ment végbe.
Másik probléma, hogy a rajzoló ablak inicializálása egy MFC-s objektumon keresztül történt, illetve konténerekből is az MFC-seket használtuk. A kódba "beincludolt" MFC-s header-ek és library-k borzalmasan megnehezítették, hogy a forráskódot átportoljuk Visual Studio 6 alól 2005 alá. A portolásra egyébként azért volt szükség, mert a VS 6, egyszer csak elkezdett "internal compiler error"-kat dobálni, mire a hivatalos válasz a Microsoft oldalán: "Telepítsél VS 2005-öt!". Tanulság, hogy igyekezzünk redukálni a felhasznált lib-ek számát, és tartsuk olyan formában a forráskódot, hogy az könnyen portolható legyen egy újabb fejlesztőkörnyezet alá.

3.3. Nem sikerültek az újraírási és 3D-s portolási kísérletek

A 4-dik demó közzététele után, egy kis szünet következett, mert egy másik projektben vettem részt. A 4-dik demóra annyi bug halmozódott fel a programban, hogy javításuk fontosabb lett volna, mint újabb funkciók megvalósítása. A bugfix-ek gyakran újabb hibákat, mellékhatásokat eredményeztek, emiatt a régi kódot nem tűnt célszerűnek továbbfejleszteni. Próbálkoztunk a játék 3D-s grafikába történő átültetésével, ehhez készültek alacsony poligonszámú modellek az egységekről és a tereptárgyakról. Az eredeti játék kódbázisának nagy részét amúgy sem tudtuk volna felhasználni, hiszen a megjelenítés nem vált el szorosan a játéklogikától. Először az Irrlicht grafikus motorral próbálkoztunk, melynek előnye, hogy sok terhet levesz az ember válláról, ellenben egy-egy hiányzó funkciót körülményesen, gyakran csak a motor újrafordításával lehet a rendszerbe beletenni. Ezt követően kísérletet tettünk, hogy a játékot a NeoAxis játékmotor segítségével készítsük el. A játékmotor nemcsak a 3D-s megjelenítést, hanem sok játéklogikai elemet is készen kínált, emellett szerintem elég nagy a gépigénye. Készült egy aprócska techdemó, melyet követően a csapaton belül arra a megállapításra jutottunk, hogyha igényesen el szeretnénk készíteni a tervezett játékot a szükséges tartalmakkal, akkor egy licenszelt játékmotort használva is több száz programozói és grafikusi munkaórára lenne szükség a befejezéshez. Úgy láttuk erre nincs kapacitásunk, ezért a fejlesztést leállítottuk.


                  
Modell kalibráló program (Irrlicht)         3D-s tech demó (NeoAxis)


4. Összegzés

Utólag jó érzéssel tölt el, amikor visszaolvasom a projekt JF.hu-s oldalán a hozzászólásokat, milyen sokan kipróbálták a játékot és írtak dicsérő, bátorító szavakat. Jól esik visszagondolni az üzenetváltásokra a csapattagokkal, miként véleményeztük egymás munkáját, hogyan adott hozzá mindegyikünk a projekthez valami sajátot. A projekt sikere mindannyiunk sikere volt. A kiemelt projektek közé kerültünk, 2006 novemberében elnyertük a Hónap Garázsprojektje címet.
Az eladás és a játékkészítés megtanulása mellet, egy amatőr játékfejlesztő számára fontos lehet, hogy valamilyen referencia projekttel bizonyítsa rátermettségét. Ekkor a fejlesztő elmondhatja magáról, hogy véghezvitt valami jelentőset. Bárki megkérdezi tőle, hogy milyen játékot fejlesztett, meg tudja mutatni, hogy "Tessék ezt én készítettem, és büszke vagyok rá!", ami maximálisan igaz a Designed-ra is!

5. A projekt adatai

    - fejlesztők száma: 6
    - fejlesztési idő: 2006 - 2009
    - futtatási környezet: MS Windows, DirectX 9.0c
    - fejlesztési hardver: AMD Athlon 1 GHz CPU, 256 MB RAM, 64 MB VGA
    - fejlesztési szoftverek: MS Visual Studio 6, 3D Studio MAX 6, Paint Shop Pro 6
    - felhasznált technológiák: MFC, Direct3D, DirectSound
    - a projekt mérete (kb): 8000 sor forráskód, 160 képfájl, 60 hangfájl


6. Kapcsolódó hivatkozások


A cikk letölthető PDF formátumban is: 316-blacksmithsoft - designed - postmortem.pdf

Értékelés: 9.57

Új hozzászólás
Szidi_Rezegh          2009.12.12 04:10
Kapitány:
Köszi! A csapaton belül mi is sajnáljuk, hogy leállt a fejlesztés. Remélem nem örökre, de hogy mikor indítjuk újra, azt nem tudni.

Carlos:
- Kódolás:
A "hanyag kódírás" tipikusan olyan hiba, amibe rengeteg kezdő programozó beleesik. Később aztán rájön az ember, hogy a kezdeti kód megíráshoz képest a karbantartása (bővítés, hibajavítás, újrafelhasználás) sokkal több időt vesz igénybe, és az utóbbit segíti nagyban az említett kódolási "etikett".
- SCRUM:
Olvastam a cikkedet, nálunk az egyetemen tanítják a SCRUM-ot. A következő projektünknél elképzelhető, hogy mi is alkalmazzuk a módszert.

Szívesen fogadok mindenféle hozzászólást a cikkel kapcsolatban, mi az ami tetszett, mi az ami kevésbé, esetleg nem volt világos.
Carlos          2009.12.11 17:13
Jó a cikk, gratulálok!

Nekem leginkább az tetszett, hogy rámutatsz a terv- és az egységes, közösen elfogadott kódolási etikett (elnevezési konvenciók, magyarázatok használata, de akár a kód egységes formázása) hiányából eredő gondokra.
Anno írtam egy cikket a SCRUM nevezetű agilis módszertanról: szerintem ebben az esetben segített volna idejekorán felmérni, hogy mi az, ami reálisan megvalósítható az adott csapattal / eszközökkel, illetve hamarabb előjöttek volna a problémák.
Kapitany          2009.12.09 22:44
Nagy kár, hogy félbemaradt ez a fejlesztés! Egyébként a cikk tetszett, érdekes infókat osztottál meg velünk.
Szidi_Rezegh          2009.12.09 10:55
Thrall:
Már jó ideje nem folyik aktív fejlesztés az említettek miatt. Örülök, hogy tetszik a cikk.
A Designed a design-on csúszot ez jó beszólás, és hát igaz is többek között.
A játék címe onnan jött, hogy a Warzone2100-ban "design"-nak hívták, amikor törzset toronnyal összeillesztve új egységtípust hoztál létre. Ez az alapötlete a mi játékunknak is.

Archenemy:
Kösz! (Igaz a BBCodes-zal megizadtam, mire ilyen lett. )
robar          2009.12.09 10:33
Nagyon jó lett a cikk, grat Szidi! Meghatározó élmény volt a csapatban dolgozni.
Archenemy          2009.12.09 10:23
Huh, ez igen ez a cikk! Diagrammok, képek, rendesen szépen strukturálva.... Wow :p Nagyon profi.
Thrall          2009.12.09 10:08
Leállítottátok? Nemá!
Én innen értesültem erről a sajnálatos eseményről, de sebaj, nekem nagyon tetszik a cikk, és nagyon jó hogy leírtad ezeket a tanulságokat.

Nagyon ironikusnak találtam, hogy egy Designed című játék pont a Design-on csúszik el...
Tényleg, amúgy miért is Designed?