baktrius / nhexonline

MIT License
1 stars 1 forks source link

Army Compresser-Optimalizer #31

Open Liir6676 opened 1 month ago

Liir6676 commented 1 month ago

Program do konwertowania wyeksportowanej w zipa armii #22 . Konwertowałby przyduże wieloelementowe armie, w jeden optymalny jpg.

Byłby on szczególnie przydatny do optymalizowania nowych armii oficjalnych.

Liir6676 commented 2 weeks ago

Tutaj pragnę dodać, iż bardzo przyjemną możliwością byłoby, gdyby łączenie grafik w jedną i generowanie współrzędnych odbywało się osobno od kompresji, ponieważ może zdarzyć się tak, że w przyszłości będzie zapotrzebowanie, na grafiki wyższej jakości, natomiast łączenie pliku w jeden zawsze będzie dobrym rozwiązaniem z tego co mi wiadomo.

Pytanie. Może jest możliwe, by łączenie w jeden plik odbywało się zawsze i pasywnie w tle? Użytkownicy nawet by nie wiedzieli. Możnaby wówczas zoptymalizować w ten sposób również wszystkie armie fanowskie. Jak by to mogło działać:

baktrius commented 2 weeks ago

Pomysł z transparentną optymalizacją armii jest fajny (nawet nie muszą to być dwie armie, tylko jedna, która ma podwójne grafiki: inne wyświetlają się na developmencie inne w grze). Niemniej może prowadzić do problemu, który negatywnie wpłynie na cały serwis i nie będzie to oczywiste. Operacja optymalizacji armii jest relatywnie droga (bez testów ciężko mi ocenić jak bardzo). 1) Dlatego naiwna strategia stwórz zoptymalizowaną kopię za każdym razem gdy coś się zmieni w armii raczej nie zadziała (gość dodaje armię token po tokenie, a serwis za każdym razem ją optymalizuje). 2) Można by optymalizować armię na żądanie (za pierwszym razem gdy ktoś o stworzy nową wersję na stole). To jest całkiem łatwe, ale możliwe, że za pierwszym razem będzie musiał dłużej zaczekać (i tak pewnie będzie to autor armii). Wydaje się to całkiem sensowna opcja. 3) Ostatecznie można próbować dodawać optymalizację armii do kolejki zadań w tle ale to będzie trudne do zrobienia. 4) W kontraście przycisk zoptymalizuj armię pewnie będzie używany znacząco rzadziej niż dowolna z powyższych aptymalizacji co będzie mniej obciążać serwer. Dlatego według mnie opcje 2) albo 4) są osiągalne. Problem z 2) jest taki, że problemy z wydajnością nie są oczywiste i mogą się pojawić dużo później niż rozwiązanie zostanie wprowadzone.

Ostatecznie "utajnienie" całego procesu optymalizacji sprawi, że wszelkie bugi w tym procesie będą nieoczywiste dla użytkownika (sytuacja grafiki mam dobre, ale w grze już nie). W przypadku osobnego przycisku oczywistym będzie gdzie się psuje.

baktrius commented 2 weeks ago

Z drugiej strony wymuszona optymalizacja każdej armii może znacząco poprawić działanie serwisu (przez zmniejszenie ilości danych do wysyłania klientom). Ostatecznie: ciężko stwierdzić.

Liir6676 commented 2 weeks ago

Zachęcam do wymuszenia optymalizacji. Jeśli coś (nie wiadomo co) nie będzie działać użytkownikom jak np. "sytuacja grafiki mam dobre, ale w grze już nie", to zapewne zgłoszą to, nie rozumiejąc, co za tym stoi, a ważne, żeby to osoba odbierająca zgłoszenie wiedziała. Jako administrator będę w stanie monitorować takie zgłoszenia i osobiście testować grafiki, przy okazji wrzucania swoich armii, chociażby. Poza tym odpowiedzialny admin daje linki do miejsc, w których można zgłaszać błędy. Jeśli błąd zgłoszony byłby zatem tutaj w issues, od razu byłoby wiadomo, o co chodzi.

No i widzę jeszcze jeden problem. Czy gdy dojdzie już do podmiany sliced version na połączone grafiki version, to czy na stołach graczy, na których znajdowała się dana armia, nie dojdzie przypadkiem do zjawiska zaniknięcia grafik? Jeśli nie- bądź, tak, ale da się zrobić tak, by problem ten znikł, a lagi z Ad. 2 byłyby nieprzyjemne (załóżmy, że optymalizacja = łączenie grafik, bez kompresji, którą wolałbym zostawić w rękach graczy), wówczas wygrywa dla mnie opcja z Ad. 3 Jeżeli problem zniknięcia grafik jest nie do obejścia, lub i lagi Ad. 2 wynikające z łączenia byłyby niezauważalne, a implementacja tego pomysłu okazałaby się łatwiejsza, wówczas wygrywa dla mnie opcja z Ad. 2