2011. december 30., péntek

Lassan, de biztosan.

Kezdek kifogyni a frappáns címekből, ezért ritkultak meg a bejegyzések ... :)

Nem, egyébként nem, csak itt vannak/voltak az ünnepek, meg pihenés, edzés és csendes kódolás van.

Időközben megcsináltam az EnemyController Editort is. Végre lehet "triggerelni", hogy mikor, honnan, milyen és mennyi ellenséges űrhajó jöjjön. A szerkesztőben lehet nekik formációt megadni, hogy mondjuk V alakban jöjjenek, vagy fordított V, esetleg \ vagy / alakban, stb.
Ezt pikk-pakk össze lehet kattingatni, aztán a játékban egyből lehet tesztelni.
Végre nem ész nélkül jönnek az űrhajók. :)

Most amin dolgozgatok, az az hogy a Menu Editorban a gomboknak lehessen szöveget megadni. A szöveget ezek után karakterekre bontja és az előre megadott képfájlból pedig kivagdossa hozzá a képeket.
Ezt még anno az MSU -ban már megcsináltam nagyon szépen, szóval itt csak át kellett emelnem a kódot és kicsit átírnom.
Csak most egy kis falba ütköztem, mert az Editorban is másként kell viselkednie ennek az egész szövegkiírásnak, meg a játékban is...
Lövök pár zombit, és közben rájövök, hogyan is kéne megoldani. :)

Addig is BÚÉK!

2011. december 23., péntek

Publikus ParticleEditor v1.0

Itt a LINK , tessék tölteni. :)

Nem írok hosszabb használati útmutatót, mert elég egyértelmű.

A bin könyvtárban vannak mellékelve textúrák, vagy pedig használjatok a google-n talált képeket.
Keressetek rá, hogy "particle texture".

Töltsetek be egy képet, állítsátok be a paramétereket és lehet kísérletezni.

Ha valakinek kérdése van mégis, az írjon nyugodtan. (ebből is látom legalább, hogy valaki leszedte, az én Hooch barátomon kívül... :D )

A "játékot" is feltettem ultrawebre, az abban található .apf fájlokat be tudjátok olvasni és felül is tudjátok írni, így egyből ki lehet próbálni a játékban, működés közben.

Starship Prototype v0.3

2011. december 18., vasárnap

Nagyüzem

Megvolt a hétvégi nagyüzem. :) Elég sok mindenhez hozzányúltam, az editorokhoz, a játékmotorhoz, mindenhez.

Pár sajnálatos dologgal is szembesülnöm kellett, mégpedig, hogy nem tudok hajtóműeffektet rakni az enemy űrhajókra, mert ugyanaz az akadás lesz, mint amikor lövedékparticle-el kísérletezgettem. Igy tehát csak akkor alkalmazok particlesystemeket, ha nagyon muszáj. Értelemszerű, hogy a robbanások, az orbok, a player hajtóműve, az mind-mind megmarad ilyennek. Ez az alap. :) De úgy néz ki így annak is lőttek, hogy kicsit valósághűbb sérüléseket varázsoljak az ellenséges űrhajókra. Pedig jól nézett volna ki, ha minden becsapódott lövedék után füstölgő, lángoló effektekkel lett volna tele egy-egy nagyobb hajó...

No de nem baj, a grafikai csillivillit akkor másképpen kell tovább fokozni. Lesz attól még itt darabokra robbanás, de azt csak sprite alapon, mivel az több száz sprite egyidejű legyártásánál sem okoz akadást.
Valamint kis "kamu-fizikával" fogom ellátni a hajókat, meg a darabokra robbant részeket. Egymásnak csapódnak, pörögnek-forognak, ilyesmi. :)

A Menu Editorban pár hibát javítottam, meg a külsejét teljesen átalakítottam, hogy még felhasználóbarátabb legyen. Próbálok paneleket is csinálni, mint ha Delphiben egy GroupBox például. Ez azért jó, mert menüben rápakolom a gombokat egy ilyen panelre és az egészet együtt cipelhetem bárhova, nem kell egyesével, hogy panel, gomb1, gomb2, stb. stb... Ezt ha nem is most fogom tudni kihasználni, de lehet, hogy az Options rész olyan mindenre kiterjedő lesz, hogy nem árt az editorban való kezelésnek kicsit könnyebbnek lennie, és erre a Panel lesz (lenne) a legjobb megoldás.

A Particle Editort is teljesen átszabtam. Megígértem a jf.hu -n is, meg itt is, hogy lesz egy publikus verzió, ahol mindenki szabadon csinálhat robbanásokat, meg a játékban találhatóakat is átalakíthatja. Csak hogy ehhez "hülye-biztossá" kell tenni, mert nincs benne szinte még semmi védelem sem.

Legnagyobb fejlemény, és egyben leglátványosabb is viszont Hooch barátomnak köszönhető, aki írt egy nagyon jó kis lépésszámolást az orboknak. Most már nem bután mennek, hogy elmegy a játékos X poziciójához, aztán elmegy az Y-hoz ilyen hülye kockamozgással, hanem közvetlen belerepül, szépen, sugárban a playerbe. :) Még kicsit csinosítani kell, de már most ezerszer jobb, mint az eddigi volt.

Ez egyben a hőkövető rakéta alapja is lett, valamint kamikaze enemy-k célbarepülésének számításához is ezt fogom használni. 

Beraktam fegyverváltást is a playernek ettől felbuzdulva és már sréhen is lövöldözhetünk. :)

Csupa jó hír a hétvégére, ezt szeretem. :)

2011. december 16., péntek

Első publikus verzió

Hát eljött ez a nap is! :)
Feltöltöttem az első, "nagyközönség" számára is publikus verziót.


Majd regisztrálok most már egy saját tárhelyet is ultraweben, vagy valahol, de annyira izgatott vagyok, hogy most nem érdekel ez igazán. :D

Rövid leírás:
- A "menüben" a gombok most még felirat nélküliek.
Az első gombbal indul a játék, a középső semmit nem csinál, míg a harmadikkal kilépsz.

- A játékban lehet egérrel is közlekedni, viszont még elég bugos, ezért billentyűzettel ajánlatosabb.
Irányítás a kurzorral, lövés a szóközzel.

- A ParticleSystem-ben van egy olyan bug jelenleg, hogy a folyamatosan megjelenítendő effekteknél (orb és hajtóműtűz) minél nagyobb FPS-en fut a játék, annál szebben néz ki... Az egyszer megjelenítendő effeknél, ami a robbanás, FPS-függetlenül ugyanúgy néznek ki.

