Eulerrek dauka zuk bideojokoa ez gainditzearen errua

0
575

Ezagutzen ez dutenentzat, Quake urte dezente dauzkan bideo-jokoen segida bat da, lehen pertsonako tiro-jokoena. Deskripzio hori nahikoa ez dutenentzat, bestalde, jakin horrelako jokoetan jokalariak pantailan esku bat soilik ikusten duela, arma bat eutsiz eta pantailaren erdira apuntatuz, eta bere begiz ikusiko balu bezala mugitzen dela inguruko eszenarioan.

Bideojoko honek daukan fisikaren simulazio motorra Id Tech izenekoa da, bere edizio ezberdinetako bat. Motor honen bertsioa ezberdinak garaiko beste hainbat bideojokok ere erabili zuten, besteak beste Wolfenstein-ek. Baina harrigarri gerta daiteke Quake 1 jokoak daukan akats bat:

Horrelako bideo-jokoetan; batik bat, korri, jauzi, izaki ezberdinak akabatu eta abar egiteko sortutakoetan; simulatu beharreko funtsezko gai bat izango da mundu hartako grabitatearena (gure lurrekoa edo bestelakoa izan daitekeena). Nola programatuko zenuke grabitatea bideo-joko batetan? Grabitatea azelerazio balore zehatza da, eta konstantea. Beraz, nola kalkulatuko zenuke kokapena edozein unetan bat-bateko azeleraziotik hasita?

Agian, honelako zerbait otuko zaizue:

Abiaduran jarriko dugu arreta, honelakoa izango baita edozein unetan: aurreko uneko abiadura + grabitatea bider uneak iraundako tartea. Tarte hau txikia izan beharko da, segundo hamarren edo ehuneko batzuena.

Honi deritzogu Eulerren integrazio numerikoa. Bere balio nagusia azeleraziotik kokapenera igarotzea da. Kokapena, goiko formulari jarraiki, grafikoan jartzen badugu, honakoa lortuko dugu:

Hala ere, hau guztiz okerra da. Bilatzen dugun grafiko ideala honako hau baita:

Gainera, formula okerrean denbora tartea (dt) handiegia bada edo ordenagailuak segundoko prozesatu ditzakeen irudiak gutxi badira, Doom jokoaren protagonistak jauzi ezberdinak egiten dituela ikusiko dugu. Hori dela eta, ordenagailu batzuetan gainditu zitekeen bideo-jokoa eta beste batzuetan ez!

Denbora tartea handiagoa denean, beraz, motzagoa izango da jauzia. Zentzugabekeria hau era errazean konpondu daiteke:

Eta honela, lortzen dugun grafikoa bilatzen hari garen optimoaren parekoa izango da, hots, akatsak zuzenduta. Optimoak marraren azpian sortzen duen azalera eta gure formula berriak sortzen duenak berdinak direlako.

Euler-en integrazioa, beraz, ibalio. Izantegrazioa numero bidez egin beharrik ez izateko era sinpleena da. Erabiltzen da oraindik ere, baina ez du prozesu guztientzat tez, berari buruz gehien erabiltzen den esaera “only idiots use Euler integration” dugu.

Bideo-joko batetan integraziorako algoritmo bat ezarri nahi dugunean, hainbat ezaugarri izan beharko ditugu kontutan, batez ere:

    -Zehaztasuna
-Energia mantentzea
-Egonkortasuna

Euler-ek arazo larria dauka zehaztasunarekin eta ez du energiarik mantentzen. Hala ere, haren ordezko aukera erabilienak, Runge-Kutta4 algoritmoak, ere ez du energia mantenduko. Hori Verlet, Newmark eta Gauss-Runge-Kutta bezalako metodoek lortuko dute, eta ingeleraz symplectic bezala ezagutuko dira.

Izatez, gaur egungo bideo-joko eta simulagailu gehienek Physx bezalako motorrak erabil ditzakete, energia mantentzen duten algoritmoekin.

Geurera itzuliz, ikus dezagun zer egiten duten RK4 eta Verlet algoritmoek.

Lehenak ezartzeko zaila den algoritmoaren ospea dauka (batez ere industria eta helburu jakin batzuentzat):

Runge-Kuntta-ren ekuazio nagusia y(n+1) = y(n) + k1, k2, k3 eta k4-k osatutako gehikuntza bat da, azken lauen formulak goiko argazkian agertzen direlarik. Koefiziente hauek analizatzen hari garen funtzioaren emaitzak izango dira, t eta y-ren balore ezberdinentzat.

Verlet-i buruz, berriz, zer? Matematikari honen ustez, abiaduraren integrazioa ondorengoa da:

Algoritmo honek ez dauka fraps per second-arekiko dependentziarik, hemen erakusten den bezala, Euler eta Verlet alderatuz.

Azkenik, ez al zaizkizue metodo guztiak oso antzekoak iruditu? Horrela dira eta. Euler eta Verlet Runge-Kutta metodo familiaren barne dira; zehazki, RK1 eta RK2 metodoak.

Euler bideo-jokoetako edozein azken aurkaria baina okerragoa zen!

Gustuko? Hartu unetxo bat eta lagundu Julian Estevez eta Hatza.eus Patreon-en!

Leave a Reply

Gune honek Akismet erabiltzen du zaborra murrizteko. Ikusi nola prozesatzen diren zure erantzunen datuak.