Šitam straipsnyje labai bendrai papasakosiu kaip sukurti side-scroller tipo žaidimą. Kaip tik tokį esu sukūręs( beveik normaliai veikiantį ). Pirmąją versiją pagaminti užtruko ~24h. Tuomet projektėlis truputuką užmigo daugiau nei metam. Vėliau jis buvo atgaivintas ir dar per apytiksliai 5 dienas „užbaigtas“. Jį galima parsisiųsti iš http://imbusy.org/run.php . Viską dariau pats (įskaitant ir paišymą). Jokių garsų, teoriškai, žaidimas neturėtų skleisti.

Kadangi laikau save programuotoju, tai daugiausia šiame straipsnyje bus kalbama iš programavimo pusės.

Su sąlyga, kad sukurtumėt žaidimą, reikia mokėti programuoti. Naudojau C++ kalbą, nes esu prie jos daugiausia dirbęs. Dabar yra visokių gan patogių skriptinimo kalbų, kurias irgi galėtumėt panaudoti kuriant žaidimus, kadangi veikimo greitis nėr labai svarbus.

Visų pirma reiktų pasirūpinti, kokias bibliotekas naudosite. Šis žaidimas naudoja SDL( Simple Directmedia Layer ) biblioteką grafikai. Ją pasirinkau dėl to, kad buvo labai paprasta naudoti. Galima pakopijuoti kodą iš kelių tutorial’ų SDL puslapyje ir grafikos kodas labai šauniai veikia. Deja, SDL naudoja jau pasenti spėjusią DirectDraw biblioteką Windows aplinkoje, tai žaidimo didžiąją dalį veikimo laiko sudaro taškų paišymas ant ekrano.

Taigi, pasirinkome biblioteką, dabar belieka ją panaudoti paveiksliukų paišymui ekrane. Kaip jau minėjau, daugumą kodo galima rasti SDL puslapyje. Naudojau pagrinde IMG_Load, SDL_BlitSurface funkcijas.

Ką jau turėtumėm turėti? Turėtumėm būt „užkūrę“ langą ir nupaišę paveiksliuką kažkur ekrane, nurodę X ir Y koordinates.

Hm… kas dabar? Sukurkime aplinkos ( žemėlapio, lygio, levelio, pavdinkit kaip norit ) failo formatą, kad galėtumėm patogiai užkrauti aplinką iš failo, o ne viską įhardkodint ( terminas reiškia kažkokių reikšmių įrašymą pačiam kode, kurių neįmanoma – labai sunku – pakeisti jau pagaminus – sukompiliavus – programą ). Su sąlyga, jog žaidimas labai paprastas, tai ir formatas paprastas: Iš pradžių įrašome du skaičius: aplinkos plotį ir aukštį, o tuomet „paišome“ aplinką. Skaičius 1 reikš plytas, 2 – kitokias plytas, 3 – žolę, 4 – dar kažką, 5 – išėjimą, o skaičius 0 – tuščią vietą. Mūsų lygio redaktorius – notepad, arba dar koks nors primityvus teksto redaktorius.

Tarkime jau parašėme kodą, kuris nuskaito visus šiuos duomenis iš failo ir nupaišo daug paveiksliukų, kurie primena jūsų įsivaizduojamą lygį. Matome ekrane žolę, plytas, išėjimą į niekur.

Gaila, bet žaisti tai dar nelabai gaunasi. Reik pagrindinio veikėjo. Įsijungiam kokį nors paveiksliukų redaktorių, tarkim Gimp, ir nupaišome veikėją su visom jo animacijom. Paint netinka, nes neišsaugo paveiksliuko permatomumo. Jei kada žiūrėjote į seno filmo juostą (aš nežiūrėjau), tai ten galima matyti kaip kažkas juda. Tą pačią juostelę pabandysime imituoti ir čia. Kas fiksuotą skaičių taškų nupaišome žmogeliuką, kuris po truputį juda. Man gavosi štai kas:

Run! Main hero

Matote kaip juda kojos? Dėl visa ko priklijavau ir ginklą, jei reiktų ką nors nužudyti. Iš karto galime nupiešti ir porą priešų. Maniškiai tokie:

Run! zombie

Run! alien

Priešų paveiksliukuose nuo antro kadro galima matyt jų mirtį (tykštantį kraują). Vėliau programuojant nustatysime, kad kol zombis vaikšto, naudojami būtų pirmi du kadrai, o kai jis miršta, parodomi likę kadrai. Taip pat veiks ir ateivių laivas. Beje, pagrindinis žaidimo tikslas ir buvo daug kraujo.

Suprogramuojame, kad paspaudus klavišą kairėn, dešinėn, kistų žmogeliuko X koordinatės ekrane, o paspaudus į viršų – Y. Tai viena sunkiausių programavimo dalių, nes žmogeliukas turi reaguoti ir su aplinka, pvz. jei po juo nėra kaladėlės, tai jis turi kristi žemyn tam tikru greičiu (mažėti jo Y koordinatė). Pašokus iki nustatyto aukščio, jei po žmogeliuku nėr kaladėlės, jis taip pat krenta. Čia ir susidūriau su didžiausiais sunkumais, nes veikėjas pradėjo kristi pro grindis, lubas, vaikščiot pro sienas. Viskas labai priklausydavo nuo kompiuterio, kuriame veikia žaidimas, greičio. Todėl teko įdėti tam tikrus greičio limitus. Negražu, bet veikia kažkiek :). Su priešais viskas šiek tiek paprasčiau, nes jie invalidai ir nešokinėja. Zombių „dirbtinis intelektas“ tiesiog seka paskui jūsų veikėją, t.y. tikrina jo X koordinatę ir pagal tai sprendžia, į kurią pusę reiktų eiti, kad susitikti su jumis. Zombiai ir neturi būti protingi. Kad viskas neatrodytų taip dirbtinai, pusę laiko vieni zombiai jūsų ieško, kitą pusę – kiti.

Šaudymas vykdomas irgi gan paprastai ir neoptimaliai. Paspaudus space, sukuriama kulka, kuri juda X ašimi kryptimi, į kurią šovėt. Kiekvieną kadrą kiekviena kulka lygina savo koordinates su kiekvienu priešu ir žiūri, ar ne per mažas skirtumas. Jei pasiekiama tam tikra riba, priešas anuliuojamas iš žaidimoa.

Štai taip ir sukuriamas paprasčiausias side-scroller tipo žaidimėlis.

Čia buvo mano pirmasis kadanors rašytas straipsnis. Nežinau ar jis jums turėjo kokios naudos, nes visos išsakytos mintys yra labai paprastos. Gero vakaro. :)

Panašūs straipsniai


“Side-Scroller tipo žaidimo kūrimas” komentarų: 1

  1. Archatas

    Mano supratimu, side-scroller yra tokie arkadiniai žaidimai, kuriuose einant per aplinką, fonas slenka priešinga kryptimi ėjimui. Tokių žaidimų klasikiniai pavyzdžiai — Super Mario ar Sonic.

    Tačiau tavo straipsny nieko apie tai neparašyta.

Rašyti komentarą

Jūs privalote prisijungti jeigu norite rašyti komentarą.