2011. október 30., vasárnap

Fejlődünk-fejlődünk :)

Sikeresen túl vagyok egy átjátszott és edzett hétvégén, de azért vasárnap este kódoltam tovább. :)
Az eredmény:

- Végre nem kell csapkodni a lövés gombot, hogy lőjjön, hanem folyamatosan nyomva tartva is lő. Egyidejűleg bekerült egy változó, ami BWhenCanShoot-nak van elnevezve. Ő adja meg, hogy hány másodpercenként tud lőni az adott űrhajó. Ez azért is jó, mert különböző fegyvereknél vagy különböző weapon levelnél más és más időt tudok megadni. Egy rakétát értelemszerűen nem lehet majd floodolni, de egy chaingun pöröghet rendesen.

- A háttérkezelés és az űr is egyre pofásabb. Most már száguldoznak a csillagok, miközben gördül a háttér. Igy még valósághűbb a mozgás. Particle effektként pedig csináltam egy kékeslilás kvazárt, ami szívja az FPS-t rendesen, de majd még ütöm-vágom, hogy jobb legyen. A lényeg, hogy tudok már robbanásokat, fényeket és mindenféle effektet csinálni a ParticleSystem-ből és nem muszáj sprite alapúakat használnom.

- A GUI is fejlődik, lassan kialakul a végleges kép a fejemben, meg a kódban is. :)

- Debug ablakban már látszik az, hogy mennyi memóriát zabál (szó szerint) a program. Most épp 76.3 mega indításnál és utána stabilizálódik 62-63 körül, attól függően mennyi sprite van a képernyőn. Még egy CPU mérést berakok, de a feladatkezelő azt mutatja, hogy 48-52% (lol). Ezeket azért rendesen lejjebb kéne tornázni, mert még olyan komoly történés nincs is a képernyőn.
Egy kis analízist fogok csinálni, ami a program futása végén egy txt fájlba kimenti azt, hogy milyen gépen milyen erőforrás igénylés volt. Egyik barátomnál pl 210 FPS alá nem is esik le a játék a legdurvább meteorzáporban sem, nálam meg akkor 75... Na erről egy kis statisztikát majd összedobok 4-5 gép tesztelése után.

- Grafika: ez ugyan nem az én érdemem, de Zoli elég gyorsan halad, ahogy eddig is. Már csinált egy egész jó űrhajót, amit még kicsit csinosítgatni, esetleg texturázni kell és teljesen jó lesz.

Most hirtelen ennyi sikerült. A jövő héten teljes edzés stop van és nagyüzemű fejlesztés várható! Lehet jövő héten egy egész pályademót felrakok ide. Ja meg képeket... :)

2011. október 28., péntek

Jelenlegi állapot + hétvégi meló

Múlt héten megmutattam a barátaimnak az első techdemót, amit én stílusosan "time techdemo"-nak hívok, ráadásul zenére lett szinkronizálva. Név szerint a Two Steps From Hell - Dragon Rider c. számára. :)

A program már tud hátteret kezelni, vannak különböző sprite osztályok, van hang és zene, lehet lőni, van robbanás, stb.

Természetesen ez így elsőre (de sokadjára nézve is) egy N+1. shooter, ráadásul lopott grafikákkal. Ilyet szinte mindenki össze tud rakni, aki kicsit ért a programozáshoz. No de innen kezdődik az igazán komoly meló, hiszen egyedivé kell(ene) varázsolni a programot. Ha nem is új stílust kéne itt teremteni, de mindenféleképpen olyan játéktechnikai dolgokkal kell telerakni, ami miatt az átlag ember nem 10 percig fog vele játszadozni, hanem esetleg végig is akarja vinni.

Rengeteg témába vágó cikket és fejlesztési naplót olvasok. Youtube-os gameplay videót nézek, hogy ötleteket merítsek, hiszen én nem játékdesigner vagyok, hanem programozó. Ha látok valamit, ami tetszetős és úgy érzem meg tudom valósítani, akkor bekerül a ToDo listámba és megpróbálom belehegeszteni a programba.

A történetírást nem eröltetem, és semmi olyat sem, ami elvonná a figyelmem a fejlesztéstől. Az előző programban megtörtént, hogy úgy telt el egy fejlesztésre szánt szombat délutánom, hogy csak hangokat kerestem, és mire feleszméltem, már este volt...

A most hétvégére tervezett fejlesztés:
-optimalizálás (háttérkezelés, spritekezelés)
- particle system, egyéb effektek gyártása és osztályba rendezése

2011. október 26., szerda

