delta denbora
Edozein ikusentzunezko konsumitzen ari garela pantailan bistaratzen zaizkigun irudiak mugimenduan ikusteko, fotogramen edo frame
en arteko abiadura azkarra eta konstantea izatea nahi dugu. Fotogramak pantailan agertuko zaizkigun abiadurari FPS
deitzen zaio (ingelesez Frames Per Second, fotogramak segunduko). Gaur egun ohikoena 60 FPS izatea da, hau da, segundu oro 60 irudi agertzen zaikigula aurrean.
Commandos jokoarekin izugarri disfrutatu nuen bere garaian, ordu pila bat pasatu (ge)nituen aritzen. Lezon nere lehengusuarekin pasatu nituen orduak ditut batez ere gogoan, hori bai dela joko batekin gustora aritzea!! Honelako itxura genuela uste dut jokoan ari ginen bitartean (dramatizazioa):

Urte batzuk beranduago, berriz aritu nahi izan nuen, ordenagailu berri eta potenteago batean. Martxan paratu eta ezin nintzen aritu, hori da hori abiadura zutena pertsonaia guztiek! Hemen sartzen da gure delta
laguna eta erranen nuke Commandos
egin zutenean ez zutela kontutan hartu.
Zer da delta
denbora hori?
Erabili izan ditudan hainbat framework-etan dt
(delta time) edo delta
izeneko aldagai bat aurkitu izan dut update
funtzioan, aplikazioa eguneratzen den aldi oro, alegia. Hasieran zer zen ez banekien ere, behin ikasita, zein garrantzitsua den ohartu naiz.
Aplikazio bat eguneratzen den aldi batetik hurrengora pasatu den denbora tartea da delta
denbora. Jokoetan edo pelikuletan frame
arteko denbora bezala uler dezakegu. 60Hz-eko maiztasunean exekutatutako aplikazioek segundu oro 60 frame bistaratuko dituzte, beraz, frame horien artean 1/60 segundu igaroko dira, 0.016 segundu. Gailu zahar eta mantso batek ez badu potentzia nahikorik segundu oro 60 frame prozesatu eta bistaratzeko, demagun 30 ‘bakarrik’ bistaratu ditzakeela segunduko. Frame bakoitzarentzat 0.033 (1/30) segundu izanen lituzke.
Adibide sinple bat: joku bateko pertsonaia pixel bat mugitu nahi dugu frame bakoitzeko. Taulan segundu batean mugituko dena ageri da.
- maiztasuna = zenbat frame bistaratzen diren segunduko
- fdesp = frame bakoitzeko pixel desplazamendua
- sdesp = segundu bakoitzeko pixel desplazamendua
maiztasuna | fdesp | sdesp |
---|---|---|
30Hz | 1 px/frame | 30 px/s |
60Hz | 1 px/frame | 60 px/s |
30Hz-ra dabilen gailuan, segundu batean 30 pixel desplazatuko da gure pertsonaia. 60Hz-ra dabilen gailu batean berriz, 60 pixel. Eta momentu batean gailua mantsotzen bada eta segundu batean 40 eta hurrengoan 53 frame bistaratzen baditu? Gure aplikazioa erritmo finkoan nahi dugu!
Gure aplikazioaren abiadura gailuaren abiadurarekiko independente izateko erabiltzen da delta
, grafikoen mugimenduak balio honekin biderkatuz. Aitzineko adibidearekin jarraiki, aipatutako pixel hori delta
balioarekin biderkatzen badugu, berdin du zein den gailuaren abiadura, segunduaren bukaeran, distantzia bera desplazatu izanen da gure pertsonaia.
maiztasuna | delta | fdesp * delta | sdesp |
---|---|---|---|
30Hz | 0.033 | (1 * 0.033)px/frame | 1 px/s |
60Hz | 0.016 | (1 * 0.016)px/frame | 1 px/s |

Nahi dugun abiadura lortzeko pixel bakar hori doitu beharko dugu, baino gailuaren abiadura edozein izanda ere, badakigu denbora tarte berdinean distantzia berdina mugituko dela.
Hemendik aurrera eginen dudan edozein joko edo aplikaziotan dudarik gabe kontutan izanen dudan aliatu bat izanen da delta
.