Problemy z silnikiem, obserwacje i wnioski

Zaczęty przez sympatyk, Styczeń 04, 2023, 01:59:33 PM

Poprzedni wątek - Następny wątek

Alberich

#15
Dzięki za podpowiedź jak to zmienić.

Tutaj (pliki w załączniku) moje małe testy pierwszej misji kampanii W92, według Suite ustawienia AI to 0  Default. Rozgrywałem i na wersji DD (w którą źle się gra, tak jakby program działał z spowolnieniem, poza tym ) i na wersji SDL2. Porównaj sobie zachowanie jednostek piechoty północnokoreańskiej.

EDIT: zmieniłem ustawienie AI na 3.0 i rozegrałem tę samą misję na SDL2. Było o wiele trudniej niż w poprzednich podejściach, BV ledwo osiągnięte. Natarcie nieprzyjaciela bardzo konkretne, jego siły od razu koncentrują się na marszu w celu zdobycia Seulu. Dołączam pliki do załączników.

Co o tym myślisz, Sympatyk?

Chyba też być warto świadomym czym jest Direct Draw: https://en.wikipedia.org/wiki/DirectDraw i SDL: https://pl.wikipedia.org/wiki/Simple_DirectMedia_Layer.

I kolejny błąd, który już kiedyś wspominałem na forum choć nie robiłem dokładnej analizy. Bodajże na dwa lata temu, trzeba by było znaleźć ten post. Parabellum grając na 0% uzyskał 59 punktów, a ja grając na 50% dokładnie 60. Niestety gradacja punktów, a zmniejszenie//zwiększenie prestiżu jest zaburzone i nie działa. Jeśli pamięć mnie nie myli to szczególnie widać to powyżej 250%.

sympatyk

Wersja DD jest wolniejsza w działaniu zwłaszcza z efektami pirotechnicznymi
Jednak tu zajmowałem się - jej poprawnością z poprzednimi wersjami silników we współpracy z Al 0,91
Jak dla mnie w tym aspekcie jest ok --> działa tak samo jak było w latach 2000 -2016

Jeśli chodzi o Al 2,0 i następny to był on rozwijany na wer. silnika SDL
I takie połączenie należało by stosować --> jeśli chce się grać w sposób zbliżony do tego jak gra była "wydana"
Wiec Al 0,91 + silnik DD oraz Al 2,0 i Al 3,0 + silnik SDL
Oczywiście jak ktoś chce inaczej - jego wola ...

Otrzymałem od Luisa odpowiedz dzisiaj:
CytatI conclude that, when moving the graphic engine to SDL2, I surely had some changes already made in AI, as I was developing a new AI version at that time and I surely forgot to undo those changes before releasing it.

But there is nothing I can do now, if the DD version works fine with 0.91, keep using it for campaigns made for DD executable.
With my current life environment, I cannot risk modifying the code now to replicate 0.91 from DD version into SDL version.
co na polski Google mówi

CytatDochodzę do wniosku, że przenosząc silnik graficzny na SDL2, z pewnością miałem już wprowadzone pewne zmiany w AI, ponieważ opracowywałem w tym czasie nową wersję AI i na pewno zapomniałem cofnąć te zmiany przed jej wydaniem.

Ale nic nie mogę teraz zrobić, jeśli wersja DD działa dobrze z 0.91, używaj jej dalej w kampaniach tworzonych dla pliku wykonywalnego DD.
W moim obecnym środowisku życia nie mogę teraz ryzykować modyfikacji kodu w celu replikacji wersji 0.91 z wersji DD do wersji SDL.
To jest potwierdzenie testów ..

CytatI kolejny błąd, który już kiedyś wspominałem na forum choć nie robiłem dokładnej analizy. Bodajże na dwa lata temu, trzeba by było znaleźć ten post. Parabellum grając na 0% uzyskał 59 punktów, a ja grając na 50% dokładnie 60.

Tu bym powiedział - nie do końca --> do obliczania punktów brana jest skala trudności (0%, 50% ...) oraz straty poniesione (wartość utraconych jednostek w stosunku do wartości armii) i coś jeszcze? -- teraz już dokładnie nie pamiętam ...

Teraz co do działań Al 2,0 z silnikami SDL - spróbuję opisać na podstawie testów --> dlaczego nie za każdym razem arty + p-lot poruszają się jak byśmy oczekiwali