- Másik bug a ParticleSystem-ben, ami sajnos az engine hibája (a készítője szerint is), hogy néha-néha nem jelenik meg az effekt. Ez kínos egy-egy nagyobb robbanásnál, de 1:100 az arány, szóval nem vészes.

- A játékban a lelőtt űrhajókból orbok "esnek ki", amik belerepülnek a játékosba. Az orbokért XP-t kapunk, amitől fejlődik az űrhajó lövése. Nagyobbat sebez és gyorsabb lesz.

- Ha kiírna DX-es dll hibát, akkor azt a fájlt töltsétek le netről és tegyétek a Windows System könyvtárába és máris működni fog a játék. :)

- Boccs, hogy jelenleg kicsomagolva több, mint 10 megát foglal a játék, de a képeket nem tudtam jól összetömöríteni egy fájlba. Ez természetesen változni fog.


Minden véleményt szívesen várok, de egyet most előre mondok:
MÉG SEMMI SEM VÉGLEGES! Szinte minden változni fog.

Jó szórakozást. :)

2011. december 15., csütörtök

Heggesztés

Miután tegnap sikerült 6 órát droidpózban eltöltenem, lettek bizonyos fejlemények. Alig vártam ugye, hogy hazaérjek, rettentő lelkesedéssel nekiálltam éééés... Sikerült kijavítani a torzulós hibát, jeee!
Ja, hogy új jelentkezett? Király.

Ez az új hiba viszont már TÉNYLEG motorbeli.
Az Andorra készítője is írja, hogy néha-néha előfordulhat olyan bug, hogy nem jelenik meg a ParticleSystem. Hát ez nagyon f*szán meg is mutatkozik, amikor 0.2 másodpercenként akarok a hajóm két oldalán egy-egy lövedéket legyártani. Nagyjából 10 lövésből 9 megjelenik.
Nem, nem esek kétségbe, annál azért már jobb vagyok! (egyébként nem, csak magamat próbálom bíztatni)
Visszahozom a régi, sprite alapú lövést és hozzárakok egy particlesystemet, tehát megy a lövedéksprite, de maga után húzza az effektet. Ám ez sem jó!

Történik ugyanis az, hogy nyomom a lövést, mint az ökör. Ekkor lövésenként két ParticleSystem-et kell legyártania a programnak, ami a két lövedéksprite effektje. Viszont ha én 0,2 másodpercenként ezt legyártatom, valamint a torkolattüzet is legyártom, az összesen, másodpercenként 20 ParticleSystem példányosítás, és ehhez nem raktam hozzá még azokat az effekteket, ami közben jelenik meg, pl robbanások, találatok, stb. stb.
És a legrosszabb az egészben az, hogy hiába fut 200 FPS-en még most is a játék, ha lövésenként megreccen látványosan az űrhajóm és vele együtt az egész játék. 

De a spórolás végett biztosan a sprite alapú lövedéknél maradok, viszont kis trükkhöz kell folyamodnom, hogy kicselezzem a zendzsint.

A trükk az, hogy a játék indításánál az összes effektet legyártom egyetlen egyszer. Ezután pedig mindenki hozzáférhet az én saját ParticleSystem ojjektumomhoz (ez magába foglalja az összes AdParticleSystem-et).
Ezután csak azt teszem majd, hogy lövésenként meghívom az Emit eljárást, magyarul az adott (rövidítsünk) AdPS megjelenik az adott helyen.
A rajzolást és mozgatást pedig az én saját osztályom végzi minden ciklusforduláskor.

Ez így jól hangzik, de remélem meg is lehet valósítani, különben lőttek az én effektekkel teli csillagháborús terveimnek és mehetek vissza a spriteokhoz... 

Pedig olyan szépek a kis drágáim, brühühühü...

Na majd este kiderül! Szurkoljatok!

2011. december 13., kedd

Egyet vissza, kettőt előre

Jajj kedveskéim... Tele a tököm néha az Andorrával. :D
Szeretem, imádom, meg gyors és meglepően jó, de hogy a készítője, Herr Andreas Stöcke miután megírta a motort, nem volt képes normális tutorialokat csinálni, az botrány.
Amiket csinált, azok között is van olyan, amit nem lehet érteni, esetemben a ParticleSystemet.
Mert hát a PS-t bemutató tutorialban TOTÁLISAN másképp csinálja a dolgokat, mint abban a kis demóban, amiben szintén használ részecskerendszert. Miért? Ne kérdezzétek. Van három példaprogram, amiben szerepel részecskerendszer, és mind a háromban máshogy. Máshol számoltatja a mozgását, máshogy rajzoltatja ki, stb.
Most vagy én vagyok a gyökér, és nem vagyok képes felfogni, hogy ezt csak azért csinálta, hogy mutassa, milyen univerzális a rendszer, vagy pedig akkora művész, hogy ő úgy gondolja, absztrakt mód használja a dolgokat... :)

A legszörnyűbb az egészben, hogy természetesen az én esetemben egyik lehetőség sem volt jó, és erre ráment nem egy napom. Mert a hiba nem a legelejétől jelentkezik, neeeem! Rohadt mód hagyja, hogy a kóder elhiggye, ő jól csinálja a dolgokat. Aztán ahogy egyszerre 4-6-10 effektet kell megjeleníteni, elkezd torzulni az egész, és ez minden egyes újabb effekttel egyre rosszabb. Esti órákban én már azt hittem rosszul látok, vagy torzít a monitor, mert túlságosan bele vagyok süppedve a székbe... Nézem, összemennek az effektek, meg ha sok ütközik egyszerre, akkor 200-as FPS-ről leesik 40-re, vagy megáll az egész, aztán eltelik fél másodperc és újra 200 körüli FPS-en száguld az egész.

Nem szoktam sokat káromkodni, de tegnap este már majd levertem a vakolatot, mert szörnyű érzés volt, mikor rádöbbentem, hogy az egész eddig megírt rendszert kukázhatom és ma újra kell írnom... Pedig olyan szépen működött...

Már mindent átírtam erre. Mindent.
Kiszedtem a sprite alapú lövést, robbanásokat, orbot és kicseréltem részecske alapúra. Kb. elkezdett úgy kinézni a program, ahogy én azt elképzeltem pár hónapja, csak nem tudtam megvalósítani, ezért volt minden sprite alapú. Aztán ahogy belemélyedtem a ParticleSystem-be, jött a gondolat, hogy mindent lecserélek.
Persze a régi, sprite alapú dolgokat nem töröltem ki véglegesen, mert egy új osztályt hoztam nekik létre UOldShooterGFX néven. Lesz egy ilyen funkció majd a beállításokban, hogy ha valakinek gyengébb gépe van, akkor aktiválni lehet a sprite alapú grafikát a részecske-alapú helyett.

