Truepicker.com — «Просто сделай правильный выбор»

Цель: автоматический подбор игровой команды на основе статистических данных

Задачи:

  • Дизайны страниц
  • Элементы оформления
  • Программирование и системное администрирование
  • Ведение проекта и ответственность за техническую часть

Технологии:

Вызов геймера

Truepicker — инструмент для игрока, позволяющий ему собрать оптимальную команду как для успешного противостояния команде противника, так и для помощи своим соратникам в онлайн-играх наподобие Defence of the Ancients (продвигаемой Valve, она же «DotA») и League of Legends.

В этих играх принимают участие две соперничающие команды, каждая из которых имеет по 5 игроков. Каждый игрок выбирает героя из списка с более чем 100 именами и использует его способности для победы над героями противника и, в конечном счёте, падения его базы.

Протекание игры сильно зависит от отношений между выбранными героями. Из-за того, что каждый герой обладает всего четырьмя «способностями» (специальные действия, которые игрок может использовать, такие как телепортация, невидимость или удар издалека) игроку нужно сопоставить собственный выбор с выбором других членов команды таким образом, чтобы способности его героя станли сильнее в сочетании с ними. Кроме этого, игрок должен следить за выбором соперника, чтобы успешно отражать способности вражеских героев. Всё это требует знания о всех возможных героях и комбинациях, что из-за их количества не доступно каждому игроку, особенно новичкам. Если игрок сделал неверный выбор исход всей игры может быть предрешён.

Серверная часть

Truepicker автоматизирует этот процесс выбора. Он использует обширную статистическую выборку (более 500 000 записей на текущйй момент) обо всех возможных игровых комбинациях по отзывам самих игроков, а также статистику сыгранных матчей. Для сбора этой информации была создана распределённая система Sqobot. Её узлы были размещены на 4 серверах для ускорения процесса сбора.

Архитектура базы данных была оптимизирована созданием двух уровней данных: первый содержит исходную информацию, полученную из вышеуказанных ресурсов, второй — эта же информация в подготовленном'для определённых запросов виде (к примеру, подбор одной рекомендации требует всего одного запроса к одной таблице без использования JOIN). Оба уровня поддерживаются в актуальном состоянии серверной логикой.

Пользовательский интерфейс

Элемент дизайна
Некоторые элементы дизайна были созданы мной в Adobe Illustrator.

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

Пользовательский интерфейс был специально разработан с учётом этих требований. Страница рекомендаций помещается на одном экране (стандартного разрешения 1024×768). Он включает сжатую и информативную справку для помощи в освоении системы новым пользователям. Для продвинутых посетителей есть горячие клавиши, с помощью которых можно действовать ещё быстрее.

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

Инфраструктура

Truepicker — молодой, динамичный проект с ещё не известными требованиями к серверным ресурсам. По этой причине Pagodabox — известная облачная платформа — была выбрана для размещения сайта. Она позволяет быстро и без задержек увеличить ресурсы сервера с автоматическим переносом всех данных (файлов, базы данных и кэша). Предоставляемая ей система контроля версий Git используется для автоматического обновления сайта при появлении новых версий.

Взаимодействие

Я выполнял роль ведущего проекта и был ответственным за распределение заданий, общий ход работ и системное администрирование. Другие члены команды находились в разных уголках бывшего СССР и выполняли самые разные роли — jn аналитики до SEO.

Для внутренней работы использовалась CRM Redmine. Это приложение для Ruby on Rails, работающее под nginx, FastCGI и Unicorn на высокопроизводительном VPS под управлением CentOS 6. Он был настроен и поддерживался мной.