Pradžia / Technologijos / Žaidimų kūrimo pradžiamokslis

Žaidimų kūrimo pradžiamokslis

Kodėl visi nori kurti žaidimus, bet mažai kas pradeda

Žaidimų kūrimas – tai viena iš tų sričių, apie kurią svajoja daugybė žmonių, bet realiai prie kompiuterio su kodo redaktoriumi atsisėda vienetai. Ir tai suprantama. Žaidimas atrodo kaip kažkas milžiniško – grafika, fizika, garso efektai, istorija, valdymas, optimizavimas… Kai viską išvardiji, norisi tiesiog uždaryti lapą ir grįžti žaisti, o ne kurti.

Bet čia ir slypi pagrindinė klaida. Žmonės galvoja apie galutinį produktą – apie kažką panašaus į The Witcher ar Minecraft – ir nuo to bijo pradėti. Realybė tokia, kad kiekvienas žaidimas prasideda nuo kažko absurdiškai paprasto. Pirmasis Doom prototipas buvo tiesiog judantis kvadratas ekrane. Pirmasis Minecraft – kelios kubų eilės be jokio tikslo.

Šiame straipsnyje kalbėsime apie tai, kaip realiai pradėti kurti žaidimus – ne teoriškai, ne „ateityje”, o dabar. Kokius įrankius rinktis, ko mokytis pirma, kaip nesusipainoti ir, svarbiausia, kaip neprarasti motyvacijos po pirmosios savaitės.

Variklis – pirmasis ir svarbiausias pasirinkimas

Prieš rašant bet kokią eilutę kodo, reikia nuspręsti, kokį žaidimų variklį (angl. game engine) naudosi. Variklis – tai programa, kuri atlieka visą „juodą darbą” už tave: piešia grafika ekrane, skaičiuoja fiziką, valdo garsą, tvarko įvestį iš klaviatūros ar valdiklio. Be variklio tektų visa tai rašyti pačiam nuo nulio, o tai – metų metai darbo net ir patyrusiems programuotojams.

Šiandien rinkoje dominuoja trys pagrindiniai varikliai, ir kiekvienas turi savo auditoriją:

Unity – turbūt populiariausias pasirinkimas tarp pradedančiųjų ir indie kūrėjų. Naudoja C# programavimo kalbą, turi milžinišką bendruomenę ir daugybę nemokamų pamokų. Tinka tiek 2D, tiek 3D žaidimams. Nemokama versija leidžia kurti žaidimus be jokių apribojimų, kol tavo pajamos neviršija tam tikros ribos. Trūkumas – paskutiniais metais Unity keitė licencijavimo sąlygas, ir tai sukėlė nemažai triukšmo bendruomenėje.

Godot – atviro kodo variklis, kuris pastaraisiais metais labai išaugo. Naudoja savo kalbą GDScript (labai panaši į Python) arba C#. Visiškai nemokamas, be jokių apribojimų. Puikiai tinka 2D žaidimams, 3D galimybės taip pat auga. Jei bijai, kad Unity vėl pakeis sąlygas, Godot – saugus pasirinkimas.

Unreal Engine – tai jau sunkioji artilerija. Naudoja C++ arba vizualinę Blueprint sistemą. Grafika – neįtikėtina, bet pradedantiesiems gali būti per sudėtinga. Geriau palikti šį variklį vėlesniam etapui.

Rekomendacija pradedančiajam: pasirink Godot arba Unity. Jei esi visiškas naujokas programavime – Godot su GDScript bus švelnesnis įėjimas. Jei jau moki šiek tiek programuoti ir nori platesnio darbo rinkos pritaikymo – Unity su C#.

Programavimas – kiek jo reikia ir ko mokytis

Čia daugelis sustoja. „Aš nemoku programuoti, tai žaidimų kūrimas ne man.” Klaidinga mintis. Bet ir kita kraštutinybė – „žaidimus galima kurti be jokio kodo” – taip pat netiksli.

Tiesa kažkur per vidurį. Paprastus žaidimus galima sukurti su minimaliu kodu, ypač naudojant Godot ar Unity vizualinius įrankius. Bet jei nori kažko daugiau nei „kvadratas juda per ekraną”, programavimo pagrindų išmokti tikrai verta.

Ko konkrečiai reikia mokytis:

  • Kintamieji ir duomenų tipai – kas yra sveikasis skaičius, tekstas, loginė reikšmė. Tai absoliutus pagrindas.
  • Sąlygos ir ciklai – if/else logika, for ir while ciklai. Su šituo jau galima padaryti daugumą žaidimo mechanikų.
  • Funkcijos – kaip suskaidyti kodą į mažesnes dalis, kad nesusipainioti.
  • Objektinis programavimas – klasės, objektai, paveldimumas. Tai jau šiek tiek sudėtingiau, bet žaidimų kūrimui labai svarbu.

Geriausi nemokamų resursų šaltiniai: freeCodeCamp YouTube kanale yra pilni kursai tiek Unity, tiek Godot. GDQuest – puikus kanalas Godot mokymosi. Brackeys – legendinis Unity kanalas, kuris nors ir sustabdė naujus video, turi šimtus labai kokybiškų pamokų.

Praktinis patarimas: nesimok programavimo atskirai nuo žaidimų kūrimo. Mokykis programuoti kurdamas žaidimą. Taip informacija įsisavinama daug greičiau, nes matai tiesioginį rezultatą.

Pirmasis projektas – kodėl jis turi būti mažas ir baigtas

Tai – svarbiausia šio straipsnio dalis. Klausyk atidžiai.

Dauguma žaidimų kūrėjų pradedančiųjų daro tą pačią klaidą: jie pradeda kurti savo svajonių žaidimą. Atvirą pasaulį su RPG elementais, procedūriniu generavimu, multiplayer galimybe ir unikaliu kovos sistema. Po dviejų savaičių projektas metamas, nes tampa aišku, kad tai – metų metų darbas.

Pirmasis projektas turi būti toks mažas, kad beveik gėda apie jį pasakoti. Rimtai. Štai keletas tinkamų pirmojo projekto idėjų:

  • Pong – dvi lazdelės ir kamuoliukas. Klasika, kurią galima sukurti per dieną.
  • Flappy Bird klonas – vienas mygtukas, kliūtys, rezultatas. Paprastas, bet moko daug.
  • Platformeris su vienu lygiu – veikėjas juda, šokinėja, pasiekia tikslą.
  • Galvosūkis su 5-10 lygių – kažkas panašaus į Sokoban.

Kodėl svarbu baigti? Nes baigimas – tai įgūdis. Daugelis žmonių moka pradėti projektus, bet nedaugelis moka juos užbaigti. Kiekvienas baigtas žaidimas – net ir pats paprasčiausias – suteikia nepakartojamą pasitenkinimo jausmą ir moko tūkstančio dalykų, kurių neišmoksi iš jokios pamokos.

Be to, baigtas žaidimas – tai kažkas, ką gali parodyti. Gali įkelti į itch.io (nemokama platforma indie žaidimams), gauti atsiliepimų, pasidžiaugti su draugais. Tai motyvuoja tęsti.

Grafika ir garsas – kai nesi dailininkas ar kompozitorius

Daugelis žmonių sustoja ties klausimu: „Bet aš nemoku piešti.” Ir tai – visiškai normalu. Dauguma žaidimų kūrėjų programuotojų nemoka piešti. Dauguma dailininkų nemoka programuoti. Todėl egzistuoja komandos.

Bet jei esi vienas ir kuriasi solo, yra keletas sprendimų:

Naudok nemokamus asset’us. OpenGameArt.org – didžiulis nemokamų grafinių elementų archyvas. Kenney.nl – vienas žmogus sukūrė šimtus nemokamų žaidimų asset’ų, kuriuos gali naudoti be jokių apribojimų. Unity ir Godot asset parduotuvėse taip pat yra nemokamų paketų.

Naudok placeholder grafiką. Pirmojo projekto metu grafika visiškai nesvarbi. Kvadratai, apskritimai, spalvotos dėžės – tai visiškai tinka prototipui. Pirmiausia padaryk, kad žaidimas veiktų. Grafiką galima pakeisti vėliau.

Išmok paprastą pikselių meną. Pikselių menas – tai vienas iš labiausiai prieinamų vizualinių stilių. Programos kaip Aseprite (mokama, bet nebrangi) ar Libresprite (nemokama alternatyva) leidžia kurti paprastus sprite’us net be dailininkiško talento. 16×16 ar 32×32 pikselių veikėją galima nupiešti per valandą.

Garso atžvilgiu situacija panaši. Freesound.org – didžiulė nemokamų garso efektų biblioteka. BFXR arba jsfxr – įrankiai, leidžiantys generuoti retro stiliaus garso efektus vienu mygtuko paspaudimu. Fondinei muzikai – OpenGameArt.org vėl ateina į pagalbą.

Žaidimų dizainas – tai ne tik grafika

Žaidimų dizainas – tai disciplina, apie kurią dažnai pamirštama kalbant apie techninius aspektus. Bet būtent čia sprendžiama, ar žaidimas bus įdomus, ar ne.

Žaidimų dizainas – tai atsakymas į klausimą: kodėl žaidėjas norės žaisti? Kas jį motyvuoja? Kas sukelia įtampą? Kas suteikia pasitenkinimą?

