Skocz do zawartości

Ranking

Popularna zawartość

Treść z najwyższą reputacją w 15.03.2022 uwzględniając wszystkie działy

  1. Konrad-GM

    Optymalizacja Światła

    Tak szczerze powiedziawszy, bez sensownego dostępu do wielowątkowości, to byłoby to zapewne trudne do osiągnięcia - ale jakby mocno skupić się na optymalizowaniu, to może nawet w miarę sensowny klatkarz można uzyskać. Kilka propozycji jak można zoptymalizować rysowanie fog of war: Nie aktualizuj wszystkich jednostek, ale tylko komórki, które są zajęte przez jednostki. Do tego możesz wykorzystać "słownik", np. tworzysz loopa po liście monitor_list tak jak do tej pory, ale przy okazji zapisujesz w której to komórce jednostka rysowała swój fog of war i np. przed shroud_clear_position może sprawdzić, czy tej komórki już nie liczyłeś, taki pseudo kod: var dict = new Dictionary for unit of unit_list: if dict.has(key: unit.x + '_' + unit.y)): continue shroud_clear_position(unit.x, unit.y) dict.set(key: unit.x + '_' + unit.y, value: unit.shroud_radius) jeżeli każda jednostka ma własny shroud_radius, to możesz przed shroud_clear_position zapełnić nową listę ale tylko z jednostkami o największym shroud_radius na daną komórkę. Dodatkowo możesz zoptymalizować samą funkcję shroud_clear_position - https://www.redblobgames.com/grids/circle-drawing/ polecam Nie modyfikuj tablicy shroud_grid jednostkami poza ekranem, monitor_list powinien posiadać tylko jednostki, której pierścień fog of war może być widoczny. Możesz spróbować też brać tylko wycinek z listy monitor_list i co kolejna klatka aktualizować tylko część jednostek - jeżeli aktualizacja tablicy będzie się działa np. 15x na sekundę to raczej nikt nawet nie zauważy zastosowanego triku. Jeżeli jeszcze na coś wpadnę to chętnie się podzielę pomysłami.
    1 punkt
  2. gnysek

    Optymalizacja Światła

    A załączałeś profilowanie w debuggerze? Ono całkiem sporo mówi: I teraz najśmieszniej, bo jak zmieniłem draw_rectangle na draw_sprite, to udało mi się uzyskać 60 FPS, ale to wciąż słabiutko. To by trzeba jakoś zoptymalizować, na zasadzie sprawdzania całych stref gdzie ta mgła jest, a gdzie jej nie ma (np. obszar 128x128px) i wtedy malować za jednym zamachem większe czarne prostokąty. No i nie aktualizować co klatkę wszystkich pozycji. Albo zwiększyć rozdzielczość mgły, żeby nie było aż 8000 komórek na raz na ekranie.
    1 punkt
Ten Ranking jest ustawiony na Warszawa/GMT+01:00
×
×
  • Dodaj nową pozycję...