Jump to content
Korean Random

shizzard

User
  • Posts

    16
  • Joined

  • Last visited

Posts posted by shizzard

  1. @shizzard, а не думали сделать это опенсорсом и интегрировать с XVM? Сервис был бы взрывным, если бы был доступен как как фича прямо в XVM, а не в браузере =)

    Опенсорс будет. Если не целиком, то частями точно. Просто целиком открывать код сервиса я не вижу смысла - разве что в познавательных целях. Поднять такой сервис на коленке не выйдет, нужны довольно специфичные скиллы. 

    Вот Hydra может быть полезна товарищам, которые пользуются PAPI, только я никак не могу вменяемый интерфейс придумать (сейчас обращение к Hydra идет через механизмы эрлангового кластера). Если сделать интерфейс в виде http-endpoint, то это будет очень удобно - делаешь запрос как обычно, только api.wargaming.net или что там у ВГ меняешь на урл Hydra. Проблема в том, что большое количество висящих http-коннектов - это не есть гут. Надо что-то асинхронное и простое. Если есть идеи - буду рад выслушать.

    Интеграция в xvm? Опять же не вижу смысла никакого. Совершенно разные задачи решают эти сервисы. Это все равно, что прицел включить в xvm или какую-нибудь озвучку. Ну и вообще, интеграция в клиента может быть возможна когда ВГ даст вменяемый клиентский API, чтобы из мода можно было вызвать окна чата или получить статус игрока - онлайн или нет. До этого момента интеграция будет крайне неполной и никому ненужной.

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

    Этапы разработки?

    Ну разрабатывается это все локально, конечно. Стейджинг работает на digitalocean.

    Короткие итерации, таски висят на гитхабе в приватных репозиториях. Например для Charon список задач сейчас выглядит так: http://i.imgur.com/BBwNJCP.png

    Я не знаю, что тут еще можно по этапам разработки сказать. Есть задача, я ее пилю. Скоро товарищ еще подтянется, будем пилить вместе :)

    По тестированию все сложнее. Юнит-тесты пишутся, но функциональное и интеграционное тестирование еще не оформлено. Маловато вменяемых CI сервисов для эрланга, к сожалению, а Travis CI стоит каких-то безумных денег для pet project. Ну и потом, тестирование работы сервиса в целом - это довольно сложная задача. Как я могу узнать, что человек А действительно подходит человеку Б? Но, конечно, определенные думки есть. Работать с тестированием, оптимизацией и затачиванием алгоритмов будем когда все будет уже более-менее готово.

  3. А где следить за новостями? Дайте ссылочку

    Ну мы нигде дневника разработчиков не ведем, если вы об этом. Смысла не вижу как раз потому, что вы первые тут отписались за полгода.

     

    Мне интересно почитать, как там дела идет :)

    Может коротко расскажешь, что да как?

    Для начала стоит сразу пояснить, что этот проект - just for fun. 

     

    С самого начала над проектом Squadder.net работал я один. Время - свободное от работы. Пару месяцев назад к проекту присоединился еще один человек, который на этом фоне изучает программирование с моей помощью. В настоящий момент я занимаюсь переездом в Минск, поэтому времени еще меньше стало. Так что не стоит ожидать каких-то быстрых результатов в ближайшее время.

    Если кому интересна техническая часть:

    Сервис пишется на erlang. Путем долгих размышлений и тестов пришли к тому, что данные будут лежать в riak.

    Сам сервис поделен на несколько независимых приложений.

    Hydra: сервис для работы с WG PAPI. Предоставляет для остальных приложений "умную" очередь для отправки запросов к API. Умеет приоритеты запросов, умеет работать в лимитами от WG (N запросов в M секунд). Возможно, этот сервис выйдет отдельным приложением - нужно только подумать об интерфейсе.

    Charon: сервис, бесконечно сливающий данные игроков. Умеет выделять "мертвые" идентификаторы (несуществующие аккаунты, аккаунты с небольшим количеством боев), разбивает игроков на сто шардов по их рейтингу. В каждом шарде примерно одинаковое количество игроков. Записывает данные в riak.

    Styx-N: серверы кластера riak.

    Sisyphus: сервис, кластеризующий игроков (также в бесконечном цикле) в каждом из сотни шардов. Алгоритм кластеризации - k-means по евклидовой метрике. Задача - получить 100к кластеров игроков, примерно по 2000 игроков в каждом кластере.

    Hades: сервис, который работает с кластерами, а также предоставляет веб-интерфейс для пользователей системы. При запросе поиска загружает в память кластер, к которому принадлежит пользователь, и с помощью рекомендательных алгоритмов выделяет подходящих во взвод игроков.

    Все общение между приложениями осуществляется с использованием механизмов erlang.

    Сейчас готовы сервисы Hydra (полностью) и Charon (частично). Изначально данные игроков предполагалось хранить в MySQL, но из-за неудобной работы с этой базой и определенных сложностей с шардингом мы переезжаем в riak. Для полноценной работы Charon осталось лишь дописать механизмы шардинга и решардинга данных.

    Все сервисы работают на 5-долларовых инстансах digitalocean.

    Если есть какие-то вопросы - велкам. Если есть люди, которые умеют в erlang - велкам. Если вы умеете в программирование, но не умеете в erlang - http://learnyousomeerlang.com и велкам.

    • Upvote 1
  4. Сори, все прочитал но не понял задумки.

    Как это работает сейчас:

    Хочу покататься взводом

    - смотрю контакты:

      есть друзья - зову

      нет друзей  - иду в роты

    В ротах:

    или уже есть рота поиска совзводных на интересной мне технике

    или создаю сам.

    В итоге: на поиск-создание взвода уходит 10 минут. Если совместные покатушки понравились - в друзья, если нет - ищем снова.

    Какую оптимизацию данного процеса предполагается запилить?

     

    Предположим я игрок уровня выше среднего. Хочу покататься взводом на 8-ках. Сервис найдет мне 50000 игроков моего уровня у которых есть прокачанные восьмерки с достаточным количеством боев? И что мне с этим списком делать? Всем слать приглосы?

    Мне нужны игроки моего уровня, на нужной технике, которые готовы поиграть взводом со мной СЕЙЧАС.

     

    ИМХО если делать такой сервис, то необходима регистрация(оптимально из клиента) желающих поиграть и подбор среди них. Если будет сделано удобно, то обязательно выстрелит.

    Когда вы ищете взвод среди друзей, вы уже немного выпадаете из ЦА сервиса, как человек, в каком-то смысле имеющий "сыгранный взвод". Конечно, я бы не стал называть ваш алгоритм поиска хорошим в смысле поиска подходящих кандидатов. Вы ищете взводы по технике, я же хочу искать взводы по стилю игры. Вы можете с равной вероятностью найти как игрока со скиллом выше вашего, так и ниже. Вы можете найти игрока, который так же хорошо управляется с тяжелыми танками, как и вы, а может, найдете прирожденного артовода, который просто хочет себе T110E5 в ангар.

     

    Я предполагаю искать не столько игроков с похожим скиллом, сколько игроков, которые имеют примерно ваши вкусы (больше играют на той технике, которую вы предпочитаете) и которые умеют играть на этой технике примерно так же, как и вы (имеют примерно тот же рейтинг по конкретной машине).

     

    Если же вы качаете какую-нибудь технику и хотите найти взвод именно под нее - для этого будет отдельный режим поиска.

     

    Что касается встраивания в клиент - это, к сожалению, сейчас невозможно. Будем просить Варгейминг организовать нормальный API внутри клиента.

  5. Там вообще что-то глухо. Кто-нибудь, кто получал ответ на заявку, отпишитесь.

    Да, глухо. Кое-кто получил доступ (я до одного товарища достучался, он очень помог, спасибо ему). В остальном - разработчики что-то говорили о том, что раздача доступа то ли ведется, то ли планируется в ближайшее время, хрен его знает.

  6. Если ты хочешь, чтобы идея имела успех - без интеграции в клиент не обойтись.

     

    Если играл в ВоВ, можно подчерпнуть вдохновление из механизма сбора пати в рандомный инст.)

    Выше правильно сказали - Близзард имеет довольно мощный API на клиенте, там и язык используется Lua, который мне больше по душе :) У Варгейминга такого клиентского API, к сожалению, нет. По крайней мере, я не слышал о таковом.

  7. Ух, сколько сообщений. Видно, тема и правда интересная :)

     

    Как вижу это я.

    Открываю я значит окошко, в котором я вижу список игроков с кпд "my_eff +- 50".

    Так как я хочу качать Объект 704, я подбираю игроков, у которых указан танк\перечень танков\уровень танков на котором он желает ездить.

    Теперь неясно, как собирать взвод - будет ли это обычный приглос выбранным мной кандидатам или это будет отдельная комнатка из которой будет сразу собран взвод и отправлен в бой.

    Не отказался бы от такого механизма, который бы присваивал игроку, скажем так, "рейтинг доверия", чтобы исключить всяких звездосбивателей, которые заходят на 2 боя. Это сложный момент. Каждый хочет найти взвод и нормально играть весь вечер а не тратить время на поиски постоянно. Идеальным вариантом будет возможность самостоятельно выставлять оценку игроку по какой угодно шкале. Низшая оценка - сбил звезду и ушел\постоянно полуафк\вообще тупит и так далее. Высшая оценка - отличный командный игрок, всем рекомендую.

    Такая возможность, грамотно продуманная конечно, верх совершенства будет.

    Во-первых, нет возможности увидеть игроков со списком техники, на которой он ездить желает. Когда-нибудь, если проект выстрелит и станет популярным, это станет возможным. Но на данный момент сервис - это вебсайт, и абсолютное большинство людей о нем не знает. А значит, мы не знаем о нем ничего кроме того, что скажет нам WG PAPI. А значит, никаких окошек и комнат. Я не знаю, возможно ли написать мод для клиента (на AS3 писал совсем немного), который будет работать с API сервиса, но что-то мне подсказывает, что нельзя - мы просто не узнаем какой ник у игрока или не сможем открыть окно чата из-за отсутствия API. Поправьте, если я не прав.

    Но в целом я идею понял. Хочется сбить звезду или покатать качаемую технику, которая не попадает в "самую эффективную" и "самую катаемую". Надо этот вопрос обдумать.

    Рейтинг, опять же, будет актуален только после набора критической массы игроков. До тех пор это будут капли в море. Но реализовать можно.

     

    Немного дополню вышеотписавшихся.
     
    Практически всегда, если выполняются два условия:

    • У человека много боёв на определенной технике;
    • Он недавно на ней катал

    - можно сделать вывод, что это его любимая техника, за исключением одного "но" - премиумные танки. Думаю, большое количество игроков катают их из необходимости, а не для фана/удовольствия (особенно если процент побед не выше 50).
     
    Чтобы было понятно, приведу пример. Есть игрок X, у которого есть танк Lowe, на котором он отыграл 2000 боёв из 8000 на акке. Просто нужно было серебро. Но игрока X уже тянет блевать этот танк совсем не вдохновляет, более того, причиняет моральную боль и страдания. И тут система рекомендует его игроку Y1, Y2... И таких рекомендаций будет очень много, причем они будут совсем не в радость игроку X. При первой же возможности он сделает всё, чтобы его не приглашали пофармить. Таких случаев будет множество, т.к. у многих игроков больше всего боёв на прем технике.
     
    Какие выходы вижу из этой ситуации:

    • использовать галочку "искать рекомендации среди прем техники"
    • которая активирует дополнительное поле "с процентом побед не менее X" (этот пункт, возможно, бредовый).
    • отслеживать технику, на которой у игроков много боёв, но их число не увеличивается (наигрались)
    • возможность быстрой и легкой авторизации через WG ID как с целью поиска совзводных, так и с целью отметить нелюбимую технику / отписаться от системы приглашений.

    С автором темы мы уже обсуждали этот момент, но тут, как говорится, без хороших идей и предложений не обойтись.
    Любые варианты приветствуются.
     

     

    С рейтингом отлично придумал.

    По поводу галки, которая отключает/включает прем-технику, имхо, самое оно.

    Процент побед сильно отличается у игроков с одним рейтингом, а значит мы просто сильно сузим список игроков для поиска, и качество пострадает.

    Отслеживать количество боев на технике в динамике - отлично, это поможет найти не столько самую катаемую технику, сколько качаемую.

    Авторизоваться и ткнуть галку "отвалите от меня, не рекомендуйте меня, у меня есть взвод" - великолепно. Помнится, товарищ в предыдущей теме сильно боялся спама. Этот пункт ему поможет.

     

    На счёт "звёздосбивателей": как мне кажется, данную проблему (если её вообще таковой считать, т.к. с хорошим игроком сбить звёзды тоже полезно) можно решить элементарным выставлением свободного статуса (хотя можно и шаблонного). Что бы тот кто ищет, мог спокойно для себя решить - играть или нет с данным человеком. К примеру: "Катаю на 6-8", "Только премы", "Играю ещё 34 мин. 16 сек." и т.п.. 

    Нет статусов до набора критической массы игроков. Если когда-нибудь Варгейминг предоставит еще и API для клиентских модов, то там мы сможем развернуться. А пока, к сожалению, это выглядит нереальным.

     

     

    Товарищи, спасибо всем за предложения, самые интересные я взял на карандаш и уже прорабатываю :) 

    Если есть еще - курите чего вы там курите и пишите снова.

  8. Это рассчитано на поиск постоянного совзводного. Думаю многим бы хотелось просто подобрать к данной технике, на которой они сейчас хотят играть, или найти кого-то на конкретном танке.

    К слову сервис может отслеживать, на какой технике человек играет в последнее время и учитывать это.

     

    Кстати, WG писали, что сделают свой механизм поиска взвода. Правда он явно не будет использовать адекватные рейтинги, так что это просто к слову.

    Хм, ну у меня еще ни разу не получалось во взводе покатать только на какой-то одной машине. Возможен турбослив, ну и приедается. Но в целом я не вижу сложностей в реализации такой фичи, как подбор игрока по отдельно взятой машине. Это даже проще, на самом деле.

    Варгейминг действительно хотел в клиент впилить сервис по поиску взвода, но, как мне кажется, там будет что-то похожее на то, что сейчас творится в списке рот, то есть просто объявления "квасы 52+ 1200+". Варгейминг вообще часто вводит новые фичи в процессе починки того, что игроки используют в неправильной манере, а если вспомнить сколько времени у них заняла реализация нового меню достижений или того же функционала по вводу квестов aka боевых задач, ждать в ближайшее время сервис взводного поиска не стоит. По крайней мере я на это надеюсь :)

  9. Ну алгоритм равномерного распределения игроков по партициям я таки выдумал. Не без помощи DotNetFramework получил срез статистики за май, которого должно хватить для начальных копаний, плюс получил пару идей относительно подбора игроков. Я могу запилить отдельную тему, посвященную алгоритмам подбора и фильтрации игроков, если модераторам это не покажется оффтопом (форум все-таки для обсуждения xvm). В этой теме можно обсудить все эти вещи.

    Эта тема себя уже исчерпала, в принципе, все, что мне было нужно я уже узнал. Спасибо всем за помощь.


    Тема с подробным описанием сервиса: http://www.koreanrandom.com/forum/topic/7132-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81-%D0%BF%D0%BE%D0%B4%D0%B1%D0%BE%D1%80%D0%B0-%D0%B2%D0%B7%D0%B2%D0%BE%D0%B4%D0%B0-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B-%D0%B8-%D0%B8%D0%B4%D0%B5%D0%B8/

  10. Приветствую всех посетителей этого форума.

    Эта тема является логическим продолжением темы "Распределение игроков согласно рейтинга эффективности", которую можно найти в разделе разработки xvm.

    'Ссылка на тему, кому интересно'

     

    Для тех, кому лень читать простынку по ссылке, объясню суть здесь.

    В связи с анонсом ЗБТ Public API Варгейминга я решил начать реализацию давно задуманного сервиса по поиску взвода. Все, что я смог найти в сети - это сервис, который, по сути, является базой данных игроков с возможностью фильтрации по определенным параметрам, вроде рейтинга эффективности или количества боев. То, что хочу сделать я, немного сложнее и интереснее.

     

    Итак, для начала, форма реализации сервиса. Это будет вебсайт с авторизацией с помощью OpenID Варгейминга (то, что сейчас реализовано на Wotreplays). Сервис будет писаться на Erlang, с каким-нибудь реляционным хранилищем в бэкенде для хранения данных игроков. Какое конкретно хранилище будет использоваться - не так уж важно, я склоняюсь к старому-доброму MySQL (MariaDB, если кому-нибудь интересно). Вебморда, конечно, на JavaScript.

     

    Теперь о самом интересном, об алгоритмах поиска. На данный момент я придерживаюсь следующей версии работы:

    • С определенным интервалом сервера Варгейминга будут опрашиваться на предмет получения свежей статистики игроков, обсчитываться (рейтинги, etc) и записываться в базу. Все игроки будут поделены на равные группы (групп я сейчас предполагаю около 100), с градацией по рейтингу. Какой именно рейтинг использовать - пока вопрос открытый.
    • При запросе на получение списка потенциальных совзводных от игрока Х в расчете будут принимать участие только игроки его группы (ну или ±1, в зависимости от адекватности поиска в одной группе). Таким образом, первоочередной фильтр будет работать на общем рейтинге игроков для того, чтобы подобрать игроков, примерно подходящих по скиллу.
    • Следующий эта фильтрации - выборка "любимой" техники игрока, в два этапа. Первая группа "любимой" техники - самая катаемая. Выбирается самая часто катаемая техника игрока (например, 90-й перцентиль или просто топ-10). Вторая группа - техника, на которой игрок показывает лучшие результаты с фильтром по количеству боев не меньше N. Конечно, вторую группу техники можно будет получить, если Варгейминг починит выдачу статистики per-vehicle. 
    • После получения списка техники мы начинаем отфильтровывать людей с похожими параметрами по выбранной технике. То есть сравниваем списки самой катаемой техники и сравниваем рейтинги на самой результативной технике. Таким образом, как мне кажется, можно будет добиться получения списка игроков со схожими вкусами.
    • Теперь самый шик, который будет возможен, если Варгейминг серьезно настроен и решится выдать в общий доступ информацию об онлайне игрока. Мы можем вычислить прайм-тайм каждого из игроков по дням недели (или же будни/выходные; вопрос тестирования алгоритма вычисления прайм-тайма). После этого мы сможем отфильтровать игроков, которые играют не в одно время, чтобы подобрать взвод, которому действительно удобно играть вместе.

     

    В общем-то, алгоритм у меня в голове сейчас выглядит примерно так. 

    Если у вас есть какие-нибудь вопросы, замечания, предложения или критика, высказывайтесь здесь, я мониторю эту тему.

    • Upvote 4
  11. Как сменил ник начинающийся на букву B, отбоя нет от всяких днищ 40%ных, которые приглашают в роты, тренировочные комнаты и взводы.

    Они тупо открывают контакт лист, вводят несколько букв, сервер им показывает кто из игроков онлайн, и они им стопкой шлют приглашения.

    Раздражает жутко.

    Вы хотите то же самое, но не по букве а по рейтингу?

    Да с чёго вы взяли что мне будет интересно играть непонятно с кем? Особенно если приглашения приходят каждые полчаса?

    Бан-лист переполнен!

    Речь не о том, чтобы подбирать взвод исключительно по рейтингу. Алгоритмы у меня созрели довольно хитроумные и я надеюсь, что Варгейминг даст необходимые инструменты для их реализации.

    А вы, как мне кажется, путаете проблему поиска взвода и проблему спама в игре. Напишу я этот сервис или не напишу - спамить вас не перестанут. Так что вам в саппорт идти нужно с этой проблемой, а не ко мне.

    • Upvote 1
  12. им

     

    Вообще инфа периодически проскакивает. И то, что всё хранится в MongoDB, и ТТХ сервера, и запросов бывает более 600 в секунду (игроков более 10000 в секунду).

    Но более подробно к ним:

    @iBat или @sirmax

    Спасибо, это уже что-то. Дождусь sirmax и iBat, думаю, они мне что-нибудь поподробнее смогут рассказать.

  13. @shizzard,

    Для базы XVM без разницы, какой у игрока рейтинг. Любой игрок может попасть в бой и по любому игроку могут посмотреть стату в ангаре, соответственно каким либо образом делить игроков нет никакого смысла. Разве что по кластеру, на котором игрок зарегистрирован, можно поделить, правда и тут я не могу придумать, зачем.

    А примерное распределение игроков по рейтингам можно тут глянуть:

    http://www.koreanrandom.com/forum/topic/2625-xvm-шкала-scale/page-49#entry93439

    могу табличку скинуть, если надо, там для каждого балла указано, сколько игроков с таким рейтингом.

    Да, шардинг вам и правда не нужен, тут я не подумал. Большая часть нагрузки ляжет на кеш.

    А на остальные вопросы есть кому ответить? Тут больше о технической реализации (объем базы, количество запросов), но очень интересно было бы узнать.

  14. Товарищи, я тут новичок, поэтому если тема не в том разделе, перенесите, пожалуйста.

     

    Собственно, зачем я здесь. В связи с анонсом ЗБТ PAPI Варгейминга я решил-таки начать реализацию сервиса, задуманного довольно давно. Речь о сервисе для поиска взвода. Я честно искал подобный сервис в сети и ничего хорошего не нашел. Я сейчас не буду заострять внимание на алгоритмах поиска, это тема для отдельной ветки обсуждения, наверное.

     

    О чем мне хочется у вас узнать, как у людей, непосредственно работающих со статистикой игроков и имеющих доступ к собранной базе, так это о способе достичь равномерного распределения игроков по партициям в базе данных. Объясню подробнее.

     

    Конечно, сервис поиска взвода невозможно реализовать, не храня информацию по статистике игроков у себя на серверах. Хранить все в одной базе слишком сложно и непрактично - база растет, нагрузка на сервис неизвестна и в какой-то момент сервис может просто прилечь из-за отказа в обслуживании. Поэтому я первым же делом подумал о том, что базу статистики игроков нужно побить на партиции. Так как сервис будет искать взвод в том числе и по РЭ/wn6/etc., то и бить на куски базу тоже будет удобно по этому параметру. Проблема лишь в неравномерном распределении количества игроков по партициям шкалы рейтинга. Очевидно, что средних игроков больше, чем плохих или хороших, и "средние" партиции будут получать больше данных и нагрузки, чем остальные. 

     

    Теперь вопросы:

    1. Каким образом технически хранится статистика игроков в вашей базе? Используется ли партиционирование? По какому ключу?

    2. Каков общий объем базы?

    3. Какое примерно количество запросов приезжает на сервис? Среднее/пик/прайм-тайм?

    4. Могу ли я получить помощь в определении алгоритма распределения игроков по базе равномерно?

    5. Возможно ли дальнейшее сотрудничество с разработчиками xvm в этом направлении?

     

    Конечно, если вопросы затрагивают закрытую информацию, можете не отвечать, я пойму.

    Повторюсь, что если у вас возникли какие-нибудь идеи по критериям отбора или по моим мыслям о реализации сервиса - об этом можно будет, наверное, поговорить в отдельной ветке, это уже точно будет оффтопом. Но, как говорится, feel free to contact me.

    • Upvote 2
×
×
  • Create New...