Egyébként lett torkolat- és hajtóműtűz, rengeteg robbanás, füst... Ezeket végülis nem kell lecserélnem, csak a rendszert kell újraírnom, ami kezeli őket. És az Editort sem kell újraírnom, hála a Magasságosnak... :D

Tegnap este is fél 11-kor álltam fel a gép elől, lementem sütni, zuhanyozni, és már eközben kezdtem összerakni fejben, hogy mitől is nem működik jól a dolog. Először arra gondoltam, hogy mégsem olyan jó ez az Andorra. Lehet nem tud 10 körüli effektet kezelni, vagy valami... Hát persze, egyből az engine-t kell hibáztatni, nem pedig magunkat... Persze.

Aztán ahogy lefeküdtem aludni, jóéjt kívántam kedves kis feleségemnek, behunytam a szemem és ... 5 perc alatt összeraktam fejben, hogy mit kúrtam rontottam el. Alig bírtam magammal, hogy éjfél környékén ne rohanjak vissza a géphez és ne írjam meg az egészet egy szuszra. Aztán a kimerültség győzött. :)

Most itt ülök a melóhelyen és pangási indokkal blogolok egyet. Alig várom, hogy hazaérjek...
Még jelentkezek. ;)

2011. december 8., csütörtök

Részecskerendszer

Sikerült végre beüzemelni a nagyon tudományos nevű "részecskerendszert", vagyis a ParticleSystem-et.
Egyszerűbb, ha effekteknek hívom, így még a nálam tudatlanabbak is megértik. :)

Mivel oooolyannyira fantasztikus ez az Andorra2D, hogy majdnem az összes példaprogramja, editorja nem indul, vagy hibás, ezért mit tesz egy öntudatos kóder? Hát persze, hogy ír egy sajátot!

Na mivel én nem vagyok egy pro kóder, ezért először szentségeltem, aztán pánikba estem, és csak aztán gondoltam egyet, hogy hát írok egy sajátot. Azért szerencsére elég könnyen hadra lehetett fogni az Andorrás alapokat, utána nekem már csak meg kell adnom képfájlt, méreteket, színeket, stb. Miután kész egy tetszetős effekt, azt kimentem fájlba és a játékba pedig beolvasom.

Igy lett lecserélve az eddigi kezdetleges, sprite alapú robbanás egy részecske alapúra. Jól is néz ki, ráadásul pikk-pakk módosítom, nem kell spriteokkal vacakolni.

 Igy már tudok csinálni füstölgő hajóroncsokat, mindenféle lézer effekteket, rakéta füstöt, stb. stb.

Kb 2 órája próbálok összehozni egy épkézláb, akadásmentes ingame videót, de valamiért borzalmasan ugrál a framerate...

Na majd még próbálkozom, de most egy alap AI-n dolgozom, bár már egymást kikerülgetik a hajók most is.
Ha már nem lesznek szép ürhajók, akkor legalább szép effektjeim legyenek, nem? :D

2011. december 4., vasárnap

Vissza a gyökerekhez.

Átrágtam magam a dolgon és döntés született:

Magam fogom a grafikát megcsinálni, és olyan lesz, amilyen lesz. :)
A szerkesztőprogramokkal sem fogok ennél a játéknál tovább foglalkozni. Megírok egy 4-5 pályás kis játékot, mindenféle bonyolultabb sztori nélkül. Igazi, régi időket idéző, játéktermi space shooter lesz, egy kicsit modernebb grafikával.
A döntésem azért esett erre, mert ez a "tanulóprogram" lassan túlnő azon, aminek szántam.
Már hat (6) hete megirtam egy olyan változatot, ami egy komplett pálya 4 féle ellenséggel, aszteroidamezővel és a végén főellenséggel. Akkor még mindenféle editor nélkül, pure spagettiben. :)
És eközben azt veszem észre, hogy párhuzamosan növekszik egy szörnyeteg, amivel már többet foglalkozom, mint magával a játékkal. Egy elég komplex rendszer kezd kialakulni, amit egyáltalán nem bánok, mert még 2-3 játékot szeretnék Delphiben és Andorra2D-ben megírni. Szeretnék max 2 hónapokat foglalkozni egy-egy játékkal, és utána továbblépni.

Tehát a jövő héten lefixálom az engine-t és az eredeti "minimálproject" befejezésével fogok foglalkozni.

Már azon vettem észre magam, hogy űrhajók darabokra robbanásával foglalkozom, meg hogy szerkesztőben lehessen megadni, hogy hol milyen fegyvere legyen az űrhajóknak, azok milyen lövedékeket lőjjenek, stb. stb. Szóval nagyon elkanyarodtam az eredeti tervektől és már egy sokkal nagyobb és jobb játékot akartam az egészből csinálni. Lehet később lesz egy Starship Prototype 2 is, ahol ezeket megvalósítom, de 2 héten belül megpróbálom befejezni ezt a kis játékocskát. Remélem az időm is fogja engedni.

Addig is: happy coding! :)

2011. november 30., szerda

A kezdő hibák

Mindig papolok arról, hogy mik a tipikus kezdő hibák, amikbe beleestem az előző játékom készítésénél. Bele is bukott a fejlesztésbe a kis csapatunk. Gondoltam, na, most majd az összes ilyen hibát elkerülöm...
Jelentem: ez nincs így.

Meg kéne számolnom hányszor írtam, hogy a TERVEZÉS nagyon fontos. A lehető legtöbb dolgot meg is tervezem papiron, vagy google docsban, esetleg leírom txt-be. De vannak napok, amikor csak leülök a gép elé, hogy húdejó, ma kódolok vagy 6 órát. Terveket lesz*rom, vagy pedig épp nincs tovább vezetve, hogy mit kéne csinálni, és akkor megnyitom a programot éééés.... szembesülök a salátával, ahova most be kéne építenem az EnemyControllert. A saláta látványától elmegy a kedvem a kódolástól, és ha nincs ami vezet (terv, doksi), akkor hajlamos vagyok elvonulni játszani. Ez történt hétfőn is, kedden is...

