Jak powinienem gromadzić dane o zachowaniach użytkowników w MMO?


9

W MMO staram się zbierać dane o zachowaniach użytkowników w celu ulepszenia zasad gry w celu osiągnięcia maksymalnej satysfakcji użytkownika.

Najwyraźniej jednym ze sposobów jest ręczne zwijanie określonych rzeczy do aplikacji, podobnie jak można użyć Console.WriteLine()do wyświetlenia zawartości zmiennej lub StopWatch()klasy, aby zobaczyć, ile czasu zajmuje wykonanie. Ale zamiast StopWatch możesz użyć profilera, a zamiast WriteLine możesz użyć debuggera.

Jak powinienem zbierać moje dane? Czy istnieją uogólnione techniki oprzyrządowania aplikacji w celu obserwowania zachowania użytkownika lub jakieś techniki oprzyrządowania kodu?

Poza tym interesują mnie tylko techniki zbierania; możesz założyć, że już wiem, jak przesyłać, przechowywać i analizować te dane.

Odpowiedzi:


14

Używamy interfejsu / architektury zorientowanej na polecenia do kontrolowania aktywności użytkowników.

Oznacza to, że żądania do serwera powodują, że po stronie serwera instancje instancji klas reprezentujących polecenia (akcje atomowe, które użytkownik może wykonać).

Załóżmy na przykład, że użytkownik dokonuje zakupu w sklepie z przedmiotami:

//We could have done something like
someShop.sell(item, player); // This function deducts money from the player
                             // and stores the new item in their inventory

//Instead we do this:
$buyItemCmd = new BuyItemCommand(item); // The player is already known from the sessionId
$cmdExecuter.run($buyItemCmd);

Teraz dodajemy funkcje rejestrowania / audytu, cmdExecuterktóre dotyczą wszystkich poleceń. W ten sposób kopiowanie kodu jest niewielkie lub nie ma go wcale, i możemy wyłączyć inspekcję, albo przez ponowną konfigurację określonych stałych klasy poleceń i / lub modyfikację cmdExecuter.

Pomaga utrzymać porządek. Obecnie tworzymy rekord bazy danych dla każdego „ważnego” polecenia. Pomaga to śledzić interesujące nas zachowanie.

Dalsza lektura
Zorientowany na polecenia interfejs użytkownika Martin Fowler


Jest to zgodne z tym, czego szukałem, dzięki.
Robert Harvey

@RobertHarvey (Jeśli zdecydujesz się tego użyć) Po prostu utrzymuj cienkie klasy poleceń, w końcu są to metody. Powinny być bardzo chude.
AturSams

Zaletą jest to, że możemy dokładnie zobaczyć, jakie wzmocnienia zostały zastosowane wobec użytkownika i jakie potwory walczyła, gdy nastąpił skok xp / s. Czasami musimy usunąć niektóre dane, ale obecnie nie ma dużej aktywności, więc nie ma to na nas większego wpływu.
AturSams

7

„Technika” jest tutaj tak prosta, że ​​prawie nie zasługuje na taką miano: po prostu rejestrujesz dane z systemów gier, które uważasz za istotne.

Sposób , w jaki zapisujesz te dane (do bazy danych, do plików, cokolwiek), jest zbyt szeroki, aby omawiać tutaj (a techniki i wzorce w żadnym wypadku nie są szczególnie specyficzne dla rozwoju gry, dzięki czemu lepiej nadają się do dyskusji na temat SO), podobnie jak pytanie, które systemy są istotne. Nie ma sprytnych automatycznych technik odpowiadania na te pytania; to byłby wyczyn sztucznej inteligencji.

W grze, w której znajduje się komponent serwera, musisz się upewnić, że serwer powinien rejestrować wszystko, co może. Nic, co otrzymujesz od klienta, nie jest godne zaufania, a zwłaszcza jeśli zamierzasz używać tych danych do dostosowywania zmian w grze, nie chcesz, aby gracze mogli ją modyfikować.

Klient powinien rejestrować i przesyłać tylko te statystyki, do których serwer normalnie nie miałby dostępu. Na przykład chcesz nagrywać mapy cieplne kliknięć w interfejsie użytkownika, prawdopodobnie jest to możliwe tylko na kliencie.


2

W MMO masz już dane o tym, dokąd zmierza użytkownik, jakie zadania bierze i jakiego sprzętu używa na serwer.

Inne dane, które mogą Cię zainteresować, to sposób, w jaki korzystają z różnych GUI, jak długo utrzymują otwarte statystyki i ekrany ekwipunku. Możesz na przykład zapisać liczbę aktywacji funkcji za pomocą myszy w porównaniu z klawiaturą.

Jednym z ważnych czynników jest umożliwienie użytkownikowi rezygnacji (lub umożliwienia gromadzenia danych) (niekrytycznego) gromadzenia danych, aby zachować zgodność z przepisami dotyczącymi prywatności. Aby serwer mógł zdecydować, jakie dane powinny być rejestrowane podczas sesji gry / następnej godziny, aby oszczędzić graczom przepustowości.


1
i nie zapominaj o wskaźnikach sukcesu i porażek dla określonych zadań, to dobry sposób, aby dowiedzieć się, czy niektóre części gry są zbyt trudne lub zbyt łatwe.
jwenting
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.