Wpis z mikrobloga

#unity3d #gamedev

Mam ścieżkę powstałą przy pomocy algorytmu A* w Update()
długość ścieżki wynosi ponad 50 jednostek. Updatuje się gdy mysza najedzie na nowy kafel (tak musi być);
FPS spadają niemiłosiernie. czy istnieje jakis sposób aby to ogarnac ?
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@pr0t3r: Nie wykonuj tyle kodu podczas jednej klatki (unity przechodzi do następnej klatki dopiero jak wykona wszystkie update w poprzedniej). Wrzuć to w Coroutine i co ileś tam pętli daj yield, wtedy nastepna klatka sie załaduje i tam będą wykonywane dalej obliczenia.
  • Odpowiedz
Skoro masz kafle, to może wrzuć do najprostszego drzewka, aby ograniczyć ilość iteracji, np. quadtree chociaż dla A* może być problem ?
  • Odpowiedz
@pr0t3r: Jak bardzo skomplikowana jest ścieżka, że na długości 50 kafli wydajność tak bardzo Ci spada? Sprawdzałem niedawno, po zaprzęgnięciu jakiejś randomowej biblioteki do liczenia A* w 3D i ścieżka była liczona <2ms (na klatkę masz ~16ms dla 60 FPS), więc coś tu jest nie tak z liczeniem ścieżki.
Ewentualnie, jeśli masz taką możliwość i będzie pasować do Twojego projektu, sprawdź tę bibliotekę: arongranberg.com/astar/
  • Odpowiedz