sympatyk

Obecnie rozważymy zachowanie AL 2,0 z silnikami SDL

Testuję na kampanii G14
Te same jednostki co poprzednio czołg, piechota, P-lot (ckm), dwie artylerie
Jedną ustawiam wyznaczając jej OH



Rozgrywam jedną turę i sprawdzamy
Artyleria osiągnęła OH, czołg i piechota udały się w podróż , druga arty i ckm grzeją miejsce ..



Wracamy do ustawień Piechota ma być przewodnikiem dla drugiej artylerii



Jeszcze jedno ustawienie dla ckm(p-lot) --> tu ma podążać za drugą artylerią



Wracamy do gry - testujemy - wszystko oprócz ckm się poruszyło



Aby mieć pewność jeszcze jedna runda  Ckm niestety jest oporny
Co powoduje, że nie słucha ustawień?



Ustawmy jeszcze raz - tym razem bez możliwości "zwolnienia" w odległości 1hex



Gramy od początku - wszystko się ruszyło tylko nie ckm - ale sprawdźmy dalej



Jednak działa - ckm też porusza się



Zobaczmy dla porządku następną turę - stoi w miejscu - jednak nie zerwał więzi



Następna tura - ckm jedzie



Widzimy jak ważne jest dobranie transportu, oraz jak istotne ustawienie "uwolnienia"
W pierwszej próbie, po rozegranej turze ckm znalazł się w odległości 1hex(mimo, że się nie poruszał) i został spełniony warunek "uwolnienia" --> więc trzeba na to uważać

sympatyk

Cytat: Alberich w Styczeń 17, 2023, 05:45:52 AM

Tutaj (pliki w załączniku) moje małe testy pierwszej misji kampanii W92, według Suite ustawienia AI to 0  Default. Rozgrywałem i na wersji DD (w którą źle się gra, tak jakby program działał z spowolnieniem, poza tym ) i na wersji SDL2. Porównaj sobie zachowanie jednostek piechoty północnokoreańskiej.

Co o tym myślisz, Sympatyk?

Popatrzyłem na testy - DD działa prawidłowo
Wszystkie jednostki poruszają się
Część jedzie w kierunku VH, część po dostrzeżeniu po lewej stronie mapy wroga(czyli Ciebie) zostaje tam skierowanych
Ta część pogubi się - ale później będzie chciała przejść przez rzekę - w stronę VH
Pamiętaj, że to bardzo stara inteligencja (0,91)

Natomiast z silnikiem SDL nie wszystkie jednostki się poruszają
Część robi bałagan i nie wie gdzie ma iść

Natomiast Al 3,0 - widzę, że bardzo mocno kieruje się do VH -( ma ustawienie agresywne)
Czy przy ustawieniu defensywnym, by też tak grał?

Jaro

Zwróć proszę uwagę na:
Obj. from unit - oznacza, że jednostka B będzie kopiowała OH ze wskazanej jednostki A w każdej rundzie. Jeśli ta wskazana jednostka A osiągnie OH to  jednostka B przestanie podążać do OH bo jednostka A nie ma już przypisanego OH a zatem i B nie będzie miała OH. Jeżeli jednostka A zmieni OH to i jednostka B zmieni OH (choć gra chyba nie ustawia sama OH). Jeżeli jednostka A straci OH to A i B będą się poruszały dalej niezależnie.

follow unit 's pos (def: inherit OH) oznacza, że jednostka B będzie podążała za jednostką A. W praktyce oznacza to, że będzie się starała zająć miejsce na mapie jak najbliżej jednostki A. Oznacza to również że jednostka B nie przestanie podążać za A nawet jeśli jednostka A osiągnie OH i dalej będzie poruszana przez AI.

Zwolnienie OH ma sens, jeśli odległość od jednostki do OH jest większa niż ilość heksów do zwolnienia OH. W praktyce używamy do wyznaczenia kierunku marszu a nie do zajęcia odpowiedniego hexu.
Czyli chcemy podprowadzić grupę w rejon walk i dalej zdać się na AI.

Podejrzyj sobie kampanię B04. Tam ustawiałem aliantom właśnie te kwestie, aby całe grupy podążały w odpowiednie miejsca i w miarę razem.