De tegnap este már seggberúgtam magam és azt mondtam: ELÉG!
Levonultam a konyhába, fogtam egy A4-es oldalt és leírtam mindent, amit tud a program és az editor. Átgondoltam mihez mi kell még, ahhoz hogy teljesen kész legyek a motorral és a szerkesztő programokkal. Átnézve a rendszereket megállapítottam, hogy nincs is már sok, de persze ez attól is függ, hogy mennyire akarom bonyolulttá, vagy összetetté tenni a játékot.

Tehát ha végzek a dolgommal, akkor... Akkor várnom kell, hogy egy grafikus megjelenjen és elhalmozzon gfx-el... Amire nincs sok esély, ezért elkezdtem Photoshop-ot tanulni... Viszont így, ha én csinálom a grafikákat, akkor semmi értelme, hogy túlbonyolítsam a későbbi pályaszerkesztőt, mert úgy sem tudok látványos dolgokat összehozni, a téglalap és háromszög űrhajókkal meg elég vicces lenne a dolog.

Belegondoltam abba is, hogy lassan a hang és zene is sorra kerül, és nem akarok megtanulni semmilyen zeneszerszámon... :D Szóval ide biztos összelopkodom a dolgokat.

Gondoltam még arra is hogy kiteszek egy Donate gombot, és a beérkező 4 forint 20 fillérből bérelek egy grafikust és/vagy zeneszerzőt, aki alám tesz valamit... Lehet a végén ez lesz, bár ez az egész fejlesztés a tanulásról szól részemről, és ha ehhez az kell, hogy megtanuljam egy alap szinten a Photoshopot, hát akkor az lesz. :)

Egyébként az összeírás alapján ezeken dolgozom most:
- MenuEditor kiegészítés: MapList, ami alapján a menüből nyíló MapSelector-ban ki lehet választani, hogy melyik pályán szeretnénk játszani. Ez most szabadon választható rész lesz, de később természetesen egyik pálya nyitja a másikat.

- EnemyEditor: Fegyver (Bullet) hozzáadása, valamint ennek a szerkesztője. Fegyverek pozicionálása a sprite-on, ergo: honnan lőjje ki a lövedéket. És az enemy méretezést is beépítem.

- BulletEditor: Lövedéklista, amit az EnemyEditor használ. Lövedék paraméterei (textúra vagy effekt, sebesség, sebzés, "firetime", lövedék mérete, stb.

Most már nem írok konkrét időt, hogy mikor érkezem érdemi eredménnyel, lehet már holnap. ;)

2011. november 27., vasárnap

Enemy Editor

Megváltozott az egész enemy kezelés, és módosítás.

Most már egy listában tárolom az ellenfeleket. Igy minden pályához külön-külön tudok csinálni listákat. Itt egy mellékelt kép az egészről. Ezen láthatjátok, hogy felül a lista, be van töltve 4 űrhajó. Rákattintok bármelyikre, alul módosíthatom az értékeit.
Ezt a listát később hozzá tudom kapcsolni akármelyik pályához. Most próbaképpen indítás után ezzel a listával dolgozik a játék. Kicsit még küszködöm az ImageList-el, mert külön kezelném az ellenségek listáját és a játék többi képét egy másik listában. Ezt a két listát kéne összefuttatnom, hogy legyen egy nagy képlistám.
Erre ma már nem maradt idő, így holnap fogom megoldani.

Aztán ha ez kész, akkor az egész heti program a Weapon/Bullet editor, ami szintén egy lista lesz, amit hozzá lehet rendelni mondjuk egy EnemyList-hez. Ezután jön az EnemyController újraírása, amihez kell hozzárendelni az EnemyList-et, és ezt az EnemyControllert kapja meg a Map. Lehet, hogy bonyolultnak hangzik elsőre, de egy nagyon jó kis rendszer ez és tök jól elkülönülnek egymástól a dolgok.

A legnehezebb dologgal nem tudom mikor fogok foglalkozni. Ez pedig a MapEditor... Most vagy az lesz, hogy sima űrcsaták lesznek és az EnemyController alapján jönnek majd ilyen-olyan enemik és azoknak hadán kell átverekednünk magunkat, vagy pedig változatosabb pályák lesznek és oda viszont kellenek tereptárgyak, mittomén, ellenséges bázis, felhő, erdő, stb. Ezek mind rombolhatóak legyenek, de haladjanak a háttérrel... Uhh, belegondolni is kemény, és ráadásul erre is Editor kéne... :D

Az biztos, hogy ez is grafikus függvénye, mert minek írjak meg egy ilyen - számomra még - bonyolult dolgot, ha nincs tartalom, amivel megtölthetem. Akkor inkább maradjon szimpla űrcsata és akkor ezt próbálom olyan tartalommal megtölteni, amit kóddal meg tudok oldani. Különböző robbanások, scriptelt események, stb. Szeretnék egy valódi űrcsatát összehozni, ahol ne csak azt érezze a játékos, hogy megy előre és bután csak nyomja a lövést és ennyi. Érezze úgy, hogy egy apró valaki egy hatalmas csatában két faj között, ahol akkora űrhajók rohangálnak, amit megsebezni sem tud, csak manőverezni tud köztük, azok meg lövik közben egymást... Bahh, bár csak már ott tartanék! :)

2011. november 26., szombat

Fejlemények

Kezdésnek egy rossz hírt közlök:
Zoli magánéleti problémák miatt nem tud a játékkal foglalkozni, így grafikus híján elkezdtem újra keresgélni a neten, hátha van valaki, akit érdekel egy jó kis sci-fi shooter.
Találtam is két olyan srácot, akiknek a munkájától az "omg-wtf-lololol" szavakat hihetetlen sokszor egymás után kiabáltam. :D
Felvettem velük a kapcsolatot, szóval már csak valami pozitív visszajelzést várok tőlük.

Hogy jó hírt is mondjak:
A videó közzététele óta elég szépen megnőtt a látogatottságom, szóval elmondhatom, hogy VANNAK olvasók!

A mai és a holnapi meló az alábbi:
- Enemy editor

A menü editorral már kb kész vagyok, több időt nem igazán akarok rászánni, még kiegészítem majd egy "stringeditorral", ahol is szövegeket tudok pakolni a gombokra. De ez is még várhat.

Holnap jelentkezem az Enemy editor bemutatásával! Nem hinném, hogy videó lesz, lehet csak képekben illusztrálom a dolgot. :)

2011. november 24., csütörtök

Videó + hang! (majd megőrültem a végére... :D )

