Optymalizacja rysowania w canvas

1

W skrócie piszę grę MMORPG opartą o canvas. Mapa składa się z tilów 32x32 px, a rozmiar to obecnie 4096x4096px. Mam już zrobiony rdzeń, więc chcę się upewnić, że projekt ma jakąkolwiek przyszłość. Jeśli gra ma się zacinać, a serwer zatykać przy kilku graczach, to mija się to z celem.

Klient ma jeden canvas 544x544px, na którym jest wszystko rysowane. Oczywiście pierwsza sztuczka optymalizacyjna, która przychodzi do głowy, to rysowanie tylko elementów w polu widzenia gracza i to wykonałem. Nie za bardzo wiem jakie inne techniki można tu jeszcze zastosować. Canvas nie wspiera akceleracji graficznej, więc jest do tego zaprzęgnięty tylko procesor i z tego powodu jest to dosyć obciążające.

0

Pytanie - czy potrzebujesz optymalizacji? Czy masz problemy wydajnościowe? (

0

@LukeJL: Nie jestem w 100% pewny, bo problemy mogą być związane z socketami. Na pewno przy uruchomieniu dwóch kart, a jest to często potrzebne, gdy coś chcę sprawdzić, to praktycznie freezuje kompa. Nie wiem, czy to akurat akceptowalne zachowanie. Możliwe, że faktycznie jest to związane z socketami, ale tego będę pewny jak uda mi się całkowicie oddzielić liczenie koordynatów na serwerze od reprezentacji ruchu w kliencie.

1

Weź pod uwagę, że nieaktywne karty mają ograniczenia na timeoutach (nie mogą być krótsze niż 1000ms). Jeśli się na nich opierasz to mogą się dziać dziwne rzeczy.

Tutaj prosty przykład: https://jsfiddle.net/br8taygq/

Edit: ulepszyłem przykład

0

@szatkus: O i tutaj wychodzą moje braki, bo o tym, że inaczej działają nieaktywne karty wiedziałem, ale nie znałem szczegółów. Co do samego problemu, to źle napisałem. Chodzi mi oczywiście o dwa osobne okna przeglądarki tak, żebym widział dwa ekrany gry. Sprawdziłem Twój przykład w tym kontekście i widzę, że nie ma tego problemu na karcie, która nie jest sfocusowana. Czyli faktycznie może być to problem z wydajnością. Poszukam i odpalę w dwóch oknach jakieś gry z neta. Zobaczę ja będzie z obciążeniem.

0

@szafran98: szczerze mówiąc to tworząc projekty komercyjne nigdy się o to nie potknąłem. Po prostu przeczytałem kiedyś o tym i zostało. Potem grając w jakieś gry przeglądarkowe w HTML5 zauważyłem, że faktycznie tak jest. Oczywiście problem nie występuje jak się odpali stronę w nowym oknie.

Jeśli to nie jest tajemnica państwowa to możesz wrzucić linka do gry tutaj i sobie możemy popatrzeć co zmula.

0

@szatkus: żadna tajemnica, ale na serwerze mam starszą wersję, a u siebie rozgrzebaną, więc jutro na spokojnie ogarnę i będę wołać.

1

plus profiler (np. ten z Dev Toolsów z Chrome) może ci pokazać, co powoduje spadek wydajności. Czasami człowiek sobie zakłada nie wiadomo co.

Nie za bardzo wiem jakie inne techniki można tu jeszcze zastosować.

Weź się zapytaj za kilka miesięcy. Bo mam rozgrzebany projekt (w zasadzie ciągle robię go od nowa z przerwami), który też zakłada podobną tile mapę. Natomiast zamierzam to zrobić wydajnie (ale single player), więc będę wiedział wtedy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1