Pirmiausia noriu pasidžiaugti, kad vėl turiu daugiau laiko ir noro čia ką nors parašyti. Nuo paskutinio įrašo, kaip ir reikėtų tikėtis, mano kuriamas žaidimas nemažai pasikeitė. Turbūt apie visus pakitimus viename įraše tikrai nesugebėsiu parašyti, tai parašysiu kelis. Reikėtų sugrupuoti informaciją, o kur geriau tai daryti kaip ne ant elektroninio popieriaus.
Taigi didžiausia naujiena - žaidimas perėjo nuo Allegro prie HGE žaidimų varikliuko. Seniai seniai minėjau, kad programuoju savo GUI elementus. Tai va, gan smagiai ten viskas išėjo ir šiuo metu naudoju savo GUI klases gan patogiai. O apskritai žaidimo filosofiją šiek tiek (o gal ir labai pakeičiau), pabandysiu išryškinti pagrindines išvadas, kurios prašite prisiprašė per šiuos kelis mėnesius:
1) Labirintai tokie, kokius juos įsivaizdavau, nėra įdomūs.
2) Spaudalioti daug GUI mygtukų nėra įdomu.
3) Laikyti galvoje daug kintamųjų nėra įdomu (su išimtimis, aišku).
4) Būti apdovanotam kažkuo, kas neaišku, ką daro, visai neįdomu.
5) Būti spaudžiamam laiko apribojimų kiekviename žingsnyje neįdomu, tai net varo stresą.
Dabar apie kiekvieną:
1) Kažkada įsidrąsinau tiek, kad parodžiau savo žaidimo demo kitiems. Tikriausiai niekas nesigilino, bet labirinto "arena" buvo kvadrato formos, tai buvo idealus (ta prasme, kad iš bet kurio taško į bet kurį kitą buvo vienas kelias) labirintas, kurio vidury buvo "išmušama" skylė ir patalpinami minotaurai. Šis būdas generuoti žemėlapį man labai greitai pasirodė netinkamas dėl to, kad žaidėjas nuo pat pradžių buvo įmetamas į žaidimą kaip kačiukas į tvenkinį. Plius tokiu principu žaidžiamas žaidimas (t.y. vien arenos kovos) atima man labai brangų atradimų žaidime elementą. Sugalvojau, kad labirintą reikia paskirstyti netolygiai ir kad turi būti ne tik kovos arenoje, bet ir lobių bei svarbių NPC paieška labirintuose. Čia pirmieji bandymai:
Kad būtų kažkoks tikslas, sugalvojau, kad minotaurai gali grobti labirinto dalis ir kuo daugiau tų labirinto atkarpų turi, tuo daugiau gauni resursų (plačiąja prasme) tarp turnyro varžybų. Antrame paveiksliuke net yra rodyklė, rodantį, kur ieškoti taikinio - priešininko (arba kriterių) vėliavos. Dešinėje viršuje matomas žemėlapis. Šie du dalykėliai buvo paskutinės dvi vinys į labirinto generavimo karstą. Jei jau reikia tokių dalykų, reiškia kuri, žmogau, kažką labai painaus. Supratau bendrą tiesą apie žaidimų susijusių su labirintais programavimą - programuoti juos įdomiau nei žaisti.:) O programavau aš tai tikrai laaabai ilgai. Kol kas čia sustabdysiu aprašymą, o vėliau grįšiu prie žemėlapių apskritai.
2) Vienu metu reikėjo paspausti nemažai mygtukų ir kitų "šudukų", kad vien tik atsirastum labirinte. Dar "kovoju" su šia problema. Žaidėjas juk nori žaisti, o ne naršyti po finansines labirinto ataskaitas:
Beje, taip atrodė "visas" labirintas. Kiekvienas kvadračiukas turėjo savo statistiką, vieni buvo geresni, bet sunkiau užgrobiami, kiti - atvirkščiai. Bet ne apie tai kalba. Šitą vaizdą mačiau per dažnai - nori į labirintą? še tau šį pasirinkimo meniu, nori pastatyti statulą "savo" labirinto daly? še tau šitą vaizdą, nori užpulti kito minotauro labirintą? še tau tas pats. Neįdomu.
3) Esu parašęs ganėtinai sklandų navigacijos labirinte algoritmą - minotaurai gražiai ir tolygiai pasuka, kai pribėga prie kampo, o ne staigiai kaip robotai po sėkundės šimtųjų jau žiūri priešinga kryptimi. Ir į šį jau ir taip sudėtingą kodo makaroną man būtinai reikėjo dar visko pridėti. Kai pagalvoju apie priežastį, juokinga iš savęs pasidaro - man reikėjo, kad minotaurų stats'ai būtų daugiau kur panaudojami. Atsirado tokie akivaizdžiai "prasmingi" skaičiukai kaip acceleration rate, decceleration rate, turn rate ir pan. Virš dešimties kažkių keistų (na, gal šiek tiek inovatoriškų tokiam žanrui) charakteristikų. Mano galvai - per daug. Švelniai pereinam prie...
4) Kas geriau: greičiau įsibegėti ar greičiau sustoti?:) Arba ką reiškia užrašas ant sandalų +0,004 turn rate? Daug nereikalingos ir neaiškios informacijos. Išmesti.
5) Pirmojo punkto antrajame paveiksliuke matyti dar kaikas - laikas likęs minotaurui būti labirinte. Na, "savo" dalyje galėjai būti kiek širdis geidžia, bet pas priešininkus galėjai būti tam tikrą laiką. Neįdomu visu greičiu lėkti ten kur rodo raudonas kursorius ir dar aptikti, kad tai visai ne iš tos sienos pusės. Laikas turėtų būti kaip kažkas "optimalaus" - pasimatuoti, kieno jis trumpesnis ar ką.
Keli vaizdai iš to, kas buvo:
Jei ką, žaidimo toli gražu nemečiau:
Stilius greičiausiai pasikeis, bet turėtų jaustis tokių žaidimų kaip Diablo (jo net nežaidžiau) ir Titan quest prieskonis.
Dabar trumpam grįšiu prie šiuo metu man aktualiausios temos - žemėlapio generavimas. Apskritai žaidimas grįžo į kokią v0.3 stadiją, nes nei minotaurų, nei labirintų kol kas nevaizduoju, bet jau daug padariau, kad kai vaizduosiu, tai bus pačiam malonu pažiūrėti, kas ten ir kaip. Prie žemėlapių nusprenžiau prieiti iš kito galo - apibrėžti susidomėjimo objektus (points of interest) ir žemėlapį sudarity apie juos. Kas galėtų būtie tie susidomėjimo objektai:
a) kažkokios žaidimo brangenybės (skaitykit - auksas);
b) daiktai, padedantys lengviau žaisti (ekipiruotė);
c) gal kokie raktai ar pan;
d) užduočių tikslai;
e) prekeiviai;
f) treneriai;
g) kriteriai (pavojaus, bet ir turto šaltiniai);
h) spąstai;
Kol kas žemėlapio topologiją nustatau pats (tiesą sakant, kadangi man kol kas nesvarbu, ji nuolat ta pati), bet, manau, visai įmanoma, kad įdomias topologijas generuotų kompiuteris. Ką aš turiu šiuo metu:
1) Apibrėžiam kelis susidomėjimo objektus (taikinius) ir bandysim juos sujungti prasmingais būdais. Tam paskaičiuosim, kurie labirinto elementai arčiau kurių taikinių:
Išėjo kaip ir Voronoi diagrama:) Toliau sugalvojau, kad reikia rasti vietas, kur tos zonos kertasi ir nuo ten pradėti "gręžti" iki taikinių, tam, aišku, rikia pirmiausia surasti zonų pakraščius:
Tada iš atsitiktinai parinktų pakraščių dalių tiesiamas labirintas tol, kol visi taikiniai pasiekti:
Baisu! Supratau, kad grįžau prie rodyklės ir žemėlapio.;) Tad ėmiausi patobulinimų: taikiniai "traukia" besikuriantį labirintą, jei jis pakankamai arti. Yra keli parametrai, kurie valdo, kiek traukia ir nuo kurio atstumo. Pvz., traukia labai:
Traukia mažiau:
Jau visai nieko, sakyčiau. Arti mano tikslo. O kam čia visa tai? Manau, iš kito paveiksliuko daug kas paaiškės:
Dar pridėkime pakeliui kriterių ir smulkių apdovanojimų ir turime visai nieko pagrindą žemėlapiui.:)
Žemėlapiai tikriausiai bus mažesni ir topologiškai įvairesni (čia kol kas taikiniai visą laiką buvo tose pačiose vietose). Daug prirašiau, bet čia nedidelė dalis to, kas prisikaupė.
O-M-G!
AtsakytiPanaikintiJei atvirai, jau nebesitikėjau pamatyti atnaujinimo, ir dar tokio ilgo.
Logiškas klausimas dabar būtų, o kur download linkas :D ?
Beje, ką gero davė HGE over Alegro ? Kiek žinau jis tik neseniai buvo nuportintas ant OSX/Linux. Nesinorėtų, kad žaidimas techniškai apsiribotų vien tik windowsais, nes prarastum vieną žaidėja, tai jau tikrai :)
Na ir šiaip nelabai žinau ar gera mintis drastiškai keisti geimą(bent jau toks įpsūdis, kad tai darai). Nes bent jau man nebuvo progos normaliai palošti senojo, nes ten viskas lūžinėdavo ir nebuvo kaip reikiant atšlifuota.
Pagaliau koks skirtumas kokios formos tas labirintas, ypač dar jei matai jį ekrano kamputyje...
Na, bet LABAI smagu, kad atrandi motyvacijos kažką daryti, o ne užsiimti sado mazo veikla ir keikti žaidimus bei jų kurimą, как некоторые. :D
P.S. Net AŠ lošiau Diablo I ir Diablo II(<3), shame on you!
HGE davė beproblemį fontų renderinimą, dalinį permatomumą, kur to man reikia, gal net gražius šešėlius duos (su jais niekad neturėjau reikalų), duoda fancy pancy particle'us ir pan. Ir bonusas, galiu įkrovinėt png nerašydamas papildomo kodo (su allegro man taip ir nepavyko rasti bibliotekos, kurią man pavyktų sukompiliuoti).
AtsakytiPanaikintiŽaidimo neperdarinėju, perdarinėju jo realizavimą. Aišku, kažkur skaičiau, kad iš tokių perrašymų žmonės nieko nepasimoko, bet šiuo metu viskas atrodo daug švariau. Beje, šiandien jau ekrane matau nupaišytas labirinto sienas. O labirinto forma (apskritai žemėlapio topologija) - labai svarbu. Šiuo konkrečiu atveju tiesiog reikės manimi patikėti - kai buvo begalė beprasmių koridorių, tikrai nebuvo įdomu. Manau, smagiau lėkti spardant kriterius į sienas ir tikintis rasti lobį koridoriaus gale. Tokio scenarijaus buvo neįmanoma sukurti tokiais metodais, kuriuos bandžiau anksčiau.
Kadangi linuxo nesu gyvenime čiupinėjęs, tiesiog negaliu patikrinti kai kurių funkcijų kaip kad failų ir folderių kurimo/trynimo ir pan. Pirmiausia noriu žaidimą padaryti taip, kaip man patogiau ir greičiau, o jau paskui bandysiu kažką skaityti ir portinti.
P.S. Taip jau susiklostė, kad iki studijų metų PC neturėjau, o pirmiau pažaidus Titan Quest, Diablo II pasirodė senis su skurdžiu talentų pasirinkimu. Berods perėjau jį lengviausiu lygiu ir mečiau.
Na nebutinai linuxas, man dar labiau tiktų OSX :D Nes pagrinde kasdien naudoju.
AtsakytiPanaikintiO jei rūpi portabilumas rekomenduočiau kasdien ar bent jau kai padarai daugiausia pakeitimu sukompiliuoti ant linuxo ar OSX(jei prieini prie maco), linuxa labai paprasta suinstaliuoti ant VirtualBox, tarkim koki Ubuntu ar Linux Mint.
Taip darydamas busi užtikrintas kad geimas vis dar kompiliuojasi, jei ne pataisysi problema. Nes paskui gali būt vėlu ir nieko nesigaus/ bus labai daug darbo.
Na bet kaip sau nori.
As vat skaitau jusu diskusija trumpa ir man kilo klausimelis. Pas mane yra tarkime taip
AtsakytiPanaikintizaidmo dalis (c++) -> grafikos interfeisas (20 konkreciu funkciju) -> directx. Tarkime man jeigu reiktu staiga padaryti viska ant opengl man reiktu pakoreguoti tas 20 paprastu funkciju (tokiu kaip lango sukurimas, transformavimas, clipinimas , tscenos pradzia pabaiga, targetai setshader ir pan)ir zaidimas is esmes nenukentetu nes zaidimo dalis uz atvaizdavima neatsako , tik pateikia duomenis atvaizdavimuij. O klausimas butu butent apie zadimo dali: ar kiti kompiliatoriai priima ta pati koda vienodaij, kaip kad pvz std vector konteineriai visur kompiliuojasi ar tai windowsu ismislas?
Serumai, aš neturiu pakankamai žinių, kad atsakyčiau. Bet dėl "kiti kompiliatoriai priima ta pati koda vienodai": iš savo menkos patirties galiu pasakyti, kad man perėjimas nuo Code::Blocks prie VS2008 padarė didelę paslaugą. Aišku, turbūt pakrapščius C::B nustatymus, pasiekčiau tą patį rezultatą, bet... Vos pirmą kartą pabandęs sukompiliuoti savo žaidimo prototipą (kurį tuo metu jau buvau išleidęs į viešumą), suradau tiek kritinių klaidų, kad raudonavau iš gėdos prie monitoriaus.
AtsakytiPanaikinti