Blizzard

Pogawędki z twórcami: World of Warcraft Classic

Blizzard Entertainment

Witajcie! Trwają prace nad World of Warcraft Classic i chcemy podzielić się z wami niektórymi wyzwaniami, w których obliczu stoimy, i rozwiązaniami, nad którymi pracujemy. Jak wspomnieliśmy na ubiegłorocznym BlizzConie, proces powracania do klasycznych korzeni gry nie jest prosty. Musimy włożyć sporo czasu i wysiłku, by wszystko dopracować. Prace obejmują przeglądanie starszych wersji gry, danych, liczb oraz skrupulatną analizę każdej ze zmian, które wprowadziliśmy do WoW przez te wszystkie lata. Chcemy was zapewnić, że zespół WoW Classic dokłada wszelkich starań, by klasyczna wizja World of Warcraft stała się rzeczywistością, i jesteśmy już na takim etapie prac, kiedy możemy się z wami podzielić informacjami o pewnych aspektach gry, nad którymi dotychczas pracowaliśmy.


WoW Classic: pierwszy prototyp

Pierwszą decyzją – i jedną z najważniejszych – był wybór wersji gry, na której należało się skoncentrować. Jak wielu z was zauważyło, okres „klasyczny” w World of Warcraft obejmuje dwa pełne zmian lata. W tym czasie wprowadzono pola bitew, a w ramach aktualizacji dodano wiele kultowych podziemi i rajdów. Po dokładnym rozważeniu wszystkich możliwości zdecydowaliśmy się na aktualizację 1.12: Drums of War. To fundament, na którym budujemy, ponieważ ucieleśnia on w największym stopniu kompletną wersję „klasycznej” rozgrywki.

Gdy mieliśmy już punkt wyjścia, zaczęliśmy analizować, co mamy do dyspozycji w kodzie źródłowym i co możemy udostępnić. Proces ten obejmował gruntowne sprawdzenie pierwotnej bazy danych gry. Po złożeniu różnych kluczowych elementów układanki odtworzyliśmy lokalnie działającą wersję 1.12. Zespół mógł tworzyć i awansować postacie oraz wykonywać podstawowe zadania – oraz ginąć, co zdarzało się nam wiele razy. Robiliśmy to, ma się rozumieć, w celach testowych.

Nasze początkowe próby uruchomienia tak wiekowej wersji WoW ujawniły kilka problemów, których pojawienia się spodziewaliśmy: gra czasami się zawieszała, nie rozpoznawała naszych współczesnych kart graficznych i była niekompatybilna z naszym obecnym systemem logowania. Gra w tej postaci nie obsługiwała też żadnego z naszych nowoczesnych zabezpieczeń i narzędzi umożliwiających zapobieganie oszustwom. Jest wiele do zrobienia, zanim WoW Classic zacznie spełniać nasze standardy jakości i będzie mógł sprostać oczekiwaniom graczy. Dzielnie stawiamy czoła tym wyzwaniom, a zespół inżynierów i programistów WoW Classic codziennie dowodzi, że stanął na wysokości zadania.


A droga wiedzie w przód i w przód: drugi prototyp

Skoro już mowa o inżynierach i programistach... World of Warcraft jest grą mocno opartą na danych. Oznacza to, że podstawowy kod jest elastyczny, a sposób jego zachowania jest kontrolowany przez informacje zawarte w bazach danych. Elementy takie jak misje, potwory, przedmioty i zasady ich interakcji są definiowane przez projektantów i artystów i zawarte w danych gry.

Zadaliśmy więc sobie pytanie: czy to nadal będzie autentycznie klasyczna rozgrywka, jeśli wykorzystamy nasz współczesny, wielokrotnie ulepszany i zmieniany kod do przetwarzania danych z gry w wersji 1.12? Chociaż może się to wydawać nieintuicyjne, to współczesny kod zawiera przecież klasyczne systemy takie jak poziom zadowolenia zwierzęcych towarzyszy, umiejętność posługiwania się bronią, klasyczne talenty itd., a późniejsze funkcje takie jak walki zwierzaków, wyszukiwarka grup i osiągnięcia po prostu przestałyby istnieć. Po tygodniach testów, eksperymentów i tworzenia prototypów byliśmy pewni, że możemy dostarczyć klasyczną zawartość i rozgrywkę znane z World of Warcraft bez konieczności rezygnacji z wszystkich udogodnień, jakie stworzono dla twórców WoW na przestrzeni ostatnich 13 lat.

Pierwszy prototyp pomógł nam określić rodzaj rozgrywki, jaki chcemy odtworzyć, natomiast drugi prototyp umożliwił nam wyklarowanie metod działania. Rozpoczęcie pracy ze współczesną architekturą gry – zawierającą nagromadzone latami zmiany dot. bezpieczeństwa i stabilności – pomogło nam zdefiniować zadania, które musimy wykonać, jeśli chcemy oddać w ręce graczy prawdziwego, klasycznego WoWa. Wszystkie różnice dzielące wersję rozwojową od oryginalnego, klasycznego WoWa mogą być systematycznie katalogowane i usuwane, a my nadal możemy działać, korzystając z podstawy, która jest bezpieczna i stabilna.