PS
Jak zauważyłeś, dobranie transportu może być kluczowe, aby jednostki się nie wysforowały do przodu lub nie zostały w tyle. Czasami może być potrzebne opóźnienie o rundę szybkich jednostek, bo i tak dogonią grupę przed punktem docelowym.
Pozdrawiam,
Jaro
------------------------------------------------------
Repozytorium plików instalacyjnych gry:
Dropbox: https://www.dropbox.com/sh/z4l7rs71sxk1jc6/AAD8v6sMojApzyD4NG3IFK4ca?dl=0
OneDrive: https://1drv.ms/f/s!Am2aTZH9AOcoanwyUg8_mMB5lwI

Alberich

#20
Mam prośbę. Wydzielmy wszystkie posty związane z ostatnio omawianymi rzeczami do nowego tematu np. o nazwie Problemy z silnikiem, obserwacje i wnioski dla porządku.
Zrealizowane

Cytat: sympatyk w Styczeń 17, 2023, 01:32:20 PM

CytatI kolejny błąd, który już kiedyś wspominałem na forum choć nie robiłem dokładnej analizy. Bodajże na dwa lata temu, trzeba by było znaleźć ten post. Parabellum grając na 0% uzyskał 59 punktów, a ja grając na 50% dokładnie 60.

Tu bym powiedział - nie do końca --> do obliczania punktów brana jest skala trudności (0%, 50% ...) oraz straty poniesione (wartość utraconych jednostek w stosunku do wartości armii) i coś jeszcze? -- teraz już dokładnie nie pamiętam ...

Najpierw będzie post o prestige.

Z tego co czytałem to był stary algorytm wyznaczania punktów, w którym starty się wliczały ale dawały to niewielką różnicę w punktach, do 10 w górę czy dół. Bardziej się liczyło w ile tur osiągnięto zwycięstwo i poziom ustawienia prestige. Nowy algorytm nie jest dokładnie znany.

Ponownie przeprowadziłem testy. Wybrałem pierwszą misję z kampanii G35, raz, że jest szybka, dwa warunkiem zwycięstwa jest utrzymanie VH (3=BV, 2=V, 1=TV) więc dla każdego podejścia będą te same identyczne dane wejściowe i wyjściowe. Wyłączyłem również AI. Przez wszystkie testy na różnych ustawieniach wykonywałem te same ruchy i w ogóle żadna jednostka czy strony P1 czy P2 nie wykonywała akcji walki. Liczyło się tylko przejęcie VH (w takich samych warunkach) i poziom ustawienia prestige - by od tego sprawdzać punkty.

Sprawdziłem też i upewniłem się, że wersja DD i SDL2 liczą tak samo punkty. Testuję na wersji OpenGen 0.93.5.0 * 16 Jul 2022 , SDL2.

Zmienny poziom prestige gracza oraz stały dla komputera, a otrzymane punkty za misję:

000 - 100 - 60, BV
025 - 100 - 60, BV
050 - 100 - 60, BV
075 - 100 - 56, BV
100 - 100 - 50, BV
125 - 100 - 48, BV
150 - 100 - 46, BV
175 - 100 - 44, BV
200 - 100 - 42, BV
225 - 100 - 40, BV
250 - 100 - 40, BV
275 - 100 - 40, BV
300 - 100 - 40, BV
325 - 100 - 40, BV
350 - 100 - 40, BV
375 - 100 - 40, BV
400 - 100 - 40, BV
425 - 100 - 40, BV
450 - 100 - 40, BV
475 - 100 - 40, BV
500 - 100 - 40, BV




Punkty za misję w zależności od ustawienia poziomu prestige komputera, poziom prestige gracza stały równy 100:

100 - 000 - 40, BV
100 - 025 - 40, BV
100 - 050 - 40, BV
100 - 075 - 42, BV
100 - 100 - 50, BV
100 - 125 - 53, BV
100 - 150 - 56, BV
100 - 175 - 59, BV
100 - 200 - 60, BV
100 - 225 - 60, BV
100 - 250 - 60, BV
100 - 275 - 60, BV
100 - 300 - 60, BV
100 - 325 - 60, BV
100 - 350 - 60, BV
100 - 375 - 60, BV
100 - 400 - 60, BV
100 - 425 - 60, BV
100 - 450 - 60, BV
100 - 475 - 60, BV
100 - 500 - 60, BV




Ilość maksymalnych punktów można uzyskać na takim ustawieniu:

000 - 500 - 70, BV


