PanzerNews - WoWs: Hot Fix

WoWs: Hot Fix

Testowanie i naprawianie bugów.

Każdy, kto gra w gry wideo napotyka błędy programu, wcześniej czy później.

Tego typu usterki utrudniają życie graczom od samego zarania przemysłu growego. Przywykliśmy do nich i niezbyt czule nazywamy je „bugami” (ang. „bugs”). Bugi można znaleźć wszędzie i World of Warships nie stanowi tutaj wyjątku. Na nasz projekt składają się miliony stale aktualizowanych linijek kodu, olbrzymia ilość zawartości i skomplikowany system interakcji pomiędzy komputerami graczy a serwerami. Wszystko to tworzy mnóstwo powiązań, w których mogą wystąpić pomyłki. Dziś dowiecie się, jak zmniejszamy liczbę bugów docierających na serwer główny i jak naprawiamy te, które zostały przeoczone.

CZYM JEST BUG?

Termin bug jest prawdopodobnie znany większości graczy.

Bug to błąd, który powoduje inny od zakładanego wynik operacji programu.

We wczesnych latach gier dzieliliśmy bugi na dwa główne typy: bugi w zawartości gry i bugi w kodzie. Obecnie typów jest znacznie więcej.


JAK PRZEPROWADZANE SĄ TESTY?

Zespoły zapewniania jakości (QA) są odpowiedzialne za odnajdowanie i naprawianie bugów w World of Warships.

Departamenty QA istnieją w większości zespołów deweloperskich World of Warships. Na przykład:

  • Zawartość: sprawdzanie modeli, dźwięków, grafik i nie tylko.
  • Logika gry: sprawdzanie poprawności działania mechanik gry.
  • Rdzeń serwera: sprawdzanie poprawności działania serwerów gry.

Zadaniem QA jest zrozumienie, jak pewne rzeczy powinny być zaimplementowane w grze. Aby tego dokonać, badają dokumentację i komunikują się z deweloperami. Następnie opracowują procedury testowe i schematy, które używane są do sprawdzenia zgodności programu z jego oczekiwanym zachowaniem.

Wykonywane są zarówno negatywne, jak i pozytywne testy podczas sprawdzania programu:

  • Testowanie pozytywne korzysta ze scenariuszy, które są zgodne z normalnym, spodziewanym zachowaniem programu. Na przykład sprawdzenie, czy użytkownik może wejść do klienta gry po wprowadzeniu poprawnego hasła.
  • Testowanie negatywne polega na celowym przeprowadzaniu „niepoprawnych” działań (nieprawidłowych scenariuszy). Na przykład sprawdza się, czy możliwe jest zalogowanie się do klienta gry poprzez wpisanie niepoprawnego hasła lub pozostawienie pustego pola z hasłem.

W wymagających tego wypadkach przeprowadzane są inne typy weryfikacji: testy wydajności, testy przyjazności dla użytkownika i pozostałe.

W World of Warships testowanie może zostać uproszczone do kilku głównych etapów.

Testy wewnętrzne:

  • Testy różnych typów funkcjonalności na wszystkich etapach powstawania funkcjonalności, jak na przykład:
    • Tworzenia koncepcji
    • Projektu
    • Rozwoju
  • Testy integracji lub sprawdzanie, czy wszystkie poszczególne części gry działają poprawnie, gdy je ze sobą połączymy i wprowadzimy do głównego kodu gry.
  • Testowanie połączonego buildu w poszukiwaniu oczywistych defektów, przed testami zewnętrznymi.
Build to określona wersja klienta gry, którą można również wykorzystać do testów.

Sprawdzenie absolutnie wszystkich powiązań i ich wyników w różnych elementach tak dużego projektu, jakim jest World of Warships, jest niemożliwe, nawet dla największych zespołów QA.

Dlatego też testy zewnętrzne rozpoczynają się równolegle z ostatnimi etapami testów wewnętrznych:

  • Testowanie przedpremierowego buildu gry przez małą grupę ochotników (supertest i test klanowy).
  • Testy publiczne, które otwarte są dla każdego.

Zewnętrzne testowanie pozwala nam również na sprawdzenie działania gry na wielu konfiguracjach komputerów i oprogramowania.

Zespół deweloperski World of Warships również jest zaangażowany w testy zewnętrzne. Mamy w studiu mechanizm pod nazwą „sygnalizacja świetlna”. To specjalna strona, którą uzupełniają wszystkie zespoły po rozgrywkach na serwerze testu publicznego. Na tej stronie personel może zostawić swoje uwagi o każdym, nowo testowanym rozwiązaniu, a także wystawić ocenę, która później jest uwzględniana podczas podsumowania wyników testu.

