System wyświetlania liczb w Diablo III

System wyświetlania liczb w Diablo III
Wraz z pracą przy projektowaniu oprogramowania (zarówno aplikacji biznesowych i rozrywkowych, jak i waszej ulubionej serii gier) przychodzi świadomość, że dla prostych problemów nie zawsze udaje się znaleźć proste rozwiązania. Projektowanie gier to bardzo złożony proces. Najmniejsza zmiana w owym mechanizmie, złożonym z milionów metaforycznych kół zębatych, może się zakończyć całymi tygodniami mrówczej pracy nad wyszukiwaniem przyczyn problemów oraz ich usuwaniem. Stojąc na pozycji obserwatora, pokusa, aby zadać oczywiste pytanie – „Dlaczego tego po prostu nie naprawicie?” – wydaje się wielka. To trochę tak, jakby zapytać piekarza, czemu po prostu nie zastąpi cukru sukralozą. W obu przypadkach odpowiedź będzie podobna: to nie takie proste.

Liczby i ich rola w grze

W Diablo III gracz jest zarzucany mnóstwem informacji. Skupmy się więc na liczbach. Można je zauważyć właściwie wszędzie! Wartości liczbowe pojawiają się w opisach elementów ekwipunku, w profilach postaci, a nawet nad głowami naszych walczących nefalemów. Wyświetlaniu się i właściwemu działaniu każdej z owych liczb towarzyszy (niewidoczny gołym okiem) tytaniczny wysiłek ze strony mechaniki gry.

Wielu graczy narzekało, że podczas niezwykle dynamicznych walk pojawiające się liczby trudno jest nawet odczytać, a co dopiero przyjąć do wiadomości i zrozumieć ich znaczenie! Dawniej z zapartym tchem czekaliście na pojawienie się olbrzymich wartości liczbowych, ponieważ wyróżniały się i oznaczały, że świetnie wam idzie. Jak wykrzesać na powrót tamtą iskrę ekscytacji – nie sprawiając jednocześnie, że gracze poczują się słabsi niż wcześniej?

Wraz z aktualizacją 2.4.0 do gry wprowadzono kilka nowych elementów, które odnoszą się bezpośrednio do powyższych rozterek. Po pierwsze – pojawiła się opcja umożliwiająca wyświetlanie dużych wartości liczbowych w formie skróconej. Po drugie – dzięki zupełnie nowej funkcji najwyższe wartości zadawanych obrażeń są teraz podświetlane w niepowtarzalnym kolorze. Podczas prac nad każdą z tych nowości stawaliśmy przed jedynymi w swoim rodzaju wyzwaniami: niektóre problemy dotyczyły projektu gry, inne kwestii lokalizacji. Jednak przede wszystkim końcowy rezultat naszych zabiegów miał wyglądać po prostu dobrze.

Początkowo zakładaliśmy, że podświetlanych będzie 5% spośród najwyższych wartości liczbowych wygenerowanych dla danego gracza w ciągu ostatnich kilku sekund. Pierwszy problem, jaki napotkaliśmy przy tym założeniu, był fakt, że każda konfiguracja postaci jest inna – zwłaszcza gdy w grę wchodzi kwestia zadawanych obrażeń. Niektóre powodują wyświetlanie się niewielkich transz wartości liczbowych na przestrzeni czasu, podczas gdy inne zalewają ekran stałym strumieniem informacji. Innym problemem, który pojawił się na tym etapie, był fakt, że zaproponowany pierwotnie system nie był w stanie uwzględnić przewidywalnych wahań w wartości zadawanych obrażeń. Prostym przykładem będzie tu Obelisk Mocy, dzięki któremu wasze postaci przez pewien czas zadają zwiększone obrażenia. Gdy wzmocnienie dobiega końca, nadal chcielibyście być informowani, gdy zadajecie niezwykle dotkliwe obrażenia, prawda?

Z czasem stworzyliśmy algorytm, który uwzględnia takie sytuacje, i obwarowaliśmy wyświetlanie wartości obrażeń w kolorze pomarańczowym następującym zestawem reguł:

  • Aby wartości liczbowe zostały wzięte pod uwagę, muszą przekraczać 10 tys.
  • Jeśli wartość liczbowa obrażeń, która ma zostać podkreślona, jest większa niż ostatnia wyświetlona na pomarańczowo, to należy tę wartość wyświetlić w kolorze pomarańczowym.
  • Próg najwyższej wartości liczbowej obrażeń jest z każdą sekundą obniżany o 3%.
    • Zmniejsza to prawdopodobieństwo występowania przedłużających się okresów gry bez podświetlania żadnych wartości liczbowych w kolorze pomarańczowym.
  • Należy zignorować pierwszych 10 wysokich wartości liczbowych.
    • Rozwiązanie to umożliwia samokalibrację systemu.
  • Jeżeli w ciągu 10 sek. nie zostaną zadane żadne obrażenia, należy wyzerować system.