Az előzmények és néhány jó tanács

A játékot öt hete kezdtem el, kizárólag tanulási és tanítási célzattal, aztán két hétig hozzá sem nyúltam. Három hete viszont úgy döntöttem, hogy ebből többet is ki lehetne hozni. :)

Menjünk vissza még messzebb.

Ezelőtt, 2011 elején egy Golden Axe  -hoz hasonló beat 'em up játékot kezdtünk el Hooch barátommal csinálni, és három hónapnyi kőkemény kódolás után Hooch sajnos beadta a kulcsot, mivel sok más - jelenleg - fontosabb dolog van az életében, mint a hobbifejlesztés. Névlegesen: munka, egyetem. Én ott álltam több ezer megírt sorral a hátunk mögött és rá kellett döbbennem, hogy életem első játékával talán egy kicsit nagy fába vágtam a fejszémet. Eddig csak és kizárólag irodai alkalmazásokat és adatbázis kezelőket fejlesztettem, és hirtelen nagy ugrás volt ez, főleg miután egyedül maradtam.

Tanulságként elég annyi, hogy attól még hogy ki tudsz tenni pár sprite-ot vagy modellt és esetleg tudod őket mozgatni, meg van némi animáció és háttérkezelés, az még NEM egy játék. Az elején még gyorsan ment minden, mivel egy elég jó kis motort használtunk a fejlesztéshez. Ez a motor az Andorra2D. A fejlesztői környezet pedig a Delphi, amit már mindenki ezerszer leírt és eltemetett, de én szeretem a kihívásokat, valamint addig nem tartom érdemesnek tanulni a C++ -t, amíg ebben nem vagyok képes egy normális játékot összerakni.

Másik nagy tanulság az az, hogy jó tervezés nélkül SEM lehet fejleszteni. Rengeteg időt basztunk el azzal, hogy egymás kódjait írogattuk át, meg optimalizáltunk mindent. Napok teltek el úgy, hogy játékos szempontból semmit nem fejlődött a program, de a kódban hetvenszer átírtunk mindent, még az osztályok hierarchiáját is.

Amivel még sok idő elment az a sprite-ok vagdosása, illesztgetése, stb. Ha nem vagy grafikus, és nincs meg hozzá a megfelelő szoftvered, rengeteget szívhatsz és a programozásra szánt idődet pazarlod csak el.

A játékot, ami "Me Smash You" néven futott (Warcraft-ból ismerős lehet, ahogy az ogre bömböli ezt), tehát jégre tettük. Nagy álmom, hogy egyszer befejezem vagy befejezzük, de természetesen nulláról újraírva. Ami jó volt és tanulságos az az, hogy hogyan nem szabad belekezdeni egy játék fejlesztésbe. Még ha egyszerűnek is tűnik a program, papiron levezetve már lehet még sem lesz annyira egyszerű.

És álljon itt néhány jó tanács minden kezdő játékfejlesztőnek:
- Ne a történetírással, meg MMO részletességű fejlődési rendszerben gondolkozz, hanem maradj az alapoknál, aztán azt bármikor tovább tudod fejleszteni. 
- Tervezd meg a játékot lépésről-lépésre. Ird le akár szövegesen is, hogy miket szeretnél látni a programban. Mi mit tudjon csinálni, ki milyen interakciókra legyen képes.
- Alkoss meg egy osztályhierarchiát, és próbáld mindig keresni az objektumot közös pontjait.
- Ne törődj a hanggal, zenével, grafikával, amíg egy működőképes prototipusod nincs a játékról. Rengeteg időt elpazarolhatsz ezekkel.
- Válassz olyan fejlesztőkörnyezetet, amiben otthon vagy, vagy ha pedig most tanulod, akkor legyenek a játékra vonatkozó terveid szerények. Nem a legújabb MMO-t kell megcsinálnod, csinálj csak meg egy hasonló shooter-t, mint amit mi próbálunk. Rájössz, hogy nem is olyan egyszerű... :)

Elkészült a fejlesztési blog

Üdvözlök mindenkit a blogon (már ha lesz bárki is, aki olvassa, mert nem szánom publikusnak - még)

A mi kis shoot 'em up -unk fejlesztését követhetitek itt nyomon. Ha van olyan, aki idetéved, annak remélem segítséged tud nyújtani ez a napló, hogy elkerüljön olyan hibákat a saját fejlesztései folyamán, amikbe mi esetleg beleesünk. :)

Próbálok minden egyes nap írni egy-egy újabb bejegyzést, amikor jut idő a fejlesztésre.