Na podstawie wyników testów zewnętrznych naprawiamy ostatnio zidentyfikowane błędy w obecnym buildzie gry. Jeśli naprawa błędów jest niemożliwa, możemy również wycofać pewne rozwiązania z nadchodzącej aktualizacji.

Tak było w przypadku bitew asymetrycznych w aktualizacji 0.10.9. Błąd, który prowadził do niepoprawnego działania tego trybu i wymagał dodatkowego czasu na naprawę, został odkryty na etapie testu publicznego. W związku z tym tryb został usunięty z aktualizacji.


WYSTĘPOWANIE BUGÓW

Dlaczego na serwerze głównym pojawiają się błędy? Bugi występują z różnych powodów i na różnych etapach produkcji. Od banalnych błędów w kodzie programu i spowodowanych przez czynnik ludzki, po nieoczywiste interakcje i błędy na etapie tworzenia dokumentacji projektowej dla nowej wersji.

Błąd może być obecny już na etapie rozwoju pomysłu i wciąż być postrzegany jako bug.

Na przykład mechanika tymczasowej odporności eskadr lotniskowców natychmiast po ataku, która wcześniej mogła być używana do uporania się z obroną przeciwlotniczą przeciwnika, może również być traktowana jako bug. To konkretne wykorzystanie mechaniki nie zostało przewidziane na etapie projektowania aktualizacji lotniskowców i naprawiono je później.

Aby zapobiec podobnym sytuacjom, staramy się rozpoczynać testy już na etapie dyskusji o nowych pomysłach.

Dodatkowo elementy gry, które działają bez zarzutu w odosobnieniu, mogą „się zepsuć”, gdy połączy się je z innymi elementami gry, z powodu występujących różnych korelacji i konfliktów.

Na przykład w jednym z naszych wewnętrznych testów aktualizacji bitew rankingowych, zorientowaliśmy się, że powodują one błędy w działaniu bitew klanowych — gracze nie mogli rozpocząć bitwy, ponieważ dobieranie przeciwników trwało w nieskończoność. W tym przypadku powodem nie była oczywista zależność, lecz szczęśliwie został on wyłapany i nie dotarł do serwera głównego.

Inną przyczyną bugów — dość trudną do wychwycenia — jest olbrzymia różnorodność konfiguracji komputerowych użytkowników, które wraz ze złożoną architekturą serwera klienta gry, mogą doprowadzić do niespodziewanego zachowania kodu gry na niektórych komputerach.

Na przykład w jednej aktualizacji z powodu innego formatu daty stosowanego w Japonii od tego używanego w Europie i Ameryce, kod gry nie był w stanie przetworzyć tej informacji, a statystyki po bitwie nie były wyświetlane dla części graczy.

Coś, co gracze postrzegają jako bug, czasem w ogóle nim nie jest, ponieważ zachowanie programu widoczne dla graczy jest tak naprawdę oczekiwanym wynikiem. W takich sytuacjach ważne jest, by przeanalizować uwagi gracza i, w miarę możliwości, coś zmienić. Może być też odwrotnie — bug czasem bywa częścią gry, a decyzja o tym, by go nie naprawiać, może być celowa.

Na przykład do unikalnego dźwięku dział okrętu  X Shikishima wkradł się błąd w ustawieniu zasięgu słyszalności (mógł być słyszany z większej niż zamierzona odległości), który to został naprawiony. Niemniej jednak stwierdziliście, że po poprawce dźwięk stracił swój unikalny charakter, więc przywróciliśmy ten „błąd” do gry.

Bugi mogą być również wstępnie przypisywane do problemów technicznych w centrach danych lub u dostawców Internetu. Niestety niewiele możemy zdziałać w takich sytuacjach i nie zawsze możemy pomóc graczom, niezależnie od tego, czy znamy źródło problemu, czy nie.

Ważne, by zrozumieć, że nie da się wykryć absolutnie wszystkich bugów. Rezultatem pracy zespołu QA jest działanie nowej funkcjonalności w zakładany sposób, bez bugów krytycznych oraz wad, a także możliwość wprowadzenia jej na serwer główny.


NAPRAWIANIE