Gdzie się podziały moje biliony, czyli wyzwania lokalizacyjne

Jeśli zaglądaliście do Diablo III po wprowadzeniu najnowszej aktualizacji, zauważyliście zapewne nowe, skrótowe wartości obrażeń. Wielu graczy – zwłaszcza anglojęzycznych – zwróciło się do nas z pytaniem, czemu wartości obrażeń dochodzą do milionów, ale do bilionów już nie.

Wyjaśnień jest kilka, ale najważniejszym z nich są kwestie lokalizacyjne. Diablo III jest tytułem dostępnym na całym świecie, posiadającym 13 wersji językowych, tak więc – jak ma to miejsce w przypadku każdej zmiany mającej wpływ na słowo pisane (a tutaj konkretnie na zapis wartości liczbowych) – musimy zwracać uwagę na możliwe reperkusje we wszystkich możliwych wersjach gry. Można by pomyśleć, że tłumaczenie liczb jest najłatwiejszym aspektem lokalizacji. Nic bardziej mylnego!


Po lewej: zapis liczb w języku angielskim. Po prawej: zapis w języku koreańskim.

Oto przykład, jak proste z pozoru tłumaczenie może się okazać nie lada pułapką. Różne kraje świata stosują dwie skale (tzw. krótką i długą) do zapisu liczb będących wynikiem potęgowania liczby 10. Tradycyjnie w większości krajów europejskich (w tym w Polsce) oraz w przeważającej większości krajów pozaeuropejskich, których językiem jest jeden z języków europejskich (oprócz angielskiego), stosuje się długą skalę. W krajach tych bilion to liczba o wartości: 1 000 000 000 000 (czyli 10 do potęgi 12). W krajach stosujących krótką skalę (są to głównie kraje anglojęzyczne) bilion oznacza z kolei liczbę 10 do potęgi 9, czyli „polski” miliard.

Jeśli już to wydaje się skomplikowane, to pomyślcie tylko o takich językach jak koreański czy chiński, gdzie duże wartości liczbowe grupowane są według innej skali. Przykładowo, w kulturze zachodniej grupujemy cyfry w wielkich liczebnikach co 1 000 (np. tysiąc, sto tysięcy, milion, miliard itp.). W języku koreańskim takie grupowanie cyfr (zgodnie z chińską tradycją) dokonuje się w miriadach (czyli co 10 000).

Problem potęguje użycie znaków interpunkcyjnych w zapisie liczb. Przy zapisie dużych wartości liczbowych w języku angielskim stosujemy przecinek co trzy cyfry (licząc od prawej do lewej) np. 10,000. W niektórych językach stosujemy w analogicznych sytuacjach kropki (zabieg rozpowszechniony w Europie), a w jeszcze innych w ogóle nie korzystamy ze znaków interpunkcyjnych.


Po lewej: zapis liczbowy wartości zgromadzonego złota w języku koreańskim. Po prawej: zapis w języku francuskim (i polskim).

W miarę jak liczby w Diablo III rosły, zdecydowaliśmy się na dodanie znaków interpunkcyjnych w ich zapisie, ale potrzebowaliśmy narzędzia, które umożliwiłoby nam elegancki przekład tychże liczb w zlokalizowanych wersjach gry. Z pomocą przyszła nam biblioteka ICU (International Components for Unicode), która świetnie się sprawdza przy lokalizacji oprogramowania. Biblioteka ICU ma wiele zastosowań, ale w naszym konkretnym przypadku wykorzystaliśmy jej możliwości dopasowania danych wejściowych w postaci liczby oraz miejsca (np. USA, Wielka Brytania, Francja czy Korea) i utworzenia zeń liczby właściwie sformatowanej dla danego systemu językowego – z uwzględnieniem przecinków czy kropek tam, gdzie to konieczne. Nasz dział lokalizacji dysponuje też tabelą stosowanych w każdym regionie liczb oraz form ich zapisu w zlokalizowanych wersjach gry.


Przykładowa tabela lokalizacyjna, w której zaznaczono, w jakim punkcie następuje skrócenie wartości liczbowych w poszczególnych wersjach językowych.

W części zlokalizowanych wersji gry skracamy liczby bardziej, w innych zaś mniej – kluczem są tu kwestie kulturowe. Za poziomem satysfakcji gracza z wyświetlanych wartości liczbowych stoi cały proces psychologiczny, a preferencje w tym zakresie różnią się nie tylko na poziomie osobistym, ale i kulturowym. Przykładowo: w języku angielskim zdecydowaliśmy się nie skracać niższych przedziałów wartości milionowych, ponieważ zobaczenie liczby „1,000,000” jest bardziej satysfakcjonujące niż „1M”. Przydała się tutaj również decyzja o pominięciu bilionów, ponieważ liczba „1,000M” jest zdecydowanie bardziej ekscytująca niż „1B”. Oczywiście nie tylko wielkość ma znaczenie – liczą się również oprawa graficzna i kolorystyka oraz ruch i animacja.


Aby liczby przyciągały uwagę, czyli dopracowywanie wizualiów

Kluczowe znaczenie ma tutaj pewność, że gdy gracz widzi daną liczbę, może szybko pojąć jej znaczenie oraz wpływ, jaki wywiera ona na rozwój danej sytuacji. W aktualizacji 2.4.0 mieliśmy na celu zapewnienie graczowi dopływu informacji bojowych na niespotykaną wcześniej skalę – i tutaj właśnie należy wspomnieć o wyświetlaniu wartości obrażeń za trafienia krytyczne.

Tylko spójrzcie na to piękne trafienie krytyczne!

Zmiana koloru była jednym z dostępnych rozwiązań, gdy chodzi o kwestię przedstawiania tego typu informacji. Zadaliśmy sobie wiele pytań na temat najlepszych metod przekazywania komunikatów o naprawdę skutecznych trafieniach. Czy powinniśmy powiększyć takie liczby? A może zmienić kierunek, w którym przemieszczają się na ekranie? Może powinny pulsować? Albo pozostawać dłużej na ekranie? A może trzeba po prostu wyświetlać je w innym kolorze? Jak wybrać? Jak zdecydować, która z licznych możliwości jest tą właściwą?

Zaczęliśmy się skłaniać ku zmianie koloru i ostatecznie zdecydowaliśmy się na taki właśnie zabieg. Dzięki niemu mogliśmy zaprezentować graczom informacje w sposób wyjątkowo przystępny, a jednocześnie całkowicie inny od tego, do czego zdążyli się już przyzwyczaić, więc zwraca on ich uwagę na poziomie podświadomym. Pomarańczowe liczby po prostu wyróżniają się na tle pozostałych.

Pomarańczowy sprawdza się również w przypadku osób cierpiących na zaburzenia rozpoznawania barw. Na kole barw zajmuje on zupełnie inne miejsce niż kolory dotychczas wykorzystywane w grze do przekazywania dodatkowych informacji. Dzięki temu gracze dotknięci ślepotą barw również mogą dostrzec, że w grze pojawiło się coś nowego!

Kiedy rozważamy kwestię zmiany kolorów interfejsu, nasi graficy biorą pod uwagę trzy czynniki: barwę, nasycenie oraz jasność. Wchodzą one w skład selektora kolorów HSL, który stanowi szeroko rozpowszechnioną cyfrową alternatywę dla koła barw. Każdy z tych aspektów jest nieodzowny dla wywołania u graczy innej emocji czy reakcji. Czy chcemy zmienić nastrój? W takim razie trzeba dostosować barwę. Jeśli pragniemy, aby obraz stał się mniej intensywny, a bardziej płaski – trzeba się zająć saturacją barw. A co z przyciąganiem lub odwracaniem uwagi od jakiegoś aspektu? Receptą będzie w tym przypadku odpowiednia jasność.

Przykładowo: do najważniejszych informacji w grze należą te dotyczące skuteczności otrzymywanego przez postać leczenia. Leczenie jest kluczem do przeżywalności – i chcemy, aby było jak najbardziej widoczne. Dlatego też informacje dotyczące leczenia należą do najjaśniejszych w grze. Chcieliśmy, aby informacje dotyczące trafień krytycznych również były jak najbardziej widoczne, więc wykorzystaliśmy poziomy jasności, dzięki czemu zawsze będziecie świadomi wystąpienia kolejnego wielkiego skoku w zadawanych obrażeniach.


Całość musi działać jak w zegarku

Gdy gracze myślą o zespole twórców Diablo III, w pierwszej kolejności skłaniają się ku projektantom gry, którzy usprawniają funkcjonowanie klas czy przedmiotów albo wymyślają nowe, ciekawe funkcje. Są to aspekty gry, z którymi wchodzicie w regularne i bezpośrednie interakcje, i nic dziwnego, że możecie je uznawać za trzon Diablo III. Należy jednak pamiętać, że poza tymi elementami na grę składa się prawdziwa cyfrowa (i nie tylko) maszyneria, a nasi graficy, inżynierowie, eksperci ds. lokalizacji oraz wielu innych specjalistów pracuje w pocie czoła, aby gracze na całym świecie mogli się cieszyć z gry stanowiącej spójną i płynnie funkcjonującą całość.

Mamy nadzieję, że spodobał się wam ten rzut oka za kulisy powstania zwodniczo niepozornej funkcji, która po bliższym przyjrzeniu się okazuje się być systemem tyleż wielkim, co skomplikowanym. Codzienna praca nad Diablo III to dla nas wielki przywilej – nawet jeśli zajmujemy się pozornie drobnymi detalami. Dziękujemy za uwagę!