Kas tie fizikos varikliai ir kodėl be jų žaidimai būtų nuobodūs
Prisiminkite pirmąjį kartą, kai žaisdami kompiuterinį žaidimą pastebėjote, kaip realistiškai nukrito daiktas arba kaip natūraliai personažas nuslydo nuo šlaito. Už visų šių judėjimų slypi fizikos varikliai – programinės įrangos komponentai, kurie simuliuoja realaus pasaulio fiziką virtualioje aplinkoje. Tai tarsi nematomos rankos, kurios skaičiuoja, kaip objektai turėtų elgtis pagal gravitacijos, trinties, masės ir kitų fizinių dėsnių principus.
Fizikos variklis iš esmės yra matematinių algoritmų rinkinys, kuris nuolat perskaičiuoja objektų pozicijas, greičius ir jų sąveikas. Kiekviename žaidimo kadre (o tai vyksta 30-60 ar net daugiau kartų per sekundę) variklis turi patikrinti, ar objektai nesusiduria, kaip jie reaguoja į jėgas, ar laikosi paviršiaus ir dar daugybę kitų dalykų. Skamba sudėtingai? Taip ir yra, tačiau būtent dėl to šiuolaikiniai žaidimai atrodo ir jaučiasi tokie tikroviški.
Nuo paprasčiausių atsimušimų iki sudėtingų simuliacijų
Ankstyvieji kompiuteriniai žaidimai turėjo labai primityvią fiziką. Paimkime klasikinį „Pong” – ten kamuoliukas tiesiog atsimušdavo nuo raketės pagal paprasčiausią kampą. Jokių sudėtingų skaičiavimų, jokios masės ar energijos išsaugojimo. Tačiau tai veikė, nes žaidimas to ir nereikalavo.
Devintojo dešimtmečio pabaigoje ir dešimtojo pradžioje situacija ėmė keistis. Žaidimai kaip „Prince of Persia” jau turėjo kur kas sudėtingesnę fiziką – personažas galėjo kristi, užsigauti nuo aukščio, stumti dėžes. Visa tai buvo suprogramuota rankomis, kiekvienam atvejui atskirai. Programuotojai rašė konkrečias taisykles: jei personažas krenta ilgiau nei pusę sekundės, jis patiria žalą. Jei stumia dėžę, ji juda tam tikru greičiu. Niekas neskaičiavo tikrosios fizikos – tiesiog buvo sukurtos iliuzijos, kurios atrodė pakankamai įtikinamai.
Tikrasis lūžis įvyko maždaug 2000-aisiais, kai pradėjo atsirasti specializuoti fizikos varikliai. „Half-Life 2” su savo Havok varikliu 2004 metais tiesiog pritrenkė žaidėjus. Staiga galėjai matyti, kaip objektai krenta ir riedasi natūraliai, kaip medinės dėžės skyla į šipulius, kaip vandens statinės rieda laiptais žemyn. Tai nebuvo iš anksto suprogramuota – fizikos variklis realiu laiku skaičiavo, kaip visa tai turėtų elgtis.
Kaip fizikos variklis iš tikrųjų dirba po gaubtu
Pagrindinis fizikos variklio darbas prasideda nuo to, kas vadinamas „collision detection” – susidūrimų aptikimu. Variklis turi nuolat tikrinti, ar objektai nesusiliečia. Tačiau įsivaizduokite, kiek skaičiavimų reikėtų, jei tikrintumėte kiekvieną žaidimo objektą su kiekvienu kitu objektu! Žaidime su tūkstančiu objektų tai būtų beveik pusė milijono patikrinimų kiekviename kadre.
Todėl fizikos varikliai naudoja gudrius triukus. Vienas populiariausių – tai vadinamieji „bounding volumes”. Vietoj to, kad tikrintų sudėtingą 3D modelį su tūkstančiais daugiakampių, variklis apgaubia objektą paprastu geometriniu kūnu – rutuliu, cilindru ar stačiakampiu gretasienių. Tada tikrina šiuos paprastus kūnus. Jei jie nesusiduria, tikrai nesusiduria ir patys objektai. Jei susiduria – tik tada atliekamas tikslesnis patikrinimas.
Kai susidūrimas aptinkamas, prasideda tikrasis fizikos skaičiavimas. Variklis apskaičiuoja, kokia jėga veikė, kokiu kampu objektai susidūrė, kokios jų masės. Remiantis šiais duomenimis, nusprendžiama, kaip objektai turėtų reaguoti. Sunkus objektas, trenkęs į lengvą, beveik nepakeis savo trajektorijos, o lengvas nuskriės tolyn. Du vienodos masės objektai atšoks vienas nuo kito. Visa tai apskaičiuojama pagal Niutono dėsnius ir kitus fizikos principus.
Populiariausi fizikos varikliai rinkoje
Šiandien yra keletas dominuojančių fizikos variklių, kuriuos naudoja didžioji dauguma žaidimų kūrėjų. PhysX, kurį dabar valdo NVIDIA, yra vienas labiausiai paplitusių. Jį rasite „Borderlands”, „Batman: Arkham” serijoje ir šimtuose kitų žaidimų. PhysX ypač garsėja savo galimybe panaudoti vaizdo plokštės procesorių (GPU) fizikos skaičiavimams, kas leidžia simuliuoti daug daugiau objektų vienu metu.
Havok yra kitas veteranas, kuris buvo naudojamas tokiuose hittuose kaip „Skyrim”, „Dark Souls”, „Halo” serija. Havok ypač geras tvarkantis sudėtingas ragdoll animacijas – tai kai personažo kūnas miršta ar krenta ir jo galūnės juda kaip tikros. Matėte, kaip „Skyrim” milžinai nusviedžia jūsų personažą per pusę kambario? Tai Havok darbas.
Bullet yra atvirojo kodo fizikos variklis, kurį mėgsta nepriklausomi kūrėjai. Nors jis gal nėra toks galingas kaip komerciniai sprendimai, jis visiškai nemokamas ir turi aktyvią bendruomenę. Jį naudoja tokie žaidimai kaip „Grand Theft Auto V” ir daugelis virtualios realybės projektų.
Pats Unity žaidimų variklis dabar naudoja Unity Physics and Havok Physics for Unity, o Unreal Engine turi integruotą Chaos fizikos sistemą, kuri palaipsniui keičia senąjį PhysX. Chaos ypač įspūdingas tvarkydamas didelio masto destrukcijas – galite sugriauti visą pastatą ir kiekvienas plytų gabalas elgsis realistiškai.
Minkštųjų kūnų fizika ir kiti sudėtingi dalykai
Daugelis fizikos variklių puikiai tvarko kietuosius objektus – akmenų, metalinių dėžių, mašinų. Bet kaip dėl audinio, vandens, dūmų ar žmogaus kūno? Čia prasideda tikrasis iššūkis.
Minkštųjų kūnų fizika (soft body physics) bando simuliuoti objektus, kurie gali deformuotis. Įsivaizduokite pagalvę – kai ją spaudžiate, ji keičia formą, bet išlaikydama savo tūrį. Tai reikalauja daug sudėtingesnių skaičiavimų nei paprastas kietasis objektas. Kiekvienas objekto taškas turi būti skaičiuojamas atskirai, atsižvelgiant į jo ryšius su gretimais taškais.
Skysčių simuliacija yra dar sudėtingesnė. Tikras vandens elgesys yra neįtikėtinai kompleksiškas – jis teka, purslų, kuria bangas, gali būti skirtingo klampumo. Daugelis žaidimų apeina šią problemą naudodami iš anksto sukurtas animacijas arba supaprastintus efektus. Tačiau kai kurie žaidimai, ypač simuliatoriai, bando tikrai skaičiuoti skysčių fiziką. Tai reikalauja milžiniškų kompiuterinių resursų.
Drabužių fizika yra dar viena sudėtinga sritis. Kaip versti herojaus apsiaustą realistiškai plazdėti vėjyje? Kaip užtikrinti, kad jis nepereitų pro kūną? Daugelis šiuolaikinių žaidimų naudoja specialias drabužių simuliacijos sistemas, kurios dirba kartu su pagrindiniu fizikos varikliu. Kartais rezultatai būna puikūs, kartais – juokingai netikroviški.
Kai fizika tampa žaidimo mechanika
Kai kurie žaidimai paverčia fiziką ne tik vizualiniu elementu, bet ir pagrindine žaidimo mechanika. „Portal” serija yra puikus pavyzdys – visas žaidimas sukasi apie fizikos dėsnių manipuliavimą per portalus. Impulso išsaugojimas, gravitacija, greitis – visa tai tampa galvosūkių sprendimo įrankiais.
„Angry Birds” paprastumas slypi būtent fizikoje. Jūs tiesiog šaunate paukščius į konstrukcijas, o fizikos variklis pasirūpina visu likusiu. Kaip griūva bokštai, kaip riedasi kamuoliai, kaip sprogsta objektai – visa tai apskaičiuoja fizika. Žaidimas būtų neįmanomas be patikimo fizikos variklio.
„BeamNG.drive” yra automobilių simuliatorius, kuris visiškai paremtas pažangia fizika. Kiekvienas automobilio komponentas yra simuliuojamas atskirai – rėmas, pakaba, variklis, ratai. Kai sudaužote automobilį, matote realistišką deformaciją, nes fizikos variklis tikrai skaičiuoja, kaip metalas linksta ir trūkinėja. Tai reikalauja milžiniškų skaičiavimo galių, bet rezultatas yra stulbinantis.
Optimizacija arba kaip nesunaikinti kompiuterio
Fizikos skaičiavimai yra itin resursų reikalaujantys. Kūrėjai nuolat turi balansuoti tarp realizmo ir našumo. Štai keletas triukų, kuriuos jie naudoja.
Pirma, ne visi objektai skaičiuojami vienodai dažnai. Objektai, kurie toli nuo žaidėjo arba nejuda, gali būti atnaujinami rečiau. Jei dėžė ramiai guli kampe ir niekas jos neliečia, kam ją skaičiuoti 60 kartų per sekundę? Fizikos variklis gali ją „užmigdyti” ir pažadinti tik tada, kai kas nors su ja sąveikaus.
Antra, naudojami skirtingo tikslumo modeliai. Tolimi objektai gali naudoti labai supaprastintą fiziką – pavyzdžiui, tik paprastą stačiakampį vietoj sudėtingos formos. Kai žaidėjas priartėja, įsijungia tikslesnė fizika.
Trečia, kai kurie efektai yra tiesiog apgaulė. Matote, kaip šimtai šovinių tūkų krenta ant žemės po šaudynių? Gali būti, kad iš tikrųjų fiziškai skaičiuojami tik keletas artimiausių, o kiti yra tiesiog vizualūs efektai be tikros fizikos.
Dar vienas įdomus metodas – fizikos skaičiavimas žemesniu dažniu nei vaizdo atvaizdavimas. Žaidimas gali rodyti 60 kadrų per sekundę, bet fizika atnaujinama tik 30 kartų. Tarpiniai kadrai yra interpoliuojami, ir žmogaus akis paprastai to nepastebės.
Ateities fizika – kur link judame
Fizikos varikliai nuolat tobulėja. Viena didžiausių tendencijų – vis didesnis GPU panaudojimas. Šiuolaikinės vaizdo plokštės gali atlikti tūkstančius skaičiavimų lygiagrečiai, kas idealiai tinka fizikos simuliacijoms. NVIDIA PhysX ir AMD TressFX jau dabar leidžia simuliuoti tūkstančius objektų ar plaukų sruogų realiu laiku.
Mašininis mokymasis taip pat pradeda skverbtis į fizikos simuliacijas. Vietoj to, kad skaičiuotų kiekvieną fizikos dėsnį, dirbtinis intelektas gali „išmokti”, kaip objektai turėtų elgtis, stebėdamas tikrus duomenis. Tai gali būti daug greitesnis būdas gauti realistišką rezultatą, nors ir ne visada fiziškai tikslų.
Debesų technologijos gali pakeisti žaidimą. Įsivaizduokite, jei sudėtingi fizikos skaičiavimai vyktų galingose serverio mašinose, o jūsų kompiuteris tik gautų rezultatus. Tai leistų net silpniems įrenginiams rodyti neįtikėtinai sudėtingą fiziką.
Virtualios ir papildytos realybės žaidimai kelia naujus iššūkius fizikos varikliams. Kai jūsų kūnas yra valdiklis, fizika turi būti dar tikslesnė ir greičiau reaguojanti. Jokio vėlavimo negalima toleruoti, nes tai sukelia pykinimą ir sugriauna įsitraukimo jausmą.
Kodėl kartais fizika sugenda ir kaip tai tampa juokinga
Kiekvienas, žaidęs pakankamai žaidimų, yra matęs fizikos „glitchų”. Personažas, kuris staiga išlekia į kosmosą. Automobilis, kuris pradeda nekontroliuojamai suktis. Objektai, kurie virpa ir šokinėja, negalėdami nuspręsti, kur turėtų būti.
Dažniausiai tai nutinka dėl vadinamųjų „edge cases” – situacijų, kurių kūrėjai nenumatė. Pavyzdžiui, kai du objektai atsiduria tiksliai tame pačiame taške. Fizikos variklis bando juos atskirti, bet dėl skaičiavimo klaidų jie vėl susiduria, ir procesas kartojasi begalę kartų. Rezultatas – objektai virpa arba staiga gauna milžinišką energijos kiekį ir išlekia.
Kita problema – pernelyg didelės jėgos. Kai fizikos variklis skaičiuoja susidūrimą, jis turi nustatyti, kokia jėga reikalinga objektus atskirti. Jei skaičiavimai šiek tiek suklysta, ši jėga gali būti neįtikėtinai didelė. Štai kodėl kartais lengvas prisilietimas prie objekto gali jį nušauti kaip iš patrankos.
Įdomu tai, kad kai kurie žaidimai šiuos glitchus paverčia savotiškomis žaidimo savybėmis. „Skyrim” bendruomenė mėgsta eksperimentuoti su fizikos keistenybėmis. „Goat Simulator” net tyčia palieka ir skatina fizikos absurdus, nes tai tampa dalimi žaidimo humoro.
Kai virtualus pasaulis tampa tikroviškesnis už tikrovę
Fizikos varikliai šiandien yra pasiekę tokį lygį, kad kartais virtualūs pasauliai jaučiasi tikroviškesni nei tikroji realybė. Tai gali skambėti keistai, bet pagalvokite – tikrame gyvenime jūs nematote, kaip kiekvienas smulkus daiktas krenta ir riedasi. Jūsų smegenys filtruoja didžiąją dalį šios informacijos kaip nereikšmingą.
Žaidimuose kūrėjai gali pabrėžti šiuos fizikos aspektus, padarydami juos labiau pastebimus ir patrauklius. Objektai gali kristi šiek tiek lėčiau, kad matytumėte jų judėjimą. Susidūrimai gali būti šiek tiek dramatizuoti. Rezultatas – pasaulis, kuris jaučiasi „teisingas”, net jei nėra visiškai tikslus.
Geriausieji fizikos varikliai yra tie, kurių nepastebite. Kai žaidžiate ir tiesiog jaučiate, kad viskas elgiasi taip, kaip turėtų, kai neturite sustoti ir pagalvoti „ar tai realu?” – tada fizikos variklis atlieka savo darbą puikiai. Jis tampa nematomu tiltu tarp jūsų ir virtualaus pasaulio, leidžiančiu jums tiesiog žaisti ir mėgautis patirtimi.
Fizikos varikliai tęsia evoliuciją, tampantys vis galingesni ir sudėtingesni. Nuo paprastų atsimušimų iki sudėtingų skysčių simuliacijų, jie transformavo žaidimus iš paprastų pikselių šokčiojimo į gyvas, kvėpuojančias virtualias realybes. Ir kas svarbiausia – jie tęsia tobulėjimą, žadėdami dar įspūdingesnius pasaulius ateityje.