Różne rodzaje zwycięstw, BV, V, TV:

000 - 100 - 60, BV
000 - 100 - 40, V
000 - 100 - 20, TV

100 - 100 - 50, BV
100 - 100 - 30, V
100 - 100 - 10, TV


WNIOSKI:


  • różnica punktów między BV, V, TV zgadza się i wynosi 20 między różnymi rodzajami zwycięstw
  • przy zmiennym poziomie prestige gracza i stałym komputera w pewnym momencie (od 225) odejmowanie punktów się kończy i funkcja staje się stała (do 500)
  • podobnie jest w przypadku, gdy prestige gracza stały, a komputera jest zmienny, wtedy kończy się dodawanie (od 200) i funkcja jests stała (do 500)
  • identyczna stałość jest w obu przypadkach gdy schodzimy poniżej lub równe 50
  • jedyne sensowne zmiany są w granicach od 75 do 200

Więc nieważne czy zagrasz na np. 300 czy 500 prestige dla gracza i tak dostaniesz podobną ilość punktów.

Alberich

#21
Cytat: sympatyk w Styczeń 17, 2023, 08:24:54 PM
Popatrzyłem na testy - DD działa prawidłowo
Wszystkie jednostki poruszają się
Część jedzie w kierunku VH, część po dostrzeżeniu po lewej stronie mapy wroga(czyli Ciebie) zostaje tam skierowanych
Ta część pogubi się - ale później będzie chciała przejść przez rzekę - w stronę VH
Pamiętaj, że to bardzo stara inteligencja (0,91)

Natomiast z silnikiem SDL nie wszystkie jednostki się poruszają
Część robi bałagan i nie wie gdzie ma iść

Natomiast Al 3,0 - widzę, że bardzo mocno kieruje się do VH -( ma ustawienie agresywne)
Czy przy ustawieniu defensywnym, by też tak grał?

W chwili gdy komputer zaczyna swoją pierwszą turę nie widzi moich jednostek na zachodzie bo je ewakuuje zostawiając tylko ckm, który robi zasadzkę. Podejrzewam, że AI z powodu obecności VH w Koum-ni będzie kierować część sił w tym kierunku - chodzi o starszeństwo jednostek piechoty (Uxx) i która będzie wykonywać pierwszy ruch. U19, U20 - w tej formacji pierwsze się ruszają, natomiast U30 na heksie (3,12) dopiero potem dokonuje ruchu i zdobywa VH. Dopiero jak te jednostki zobaczą jednostki gracza to komputer kieruje inne.



Więc wydaje mi się, że problem z silnikiem i zachowaniem jest większy i nie tylko ogranicza się do artylerii, która jest oczywistym przypadkiem. Inne jest trudniej zaobserwować.

Tak, na AI 3.0 komputer jest bardzo agresywny, kieruje prawie wszystko do Seulu, zostawiając tylko po jednej jednostce piechoty na zdobyte VH. Co do ustawienia defensywnego nie wiem jak będzie się zachowywać. Zawsze można rozgrywać kampanię na 3.0 i obserwować zachowanie, może tak zrobię od RG 2023.




Tutaj zamieszczę opis moich obserwacji:

WERSJA AI 0.91 - TURY 2,3,6,7

W początkowych turach (1, 2 screen) komputer koncentruje się zniszczeniu jednostek, które widzi. O ile na wschodnim kierunku atakuje wzdłuż drogi, to na zachodnim odcinku próbuje (2, 3 screen) przez iść przez wzgórza i przez rzekę. W końcu pod koniec bitwy te oddziały docierają do Seulu (4 screen).









WERSJA AI 2.0 - TURY 2,3,6,12

Odcinek wschodni przebiega podobnie, z różnicą taką, że artyleria się nie rusza. Po stronie zachodniej znów komputer kieruje się na wzgórza (1,  2 screen). Ale coś się dzieje i przez kolejne tury do końca scenariusza (3, 4 screen) te kilka oddziałów piechoty wykonują ruchy tylko w pobliżu tego wniesienia, tak jakby się zapętliły i straciły ścieżkę. W wyniku tego obrona Seulu jest bardzo prosta (5 screen).











WERSJA AI - TURY 2,3,6,12

Tutaj komputer wykonuje bardziej sensowniejsze ruchy, od razu po stronie zachodniej kieruje część oddziałów przez drogę i most (1, 2 screen). Nawet potrafi zaatakować początkowe jednostki gracza i cofnąć, wrócić się na drogę niż iść przez wzgórza w porównaniu do 0.91. Tylko 3 jednostki omijają wzgórze i idą terenem clear (2 screen), również zaskakujący jest atak piechoty ze Kaesong - nie spodziewałem się tego zupełnie po rozegraniu na wcześniejszych wersjach AI. Zgrupowanie idzie sukcesywnie i bez problemów (3 screen) by osiągnąć Seul (4 screen), gdzie walki o utrzymanie VH były bardzo ciężkie.








Parabellum

Cytat: Alberich w Styczeń 18, 2023, 05:49:55 AM
...

Zmienny poziom prestige gracza oraz stały dla komputera, a otrzymane punkty za misję:

000 - 100 - 60, BV
025 - 100 - 60, BV
050 - 100 - 60, BV
075 - 100 - 56, BV
100 - 100 - 50, BV
125 - 100 - 48, BV
150 - 100 - 46, BV
175 - 100 - 44, BV
200 - 100 - 42, BV
225 - 100 - 40, BV
250 - 100 - 40, BV
275 - 100 - 40, BV
300 - 100 - 40, BV
325 - 100 - 40, BV
350 - 100 - 40, BV
375 - 100 - 40, BV
400 - 100 - 40, BV
425 - 100 - 40, BV
450 - 100 - 40, BV
475 - 100 - 40, BV
500 - 100 - 40, BV

