2010-09-09 5 views
10

Jestem zainteresowany tworzeniem gry przy użyciu html i javascript. Zastanawiam się, czy naprawdę jest to o wiele szybsze rysowanie w html5 i javascriptie niż w przypadku obrazów i div w html i javascript.Jaka jest różnica prędkości między rysowaniem na płótnie html5 a html i javascript?

Przykład gry za pomocą HTML i JavaScript, który działa ładnie: http://scrabb.ly/

Przykład gry przy użyciu HTML5 i JavaScript, który działa ładnie: http://htmlchess.sourceforge.net/demo/example.html

Odpowiedz

13

Uruchomiłem kilka liczb na drawi w formacie HTML ng versus Rysunek na płótnie. Mógłbym napisać ogromny post na temat zalet każdego z nich, ale podam niektóre z istotnych wyników moich testów, które rozważę dla twojego konkretnego zastosowania:

Wykonałem strony testowe Canvas i HTML, oba miały ruchome "węzły". Węzły Canvas to obiekty, które utworzyłem i śledzone w JavaScript. Węzły HTML były <div> s, chociaż mogły również być <image> lub <video>.

Do każdego z dwóch testów dodałem 100 000 węzłów. Zrobili zupełnie inaczej:

Zakładka testu HTML trwała wiecznie, aby załadować (czas nieco ponad 5 minut, chrome poprosiło o zabicie strony za pierwszym razem). Menedżer zadań Chrome twierdzi, że karta zajmuje 168 MB. Zajmuje to 12-13% czasu procesora, gdy patrzę na niego, 0%, gdy nie patrzę.

Zakładka Canvas wczytuje się w ciągu jednej sekundy i zajmuje 30 MB. Zajmuje to również 13% czasu procesora przez cały czas, niezależnie od tego, czy ktoś na niego patrzy.

Przeciąganie strony HTML przebiega gładko, co prawdopodobnie jest oczekiwane, ponieważ obecna konfiguracja polega na przerysowaniu WSZYSTKIEGO co 30 milisekund w teście Canvas. Istnieje wiele optymalizacji, które można zastosować do Canvas. (unieważnienie płótna jest najłatwiejsze, także wycinanie regionów, selektywne przerysowywanie itp.zależy tylko od tego, jak bardzo chcesz implementować)

Wideo na stronie HTML, podczas gdy ja nie poruszam obiektów, jest w rzeczywistości idealnie gładkie.

Na płótnie wideo jest zawsze wolne, ponieważ stale przerysowuję, ponieważ wyłączyłem unieważnianie rysunku. Istnieje oczywiście wiele możliwości poprawy.

Samo rysowanie/ładowanie to daleko szybciej na płótnie i ma o wiele więcej miejsca na optymalizacje (np. Wykluczanie rzeczy poza ekranem jest bardzo łatwe).

+3

Czy masz wersję demo, którą możesz podać jako przykład? – Steropes

2

Żadna z tych gier wymaga HTML 5. scrabb. ly robi wszystko z prostokątnymi przedmiotami, które doskonale się trzymają, a gra w szachy nie używa nawet animacji. Jeśli jest to rodzaj gry, którą planujesz zbudować, to to, czego używasz, powinno być rozstrzygane na podstawie znajomości i kompatybilności, a nie wydajności.

3

Szybkie jak w szybszym renderowaniu lub szybszym rozwoju? Powiedziałbym, że odpowiedzią na oba są płótna HTML5. Chociaż jest to całkiem nowa technologia, a nie jest jeszcze obsługiwana przez wszystkie popularne przeglądarki, ma już znacznie więcej funkcji niż w przypadku używania DIV z normalnym HTML. Robiłem już wcześniej rysunki z divami i było to bardzo frustrujące, gdy dostałem coś do roboty. Dzięki płótnie masz już ramkę do wykonania najbardziej podstawowego rysunku. Co więcej, html5 jest nowy. Nawet jeśli jest to relatywnie wolniejsze niż rysowanie za pomocą elementów div (co prawdopodobnie nie jest), wydajność ta wzrośnie wraz ze wzrostem wydajności i adopcji. Nie mogę powiedzieć tego samego dla rysunku z divami.

Plusy użyciem HTML5 Canvas:

  • Podobny do innych ram ciągnienia (OpenGL, DirectX)
  • będzie nadal wzrastać w wydajności i funkcjonalności
  • może stać przyspieszane sprzętowo w przyszłości
  • Możliwe ramy 3D w przyszłości