Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Ohjelmanopeuden tasaaminen

tgunner [26.10.2006 22:59:03]

#

Sain tuossa pari päivää sitten valmiiksi pienen rotozoomerin C:llä SDL-kirjastoa käyttäen. Olin iloissani ja hihkuskelin siinä, mutta kun seuraavana päivänä testasin sitä kaverini koneella (joka on huomattavasti nopeampi kuin minun koneeni), pyöri kuva ruudulla aivan tajutonta nopeutta!

Nyt haluaisinkin tietää jotain keinoja FPS:n rajoittamiseen, jolla voisi saada ohjelman pyörimään myös muilla koneilla aivan "normaalisti". Vai pitääkö minun tehdä ohjelmaani jokin alkuikkuna, joka kysyy millainen tietokone käyttäjällä on? Tällaista oli muistaakseni vanhoissa DOS-peleissä. :-)

tejeez [26.10.2006 23:03:08]

#

Laita johonki muuttujaan SDL_GetTicks():n arvo alussa ja kasvata sitä joka framen jälkeen sillä määrällä millisekunteja kauanko haluut sen framen kestävän ja sitte oota aina siihen asti ja piirrä vasta sitte seuraava frame. Eli jotenkin

makkara=SDL_GetTicks();
for(;;) {
  ...rotozoom...
  makkara+=40; /*25fps*/
  while(SDL_GetTicks() < makkara);
}

Ainiin, tosiaan, ton whilen tilalle vois myös virittää ehkä SDL_Delayllä jotain..vaikka ahssu = makkara - SDL_GetTicks(); if(ahssu > 0) SDL_Delay(ahssu);

Blaze [26.10.2006 23:04:53]

#

https://www.ohjelmointiputka.net/keskustelu/13515-frameraten-asettaminen-ei-onnistu

tgunner [27.10.2006 00:05:26]

#

Äh, hiivatti. Täällähän oli valmis aihe tuosta, en huomannutkaan.

Grey [27.10.2006 07:27:55]

#

Voisin itsekin tässä vielä antaa pieniä vinkkejä pelin nopeussäätöjen suhteen. Muutkin toiminnot, kuin näytönpäivitys, kannattanee minusta pyrkiä tahdistamaan. Esim. olentojen tekoäly, ym. Vaikka niin että olennolla on maksimissaan sekunnin aikana tehdä 100 erilaista laskelmaa, kuten reitin laskeminen päämäärään, tai muuta.

Näin myöskään näytön päivitysnopeus ei vaikuta siihen miten nopeasti pelin olennot toimivat. Ruutu voi hyvinkin päivittyä vaikka 100-300 kertaa sekunnissa, ilman että olennot ja muut menevät sellaista vauhtia. Tai että päivitys tippuu 20 fps:n tienoilla riittämättömän konetehon vuoksi. Miten sitten tälläinen saadaan aikaan, noh, säädä olennot ja muut menemään tiettyä nopeutta, mutta näytön anna päivittyä maksimivauhtiaan. Jos pelimaailman nopeus on vakio, ei tarvitse piirtonopeutta enää säätää, kuin vain piirtää aina kun mahdollista..

-Grey-

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta