Keresés

Új hozzászólás Aktív témák

  • martonx
    veterán

    Sziasztok!

    Korábban már kérdezősködtem itt párszor, pl. a játékok sebességét illetően, és ajánlották itt nekem a SetInterval() helyett a requestAnimationFrame() függvény használatát.
    Azóta használom is ezt, hiszen az én 4 GB RAM-mal és kb. 3 GHz-es CPU-val rendelkező számítógépemen jól és simán futnak a javascriptes játékaim.
    Viszont most kipróbáltam egyiket egy, az enyémnél lényegesen erősebb és gyorsabb számítógépen (pl. 8 GB RAM van benne, tehát kétszerese az enyémnek) és elhűlve tapasztaltam, hogy a játékom lassabban fut, mint a saját gépemen. Pedig egy gagyi kis Pong-szerű, labdapattogtatós játékról van szó.
    Miért van ilyen sebességbeli különbség, ráadásul a gyengébb gép javára? És hogyan lehetne megoldani, hogy mindenütt egyforma sebességgel fusson?

    a requestAnimation frame a képernyőfrissítéshez igazodik, nem a gép sebességéhez. Simán lehet, hogy a te gyengébb gépednek 120Hz-es kijelzője van, a másik erősebb gépnek meg 60Hz-es. Ebben az esetben nálad 120fps-t fog eredményezni a requestAnimationFrame, a másik gépen meg 60fps-t.
    A SetInterval felejtős, teljesen megbízhatatlan.
    requestAnimationframe-nél így tudod fixálni az fps-t, hogy mindenhol azonos sebességet adjon: https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe
    Nyilván fixálni csak lefelé tudod, azaz 60fps-től lefelé.

  • sztanozs
    veterán

    Sziasztok!

    Korábban már kérdezősködtem itt párszor, pl. a játékok sebességét illetően, és ajánlották itt nekem a SetInterval() helyett a requestAnimationFrame() függvény használatát.
    Azóta használom is ezt, hiszen az én 4 GB RAM-mal és kb. 3 GHz-es CPU-val rendelkező számítógépemen jól és simán futnak a javascriptes játékaim.
    Viszont most kipróbáltam egyiket egy, az enyémnél lényegesen erősebb és gyorsabb számítógépen (pl. 8 GB RAM van benne, tehát kétszerese az enyémnek) és elhűlve tapasztaltam, hogy a játékom lassabban fut, mint a saját gépemen. Pedig egy gagyi kis Pong-szerű, labdapattogtatós játékról van szó.
    Miért van ilyen sebességbeli különbség, ráadásul a gyengébb gép javára? És hogyan lehetne megoldani, hogy mindenütt egyforma sebességgel fusson?

    Szia!

    A requestAnimationFrame lényege, hogy mindenhol ugyanolyan sebességgel fusson. Az, hogy ott lassabban futott vsz csak valami lokális ok miatt lehetett (pl sok tab, máshol is használta valami aktívan a grafikus drivert, vagy valami egyéb). Az is lehet, hogy nem volt lassabb, csak voltak olyan dolgok, ami miatt más volt a limitáló és amiatt tűnt lassabbnak.
    írasd ki a képernyő szélére az fps-t, és látni fogod, hogy tényleg lassabb-e.

Új hozzászólás Aktív témák