huze
#1
[^_^] Рекрут
могущество: 5

орк Чатагай
41 уровня
Привет!

ZPG — уникальное в своём роде явление. Язык не поворачивается назвать это игрой. Скорее, это социальный эксперимент с игровыми механиками — Проект — в своём роде акт науки! А если где-то происходит что-то интересное, позор тому учёному, который, оказавшись в зоне поражения влияния, не воспользуется случаем и не исследует это что-то и не сделает вывод, а может, и не один.

Несмотря на то, что игра в жанре ZPG, игроки всё равно имеют некоторый набор инструментов влияния на игру: политика, PvP и др. В большей степени это метавоздействия, то есть направленные не на внутреннее состояние игры, а на канву, законы и правила.

На текущий момент Проект объединяет 3678 игроков (будем продолжать их так называть) и их подопечных. Оставим в стороне вопрос, много это или мало, но обратим взор на данные, которые мы можем агрегировать, и информацию, которую мы сможем получить из анализа этих данных. Такое количество игроков для анализа, на мой взгляд, оптимальное: оно и репрезентативное, и не раздутое.

И хотя в данный момент у меня нет ни малейшего понятия, что я собираюсь найти (так часто бывает, не удивляйтесь), я начну с основного — сбора информации об игроках во временных срезах.

Собственно, два этапа я уже обозначил, но теперь формализую:

1. сбор данных;
2. анализ данных.

Сбор данных

У Проекта есть API, который худо-бедно позволяет получить всю интересующую информацию об игроке и его герое (http://the-tale.org/guide/api#game_info). К сожалению, для пакетной выгрузки информации вызова API не предусмотрено, а нагружать сервер сверх меры мы не хотим. Ищем дальше.

А дальше мы смотрим на страницы Игроки (http://the-tale.org/accounts/) и Рейтинги (http://the-tale.org/game/ratings/might). Они содержат по 50 игроков на страницу и, хотя содержат не так много информации, как ответ API, сильно упрощают нам работу.

На всякий случай проштудировав Пользовательское соглашение (http://the-tale.org/guide/user-agreement) и заручившись согласием администрации (support@the-tale.org) приступаем к сбору данных. Сразу оговорюсь: данные открытые, так что и инструмент их сбора и анализа, а также результаты анализа также будут открытыми, чему и посвящён этот тред.

Собирать данные будем вот этим скриптом — https://gist.github.com/pavel-voronin/e1656b6a3c2cde6c4f83#file-ttgrabber-php.

Если хотите запустить его сами:

1. скачайте;
2. назовите, например, ttgrabber.php;
3. положите его в папку, в которой у вас есть права на запись, а затем запустите командой php ttgrabber.php.

Скрипт продиагностирует окружение и, если всё в порядке, выдаст список доступных команд.

Если хотите быстро посмотреть работу, выполните php ttgrabber.php start bills и получите машиночитаемый CSV-файл с рейтингом по Принятым законам (http://the-tale.org/game/ratings/bills) в папке result.

Для дальнейшей работы, настаиваю, прочтите php ttgrabber.php help.
По итогам нескольких суток сбора данных, а также после вдумчивого изучения документации по Проекту, стало ясно, что страница Рейтинги обновляется недостаточно часто, в отличие от страницы Игроки, которая, похоже, обновляется если и не в live-режиме, то очень близко к нему. Можно, конечно, смириться с правилами и подстроить сбор статистики под частоту обновления источников данных, но можно и поискать пути оптимизации процесса сбора данных.

На ум сразу приходит: нужно реализовать вызов API для пакетной выгрузки информации об игроках. Это позволит свести overhead к минимуму: минимальное количество запросов к серверу в отличие от 574 нынешних для полного набора собираемых данных, а также компактный JSON в отличие от полновесного HTML.

P.S.:
На данный момент это всё, анализом займёмся позже. Если есть мысли и идеи, добро пожаловать!
huze
#2
[^_^] Рекрут
могущество: 5

орк Чатагай
41 уровня
В данный момент в открытом доступе есть регулярно пополняемый в автоматическом режиме дамп информации со страницы Игроки за несколько дней (период сбора — 10 минут) — http://the-tale-grabber.huze.ru/.
Unit
#3
[МОЛОТ] Рекрут
могущество: 3274

мужчина
Призрак Бульрога
43 уровня
Тема сбора данных стала популярной :)
Грустный Ворон
#4
[LjUA] Магистр
могущество: 47938
модератор
эльф Наэр Крабан
144 уровня
Unit
точно.
главное чтоб за печеньки инфу не стали продавать)
Unit
#5
[МОЛОТ] Рекрут
могущество: 3274

мужчина
Призрак Бульрога
43 уровня
За правильное голосование в законах продовать буду
huze
#6
[^_^] Рекрут
могущество: 5

орк Чатагай
41 уровня
Новая версия скрипта для сбора данных с рядом исправленных багов — https://gist.github.com/pavel-voronin/e1656b6a3c2cde6c4f83#file-ttgrabber-php
Грустный Ворон
#7
[LjUA] Магистр
могущество: 47938
модератор
эльф Наэр Крабан
144 уровня
huze
первый пост тогда обнови
huze
#8
[^_^] Рекрут
могущество: 5

орк Чатагай
41 уровня
Грустный Ворон
huze
первый пост тогда обнови

Ссылка не изменилась, поэтому обновлять не нужно. Просто уведомил, что новая версия. Кстати, она снова чуть изменилась. :)
Грустный Ворон
#9
[LjUA] Магистр
могущество: 47938
модератор
эльф Наэр Крабан
144 уровня
huze
аа..
меня новая ссылка смутила)
huze
#10
[^_^] Рекрут
могущество: 5

орк Чатагай
41 уровня
Финальный формат CSV-файлов теперь выкладывается на http://the-tale-grabber.huze.ru. Выкладываются теперь не только данные по странице Игроки, но и по всем страницам Рейтинга. Файлы с данными старого формата находятся в папке http://the-tale-grabber.huze.ru/old

P.S.:
Добавилась информация по гильдиям, в которых состоит игрок (3 и 4 столбцы).



Сообщение изменено
huze
#11
[^_^] Рекрут
могущество: 5

орк Чатагай
41 уровня
Так как данные занимают много места, решено было хранить только различия между предыдущим и следующим срезом данных. Пересохранение происходит только для файлов прошлых дат, соответственно, запуск скрипта производится в полночь (GMT). Дополнительно данные упаковываются и сжимаются (tar gz). Код скрипта, обслуживающего задачу — https://gist.github.com/pavel-voronin/e1656b6a3c2cde6c4f83#file-compact-sh.

P.S.: Пример упаковки можете посмотреть в папке old — упаковал 150 Мбайт в 916 Кбайт.



Сообщение изменено
huze
#12
[^_^] Рекрут
могущество: 5

орк Чатагай
41 уровня
Интерес к процессу утерян. Все собранные данные одним архивом лежат здесь: https://mega.co.nz/#!EQEWgIJY!xhD2y4FLBp7KYfTGHSxyuFzTBaavSPDlvKrDz1l_aBM. Лежать будут минимум месяц, скрипты там же.

Всем спасибо за внимание.



Сообщение изменено