Всем привет, решил немного рассказать о системе расширенного сбора статистики с сервера, которую мы разрабатываем. Расширенная она потому, что с помощью этой системы мы можем получать доступ к любой статистике игрового персонажа, той, которой нет не в базе, не в логах и даже в памяти сервера. И так обо всем по порядку.
Как это работает:
Основным компонентом системы является утилита, которая выступает в роли прокси между сервером и клиентом. Утилита работает с пакетами, выбирает нужный тип и парсит его. Далее все нужные данные выбираются и складываются в базу статистики. Не буду вдаваться в описание пакетов, скажу только, что в них содержится огромное количество информации о игровом процессе.
Несколько примеров:
Сбор сведений о нанесенном уроне:
Здесь видим, что в статистику мы складываем данные о времени, кто кого ударил, какой урон нанес, статус флага и координаты.
Как использовать эти данные уже дело вашей фантазии, например я сделал переходящее знамя, каждый раз, когда игрок наносит урон больше чем у прежнего обладателя "знамени", то оно переходит ему (Элитная ачивка дающая дополнительный рейтинг профиля игрока).
Проведенное в игре время:
Собственно эта статистика сообщений "Вы провели в игре еще 1 час", как только игрок получает такое сообщение в системный чат, система его фиксирует. Я использую эту статистику для мотивации онлайна. За каждый проведенный в игре час, система выдаёт игроку случайную плюшку.
Смерть игрока:
Сюда системе записывает данные о всех смертях на сервере, собственно жертва, убийца, опять же флаг и координаты. В случае когда KillerID = 0 (как и в случае с уроном) - значит убийца был моб. Чуть ниже, я покажу примеры, как я использую эту статистику.
Так это выглядит в деле:
Данных очень много, поэтому число обрабатываемых данных будет постепенно увеличиваться и я буду стараться выкладывать примеры наших решений, основанных на этой системе. Система способна работать на любой сборке, любых хрониках и вообще любой игре, где есть сервер и клиент.
Как это работает:
Основным компонентом системы является утилита, которая выступает в роли прокси между сервером и клиентом. Утилита работает с пакетами, выбирает нужный тип и парсит его. Далее все нужные данные выбираются и складываются в базу статистики. Не буду вдаваться в описание пакетов, скажу только, что в них содержится огромное количество информации о игровом процессе.
Несколько примеров:
Сбор сведений о нанесенном уроне:
Здесь видим, что в статистику мы складываем данные о времени, кто кого ударил, какой урон нанес, статус флага и координаты.
Как использовать эти данные уже дело вашей фантазии, например я сделал переходящее знамя, каждый раз, когда игрок наносит урон больше чем у прежнего обладателя "знамени", то оно переходит ему (Элитная ачивка дающая дополнительный рейтинг профиля игрока).
Проведенное в игре время:
Собственно эта статистика сообщений "Вы провели в игре еще 1 час", как только игрок получает такое сообщение в системный чат, система его фиксирует. Я использую эту статистику для мотивации онлайна. За каждый проведенный в игре час, система выдаёт игроку случайную плюшку.
Смерть игрока:
Сюда системе записывает данные о всех смертях на сервере, собственно жертва, убийца, опять же флаг и координаты. В случае когда KillerID = 0 (как и в случае с уроном) - значит убийца был моб. Чуть ниже, я покажу примеры, как я использую эту статистику.
Так это выглядит в деле:
Данных очень много, поэтому число обрабатываемых данных будет постепенно увеличиваться и я буду стараться выкладывать примеры наших решений, основанных на этой системе. Система способна работать на любой сборке, любых хрониках и вообще любой игре, где есть сервер и клиент.
Последнее редактирование: