2009. július 14., kedd

New Turn

Oké, úgylátom egy kicsit sokmindenről volt szó az előző postban, és nem mertek hozzászólni, úgyhogy egy kicsit egyszerűbbé teszem a dolgot, és új postot hozok létre. Egy pár apróbb hibát sikerült csak javítanom az utóbbi pár napban, mert nem sok időm volt foglalkozni vele, és nemtudom ezek közül van-e valami olyan, ami megérdemli, hogy megemlítsem. 

A szobafelfordításnál volt, hogy az éppen lerakott tokent nem lehetett lerakni oda, ahol az adott szobán előzőleg a lefordított tokenek valamelyike ki volt jelezve, ezt egyszerűen lehetett javítani, amivel többet szívtam, az az volt, hogy a szobafelderítéshez használt form ugyanakkor legyen aktív, mint a főform. 

Magyarán ha leminimalizálom, vagy alt-tabolok egy másik ablakra, és utána ismét ráklikkelek a tálcán a főformra (mert a kis segédformot nem jelenítem meg a tálcán, arra nem lehet klikkelni), akkor ne csak a főform legyen látható ismét, hanem a segédform is, és ami még fontos, hogy a főform legyen az aktív.

Ezt a főformban elhelyezett következő kóddal tudtam elérni:


bool IsJustActivated = false;
private void Xform_Activated(object sender, EventArgs e)
{
if (!IsJustActivated)
{
IsJustActivated = true; 
BackForm.Activate();   
this.TopMost = true; 
this.TopMost = false; //this.Activate() wont work 

else 
IsJustActivated = false; 
}
}


Ahogy látjátok fent, fura módon a TopMost property változtatását alkalmaztam. Mindez csupán csak azt a célt szolgálja, hogy ne kerüljek végtelen ciklusban, ugyanis ha meghívtam volna Focus(), vagy Activate() függvények valamelyikét, akkor az Activated esemény újra kiváltódott volna, és az egész újra meghívódott volna. Lehet másként is meg lehetett volna oldani, mindenesetre nekem így sikerült a leggyorsabban.

De hogy kérdezzek is valamit, legyen a mostani téma az, hogy hogyan nézzen ki a kör végének a jelzése. Jelenleg egy gomb van a formon, de ezt talán át kellene rakni menübe, és ha megnyomja a játékos, akkor vége a körének, és a következő emberke kapja meg a lehetőséget. Ekkor ugye feljön egy új form, ahol ki lehet választani, hogy melyik akciókártyát játssza ki az adott körben a játékos, de szerintem ezt el kellene tüntetni. Viszont hogyan legyen helyette megoldva a dolog? Legyen a menüben egy 'Akciókártya kijátszása' gomb, és amíg erre nem nyom rá a felhasználó, addig nem csinálhat semmi mást? Végülis könnyen megvalósítható lenne, mert akkor 0 akcióponttal indul a kör, és csak akkor kap, ha kijátszik egy lapot... és persze 1 körben csak egyet lehet kijátszani. Szóval egész jól illene az eddigi megvalósításba.

Mit gondoltok? Más ötlet nekem még nem jutott eszembe erre.

2009. július 11., szombat

A jelenlegi helyzet

Akkor írok egy kicsit arról, hogy jelenleg hogy is áll ez a híres Dungeon Twister projekt. Van hozzá egy pályaszerkesztő is, azon is lehetne mit fejleszteni még, jelenleg csak simán össze lehet rakni egyes pályarészeket az egyes darabokból. Színt még nem lehet állítani, bár maga a program azért jegyzi, hogy melyik pályarész hányas számú. Erre ugye akkor van szükség, amikor az emberke forgatni akarja az egyes részeket, hiszen azokat párban lehet forgatni.

Szóval jelenleg szín nélküli pályarészek vannak, ehhez esetleg a későbbiek folyamán lehet egy normálisabb szerkesztőt csinálni, egyelőre viszont ne ezzel foglalkozzunk, majd ha kész lesz a 2 játékos üzemmód, akkor megcsinálom a szerkesztőt normálisabbra, mielőtt hozzáfogok az AI-hoz.

Amikor elindítjuk a játékot, kiválaszthatjuk, hogy milyen pályarészeket akarunk használni. Jelenleg csak egyetlen ilyen elérhető, az Original, ami ugye az alapjáték pályáit tartalmazza. Ilyen seteket lehet csinálni a későbbiek folyamán, így könnyen lehet pl kiegészítőket gyártani majd. Ezenkívül kiválaszthatjuk, hogy hány emberi, és hány gép vezérelte játékos lesz. Jelenleg nincs még AI, úgyhogy itt sincs túl sok bonyodalom. :)

Miután kiválasztottunk mindent, megjelenik maga a pálya. Véletlenszerűen lesznek az egyes darabok leosztva, és beforgatva, ezeket ugye alapból nem láthatja a játékos. Jelenleg még a formon levő popup, és gomb segítségével lehet lerakosgatni az egyes tokeneket, de ezt terveztem átrakni a menübe, ezt lehet látni az Action résznél. Gondolom ott jobb helyen lesz, de ha van valami egyéb ötlet az egyes parancsok elhelyezésére, akkor ki vele. :)

A lerakosgatás után elkezdődik maga a játék, először feljön egy ablak, ami jelzi az új kör kezdetét. Ez sem tetszik túlzottan, valahogy máshogy kellene megoldani, de még nemtudom, hogyan. Ezen az ablakon kijelzi a progi, hogy melyik oldal jön, és ki lehet választani, hogy melyik akciókártya legyen kijátszva. 

Ezután megjelenik maga a játék, tádámm. A startrészeken levő tokenek felfordulnak, és felfedik, melyikük melyik karaktert reprezentálja. Ezekre a karakterekre jobbklikket nyomva jön fel a képen látható menü, és ott lehet kiválasztani, hogy mit szeretnénk csinálni. 

Legfelül információt lehet kérni az adott tokenről. Sajnos itt sincs még semmi szöveg beírva, de elvileg a szabálykönyvben található információkat szeretném iderakni. Ez alatt pedig a cselekvőképes karakterek almenüje található, ahol az egyes parancsokat kiadhatjuk. Ezek szinte mindegyike kész van már, még a speed potion használata nincs megcsinálva, mert abban sem voltam biztos, hogy hogyan csináljam. 

Ugye a speed potion 4 extra cselekvési lehetőséget ad a használójának, amit akár időben vegyesen az eredeti akciókkal is el lehet végezni. Szóval egy lehetőség például az, hogy a vonalka alatt a Use speed potion résznél megjelenik egy újabb almenü, az összes paranccsal ismét, és amit ott választ ki az ember, azt a speed potion akciójából számoljuk. Bár ez nem tűnik túl szép megoldásnak. Esetleg valahova lehetne rakni egy checkboxot, ami ha ki van pipálva, akkor a speed potion akciójából megy az adott cselekvés, de nemtudom, hova lehetne rakni. Oda a Use speed potion szöveg helyére? Vagy esetleg valami más ötlet?

Lehetőség van szoba felfedésére is, jelenleg ez a fenti Action menüből érhető el, kérdés, hogy ez maradjon-e ott, vagy kerüljön át az egyes karakter cselekvési lehetőségeihez? Gondoltam külön lehetne választani néhány parancsot, de lehet butaság. A szoba felfedezésekor megjelenik egy kis form jobboldalt, ahol ki lehet választani az egyes lerakosgatható tokeneket. Először ugye a szoba felfedezője rakja le az összes tokent, kivéve a saját tárgyait, s utána azokat az ellenfele helyezi le. Nem tudom, hogy ez jó-e így, vagy hogy lehetne máshogy, erre is várom az ötleteket. :)

Ezenkívül nemtudom, mit mutassak még, olyan nagyon nagy látvány nincs máshol, hacsak a harcot nem nézzük. A csata kezdeményezésénél feljön egy új form, ahol látszanak az egyes felek, a tulajdonságaik, a felszereléseik, az erejük összegzése. Kérdés, hogy jó-e, hogy a program szépen összeszámol mindent a játékos helyett, de szerintem nem gond. Ezután még van lehetőség a csata megszakítására, viszont amint valamelyik játékos kijátszott egy kártyát, már nincs rá lehetőség. Itt is kérdés, hogy hogyan lehetne megcsinálni a kártyák kijátszását? Mert ugye az egyes játékosnak nem szabad tudnia, hogy a másik fél mit játszott ki, de mivel 1 gépen történik jelenleg a játék, és a lényeg úgyis a gép elleni játék lesz, ezért nem foglalkoztam sokat ezzel a résszel, egyszerűen ki kell választani, melyik fél melyik lapot játssza ki, és kész.

Egyéb kérdés: Hogyan legyen jelezve az, hogy egy karakter sérült? Hogyan legyen jelezve, ha két, vagy több token egymáson van? Jelenleg ez utóbbi egyszerűen úgy van megoldva, hogy megjelenik mindkét token, egy kissé eltolva egymástól... nemtudom, hogy ez jó megoldás-e, ezen is lehet esetleg változtatni később.

Segítségképpen megosztom Veletek a szabályokat is, elérhetitek angolul, és magyarul is.

Kezdjük

No, hát akkor kezdjünk neki ennek a jó kis blognak. Úgy tervezem, hogy mindenféle fejlesztéseimről vezetek majd itt egy kis leírást, amit jól megvitathatunk, meg okos tanácsokkal is elláthattok, ha úgy gondoljátok... és igen, lehet trollkodni is. :) 

Leginkább talán designkérdésekben lesz szükségem tanácsra, mert ahhoz értek a legkevésbé, de persze kétlem, hogy figyelmeztetni kéne Titeket, hogy más ügyben is hozzászólhattok. :) 

Azt hiszem leginkább majd a diplomamunkámmal kapcsolatban fogok írni ide, ugyanis az az, amivel a leginkább haladnom kell, és így majd talán engem is ösztönöz, hogy írjak ide, és akkor haladni kell a progival is.

Azt hiszem első bejegyzésként írok egy kicsit magáról a diplomamunkáról. Egy társasjáték megvalósítását vállaltam magamra, hozzá tartozó mesterséges intelligenciával együtt. A játék neve: Dungeon Twister, olvashattok róla egy leírást itt.

Jelenleg az AI még egyáltalán nem áll sehogy, egyelőre a 2 ember álltal játszható (1 gépen) verzió készülget, eléggé közel áll ez a része ahhoz, hogy elkezdhessem az AI-t, de biztosan elpepecselek még vele egy darabig, mert némely design részt már vagy 3szor átdolgoztam, de még mindig nem tetszik, úgyhogy ehhez adhattok majd tanácsot. Kérésre persze kirakom majd a kódot is, de szerintem elég lesz az is, amit írok róla.

Szóval megpróbálok minél előbb csinálni egy rakat képet, meg leírást arról, hogy pontosabban hogy is állok, hogy néz ki, és mi az, ami nem tetszik, és nem tudom egyértelműen eldönteni, hogy hogyan legyen a folytatás...

Addig is kellemes hétvégét mindenkinek!