Keletas pagrindinių principų, kuriuos verta žinoti nuo pat pradžių:

Grįžtamasis ryšys (feedback) – žaidėjas turi žinoti, kad jo veiksmai turi poveikį. Kai veikėjas šokinėja, turi būti garsas. Kai priešas miršta, turi būti animacija. Kai surenkamas taškas, turi būti vizualinis signalas. Be grįžtamojo ryšio žaidimas jaučiasi „miręs”.

Progresija – žaidimas turi tapti sudėtingesnis laikui bėgant. Ne staigiai, ne per lėtai. Pirmasis lygis turi būti lengvas, kad žaidėjas suprastų taisykles. Paskutinis – iššūkis.

Aiškios taisyklės – žaidėjas turi intuityviai suprasti, ką gali ir ko negali daryti. Jei reikia skaityti instrukciją, kad suprastum, kaip žaisti – kažkas negerai.

Rekomenduojama literatūra: „The Art of Game Design” Jesse Schell – tai tikriausiai geriausia knyga apie žaidimų dizainą. Ji nėra techninė, bet keičia požiūrį į tai, kas daro žaidimą geru. Taip pat verta žiūrėti Game Maker’s Toolkit YouTube kanalą – ten analizuojami žaidimų dizaino sprendimai konkrečiuose žaidimuose.

Bendruomenė ir game jams – greičiausias mokymosi kelias

Vienas iš geriausių dalykų, kuriuos gali padaryti kaip pradedantysis žaidimų kūrėjas – dalyvauti game jam renginiuose. Game jam – tai žaidimų kūrimo maratonas, kurio metu per ribotą laiką (dažniausiai 48-72 valandas) reikia sukurti žaidimą pagal duotą temą.

Kodėl tai taip efektyvu? Pirma, ribotas laikas verčia priimti sprendimus ir baigti projektą. Negali svajoti apie tobulą žaidimą, kai turi tik 48 valandas. Antra, gauni tiesioginį atsiliepimą iš kitų dalyvių. Trečia, tai puiki galimybė susipažinti su kitais kūrėjais.

Populiariausi game jam renginiai:

  • Ludum Dare – vienas seniausių ir didžiausių. Vyksta kelis kartus per metus.
  • Global Game Jam – vyksta sausio mėnesį, yra ir fizinių vietų visame pasaulyje.
  • itch.io game jams – platformoje nuolat vyksta dešimtys mažesnių game jam renginių.

Bendruomenės atžvilgiu: Reddit turi puikias subreddits kaip r/gamedev ir r/godot. Discord serveriai – Godot ir Unity turi oficialius serverius su tūkstančiais narių, kur galima užduoti klausimus ir gauti pagalbą. Nebijokit klausti. Žaidimų kūrėjų bendruomenė paprastai yra labai draugiška pradedantiesiems.

Kai kvadratai tampa žaidimais – kelias į priekį

Žaidimų kūrimas – tai kelionė, o ne tikslas. Ir kaip kiekviena kelionė, ji prasideda nuo pirmojo žingsnio, kuris dažnai atrodo kvailai mažas. Kvadratas, kuris juda. Kamuoliukas, kuris atsimuša nuo sienos. Veikėjas, kuris šokinėja.

Bet štai kas nutinka po šešių mėnesių nuoseklaus darbo: tas kvadratas tampa veikėju su animacijomis. Kamuoliukas – žaidimo mechanika su rezultatų lentele. Šokinėjantis veikėjas – platformeris su penkiais lygiais, kurį gali atsisiųsti ir žaisti kiti žmonės.

Svarbiausia, ką reikia suprasti: kiekvienas profesionalus žaidimų kūrėjas kažkada pradėjo nuo nulio. Kiekvienas sukūrė siaubingus pirmuosius žaidimus, kurie veikė tik pusiau, atrodė bjauriai ir turėjo dešimtis klaidų. Tai – normali proceso dalis, ne nesėkmė.

Praktinis veiksmų planas, jei nori pradėti šiandien: parsisiųsk Godot (nemokama, ~60MB), surask GDQuest „Your First 2D Game” pamoką YouTube, ir per savaitgalį sukurk savo pirmąjį žaidimą. Jis bus blogas. Ir tai puiku. Nes antras bus šiek tiek geresnis. O dešimtas – jau kažkas, apie ką galėsi pasakoti su pasididžiavimu.

Technologijos šiandien leidžia bet kam kurti žaidimus. Įrankiai yra nemokami, pamokų – begalės, bendruomenė – atvira. Vienintelis dalykas, kurio reikia – pradėti. Ir ne rytoj.