piątek, 16 lipca 2010

"Jak odblokowano Osiągnięcia?" - Achievementy "od kuchni"

Pojawiają się przy różnych okazjach: najbardziej pospolite po ukończeniu etapu, zabiciu bossa czy zebraniu miliona kredytów, czasami wymagają wykonywania dziwnych albo nielogicznych czynności (np. uderzenia pięścią wiwatującego na nasz widok strażnika...), a niektóre stają się przedmiotem obsesji graczy i obrastają w legendy, podobnie jak ich zdobywcy. Bo jak nie czuć respektu przed kimś, kto poświęcił kilka tygodni swego życia na zgładzenie 100.000 Locustów w Gears of War 2? Część graczy je kocha, część nienawidzi, ale nawet oni (chociaż nigdy się do tego nie przyznają) czują dreszcz gdy z głośników wydobywa się charakterystyczny dźwięk, a ekran ochoczo wyświetla komunikat:


Skąd się wzięły, jak powstają, ile trudu wymaga ich stworzenie? Vince Curley - jeden z architektów platformy Xbox Live - postanowił podzielić się swoją wiedzą na ich temat ze światem.



Już pierwsza wersja platformy Xbox Live posiadała możliwość utworzenia konta opatrzonego unikalnym dla każdego gracza nickiem (Gamertagiem). Jak każdy tego rodzaju profil w internecie umożliwiał on natychmiastową identyfikację gracza, bo nie sposób przecież pomylić kogoś posługującego się przydomkiem "Imanoob1984" z "xxxIBangUrSisxxx". Było to jednak za mało. Wraz z premierą nowej konsoli, tęgie głowy pracujące przy XBL postanowiły przenieść możliwości socjalne na nowy poziom (czy może lepiej: "do nowej generacji") dając graczom możliwość pochwalenia się przed całym światem w co grają, jak grają (Strefa Gracza), co myślą o nich inni (system reputacji), ale przede wszystkim: co udało im się osiągnąć. Osiągnięcia w grach istniały od zawsze (chociażby tablice wyników w maszynach arcade, albo wewnętrzne odznaczenia w danym tytule), ale zawsze miały charakter lokalny. Sytuację zmienił trochę internet, który umożliwił dzielenie się wynikami z resztą świata, albo śledzenie statystyk z różnych gier na stronach WWW, ale w dalszym ciągu brakowało czegoś, co spoiłoby wyczyny we wszystkich grach - niezależnie czy strzelankach czy logicznych układankach - w jedno ciało. Właśnie to stało się celem grupy, której członkiem został Vince. Tak wspomina początki prac:
Pamiętam moje pierwsze spotkanie z grupą Xboxa - paru ludzi zebranych przy długim stole, w słabo oświetlonej sali konferencyjnej jakiegoś niezbyt okazałego biurowca. To nie był "lśniący profesjonalizmem" Microsoft do którego przywykłem. Zaproszenie na spotkanie mówiło, że mamy zająć się planami systemu "wirtualnej osobowości" dla naszej nadchodzącej konsoli [X360 - przyp. Allmark]. Nie brzmiało to zbyt zachęcająco, ale gdy usiadłem przy stole niemal natychmiast pochłonęła mnie pasja i zapał jaki grupa dzieliła wobec projektu. Siedziałem na lewo od Majora Nelsona [obecnie szef programistów XBL - przyp. Allmark], do którego ludzie naprawdę zwracali się per "Major" - pomyślałem, że to dziwne przezwisko, ale wkrótce miałem dowiedzieć się dlaczego...

Jednym z głównych założeń, jakie poczynili projektanci, było udostępnienie profilu zarówno w trybie online jak i podczas braku połączenia z internetem. Zdobywanie osiągnięć miało być możliwe w trybie offline, a wszystko co udało się uzyskać miało być automatycznie aktualizowane od razu po przywróceniu połączenia. Rozwiązanie to zajęło grupie developerskiej kilka nieprzespanych nocy, ale wreszcie się udało - o czym możemy się dzisiaj przekonać sami.

Oczywiście był to jeden, ale nie jedyny z problemów jakie napotkali twórcy systemu osiągnięć. Inną sprawą była konieczność "przystosowania" gier i osób je tworzących do nowego systemu. Tak - "przystosowania", nie "przekonania" - gdyż nowa funkcjonalność została ustanowiona jako obowiązujący standard i musiała zostać zaimplementowana w KAŻDEJ grze wydanej na nową wówczas konsolę Microsoftu.
Wymagało to oczywiście odpowiedniego unormowania liczby i "jakości" punktowej możliwych do zdobycia osiągnięć, tak aby twórcy nie mogli sobie ani opcji tej odpuścić (np. przez wprowadzenie jednego osiągnięcia za maksymalną ilość punktów), ani za bardzo się nie rozdrabniali. Początkowo wielu developerów miało z tym problemy (co widać głownie po osiągnięciach gier z początku istnienia X360) na co radą okazała się specjalnie stworzona instrukcja (8000 słów maszynopisu) mająca pomóc w optymalnym doborze liczby oraz jak najlepszej realizacji osiągnięć w grze. Przewiduje ona także limity, których twórcy muszą przestrzegać:



Gra w wersji podstawowej*DLC**
Typ gry Liczba osiągnięć Gamerscore Liczba osiągnięć Gamerscore
Wydanie sklepowe (retail) 5 do 50 1000 GS 0 do 30 0 do 750
Gra Arcade (XBLA) 12 200 GS 0 do 9 0 do 150
Wersja Demo 0 0 GS 0 0


* Taka jaka trafia na półki sklepowe w dniu premiery
** Downloadable Content - zawartość do pobrania z sieci

Oprócz informacji o samych osiągnięciach twórcy gry muszą w swoim produkcie uwzględnić także informacje o ewentualnych listach wyników umieszczonych na Xbox Live, sposobie w jaki realizowany jest matchmaking oraz tzw. "statusach aktywności" wyświetlanych na liście przyjaciół.

Aby ułatwić cały proces, wszystkie z tych informacji definiowane są za pomocą jednego narzędzia z pakietu Game Development Kit (GDK) o nazwie XLAST (skrót od Xbox LIVE Authoring and Submission Tool). W efekcie otrzymuje się jeden, wynikowy plik XML zwany plikiem XLAST:
Poszaleliśmy z nazwami, prawda?

Plik XLAST weryfikowany jest przez inne narzędzie o nazwie SPA Compiler (kompilator SPA) lub w skrócie SPAC (wymawiane "spok") m.in. pod kątem wymagań z tabeli powyżej - jeżeli proces ten zakończy się sukcesem, tworzone są dwa kolejne pliki: plik nagłówka (header file) oraz plik SPA, będący binarną reprezentacją pliku XLAST.

Plik nagłówka używany jest przy programowani w języku C i C++ (najczęściej używane przy tworzeniu gier), do definiowania znaczników i zmiennych odpowiedzialnych za odwołania do określonych osiągnięć (czyli w skrócie: mówi, które osiągnięcie jest które oraz definiuje kiedy jego warunki zostały spełnione).
Drugi z utworzonych plików (SPA) łączony jest później w procesie kompilacji z plikami wykonawczymi gry, tak aby gdy gra zostanie już uruchomiona, system konsoli miał łatwy dostęp do danych w nim zawartych (tych samych co w pliku XLAST, a więc np. ilość achievementów i liczba punktów za nie). Odpowiada on też za obrazki pojawiające się przy poszczególnych pozycjach na liście.

No dobrze, ale jak właściwie zdobywane są osiągnięcia? Wszystko zależy od tego co zostanie zdefiniowane w pliku nagłówka oraz samym kodzie gry. Kiedy jednak odpowiednie wymagania zostaną spełnione (czyt. odpowiednie zmienne np. ilość zwycięstw przyjmą odpowiednie, zdefiniowane wartości np. 100) gra wywołuje funkcję XUserWriteAchievements z pakietu GDK. Z jej pomocą system konsoli najpierw sprawdza, które z listy osiągnięć zdefiniowanej w pliku XLAST mają zostać dopisane do listy gracza, a następnie porównuje je z listą już uzyskanych achievementów (dzięki temu niemożliwe jest zdobycie danego osiągnięcia dwa razy). Jeżeli któreś są nowe, na ekranie zostaje wyświetlona doskonale znana wszystkim informacja.
Równocześnie twój profil zostaje "oflagowany". Daje to znak konsoli, że w danych profilu zaszły zmiany i wymagana jest aktualizacja plików z nim związanych na serwerach Xbox Live. Następuje to automatycznie po nawiązaniu połączenia z usługą. Łatwo w ten sposób poznać, które osiągnięcia zostały uzyskane w trybie offline gdyż najczęściej brakuje przy nich dat - bardzo pomaga to w wykrywaniu achievementowych oszustów.

Achievementy okazały się strzałem w dziesiątkę i prędko znalazły swoich naśladowców m.in. w usłudze STEAM czy PlayStation Network. Dzisiaj właściwie ciężko wyobrazić sobie jak wyglądałyby bez nich gry. Internet pełen jest stron zrzeszających tzw. "Hunterów" w różnorakich rankingach, a zdobycie "calaka" (pełnej ilości punktów w danej grze) w danej pozycji stawiane jest przez wielu za punkt honoru. Bakcyla połknęli także twórcy, którzy dzięki osiągnięciom przedłużają życie swojego produktu - niekiedy w niezbyt elegancki sposób (np. osiągnięcie za granie w trybie multi codziennie przez 100 dni pod rząd w Brothers in Arms). Według Randy'ego Pitchford'a z Gearbox Software łatwe osiągnięcia w bezpośredni sposób przekładają się na zwiększenie liczby sprzedanych egzemplarzy - w domyśle nawet o ponad 40 000 egzemplarzy. Jakoś trudno się z nim sprzeczać, patrząc jakim zainteresowaniem cieszą się wśród tzw. "Achievement-whores" produkcje pokroju Hannah Montana albo Avatar: The Legend of Aang, gdzie zdobycie 1000 GS zajmuje w najgorszym przypadku kilka godzin.
A co o dziele swojego zespołu myśli sam Vince Curley?
Stworzenie systemu sprawiło nam wielką frajdę i ciągle uwielbiam oglądać okienko z powiadomieniem i tym wesołym dźwiękiem na ekranie.


Na podstawie: "Achievements Unlocked" - Vince Curley - Microsoft Engineering Blog - http://www.xbox.com/en-US/live/engineeringblog/achievements-unlocked.htm




Brak komentarzy:

Prześlij komentarz