Diabeł tkwi w szczegółach

Zatem czego potrzeba, by odtworzyć autentyczną, „klasyczną” rozgrywkę w World of Warcraft, korzystając ze współczesnych dobrodziejstw programowania? Zacznijmy od skatalogowania różnych rodzajów danych, które składają się na WoW:

  • Dane bazy danych: ten rodzaj informacji jest prawie zawsze przedstawiany pod postacią liczb. To wartości punktów życia, którymi dysponuje jakiś stwór, punktów siły, które doda nam konkretny przedmiot, lub konkretne miejsce i czas odradzania się poszczególnych przeciwników i stworów – to wszystko to przykłady danych liczbowych, które przechowujemy w naszych bazach danych. Możemy również przechowywać i wymuszać relacje między różnymi elementami danych.
  • Dane pliku: często są to bardzo „gęste” dane, takie jak modele 3D, tekstury, animacje i ukształtowanie terenu. Nasz interfejs użytkownika jest zbudowany z plików XML i LUA. Wiele plików graficznych nie jest w tym samym formacie, z którego korzystają narzędzia graficzne. Bierzemy te nieobrobione pliki i zmieniamy je w coś zoptymalizowanego pod kątem odczytu i przetwarzania przez naszą grę.
  • Skrypty LUA: niektóre funkcje są obsługiwane przez skrypty LUA napisane przez naszych projektantów, co umożliwia im łatwe definiowanie niestandardowych zachowań dla logiki serwera bez konieczności posiadania głębokiej wiedzy inżynierskiej i programistycznej.

Jak zmieniło się programowanie

Jednym z wyzwań, przed którym stoimy, jest fakt, że wszystkie klasyczne dane są zapisane w oryginalnym formacie używanym za czasów premiery starych wersji gry. Format ten uległ przez lata znacznym zmianom. Jest to obszar, który wymaga wiele pracy, by współczesny klient gry był kompatybilny z klasycznymi danymi.

Przykładowo: pierwotnie zaklęcia mogły mieć tylko trzy oddziaływania na cel. Tabela ilustruje te interakcje w uproszczeniu:

Lp.

Nazwa

Efekt nr 1

Efekt nr 2

Efekt nr 3

Aura 1

Aura 2

Obrażenia od efektu 1

Obrażenia od aury 1

Obrażenia od aury 2

1

Fireball [Ognista Kula]

Zadawanie obrażeń

Zastosowanie aury

Brak

Brak

Okresowe obrażenia

30

Brak

3

2

Frostbolt [Pocisk Lodu]

Zadawanie obrażeń

Zastosowanie aury

Brak

Brak

Spowolnienie

20

Brak

Brak

Jak widzicie, mamy tu całkiem sporo „braków”. Przez lata, które upłynęły od premiery gry, poprawiliśmy sposób projektowania danych i znormalizowaliśmy większość naszych baz danych. Dziś takie same dane jak powyżej zapisane są w sposób następujący:

Nazwa tabeli: Zaklęcia

Lp.

Nazwa

1

Fireball [Ognista Kula]

2

Frostbolt [Pocisk Lodu]

Nazwa tabeli: Efekt zaklęć

Lp.

ID zaklęcia

Efekt

Obrażenia

1

1

Obrażenia

30

2

2

Obrażenia

25

Nazwa tabeli: Aura zaklęć

Lp.

ID zaklęcia

Aura

Obrażenia

1

1

Okresowe obrażenia

3

2

2

Spowolnienie

Brak

W tej formie marnujemy znacznie mniej miejsca, a zaklęcia nie są już ograniczone do trzech efektów. Zanim jednak załadujemy dane z bazy, musimy przekształcić stary układ danych w nowy. Proces ten nie ogranicza się do zaklęć, ponieważ układ bazy danych dla prawie każdego systemu gry (w tym przedmiotów, stworów, postaci graczy, odradzania potworów, sztucznej inteligencji itp.) został zmieniony na przestrzeni lat.


Co przyniesie przyszłość?

Dzięki całej włożonej pracy będziemy ostatecznie mogli dostarczyć graczom autentyczną „klasyczną” rozgrywkę na platformie, która jest znacznie bardziej zoptymalizowana i stabilna, co pomoże uniknąć problemów z opóźnieniami i stabilnością gry. Dodatkowe, współczesne usprawnienia obejmują nowoczesne wykrywanie botów i oszustów, obsługę klienta i integrację z platformą Battle.net oraz wszelkie inne użyteczne dla graczy ulepszenia.

Z niecierpliwością czekamy na nowe wyzwania i cieszymy się, że możemy się z wami dzielić naszą miłością do klasycznej wersji World of Warcraft. Każda konwersja danych w kodzie gry sprawia, że WoW Classic jest bliższy autentycznej rozgrywce, którą znacie i uwielbiacie. Dziękujemy, że towarzyszycie nam w tej pełnej przygód podróży!