Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML5][JS] Rożna prędkość gry
trollman
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.12.2012

Ostrzeżenie: (0%)
-----


Witam,
Mam problem, gdyż robie grę w html5 oraz javascript i płynność gry zalezy jakby od mocy komputera (z tego co zaobserwowałem)

Pętla gry wygląda tak:
  1. if (state)
  2. gLoop = setTimeout(GameLoop, 1000 / 60);
  3. };


i w GameLoop dziają różne akcje, jak nasłuchwianie klwiszy, rysowanie i renderowania grafiki itd...
Gdy grę uruchamiam na komputerze, chodzi płynniutko, ale gdy włącze ja (oczywiscie w tej samej przeglądarce) na starym laptopie gra chodzi jakby była na 10 fps'ach.

Da się temu jakoś zapobiec?

Ten post edytował trollman 9.12.2014, 13:29:35
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trollman
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.12.2012

Ostrzeżenie: (0%)
-----


trueblue
Tak słyszałem i zastosowałem taki kod

  1. window.requestAnimFrame = (function(){
  2. return window.requestAnimationFrame ||
  3. window.webkitRequestAnimationFrame ||
  4. window.mozRequestAnimationFrame ||
  5. function( callback ){
  6. window.setTimeout(callback, 1000 / 60);
  7. };
  8. })();
  9.  
  10. (function animloop(){
  11. requestAnimFrame(animloop);
  12. GameLoop();
  13. })();


Otrzymałem efekt wręcz przeciwny, gra tak przyspieszyła aż wydawało sie, że chodzi nienaturalnie jak przyspieszony film w stosunku do starego kodu, więc nie wiem czy to jest dobre?

PrinceOfPersia
, dzięki za radę, sprawdzę jak tylko wróce do domu.

I swoją drogą mam kolejne pytanie odnosnie gry, żeby nie towrzyc już nowego wątku.
Czy porpawne jest tworzenie gry na jednym canvasie? ... Obecnie tak mam bo też się spotkałem z takimi grami, ale niektórzy to rozdzielają. Tło na innym, bohater na innym a aktywne elementy otoczenia na innym.
(Pytam bo, chciałem też obrócić obrazek bohatera o 180 stopni i mozliwe jest tylko odwócenie całego canvasa a nie pojedyńczego img = new Image() )
Go to the top of the page
+Quote Post
PrinceOfPersia
post
Post #3





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


no tak, ale moje rozwiązanie z liczeniem "ile czasu upłynęło" nie rozwiąze ci problemów płynności a jedynie problemy z synchronizacją czasową. Bo bez tego jak będziesz miał 10 klatek na sekundę, postać będzie poruszać się 6 razy wolniej.

Cytat(trollman @ 10.12.2014, 08:22:18 ) *
Czy porpawne jest tworzenie gry na jednym canvasie? ... Obecnie tak mam bo też się spotkałem z takimi grami, ale niektórzy to rozdzielają. Tło na innym, bohater na innym a aktywne elementy otoczenia na innym.

Z innych powodów się to czasem rozdziela. coś na zasadzie warstw w Photoshopie się czasem robi. Jeśli tło jest statyczne, to wystarczy raz narysować na warstwie, i nie tracić mocy komputera na rysowanie tła od początku, tylko umieszcza się kilka canvasów żeby rysować tylko te elementy, które się ruszają, a statyczne tło na innym itp.

ale to jest optymalizacja, którą można dokonać, ale technicznie tak samo możesz korzystać z jednego canvasa i na nim wszystko rysować. Przykłady podał markuz.

EDIT:
aha, i możesz zmierzyć co ci zżera kompa. W Dev Toolsach Chrome masz audyty np. "ta i ta funkcja zajmuje ci tyle i tyle czasu".
możesz samemu liczyć też, np. spróbuj wykomentarzować jakiś kod i zobacz czy szybciej działa.itp.

Ten post edytował PrinceOfPersia 10.12.2014, 19:31:28
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 08:48