Postaw nam kawkę

Wywiad z Fuzzerem

WYWIAD Z
FUZZEREM

Programista, backendowiec, pogromca bugów, wróg dildosów i człowiek, przez którego nie śpimy po nocach.
RP: jest mi niezmiernie miło przeprowadzić wywiad z tak znamienitym gościem przez którego rozpadły nam się związki, rzuciliśmy pracę i nie śpimy w nocy. Jak samopoczucie?
Fuzzer: Styrta się pali, nawał roboty, od rana do rana się siedzi i robi. „48 godzin na dobę”. Szczerze nie przepadam za takimi typowymi pytaniami „jak tam? jak samopoczucie?”. Gdybym miał powiedzieć co w Projekcie Hard cenię najbardziej, powiedziałbym że graczy, graczy którzy przyszli, zagrali, który wspomogli, którzy docenili.
RP: Dobra, w takim razie zacznijmy od banału: Jak wygląda typowy dzień technika serwera Metin2? Czy to ciągłe gaszenie pożarów, czy raczej spokojna praca w tle?
Fuzzer: Czy jestem technikiem? Niekoniecznie, bardziej programista, może i zajmuje się w ogólnym rozumieniu rzeczami technicznymi tzw. (backend) czyli to czego nie widać na pierwszy rzut oka, jednak w dużej mierze polega to na programowaniu. Rano przede wszystkim musi być kawa, bo bez tego to o żadnej pracy nie ma mowy. Na co dzień zajmuje się rozwiązywaniem problemów, szukaniem różnych błędów oraz ich naprawą. tzw. „Find bug, fix, eat, sleap, repeat”. Oprócz programowania staram się pomagać naszemu zespołowy w różnych obowiązkach, jak np. sprawdzanie graczy, pomoc w problemach graczy typu „nie działa, „zejpsuło się””.
RP: Patrząc z zewnątrz, Projekt Hard wydaje się ogromnym przedsięwzięciem technicznym. Co było dla Ciebie najtrudniejsze podczas jego tworzenia? Optymalizacja klienta, tworzenie nowych systemów, balans postaci… a może legendarne już 420 poprawek do BMa w czasie bety? Wspomniałeś że na co dzień zajmujesz się szukaniem błędów, Jak wygląda ich wykrywanie od środka – czy opierasz się na feedbacku od teamu i graczy, czy to głównie Twoim zadaniem jest szukanie bugów i exploitów na własną rękę?

Fuzzer: Najtrudniejsze są zawsze błędy typu „random”, czyli coś się dzieje tylko czasami i nie wiesz jak to wywołać, często jest to sekwencja jakichś akcji, które ciężko jest spiąć w jedną całość. Aktualnie nie przychodzi mi nic do głowy co ew. sprawiło mi trudność, podczas tworzenia Projektu Hard, oprócz losowych błędów o których wspomniałem, nie ma chyba strictę trudnych zadań, są tylko czasochłonne.

Jak wygląda wykrywanie błędów od środka? Często opieram się na feedbacku zespołu oraz graczy. Czasem się zdarzy że nie mając nic konkretnego do zrobienia sam zabieram się za dodawanie nowych rozwiązań czy też szukania ew. błędów.