...
Wielkie dzięki za test. Wynik jest otrzeźwiający i pozbawia mnie złudzeń, że dostaję szczególnie dużo punktów misji przy 0% prestiżu  >:(.

Alberich

Uwagi odnoszą się do kampanii W92 w Efiflu Gustlika, która została przeze mnie dwukrotnie rozegrana, raz na wersji SDL2 z ustawionym AI 3.0 (ustawienia scenariuszy i kampanii), a drugi raz na wersji DD z ustawionym AI 0.91 (ustawienia scenariuszy i kampanii).

Najważniejsze obserwacje poczynione na AI 3.0:


  • komputer nie próbuje atakować przez rzeki albo rzadko to robi próbując posuwać się głównie w kierunku mostów i przez nie nacierać (prawdopodobnie drogi są dla niego priorytetem) - tymczasem na wersji 0.91 wręcz odwrotnie, gdzie głównie preferuję metodą "siłową", nieważne czy rzeka czy obszar górski to komputer musi tak przemieścić swoje jednostki
  • ostrzelana artyleria, która straciła przynajmniej połowę stanów nie wykonuje żadnego ruchu podczas tury komputera (konkretnie nie strzelała choć mogła) - na 0.91 też zdarzały się takie przypadki
  • jednostki piechoty nie wykonują żadnej agresywnej akcji prawdopodobnie z przyczyn przewagi (widocznej?) drugiej strony - podobnie jak na 0.91
  • lotnictwo komputera nie lata dobrze, często nie podejmowało akcji ofensywnych (kwestia przewagi w powietrzu?), były przypadki gdy myśliwce nie eskortowały bombowców - podobnie jak na 0.91, ale odniosłem wrażenie że tam lotnictwo trochę lepiej działało
  • przy defensywnym ustawieniu komputer ściąga część jednostek w kierunku VH - podobnie jak na 0.91
  • artyleria się porusza tak jak na 0.91

W ogólnym rozrachunku wersja prawdopodobnie AI 3.0 sobie lepiej radzi niż wcześniejsze wersje, choć ma mniejsze czy czasem większe problemy. Grając w pierwszy scenariusz z kampanii W38 byłem zaskoczony jak zmiana AI znacząco zmieniła trudność misji, a ruchy strony przeciwnej wydały mi się bardziej skoordynowane niż wcześniej. Zaskoczeniem też było, że komputer postanowił eskortować barki desantowe nie pozwalając przy tym by były bezkarne niszczone przez okręty podwodne.

Alberich

#24
Związku z kampanią D17, którą dosyć błyskawicznie przeszedłem w ostatnie kilka dni pojawiło się u mnie pytanie wynikające z obserwacji AI wersji 3.0 oraz z doświadczeniem z tej kampanii na wcześniejszej wersji AI.

Poprzednio przez całą kampanię (ale nie tylko w niej tylko w innych z wcześniejszą wersją AI) przeciwnik praktycznie zawsze atakował moje jednostki nawet wiedząc, że wszystkie zostaną zniszczone lub poważnie uszkodzone przez ogień artyleryjski. Oczywiście odbijało się na doświadczeniu artylerii, ale także wyczerpuje jej zapasy co może być przez komputer wykorzystane do przełamania.

Na wersji AI 3.0 natomiast często unika tego typu rozwiązania prawdopodobnie gdy widzi czy wie, że poniesie zbyt duże straty, np. przez artylerie. Wtedy zwykle nie wykonuje ataku, a tylko przesuwa jednostki (prawdopodobnie by obejść obronę). Gdy jednak nie ma tej pewności to nadal potrafi atakować falami daną pozycję. Gdy się znajdzie w zasięgu artylerii (często na granicy jej zasięgu) to też ponosi straty.

Które rozwiązanie jest lepsze?

Zsamot

#25
Pytanie, czy AI ma przetrwać ileś tur i walczyć jak najdłużej, czy walczyć agresywnie, co potem skutkuje, że po odparciu kolosalnych akcji mamy już spokój do końca scenariusza, chyba, że damy średnią ilość jednostek na początek, a potem AI dostanie posiłki, by spokojnie je wprowadzać od akcji?

Efekt potem jest taki, że jak gramy na 100% i więcej nie mamy problemów i dajemy radę, a jak niżej to jest potem masakrycznie.
http://opengeneral.pl/
Allah jest wielki ale B-52 też jest duży.
Jesteśmy na FB:
https://www.facebook.com/groups/140111696051369

Jaro

Nie ma tu jednoznacznej odpowiedzi. Najważniejsze jest aby autor scenariusza wiedział jak zachowuje się AI. W pierwszym przypadku przy odpowiednio dużych siłach wroga może on osiągnąć sukces, wyczerpać amunicję i zadać poważne straty naszym jednostkom. Przy mniejszych siłach całkowicie się wykrwawi i po kilku turach nasze jednostki mogą przejść do natarcia i być może nie będą przez nikogo więcej zatrzymane. W drugim przypadku siły nieprzyjaciela mogą przez wiele tur nas obchodzić a my będziemy strzelać z artylerii i zajmie nam to zdecydowanie więcej czasu żeby ich wybić niż w pierwszym przypadku. W pierwszym przypadku nasza artyleria strzela do każdej atakującej jednostki a więc wielokrotnie w trakcie tury a w drugim przypadku artyleria strzela tylko raz. Stąd ilość zniszczonych jednostek zdecydowanie zależy od zachowania przeciwnika. Nie oznacza to, że jedna czy druga taktyka przeciwnika jest lepsza. Wszystko zależy od tego jak zaprojektował rozgrywkę jej autor.
Pozdrawiam,
Jaro
------------------------------------------------------
Repozytorium plików instalacyjnych gry:
Dropbox: https://www.dropbox.com/sh/z4l7rs71sxk1jc6/AAD8v6sMojApzyD4NG3IFK4ca?dl=0
OneDrive: https://1drv.ms/f/s!Am2aTZH9AOcoanwyUg8_mMB5lwI

sympatyk

 :good
Do tego właśnie się wszystko sprowadza - autor zaprojektował rozgrywkę i przetestował --> chcemy, aby warunki te nie uległy zmianie( poprzez nowy silnik, efil itp ...)
A tak właśnie było w przypadku kampanii zrobionych dla Al 0,91 --> silniki SDL nie mają prawidłowo wpisanego Al 0,91 --> więc rozgrywka nie zawsze było po myśli autora (tak jak była na początku) >:D

Alberich

Da się jakoś z poziomu suite wymusić atakowanie/szturmowanie, a nie z powodu AI jednostki się tylko przesuwały unikając walki?

Jaro

Możesz ustawić jednostki na agresywne lub fearless. Ale jaki będzie efekt to tylko testy pokażą.
Pozdrawiam,
Jaro
------------------------------------------------------
Repozytorium plików instalacyjnych gry:
Dropbox: https://www.dropbox.com/sh/z4l7rs71sxk1jc6/AAD8v6sMojApzyD4NG3IFK4ca?dl=0
OneDrive: https://1drv.ms/f/s!Am2aTZH9AOcoanwyUg8_mMB5lwI