Negyvenedjére felvett, borzalmas hangommal alászinkronolt, akadós videó, a készülő játékomról.
Később ahogy fejlődik a program, mindig jelentkezek egy-egy kisebb videóval, lehetőleg már jobb minőséggel és összeszedettebb szöveggel. :)

2011. november 23., szerda

Videó videó hátán - hamarosan

Ma is szerettem volna egy videót feltölteni a "játékról" editortól a lövöldözésig, de amíg manókám skype-ol szüleivel, addig nem fog menni. Ha lemegy fürdeni, vagy abbahagyja, akkor lehet jövök még ma egy bónusszal, amiben hihhhetetlen kommenteléssel ellátott videót fogok felrakni.

Mivel ma korán szeretnék lefeküdni, ezért lehet holnapra csúszik az egész.

Ha így haladok az Editorral, lehet a játék után kicsit gatyába rántom és ezt is felrakom, mint "game engine". Ha úgy nézzük, pár kattintással lehet csinálni egy akármilyen shootert. Meg azért is jó ez az egész, mert még tervezek 1-2 játékot Andorrában, és csak utána lépnék tovább C++/C# irányba. Kikérek majd sok tanácsot, meg átnézem a "trendeket". Mindegyik mellett szól valami. Én imádom a pure kódot, ezért legszivesebben C++ -t tanulnék, de valahol időpazarlásnak is tartom újra feltalálni a spanyolviaszt vele. Néha motiváltnak érzem magam arra, hogy nulláról írjak mindent, de olyankor belegondolok, hogy itt is milyen jó, hogy egy grafikus engine dolgozik alám, és ha úgy nézzük csak scriptelgetnem kell.
Jójó, jön a válasz, hogy ott is vannak mindenféle engine-ek, de mittomén, vonz az, hogy valamit nulláról írjak. Ilyenkor mondta mindig a régi progtanárom, hogy akkor üljünk le ASM elé és hajrá. :)

Lehet ez a téma is megérne egy blogbejegyzést majd, de inkább a Shooter fejlesztéséről kéne többet írnom, viszont minden nap nem tudom azt leírni, hogy "oké, ma megcsináltam a forgatást a sprite-hoz", meg "király, ma be tudtam olvasni az editorban gyártott menüt a játékban", stb.

Ezért gondoltam azt, hogy kommentelt videókkal fogok jelentkezni időről-időre, ahol bemutatom, hogy is állok a fejlesztésben.

TÁRSADALMI KÖZLEMÉNY!
Még mindig keresnék egy grafikust/designert, aki besegítene Zolinak, mert lassan már ott tartok, hogy nagyüzemben kéne gyártani a cumókat a játékhoz. Egy kis referenciát azért kérnék, mittudomén, ha már dolgozott valamilyen garázsjáték készítésében, vagy hobbi szinten rajzolgat és mutat 5-10 vázlatot, ilyesmi. :)

Na, ha minden jól megy, még jelentkezek egy videóval! Ha nem, akkor majd holnap! ;)

2011. november 21., hétfő

Egy kis prezentáció

Sikerült végre normális videocapture-t csinálnom az Editor "Main Menu Editor" részéről.
Hang nélkül ugyan, de bemutatom, milyen egyszerűen össze lehet dobni a játék alá egy menüt.

Mivel, mint már leírtam párszor, volt egy működőképes, spagettikódos menüm a játék alatt, ami működött. Most, hogy megírtam alá az editort, teljesen át kell írnom a menü kezelését, mert sokkal kevesebből, és spagettimentesen meg lehet már írni a lementett menü használatát. Irok rá egy egérkezelést holnap és ennyi. :) Ja, pláne, hogy saját osztályaimnak még sosem csináltam egérkezelést... OnMouseUp, OnMouseDown, OnMouseMove van a delphi összes komponenséhez, de saját komponensekhez, ráadásul némelyik Andorrás szülővel... Na ez egy újabb kellemes feladvány lesz. :)

Addig is lessétek meg a videót, nem túl hosszú, de legalább annál rosszabb a minőség. :D
Majd lehet bővebben is bemutatom a többi editor részt, hanggal, ha lesz rá igény. ;)

2011. november 20., vasárnap

Elmaradt hétvégi post

Igen, tudom, a hétvégére ígértem egy összefoglalót az editorról...
Sajnos az még várat magára, mert igaz, hogy folyamatosan fejlődik, de azért nem olyan ütemben, ahogy kellene.
Tegnap is leültem, hogy megoldjam a sprite-ok forgatását editorban, és azon kaptam magam, hogy eltelt 2 óra és nem sikerült megcsinálni... A Menü editorba kell ez, mert nagyon jó és kényelmes, hogy komplett menüt össze tudok dobni pár kattintással és egérrel tudom berendezni az egészet, nem kell kódban.

A működést felveszem ma valami programmal és feltöltöm youtube-ra. Tessék kivárni, mert jól néz ki. :)

Grafikusom, Zoli is tevékenykedik, be is rakok egy űrhajó-conceptet tőle, bár ez még csak a tervezés eleje.

2011. november 17., csütörtök

Hogyan is néz ki az Enemy és a hozzá tartozó editor

A szokásos 5 óra alvás után megint úgy érzem magam, mint a mosott sz*r. De nem a programozás miatt alszom ennyit, hanem mert van még más dolgom is... Most lefekszem fél 10-kor, holnap meg nyomom este 11-ig, vagy éjfélig, óje!


A piros részt csináltam ma, mert mint előző bejegyzésben kifejtettem, hát PERSZE, hogy a végétől kezdtem az Editor írását, és előbb volt meg a map editor meg az enemy controller szerkesztője, minthogy az enemit szerkeszthettem volna. Az enemy-nek meg hát kell lövedék is, meg az a player-nek is kell és hát ezt se kódból csináljam már, mint ahogy most van, hanem valami jó kis listából húzza be magának.
Ez a terv nem fedi a valóságot egyébként, mert a Bullet-nek van egy listája (BulletList), amiben az összes lövedék helyet foglal, valamint az enemy-nek is lesz holnap már egy teljes listája és nem külön kis fájlokban lesznek, mint most.

Kezdem kinőni ezeket a kezdő hibákat, és most már belém égnek az alapok.
Kezd egyre mélyebbre fúródni bennem egy nagyon fontos mondat: TERVEZZ, NYOMORULT!!!
Ez főleg az elmúlt napokban jött elő sokszor, az editor írásánál. Rengeteg időt meg lehet úgy spórolni, ha a fentebb látható terveket csinál az ember, aztán fogja magát, leül és pikk-pakk lekódolja a dolgot, mert csak tervet kell követni, és nem akkor kell kitalálni...