RP: Wielu graczy zastanawia się też, jak powstają zmiany w grze. Jak wygląda proces wprowadzania nowych systemów lub modyfikacji mechaniki- czy bierzesz udział już na etapie koncepcyjnym, czy raczej wdrażasz rozwiązania zaplanowane wcześniej przez Slasha?
Fuzzer: W większości przypadków, wdrażam rozwiązania zaplanowane wcześniej, jednak wspólnie z zespołem nanosimy ew. poprawki gdy dana zmiana wymaga przebudowania znacznej część kodu gry, wtedy wspólnie szukamy innych alternatyw.
RP: Skoro już jesteśmy przy technikaliach… Czy w kwestiach techniczno-programistycznych jesteś jedyną osobą do której można mieć pretensje odpowiedzialną za Projekt Hard? Czy faktycznie prowadzisz wszystko od klienta, przez serwer, aż po zabezpieczenia?
Fuzzer: Nie jestem jedyną osobą która odpowiada za sprawy „techniczne”. Chociażby korzystamy z usług tzw. „Administratora serwerów UNIX”, czyli osoby która ogarnia wszystko związane z utrzymaniem ciągłości pracy serwerów (maszyn) gry oraz sieci publicznej. Cała reszta „technicznych” niuansów leży po mojej stronie (nie wliczając w to szeroko rozumianego projektowania poziomów gry).
RP: Wiemy już że o poranku dominuje kawusia. Co wygrywa za dnia – kawa czy monsterek? A może stronisz od szeroko pojętych napojów energetycznych?
Fuzzer: Tylko kawa
RP: Start serwera to zawsze moment prawdy. Czy przy starcie Projekt Hard wydarzył się jakiś poważniejszy „fakap”, o którym gracze nawet nie mieli pojęcia?
Fuzzer: Nie było żadnych fuckupów na starcie, przebiegł bardzo sprawnie beż żadnych problemów.
RP: Musimy też zanotować coś, co zauważyło community: Od startu praktycznie nie widać botów. Jako redakcja chcielibyśmy pogratulować i zapytać wprost: jaki jest Wasz sekret? Wiele serwerów konkurencji przy niższej frekwencji graczy ma z tym poważne problemy
Fuzzer: Staramy się aktualizować nasze zabezpieczenia na bieżąco, wiadomym jest że nie da się przed wszystkim zabezpieczyć, bo na każde zabezpieczenie pojawi się obejście, które trzeba wykryć i zabezpieczyć ponownie. Jest to walka z wiatrakami jednak nie poddajemy się i będziemy walczyć z tą plagą. Dysponujemy wieloma narzędziami po stronie serwera gry które wspomagają nasz zespół w tropieniu tzw. Botów
RP: Metin to gra z ogromnym potencjałem systemowym, jednak… Czy są mechaniki lub systemy, które bardzo chcielibyście kiedyś wprowadzić, ale na razie są zbyt czasochłonne albo zbyt trudne technicznie?
Fuzzer: Na przestrzeni kilku lata, było kilka zmian które chcieliśmy wprowadzić, jednak z braku możliwości czasowych nie zostały zaimplementowane. Nad grami często pracuje wielu programistów, wiele zespołów programistów, ja jestem sam jeden, niektóre rzeczy trzeba odpuścić ponieważ na inne nie starczy czasu.
RP: A teraz pytanie bardziej prywatne: Czy sam grasz na Projekcie Hard? Jeśli tak, jaką postacią? Jeśli nie, co bardzo zrozumiałe w kontekście tego że pracujesz 48h na dobę, jaką postacią zagrałbyś najchętniej i dlaczego?
Fuzzer: Tak pogrywam na PH. Gram w jednym słusznym królestwie – Chunjo, Wojownik Dywan, poziom 40+
RP: Wracając jeszcze do technikaliów, Metin to gra z historią sięgającą kilkunastu lat. Czy są bugi, które istnieją od tak dawna, że gracze zaczęli traktować je jak… część gry? #smycz Albo takie, które są praktycznie „nienaprawialne”? Czy w kodzie Metina da się w teorii zmienić wszystko, a może są ograniczenia?
Fuzzer: Ta gra ma masę błędów, od samego początku była tworzona „na kolanie”, byle by było, nikt nigdy nie patrzył w przyszłość, że gra może być rozwijana. Ogólnie nie ma nienaprawialnego błędów, bo da się naprawić wszystko, jednak niektóre błędy wymagają zbyt dużego nakładu czasowego, przez co nie są naprawiane. Mając kod źródłowy gry, można zrobić wszystko, nie ma żadnych ograniczeń oprócz czasu, wiedzy oraz umiejętności.
RP: Każdy programista ma coś, co doprowadza go do białej gorączki. Czasami to zwykłe bugi, czasami Julka scrumasterka po zarządzaniu. Co w pracy przy serwerze Metina najczęściej doprowadza Cię do szału, oczywiście poza brakiem kofeiny w krwioobiegu?
Fuzzer: Do białej gorączki czy do szału to może nie. Najczęstszą frustracją są zmiany które trzeba wprowadzać(ponieważ np. zmieniała się koncepcja) / poprawiać.
RP: Zarzućmy na sekundę kotwicę przy tym pytaniu. Jak współpracuje ci się ze starym Slashem? Bywają okresy burz czy dogadujecie się raczej dobrze?
Fuzzer: Ze Slash dogadujemy się bardzo dobrze.
RP: Nie możemy też pominąć tematu, który elektryzował społeczność naszą redakcję bo jesteśmy ciekawskie skurwibąki. DDOSy. Trzeba przyznać, że poradziliście sobie z nimi naprawdę dobrze. Czy korzystaliście z pomocy zewnętrznych specjalistów od infrastruktury i zabezpieczeń stricte odpowiedzialnych za ich zwalczanie? Jak duża była skala tych ataków? I najważniejsze, czy macie podejrzenia albo nawet pewność, kto za nimi stał?
Fuzzer: Tak jak wcześniej wspominałem, korzystamy z zew. usług tzw. administratora systemów unix, właśnie ta osoba jest odpowiedzialna za gaszenie pożaru w postaci „dildosów”. Szczerze nie interesowałem się tym jak duża była skala ataków. Jeden atak był na tyle silny że na kilka dobrych minut zapchał naszą całą sieć. A reszta była na tyle mała / niewystarczająca ze powodowała tylko chwilowe lagi. Czy podejrzewamy kogoś? Nikt nigdy się nie dowie kto atakował PH.
RP: Discordziarze często pytają o pewną… legendę serwera. Posąg Fuzzera. Na ile odzwierciedla on Twoją prawdziwą osobę?
Fuzzer: Złoty Fuzzer został stworzony przez mojego bardzo dobrego przyjaciela, z którym znam się od bardzo dawna. Także jest odzwierciedlony bardzo dobrze 😀
RP: Jaką jedną rzecz usunąłbyś z tej gry raz na zawsze?
Fuzzer: Sukcesywnie od dłuższego czasu wycinam z gry logikę po stronie klienta, przenoszę ją do serwera. Nie jest to jednak zmiana którą można wprowadzić z dnia na dzień, jest to proces który trwa.
RP: A teraz temat, który regularnie wraca w rozmowach graczy na ogólnym, na łowisku oraz na wołaju – „Ciche zmiany dropu”. Czy to teoria spiskowa społeczności czy jednak narzędzie balansowania rozgrywki?
Fuzzer: Brak mi kompetencji w tym temacie, nie zajmuje się szeroko rozumianym projektowaniem poziomów gry.
RP: Rozumiem, zatem zapytam o coś, co lubią statystycy #pozdrawiamyHipo. Jaki był rekord jednocześnie zalogowanych graczy na Projekcie Hard? Czy dysponujesz takimi danymi?
Fuzzer: W huj. Nie widziałem nigdy takiej skali online, na żadnym naszym dotychczasowym serwerze czy serwerze konkurencji.
RP: Z pewnych źródeł, których nie możemy podać zasłaniając się tajemnicą dziennikarską, wiemy że serwer przy starcie rozgrzał się do zawrotnych 24 stopni Celsjusza, ale udało się go schłodzić wiatraczkiem podpiętym do usb-c. Czy gdyby nie on, doszłoby do stopienia dysku HDD na którym stoi Hard?
Fuzzer: Jeśli wiatraczek podpięty do gniazda usb-c nie wyrobił i stopiłoby dysk hdd to mamy jeszcze drugi dysk, w postaci dyskietki. Jednak do tak drastycznych scen nie doszło, co stanowczo dementuje.
RP: Przejdźmy teraz do części, którą gracze lubią najbardziej – czyli mechanik ukrytych w kodzie gry. JAK DZIAŁAJĄ UNIKI I CO TO W OGÓLE K#r$A JEST? Redakcja dotarła do tego kawałka kodu
oraz
Czy to znaczy, że uniki pochodzące ze zręczności są procentową wartością zmniejszającą otrzymywany DMG? Jak to dokładnie wygląda?
Fuzzer: Tak, zręczność celu zmniejsza otrzymywane obrażenia przez obniżenie współczynnika ataku AR-ER, ale nie jest to osobny procent uniku czy miss, to redukcja części ataku wyliczanego przed obroną oraz multiplikacjami dalszymi bonusami
RP: Pozwól że dopytam: czy to dlatego ninje na early stoją lepiej w porównaniu do inynch postaci? Oraz czy uniki w tym okienku na screenie cokolwiek oznaczają?

Fuzzer: Early tak,
w okienku coś oznacza tak.
xD

to „31” niezmienne od początku raczej
30 * (2 * dx + 5) / (dx + 95)
Akurat co do tego aspektu nie zagłębiałem się bardziej, aktualnie również brakuje mi czasu aby w pełni móc odpowiedzieć na pytanie

RP: Na DC często pojawiają się pytania: Czy planujecie kiedyś oficjalnego klienta dla innych systemów operacyjnych?
Fuzzer: Aktualnie brak takich planów.
RP: Gdybyś mógł przekazać jedną wiadomość wszystkim graczom Projekt Hard, jako osoba, która widzi serwer od środka- co by to było?
Fuzzer: „Metki som”
RP: I teraz pytanie końcowe od którego i dla którego powstał PlayWoj- jaki masz rozmiar stopy?
Fuzzer: /W tym miejscu Fuzzer przygotwał dla was zagadkę w której ukryte jest to na co wszyscy czekali czyli rozmiar stuupki naszego programisty PH /przyp. Red./

Zagadka od Fuzzera:

#include <iostream>
#include <array>
#include <numeric>
#include <string_view>

int main() {
  constexpr std::array<std::string_view, 6> w{
    "Pozdrawiam", "redakcje", "PlayWoj", "oraz", "wszystkich", "czytelników"
  };

  std::cout << std::accumulate(w.begin(), w.end(), 0, [](int a, std::string_view b) {
    return a + static_cast<int>(b.size());
  }) - 4;
}

Dziękuję pięknie za wywiad <3

Życzymy jak najmniej bugów, jak najwięcej stabilnych deployów oraz nieograniczonych ilości najlepszej kawy z dolomitów. Mamy nadzieje że serwerek postoi do końca świata bo stworzyliście arcydzieło <3