Як слід збирати дані про поведінку користувачів в MMO?


9

У MMO, і я намагаюся збирати дані про поведінку користувачів з метою налаштування правил гри для досягнення максимальної задоволеності користувачів.

Очевидно, що один із способів зробити це - передати певні речі в додаток, як це можна використовувати Console.WriteLine()для перегляду вмісту змінної або StopWatch()класу, щоб побачити, скільки часу потрібно на виконання. Але ви можете використовувати профілер замість StopWatch, а ви можете використовувати відладчик замість WriteLine.

Як я повинен збирати свої дані? Чи є узагальнені прийоми інструментального застосування програми для спостереження за поведінкою користувачів, або якась форма методики інструментації коду?

Також мене цікавлять лише методи колекціонування; Ви можете припустити, що я вже знаю, як передавати, зберігати та аналізувати дані.

Відповіді:


14

Ми використовуємо командно-орієнтований інтерфейс / архітектуру для аудиту діяльності користувачів.

Це означає, що запити до сервера змушують сторону сервера створювати екземпляри класів, які представляють команди (атомні дії, які користувач може виконати попередньо).

Наприклад, скажімо, що користувач робить покупку в магазині товарів:

//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);

Тепер ми додаємо функції реєстрації / аудиту в ті, cmdExecuterщо стосуються всіх команд. Таким чином, не існує дублювання коду, і ми можемо вимкнути аудит, повторно налаштувавши конкретні константи командного класу та / або змінивши cmdExecuter.

Це допомагає організувати речі. Наразі ми створюємо запис бази даних для кожної "важливої" команди. Це допомагає відслідковувати цікаву нам поведінку.

Подальше читання
командно-орієнтованого інтерфейсу Мартіна Фаулера


Це в дусі того, що я шукав, дякую.
Роберт Харві

@RobertHarvey (Якщо ви вирішили використовувати це) Просто тримайте класи команд стрункими, вони все-таки є методами. Вони повинні бути дуже худими.
AturSams

Перевага полягає в тому, що ми можемо точно бачити, які бафи були застосовані до користувача та з якими монстрами вона боролася, коли в xp / s був сплеск. Іноді нам потрібно видалити деякі дані, але в даний час не так багато активності, тому це не сильно впливає на нас.
AturSams

7

"Техніка" тут настільки проста, що її майже не заслуговують називати такою: ви просто записуєте дані з ігрових систем, які, на вашу думку, є актуальними.

Те, як ви записуєте, що дані (в базу даних, у файли, що завгодно) занадто широкі, щоб обговорювати тут (а методи і зразки в жодному разі не особливо специфічні для розробки ігор, що робить їх більш підходящими для обговорення на SO), як це питання про те, які системи є актуальними. Немає розумних автоматичних прийомів для відповіді на ці запитання; це було б цілком подвигом штучного інтелекту.

Що ви хочете переконатись у грі, де є серверний компонент, це те, що сервер повинен виконувати всі можливі журнали. Ніщо, що ви отримаєте від клієнта, не можна довіряти, і особливо, якщо ви збираєтеся використовувати ці дані для адаптації змін до гри, ви не хочете, щоб гравці змогли підробляти її.

Клієнт повинен записувати та передавати лише статистику, до якої сервер зазвичай не матиме доступу. Наприклад, ви хочете записати теплові карти клацання інтерфейсу користувача, це, мабуть, можливо лише для клієнта.


2

У MMO у вас вже є дані про те, куди йде користувач, які квести він виконує та яке обладнання він використовує, що надсилається на сервер.

Інші дані, які можуть вас зацікавити, - це те, як вони використовують різні інструменти, як довго вони відкривають екрани статистики та інвентаризації відкритими. Наприклад, ви можете записати кількість активованих функцій за допомогою миші та клавіатури.

Одним з важливих факторів є дозволити користувачеві відмовитись (або зробити відмову від колекції) (некритичного) збору даних відповідно до регламенту конфіденційності. І щоб сервер міг вирішити, які дані слід записувати під час ігрової сесії / наступної години, щоб шкодувати ваших гравців пропускною здатністю.


1
і не забувайте про рівень успішності та невдачі для конкретних квестів, хороший спосіб дізнатися, чи є частини гри занадто важкими чи занадто легкими.
jwenting
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.