Holnap hosszabb bejegyzéssel jelentkezem, összefoglalva az Editort, és a hétvégi melót ecsetelendő. :)

2011. november 15., kedd

Editor ezerrel

Ezen a héten az editorral ügyködök, amennyit csak lehet, mert tudom hogy a belé fektetett idő többszörösen is megtérül. Tegnap az egész Enemy osztályomat kibeleztem, lecsupaszítottam. Kódból generáltam 4 féle ellenséget, plusz főellenséget, de hát ez igy nagyon trágyán nézett ki. Ideje volt, hogy editorból csinálhassak enemy-ket. Az enemy-t elmentem fájlba, és onnan olvashatom be őket bármikor, bármikor szerkeszthetem, stb.
Ez igy ezerszer jobb, mint kódban keresgetni, hogy jajj, hol is állítom a sebességét, meg hogy milyen animációja legyen, ha éppen kidurran a kereke... Beírok mindent, elmentem, játékban tesztelNÉM, de mivel átírtam az enemy-ket, és azokat meg az EnemyController babusgatja, aminek az editorját most át kell írnom, hogy befogadhassa fájlból az új enemy-ket ... zzzz... :) Miért fordítva kezdek el mindent? Nem hogy előbb csináltam volna az enemy editort, aztán a controllert, neeeem... Bár ez sem lesz nehéz, de ez a holnapi nap feladata.

Kicsit még az editorokról:
Ha hasonlóan kezdő játékfejlesztők vagytok, mint jómagam, akkor ti is gondoltatok már rá, hogy mennyivel egyszerűbb lenne editorból csinálni mindent. Vagy ha láttatok már profikat, hogy milyen brutális pályaszerkesztőjük, texture szerkesztőjük, modellezőjük, stb. stb. van (amit nagyrészt ők írnak), akkor pár kép után láthattátok annak komplexitását is.

Két példa:
God Of War 3
Crysis

Itt arra akarok rávilágítani, hogy én speciel el sem tudtam képzelni, hogy egy editort hogyan írjak meg. Hogy álljak neki, mit tudjon, mi kell, stb. Elkezdtem csinálni a játékot, működött minden, kódból, de bővíthetősége katasztrófális volt. Most azt veszem észre, hogy 2:1 arányban foglalkozom az editorral. Jah és úgy, hogy per pillanat látványra kevesebbet tud a játék, mint az elején. :) De amint teljesen kész van az editor, pikk-pakk be tudok majd mindent dobálni. Gombokat, ellenségeket, fegyvereket, effekteket, stb.

Tehát egy újabb tanulság: - mindig csinálj Editort!
Főleg, ha komplexebb játékot szeretnél. Kicsinél természetesen felesleges, mert csak az idő megy el rá, de mivel hosszabb távra tervezek ennél a játéknál, ezért szükségesnek érzem az editorok készítését.

Még egy kis segítség, hogy hogyan fogj bele:
Vezesd le itt is papíron, hogy mit szeretnél, mit tudjon az editor. Utána a legegyszerűbb, ha típusos fájlt használsz. Megalkotod a különböző fileformátumokat, és próbálod univerzálissá tenni az eljárásokat. Én pl ugyanazt az animációkezelést és sprite osztályt tudom használni az editorban is, és a játékban is. Tehát amit lehet használj fel újra. A későbbiekben is bármikor újrahasznosíthatod új játékoknál, valamint rengeteget lehet így fejlődni. Ha úgy nézzük, párhuzamosan több programot fejlesztesz, és véletlenül sem lesz olyan, hogy ráunsz 1-2 hónap után a fejlesztésbe. Valamint hihetetlen örömet okoz, ha működik a dolog. :)
Erről az editorozásról írok később egy bővebbet, valamint az én terveimet is közzéteszem, hogyan is álltam neki.

A lényeg, hogy ne féljetek tőle! Dobjatok be egy nagy adag kávét, füles a fejre, zenét csutkára és LET'S SZÓÓÓSZ! :D

2011. november 13., vasárnap

Vasárnap : sikeres hét

Szervusztok-szervusztok, kedves nem létező olvasóim!

Najó, páran már talán vagytok, de így legalább nem tűnök skizofrénnek miközben T/2 -ben írok blogot. :D

Két napi pihenő után nehezen indult el a kódolás, de legalább fejben összeraktam mit-hogyan kellene csinálni. Már 11-kor el akartam kezdeni a szószolást, el is indítottam a Delphi-t, de csak délután 4-től sikerült igazából kódolni. Az a fránya Left 4 Dead a barátokkal... :)
Utána bedobtam egy kis élénkítő italocskát, fejemre helyeztem a fülest, és feltekertem a metál hangerejét.

Sikerült megalkotni a .map fájlformátumomat, amt már Editorból szerkeszthetek és a játék nagyon jól beolvassa. Ez egy típusos fájl lett, ami most még csak a pálya hátterét és enemy AI-t tartalmaz. Enemy AI pedig annyi, hogy melyik ellenséges űrhajót dobálja a pályára. Bővül ez majd még szépen, mert a pályaelemek elhelyezkedését és az ellenséges érkezését és viselkedését fogja tárolni.

A menübe beraktam a pályaválasztás lehetőségét is, és gyorsan összedobtam két mappot (baromi nehéz volt kiválasztani két különböző hátteret és űrhajó típust... :D ), szóval most már különböző univerzumokban és tér-időben száguldozva tudom írtani az ellenséget... lol. :D

Viszont van két kis bug, ami totál nem tudom mitől lehet. Az egyik előjött Hooch barátomnak is, és a feleségemnek is. Egyszer csak ha lőnek, nem mozog a lövedék, csak áll lent. De ha hozzáér az enemy, persze robban, meg működik minden, egyszerűen csak nem mozognak. Wtf?
Másik hiba a menü és játék között ugrálva tapasztalható MÉG MINDIG... Belépek párszor ide-oda, aztán elkezdek játszani, lövök mint a hülye és a lövedék a SEMMI KÖZEPÉN felrobban, mintha nekimenne valaminek. Közben nincs ott semmi. A debug ablak is megmondja, erre való, hisz mutatja, hogy semmivel nincs több sprite, mint amennyinek kell lennie, ergo nincs-ott-semmi, mégis felrobban a lövedékem...