Dlaczego naprawianie niektórych bugów trwa tak długo? Czas potrzebny na naprawę konkretnego błędu zależy głównie od jego natury. Niektóre defekty wymagają znacznego nakładu czasu, już na samym etapie analizy błędu. Aby naprawić błąd, potrzebujemy oczywiście dokładnie go odtworzyć i zrozumieć powód lub powody jego występowania.

Na przykład niedawny bug powodował niepoprawne wystrzeliwanie torped, gdy strzelający nimi okręt skręcał. Był to błąd w logice gry, a jakiekolwiek zmiany i poprawki w logice gry są zawsze bardzo ryzykowne, ponieważ wpływają na absolutnie wszystkich graczy i samą podstawę gry — rozgrywkę.

W związku z tym, aby naprawić błąd, ważne jest precyzyjne przeanalizowanie uwag graczy i raportów, znalezienie przyczyny problemu oraz opracowanie i zweryfikowanie rozwiązania. W szczególnych przypadkach, by naprawić bug lub zoptymalizować go z użyciem nowej technologii, konieczne może być przepisanie kodu gry. Proces ten nazywamy refaktoryzacją. Pomimo tego, że z punktu widzenia gracza może się wydawać, że nie zostały wprowadzone żadne zmiany, proces ten jest dość czasochłonny.

Dodatkowo ramy czasowe na naprawę błędów zależne są od sposobów, jakimi poprawki dostarczane są do graczy. Na przykład:

  • Aby naprawić niektóre bugi, wystarczy wprowadzić drobne poprawki po stronie serwera gry, których większość graczy nawet nie zauważy.
  • Sytuacja staje się bardziej zagmatwana, gdy błąd dotyka również klienta gracza lub istotne jest, by przeprowadzić prace konserwacyjne na serwerze, by naprawić błąd. W tym przypadku można przygotować małą łatkę i przeprowadzić dodatkowe prace na serwerze. W tym czasie serwer jest niedostępny dla graczy.
  • Naprawa części bugów wymaga tak wielu dodatkowych testów i zmian w kodzie, że poprawki mogą być wprowadzone tylko w ramach publikacji kolejnej dużej aktualizacji gry.

Decyzja o sposobie wprowadzenia każdej poprawki i przyznawaniu pierwszeństwa naprawie bugów jest zależna od kilku czynników:

  • Powaga błędu: niedziałające bitwy losowe powinny być naprawione możliwie najszybciej, lecz literówka w specyfikacji technicznej okrętu może chwilę poczekać.
  • Skala: niektóre błędy dotykają wszystkich graczy; inne błędy dotyczą jednego na tysiąc użytkowników.
  • Ryzyko i potrzebne testy poprawki: jak wyżej wspomnieliśmy, niedbałe poprawki w logice gry mogą tylko pogorszyć sytuację.
  • Czas spędzony na pracy serwisowej i rozmiar aktualizacji: aby naprawić błąd, będziemy musieli wyłączyć serwer na kilka godzin, a gracze zostaną zmuszeni do pobrania całkiem dużej łatki. W takich sytuacjach warto ponownie rozważyć, jak istotne jest natychmiastowe naprawienie błędu, ponieważ wielu graczy nie będzie w stanie wejść do gry przez długi czas.

Niestety pomimo naszych usiłowań naprawy wszystkich możliwych błędów, zasoby zespołu World of Warships są ograniczone, więc skupiamy się na skorygowaniu najbardziej krytycznych i najczęściej napotykanych bugów.


JAK ZGŁOSIĆ BUG?

Zawsze możecie nas poinformować o znalezionych przez Was błędach za pośrednictwem:

Aby pomóc w szybszej i skuteczniejszej naprawie błędu, prosimy o dodanie do Waszego raportu:

  • Opisu błędu.
  • Zrzutu ekranu, filmu, powtórki lub dowolnego wizualnego potwierdzenia błędu. Jeśli dołączycie powtórkę bitwy, upewnijcie się, że wskażecie czas wystąpienia błędu.
  • Pliku WGCheck. Szczegółowe informacje o tym pliku dostępne są w osobnym artykule.

W dzisiejszym artykule dołożyliśmy wszelkich starań, aby w jak najprostszy sposób opowiedzieć Wam o „niewidzialnym froncie” walki z bugami. Pragniemy podziękować Wam za wszystkie raporty o błędach, opinie, udział w naszych testach i grę w World of Warships! Bez Waszego wkładu, nie bylibyśmy w stanie szybko znaleźć i poprawić różnych błędów, które występują w grze.

ź: WoWs
Sekcja komentarzy
Loading comment form ...