Mielőtt elburjánzana a programon a bugok hada, ezeket ki kéne gyomlálnom. :)
Jövő héten bővítem tovább a map recordom és próbálok valami értelmes AI-t összehozni, meg az editorban szerkeszthetővé tenni.

Azért jól haladok, bár még nagyon messze a vége. :)

2011. november 10., csütörtök

Csütörtök 2/2

Mint ígértem, itt az esti bejegyzés is.

Van már valamiféle menüm, igen, teljesen lopott képekből, de most még tök mindegy, csak valamim legyen.

A menü gombjaira a szöveget majd a kód teszi rá, így nem kell plussz gombokat gyártanom, csak van egy alap, üres gombom, arra rátolom a szöveget és kész.

Végre van egy totál (?) bugmentes verzióm és az ingame-ben sincs semmi gáz, minden tisztán működik.
Erről is mutatok egy screenshotot. Még nem túl hú, meg há, de azért
mégis az én gyermekem. :) Futás közben mondjuk ezerszer jobban néz ki a háttér, meg az elzúgó csillagok.

És ebben a pillanatban eldöntöttem, hogy regisztrálom a programot a jf.hu-ra. :) Most! :D Mivel úgy is a fejlesztés menete a lényeg, ezért még így nagyjából az elején érdemes, és nem egy kész játékot szeretnék felrakni, mert én is jobban szeretem ott az olyan munkákat, amiken lehet látni, ahogy napról-napra fejlődnek. Ezek mindig motiválnak engem is a további fejlesztésre.

Péntek és szombat baráti összeröffenéssel és pihenéssel/edzéssel/kajálással fog eltelni. Aztán vasárnap folytatom a harcot a kódsor ellen! ;)

Csütörtök : Na végre! :)

Hooch barátomtól megkaptam, hogy nagyon jó, hogy mostanában minden nap blogolok, de nagyon keveset írok. Őszintén megvallva, mikor este 10 és 11 között abbahagyom, már majdnem kizuhanok a székből olyan fáradt vagyok, örülök, ha gyorsan összesíteni tudom fejben mi volt aznap. Aztán meg még futok le kaját csinálni, mert a testépítő életmód délutánonként kicsit hanyagabbul megy a programozás miatt. :D
Úgy telnek el órák, hogy bele vagyok épülve a kódba, zúg a metál és csak kódolok, és már csak azt veszem észre, hogy nem ettem 3 órája és nincs sütve csirkemell...

Hogy a fejlesztésről is legyen szó végre: SIKERÜLT!
Kiküszöböltem a kedd óta tartó hibát. A megoldás csak annyi volt, hogy visszaraktam a main-be egy-két olyan osztály példányosítását, amit a game résznél próbáltam megcsinálni. Gondoltam minek nekem már a menünél ütközésteszter, meg ilyesmi. De hát nem tetszett valamiért, hogy egyfolytában megkreálom, elpusztítom... Igy maradt az eddig bevált módszer, hogy paraméterként átadom a game-nek, azt puszi.

Nagyon jól üríti a memóriát is ugrálva a játék és a menü között. A menü is leginkább a saját dolgait használja és a game rész is. A menü igy 17 megaramot eszik, a game meg 38-at.  Ez azért előrelépés a 70-hez képest, vagy már mennyinél tartottam. :D

Itt kell megemlíteni, hogy minden fejlesztés elejétől használjatok debugot. Főleg valami egyénre szabottat. Én csináltam egy külön formot a játék formja mellé, ahova kiírja a használt memóriát, processzoridőt, meg FPS-t. Látom hány sprite van a képernyőn, player koordináták, ütközés, stb. stb.
Nagyon megéri a befektetett melót, mert volt olyan, hogy nem láttam a képernyőn a sprite-ot, amit megkreáltam. Azt hihetné az ember, hogy le sem lett gyártva, és az ember totál máshol keresné a hibát, de mivel a spriteszámláló azt mutatta, hogy igen, ott van, ezért sejthető volt, hogy a texturázással van valami probléma.

Egyszóval tessék használni debugot! :D

Később még jelentkezek a mai nap folyamán. :)

2011. november 9., szerda

Szerda : brühühühü

Ma edzés volt, szóval csak utána pár órát tudtam a programmal foglalkozni.

Az eredmény:

ROHADJÁL MEG! :D

Még mindig szenvedek a menü-játék-menü-játék ugrálással.
Egyszercsak kidobja a hibát és texturára hivatkozik, tehát biztos valamelyik sprite-ot nem semmisítem meg, vagy van egy olyan osztályom, ami csinál valamilyen sprite-ot és ott, a saját destroy-ában kellene megsemmisítenem az a bizonyos spriteot...

Na mindegy, sok időt elvett az életemből. A lényeg az, hogy megy, max nem ugrálok egyelőre össze-vissza a menü és a játék között, ennyi. :D
Majd később visszatérek rá...

2011. november 8., kedd

Kedd : Menü és játék együtt

Szép estét! :D
Újabb kimerítő kódoláshullám után jelentkezek.
Az ImageList editor nagyon jól működik, már használatban is van, viszont nem hogy tömörítené a képeket, hogy még kisebb helyet foglaljanak, vagy ugyanannyit, hanem a 400 kbyte-os hátterem 9000 (KILENCEZER) kbyte-ot foglal a listában. Hát ez igy nagyon érdekes... :D
Lehet a butus bmp-ként kezeli a listán belül, vagy úgy tölti  be magát. Viszont igy már rejtve vannak a képek és nem kell spagettikódból kreálni ImageList-eket, hanem csak simán ImageList.LoadFromFile(file : string).

Ezután ma nekifogtam a menü hegesztésének és pikkpakk meg is lett. Berakhatok annyi gombot amennyit akarok, feliratot meg majd külön konstansból ráhúzza a gombra. Az hogy milyen animációja legyen, meg hogy villogjon sötétben, azt majd megírom, ha lesz normális dizájnterv, meg ilyesmi. Funkcionálisan működik, ez a lényeg, a többi már csak apróság.

Sikerült összekapcsolni az egészet úgy hogy a main-t tehermentesítettem, tehát semmi fölöslegeset nem kreál meg helyben. Az elején csinál egy menüt, aztán ha nyomok egy új játékot, akkor a menü megszünik és helyette a Game objektum jön létre, ami mindent példányosít, amire csak szüksége van. EnemyController, Background, Player, ütközésdetektáló, stb. stb.
A Background majd külön egy TMap -ban lesz benne, de még nem akarom ezt a részt tovább bonyolítani, amig tökéletesen nem működik ez a rész.

Egyetlen bug történt a mai nap folyamán és megcsinálnám még, de már 22 óra és megint 5-kor kelek... Tehát ha elindul a program, bejön szépen a menü, aztán elinditom menüből játékot, ez is megy szépen. Aztán kilépek a menübe. Tökéletes. De amint újra be akarnék lépni a menübe, már hibával elszáll a drága.

Ha nem lennék ilyen baromi éhes, álmos és nem kéne 5-kor kelnem, most lezúznám a nyomorultat, de ez majd a holnapi edzés utánra marad... :)

Train natural and happy coding!
Ez az új jelszópáros. :D
Külön-külön mindig is életfilozófia volt, de még sosem írtam le együtt... Érdekes. :)

2011. november 7., hétfő

Hétfő: minden kezdet nehéz - de azért sikeres :)

Ma meló után egyből belecsaptam a lecsóba, és elkezdtem írni a menüt. Igen ám, de egyből megláttam az én szép kis Pictures osztályomat. Na mondom, barátocskám, veled lesz ma dolgom, úgy érzem. :)

Úgy is már ideje írogatni párhuzamosan azt az Editort is a játékhoz, épp itt volt az ideje, hogy valami tartalmassal bővítsem (elkezdjem?) azt a részt is. Mivel a menüben elég csak pár gombot, meg egy hátteret megjelenítenem, gondoltam szétdarabolom a Pictures.ImageList-et. Eddig az volt a koncepció, hogy egyszerre mindent belezúdítok az ImageList-be, aztán épp ami kellett, azt használtam. Cserébe persze rengeteg fölös memóriát foglalt a drága. Itt volt az ideje, hogy darabokra szedjem, tehát lesz a menünek külön listája, és mappokra bontva is külön-külön listák. Mondjuk ez igy utólag evidensnek hangzik, de elsőre mégsem volt az. :D

Ahogy elkezdtem szétszedni, szembesültem azzal, hogy a drága Andorra ImageList-jének lehet komplett tartalmat is adni fájlból! Nem kell kódban hozzáadogatni, meg elvenni, meg külön eljárásokban meghívogatni, hogy ehhez a pályához ez, a másikhoz az, stb. stb.
Igy tehát elkezdtem írni az Editorban egy ImageList buheráló részt. Gombnyomásra van új listám, valamint be tudok tölteni már elmentett listákat, meg menteni tudok. Tudok egyesével hozzáadni képeket, ráadásul shortcut-ként láthatom a képét a fájlból betöltendő képnek, vagy pedig ha a ListView-ban rákattintok a kép nevére, akkor az ImageList-ben található képet láthatom. Teljesen jó, igaz, elment vele az egész délutánom, meg estém, de megérte. :)

Holnap befejezem ezt a részt is. Meg lehet adni, hogy mi legyen a transparent color, milyen méretű kockákat vágjon ki a képből (ez az animált spriteoknál fontos).

Igy már simán tudok listákat gyártani és még egyszerűbb lett/lesz az élet!

Ha minden jól megy, holnap már tényleg a menü lesz terítéken. :)
Azt úgy érzem pikk-pakk megcsinálom.

2011. november 6., vasárnap

Kisebb átszervezés!

Kezd salátává változni a kód, szóval nem is egy ütős demó összerakásán fáradozok, hanem a mostani rendszereket szervezem és írom újra.
Rakok egy menüt az egész alá, mert igy most a loop-ban megcsinálja a pályát, meg a playert, meg mindent és így elég borzalmas.

Magyarán a techdemót elkezdem átalakítani játékká.

A jövő hét tehát ezekből fog állni:
- Menü és a menüpontok létrehozása és a funkciók megírása (új játék, beállítások, kilépés).
Az új játék résznél egy pályaválasztó almenüt szeretnék, tehát az egész pálya részt, esemény- és enemy-kezelést át kell raknom egy .map fájlba, vagy valami ilyesmi kell.
- Optimalizálás minden téren, bár ha a fentebbi dolgokat megírom, az már egyfajta optimalizálás, mert nem loop-ból csinálok mindent...

Ez a két legfontosabb dolog, de ha ezekkel megvagyok, és marad idő, akkor a következőkre is próbálok időt szánni:
- particle system fejlesztése (robbanások, sérülések)
- darabokra tudjanak robbanni az űrhajók.

Ez a kettő megdobná az egész külcsínyt. :)

Jövő héten is minden nap lesz post, amikor lesz időm a fejlesztésre! Happy coding! :)

2011. november 3., csütörtök

Parallax scrolling

Ó igen! Végre a player mozgásától függően tolódnak az objektumok!
Végülis nem volt egy vészes dolog, mert a Me Smash You-ban már csináltunk ilyet, és ott sokkal jobban is néz ki a sok layeres háttér miatt, de most már legalább olyan Tyrian-os a mozgás és a pályaelemek (ellenségek, csillagok, dobott cuccok, effektek) scrollozása.

Ez volt a mai meló és a fegyverzet szintlépését fejeztem be.

Szeretem az olyan napokat, amikor minden 100%-osan úgy sikerül, ahogy elterveztem. :)

Hétvégén feldobom ide is az új demót, ami szintén zenére lesz szinkronizálva. Lesz már valamiféle alap GUI, meg egy-két saját grafika, nem csak top-down közlekedő ellenségek, és lesz boss fight. :)

No meg regisztrálom most már a programot a játékfejlesztés.hu -ra is.
Izgulok. Úgy is leszólják a kis programom,  brühühüh... De sebaj, ettől leszek csak feltüzelve, hogy még jobbá tegyem! Juhhheeeyyyy! :D

2011. november 2., szerda

Követős orb -> xp -> Weapon Upgrade

Ma is fejlődött kicsit a program. Miután elpusztítunk egy ellenséges objektumot, legyen az torony, űrhajó, bármi, akkor most már xp orbot is dobnak, nem csak pontot érő gyémántot. Az orbokat külön nem kell gyűjtögetni, mert bizonyos idő után automatikusan elkezd száguldani a játékos felé.

Bizonyos mennyiségű orb után pedig fegyverünk szintet lép és más animációval lövünk, valamint más sebességgel, sebzéssel, stb.

Elég rövidke fejlesztés volt, de ennyi fért most bele.

Holnap edzés után befejezem ezt a részt, és léphetünk tovább a következő lépcsőre.
Csak szépen, fokozatosan... :)

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.