Вот и наступила осенне-зимняя пора. За окном дожди и желания проводить время на открытом воздухе все меньше и меньше. И вот приходит мне сообщение от товарища "А давай поиграем в Lineage 2?". И опять я, поддавшись ностальгии, согласился. Выбрали мы свеженький сервер на ру-офе и создали персонажей.



 
В отличии от World of Warcraft в Lineage 2 совершенно другая система добычи игровой валюты. Нужно круглыми сутками охотиться на монстров с целью получения наживы. Для меня было даже открытием, что для некоторых людей RMT (Real money trading) является чем то вроде работы. Также, в игре присутствует экономика, которую формируют игроки. Иными словами, можно заработать на купи-продай или же покупать дешевые ресурсы, из них делать вещи и продавать с наценкой. Так как для нас игра остается чем то вроде отдыха именно такой способ получения игровой валюты был выбран нами.


Чтобы покупать и продавать предметы игрок должен находиться online (Скриншот сверху). Соответсвенно, кто-то хочет побыстрее продать (дешевле) а кто-то побыстрее купить (дороже). А что если разница продать — купить положительная? Как раз этот пример и будет рассмотрен в статье как итог.


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


Spoiler:
В статье будут использованы следующие технологии
Docker, DigitalOcean, NodeJs, Ktor, Prometheus, Grafana, Telegram bot notification


Сначала была Data


Чтобы "что-то" анализировать, нужно сначала нам это "что-то" получить. Было рассмотрено 2 варианта получения информации.


Sniffing — написать приложение, которое будет слушать трафик и его анализировать. Минусы данного подхода очень просты. Нужно быть постоянно онлайн и смотреть рынок да и по политике сервера могут забанить. Однако, хотелось бы минимальных действий от пользователя и желательно максимально все автоматизировать.


Parsing — есть сайт, который как раз специализируется на сниффинге для этой игры — l2on.net. Как раз то, что нам нужно! Мы отдаем роль собирателя сырых данных этому сервису. Осталось только как то получить данных и начать с ними экспериментировать.
 



 


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



 
Пробуем… Отлично! Получаем список цен покупки и продажи.
Теперь нужно думать с помощью чего будем парсить сайт.


Выбор пал на Puppeteer для NodeJs.
На его основе был создан первый модуль подсистемы — Scrapper. Его основная задача — пойти на сайт, открыть, распарсить и вернуть данные в виде JSON. Берем выборку из последних N элементов, считаем среднюю, минимальную и максимальную цену. (Забегая вперед скажу что нужно доработать percentile для редактирования шума если какой то игрок ставит слишком высокую цену на продажу или низкую на покупку) Получаем ответ по данным вида:
 



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


Предположим, у нас будет 2-3 потребителя наших данных и мы хотим отдавать их массивом. Также мы хотим избежать частых запросов на l2on чтобы не быть добавленным в черный список. Значит нам нужно создать второй модуль, который будет выполнять роль посредника между l2on и нашими агентами.


Методика опроса была выбрана простая. Раз в 5 минут модуль должен запрашивать все предметы из установленного списка и предоставлять на выход данные как по одному ресурсу так и выход для аналитики.


Для этой системы захотелось попробовать Ktor — сервер решение на Kotlin.
Базу данных использовать не стал, а последние данные решил хранить в Singleton. Да, решение не самое изящное, но на скорую руку подойдет, а оптимизировать всегда успеем.


Так появился второй модуль системы — Harvester.
Harvester предоставляет для пользователя два endpoint'a /item/{id} и /metrics
Если с первым все понятно, то последний возвращает данные в формате для следующей системы — Prometheus




Хранение данных для аналитики


Промежуточным звеном был выбран Prometheus — Open Source база данных для аналитики которая работает через Pull подход. Другими словами при конфигурировании вам необходимо указать в yaml файле набор поставщиков данных и частоту опроса. В нашем случае — это как раз тот самый /metrics endpoint.


Пробуем запустить Prometheus (по умолчанию это 9090 порт) и если видим в Target что то похожее на:
 



 
Значит мы идем по правильному пути. Это значит что каждый 30 секунд Prometheus идет в Harvester и забирает последнее состояние по всем интересующим нас товарам.


Отображение данных


Следующий этап — это красивое отображение графиков


Для отрисовки была выбрана Grafana которая тоже Open Source.
Плюсы Grafana и Prometheus — они доступны в виде Docker контейнеров, которые требуют от пользователя минимум действий.


При первом запуске Grafana (стандартный порт 3000) она попросит указать доступную базу данных. Выбираем Prometheus как базу и прописываем адрес. Если все пройдет успешно — то увидим:
 



 
Следующий шаг — отрисовать графики.


Пример запроса на отрисовку графика по продаже:
 



 
Таким образом мы в любой момент времени видим среднюю цену для закупки и продажи а также динамику цен.
 



 
Однако, бывают моменты, когда минимальная цена продажи выше максимальной цены покупки. Это означает, что мы можем получить легкую наживу в виде "купи продай". Для канала отправки нотификация был выбран Telegram. Создаем бота и добавляет его токен в Grafana (да да, она поддерживать нотификации)
 



 
Достаточно просто установить условие, при котором нам будет приходит данное уведомление.
 



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



 


Облако


Каждую подсистему мы пакуем в Docker container и загружаем в DigitalOcean или другие сервисы по вашему вкусу. Но это не мешает нам и запускать всю эту систему без выделенного IP. Сейчас минимальный контейнер на DO стоит 5$ в месяц.


Запускаем сначала Scrapper
docker run -d -p 6661:6661 --name scrapper l2/scrapper:latest


За ним Harvester
docker run -d -p 6662:6662 -v /root/harvester:/res --link scrapper:scrapper l2harvester:latest
В папке /harvester должен находиться файл ids.txt с форматом


id1 name1
id2 name2


Заключение


В конечном итоге система выглядит следующим образом:



Планируется в будущем добавить агента чтобы обновлять google docs, и считать стоимость крафта на лету.


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


В качестве дополнения прикладываю ссылки для ознакомления с кодом:
Scrapper
Harvester
(Собрать контейнеры можно командами
docker build -t scrapper.
docker build -t harvester .)


Я очень надеюсь, что данная статья навеяла кому то ностальгические чувства, или же дала вдохновение для какой то новой идеи. Спасибо за то, что дочитали статью до конца!

Комментарии (56)


  1. shushu
    26.11.2018 07:10

    А покупать автоматически как то можно? Или что бы сделать покупку надо:
    1. получить сообщение в инстаграм о низкой цене чего-то
    2. зайти онлайн и найти того самого единственного кто продаёт за эту низкую стоимость
    3. написать тому сообщение, и надеясь что это чтото еще доступно совершить покупку через обмен
    ?

    Если то так: то как по мне: мне кажется что процесс слишком долгий и в большиснтве случаев окажется что уже всё распродано


    1. Jukobob
      26.11.2018 07:29

      Процесс покупки в игре нельзя автоматизировать. Мы можем лишь получить оповещение о возможной выгоде. А дальше уже все зависит от удачи.

      1. Получаем оповещение
      2. Заходим на l2on и смотрим игровые ники персонажей (платная опция около 60 рублей в месяц)
      3. Сообщения писать не надо. Трейдинг производится через «Торговые лавки» пример на первом скриншоте.


      1. nfw
        26.11.2018 08:08

        Процесс покупки в игре нельзя автоматизировать

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


        1. Jukobob
          26.11.2018 09:47

          Опять же замечу что это Ру-Офф и вероятность получить бан за стороннее обеспечение не равна нулю


          1. Durimar123
            26.11.2018 18:30

            Можно было отработать технологию на пиратских.
            Ловить надо не только, что в продаже/покупке.
            Но и «крики» по маскам типа «Вася: куплю coal по 500!»; «Vova: sell SSb 300g»

            Кроме того для «захвата рынка» надо прикручивать функционал для гибкой скупки/ продажи и крафта, а его без бота тоже никак не сделать.


            1. igordata
              27.11.2018 12:54

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


              1. Durimar123
                28.11.2018 13:14

                >крики по маскам ловить бесполезно

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


                1. river-fall
                  28.11.2018 13:43

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

                  Я зарабатывал в линейке двумя гномами, один покупал камни стихий по 2.1кк, второй продавал по 2.4кк (примерно). Примерно раз в сутки перегружал деньги и камни друг на друга
                  из 35кк сделал 300кк за месяц.


                  1. Durimar123
                    28.11.2018 14:02

                    >да, шмотками прибыльнее торговать, но требует активных действий.

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

                    >Примерно раз в сутки перегружал деньги и камни друг на друга
                    из 35кк сделал 300кк за месяц.

                    У меня было вроде 5 ботов для крафта и продажи.
                    Пара покупала ингры, которых не хватало для крафта, по низкой цене, все купи/продай писались в логи, поэтому если соклановец продал боту разница ему возвращалась по логам.

                    Еще пара крафтила по списку включая SS (с приоритетами — чем меньше товара тем больший у него приоритет на крафт) и продавала по высокой цене. Разница межу купленной и рыночной также отдавалась сокланавцам.

                    Был смешной случай когда я «0» забыл добавить в цене продажи SSC, и уехал на дачу :) профукал довольно много, но как результат обрушил демпингом все цены и выдавил всех продавцов и крафтеров SSC с рынка, и за следующие 2-3 дня вернул все потери, причем многократно.

                    И еще пара вроде бегал закупала ингры для SS у НПС и тащили крафтерам, но точно я уже не помню — давно это было.

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


                    1. river-fall
                      28.11.2018 15:01

                      на руоффе больше двух окон требовало больше одного оплаченного аккаунта :)


      1. Sersoftin
        26.11.2018 11:54

        Консольные клиенты наверное сушществуют.


  1. Sersoftin
    26.11.2018 07:35
    +1

    Оо, годно годно. Как раз хотел себе что-то подобное, но не для линейки.


    1. Jukobob
      26.11.2018 07:48

      На то и был расчет! Линейка — это лишь обертка. Когда с чем-то хочешь разобраться то нужно придумать для чего и потом изучать.


      1. c_kotik
        26.11.2018 09:31

        Но самое интересное на самом деле — это как раз методика получения данных для анализа. Хотя в вашем случае этот момент отдан на откуп внешнему сервису.


        1. Jukobob
          26.11.2018 09:46

          «Ну это уже совсем другая история...» — ибо сниффинг данных достаточно сложная задача. Цель данной статьи рассказать про возможности аналитики.


  1. Merkat0r
    26.11.2018 10:04

    DertyPervert ?))))

    Есть 1 косяк из-за чего все это работать не будет :)
    Л2он не в «онлайне» работает, а с задержкой, иногда весьма большой. Также, поэтому и по платным просмотрам трейдеров — они могут висеть, но товара уже нет или цена изменилась.

    P.S.> А еще некие прошаренные гномы специально ставят цену в волну чека и меняют обратно, чтоб быть в топе статистики :)


    1. Jukobob
      26.11.2018 10:28

      Я вообще писал эту аналитику чтобы иметь возможность проверять актуальные средние цены на ресурсы. Нотификации это скорее дополнение.

      А вопрос с завышенными ценами решается с помощью перценталей.


      1. Merkat0r
        26.11.2018 10:38

        Средняя цена редко меняется вообще, кроме первых 2-3х недель от старта сервера и до масс-крафта бест Б на заточку.
        В этом и косяк — на л2оне будет одно(можно и вообще подделать пакет зацепившись на его нетио), а в игре совсем другое


        1. Jukobob
          26.11.2018 10:46

          Так в чем спор? Что можно скомпрометировать любую систему и найти граничные случаи?
          Я не поставляю готовый продукт в виде ПО, а лишь рассказываю про возможности аналитики. А там дальше кто что хочет и куда. Может кто то сделает себе аналогичное для ВОВ и тд. А Lineage 2 в данном случае — прикладное. Так сказать обертка от конфетки.


          1. Merkat0r
            26.11.2018 10:48

            Так ни в чем))) Я именно про Ла2 реализацию источника данных имел ввиду конечно же


  1. FiLunder7
    26.11.2018 10:59

    Немножечко оффтопа и вопрос к играющим в Линейку: Чем людям она так заходит? Я искренне не понимаю. Да во время своего появления она была в чем-то свежей и не обычной, но все убивал классический корейский гринд. Но теперь-то: куча народу играет в неё, хотя она никак не обновлялась ни графически ни по игровым механикам. А по сути основная механика это тупой гринд. Есть же более современные и интересные корейские клоны, типа Теры. Чем она так манит? Чисто ностальгией? Я бы кстати поиграл в Ультиму, но чисто для удовольствия, а не проводя в игре по 6 часов как сейчас в линейке многие.


    1. akryukov
      26.11.2018 11:20

      Есть мнение, что простой гринд это что то вроде игр 3-в-ряд, только в другой обертке. Интересна не сама механика, а ощущение потока с постоянным подкреплением.


      1. SpiritOfDarkDragon
        26.11.2018 18:23

        всё так. многие играют именно из-за гринда


    1. half-life
      26.11.2018 11:21

      Ультима? Кто сказал ультима?
      Эх… жаль что не осталось нормальных серверов. Те что есть или с высоким пингом или без онлайна или с какими-то кастомными приблудами которые по мнению администрации ресурса, должны приносить изюминку, а по факту или вносят дисбаланс или убивают всю ту ламповость за которую многие игру и любят.


      1. FiLunder7
        26.11.2018 11:22

        Да, я бы в классику поиграл.


      1. proffard
        26.11.2018 12:53

        UO Outlands. Открылся 27 Октября этого года. 1800 игроков стабильно онлайн


    1. Jukobob
      26.11.2018 11:26

      Для меня это прежде всего ностальгия. Видели бы вы мой аккаунт в Steam...Red Alert, Age of Empires, Half Life…


      1. FiLunder7
        26.11.2018 11:30

        Это понятно. Но не может же быть столько «ностальгирующих», особенно если взять во внимание фразу: для некоторых людей RMT (Real money trading) является чем то вроде работы


    1. Merkat0r
      26.11.2018 11:37

      Кстати, Lineage по сути то из ультимы и вышла, это один разраб :)

      Ну, как сказать — для большей части заходит мейн версия аля вовлейдж(ГоД+), там и графика подтянута(через пень колоду) и прочие казуальные вещи в виде броне-бикини.
      Но, собственно, эти люди с нее и начинали, по-большей части не застав старого доброго хардкора. Там все просто легко и за вмз.

      А вот все старички на Классике :) Он, по сути, вдохнул на некоторое время новую жизнь. Но… Корейцы упорно не могут в развитие и логический контент и все начинают снова беспощадно оказуаливать и вводить бредовые инстансы и прочее приходя о5 к эдакому Классик-ГоДу :(

      А, вообще имхо все всеравно возвращаются после проб новых ММО в ла2\вов(ева тут отдельно все же стоит) ибо ну нету нормальных преемников. Одни вовлейджы под разным соусом или, что еще хуже, бессмысленные тайтлы или такие же гриндилки в которых один графен.
      У Арчейджа не плохо получалось(хотя название намекает кто разработчик:) ), но и он слился туда же. Надежда была на TESO, но… все те же грабли, только в купе еще и с тем, что она не смотрится, как мморпг, а скорее как сингл с возможностью ко-опа


      1. shalm
        26.11.2018 21:00

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


      1. Fedorchik
        27.11.2018 10:35

        Мне очень зашел игромеханикой Blade and Soul.
        Я бы в него даже играл, но на европейских серверах блочат наши IP из-за договора с русским паблишером, а у русского паблишера античит ВНЕЗАПНО не поддерживает Win10TS.
        А с прокси мне возиться было лень.
        Все другие ММО как-то сразу мимо прошли.


    1. tSmoker
      26.11.2018 12:08
      +1

      10 лет как «завязал» и не думал, что онлайн до сих пор есть. Могу предположить, что онлайн до сих пор есть за счет того, что это единственная игра с возможностью ПК/нормального ПВП.
      А гринд — ну это имхо вообще элементарно. Достаточно только начать и психологически ты «подсаживаешься» на достижение новых «уровней\предметов\игровых достижений». Одни только сундуки ака «честы»(Chests) это уже за гранью добра и зла и современные лутбоксы это жалкая тень былого поиска «заточек» и неудачных заточек оружия на +много.
      p.s. написал всё это и захотелось как в старь, прокачаться «красным» персонажем до 70+


    1. NickyX3
      26.11.2018 15:51

      Чем она так манит?

      Во времена расцвета евро сервера Teon манила самым суровым хардкорным PvP и конечно социальными аспектами. BigWar на теоне до сих пор тепло вспоминаю. Непрерывные бойни за Баюма между топовыми альянсами по 40+ часов это вам не WoW казуальный


    1. MorteNoir
      27.11.2018 00:14

      Я любил Ла2 за хардкор и играл на хрониках C4 и Interlude с рейтами x1-x4. Добрая доля жизни была потрачена на игру, которая, как оказалось, дала самое важное в моей работе качество ? усидчивость. Ностальгия.


    1. DistortNeo
      27.11.2018 00:26

      1. Хардкорная система PvP и PvE: потеря набранных процентов при смерти, фуллдроп, массовые мероприятия.


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


      3. Сложный, и потому интересный, игровой геймплей. Полная партия — 9 человек в классической L2, причём многие классы по управлению были весьма сложны.



      А по сути основная механика это тупой гринд.

      В основе любой онлайн-игры лежит бесконечное улучшение характеристик персонажа.


      1. FiLunder7
        27.11.2018 10:27

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


        1. tcproute
          27.11.2018 12:49

          А у корейцев это тупа: пойди туда, убей 200 монстров.

          Простите, но раз уж мы о L2, то 1000 мобов минимум :)


  1. Splo1ter
    26.11.2018 11:21

    Что то сборная солянка из всего) А можно было это на одной ноде написать?


    1. Jukobob
      26.11.2018 11:27

      Можно было и на одной ноде. Но хотелось именно на нескольких контейнерах и различных языка. Так сказать «поиграться» на выходных.


  1. Trabant
    26.11.2018 11:57

    Как то десяток лет назад я админил компьютерный клуб. Ночами приходили клиенты от13 до 45 лет и садились толпой играть в линейку. Ночью, если заказать всю ночь, было дешевле вдвое. Так вот эти товарищи неплохо зарабатывали, иногда по 400-500$ за ночь. Они по большей части делали то, о чём говорит автор в статье. Покупали дешевле, продавали дороже. Некоторые промышляли обманом и мошенничеством (в игре). Заводили отношения с игроками, входили в доверие, брали что то в долг или из серии «дай поиграть оружие, завтра верну...». Я лично не раз был свидетелем, когда приезжали люди на такси из других городов и прямо у меня в игротеке покупали топовое оружие у этих парнишек/девчёнок за реальные достаточно крупные деньги, на которые можно было прожить месяц-два.


    1. HiMem-74
      26.11.2018 12:49

      Как раз с десяток лет назад мне тяжело давался очередной кризис, бесперспективняк вокруг и тяжелый гринд на работе… Вот отдушиной и была Ла2, после работы «побегать» пару часов (на самом деле часто за полночь), пообщаться с сокланами (играл саппортом). Ну и посадить гномов торговать в свое отсутствие, это обязательно )))
      Эх, вспоминаю иногда с ностальгией! Иногда даже снится. Соскочил с трудом, пока держусь )))


      1. Punn1k
        26.11.2018 13:20

        Соскочил с трудом это прям в точку))
        Тоже было тяжело слезть, и довольно часто хочется как в старые добрые…


        1. river-fall
          26.11.2018 18:52

          это точно. Бросить курить было легче и обратно не тянет, в отличие от


        1. xdevel
          27.11.2018 19:52

          Раз в 2-3-4 года у меня нарастает желание и я «срываюсь» на месяц-полтора :). Побегал, пофармил, попвпшился и очередной сервер сдох. Увы (или не увы)), сейчас из фришек чего-то долгоиграющего х5-х25 нет.


  1. Ascar
    26.11.2018 14:55

    Там давно уже донат решает. Лет 7 назад еще был какой то смысл ботов заводить. (Плюсанул за воспоминания)


  1. Femistoklov
    26.11.2018 15:35

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


  1. SpaceMonkey
    26.11.2018 15:47

    Не совсем понимаю почему в статье упоминается избыточный для этой задачи
    puppeteer, а в исходниках используется более рациональный jsdom? Это был рефакторинг?
    p.s. Причем в package.json puppeteer остался, надо бы убрать, а то он в зависимостях тянет с собой chromium. =)


    1. Jukobob
      26.11.2018 16:16

      К сожалению я не являюсь NodeJs разработчиком. Основная моя специфика — мобильные приложения. Буду рад Pull Request'ам на гитхабе.


    1. Jukobob
      26.11.2018 18:27

      Кстати спасибо за замечание. Случайно не залил другую версию scrapper.


  1. AndreDeBonk
    27.11.2018 22:15

    Забавно увидеть подобную статью, прям мурашки прошли!

    Дело в том, что у меня есть аналогичный опыт, я уделил этому очень много времени и очень ценю весь опыт что я получил.

    Лично я пошел другим путем, тоже сделав его на основании л2она, только использовал я для этого исключительно ексель. Разработкой этого решения я занимался намного дольше чем самой игрой :) По сути все время, что я играл — я допиливал полезный функционал.

    Увы, л2он — самый слабый компонент этого процесса, потому что данные там начали появляться очень редко. Иннова начала вести активную борьбу против л2она.
    Что взять с худшего локализатора. Вместо принятия хоть каких-то мер против РМТ (из-за чего 100 рублей могут покрыть месяц игровых усилий среднего игрока), они пресуют сайт благодаря которому можно было играться хотя бы в рынок. Вручную уйдет целый час лишь на то, чтобы просмотреть все что продается.

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

    При обнаружении выгодной сделки — получал звуковое уведомление, перечень товаров и ссылки на л2он с этими товарами. Регулярно покупал товары по цене дешевле сдачи в магазин, регулярно скупал товары где люди ошибались в цене на один или много нулей.

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

    Забросил это все дело из-за проблемами со своим пк (крашились окна, из-за чего не мог сидеть на продаже), максимально бездарной и наплевательской политики Инновы и окончательного заболачивания геймплея.

    Знаю что кроме меня были и другие люди кто делал похожие вещи (при чем со своими ботами парсерами), но у меня почему-то получалось хватать все быстрее :)

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

    Если кто-то будет рассматривать идею врыва на классические сервера — то игра по сути есть только на американских серверах. Играть на серверах Инновы не имеет вообще никакого смысла. Повторюсь, месяц игровых усилий покупается за 100 рублей.


    1. AndreDeBonk
      27.11.2018 00:25
      +1

      Для тех кому интересно, чем хороша линейка и почему альтернатив для нее по сути нету:

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

      Во время игры можно испытать любую гамму эмоций, во время сражений чувствуешь адреналин, любые потери воспринимаются как потери, а награды — как награды. Боевка в игре очень крутая, после пвп линейки и олимпа в частности, пианинить в моба играх не составляет вообще никакого труда. В целом боевка линейки это не press x to win, а постоянное оценивание ситуации и принятия верных решений (хотя можно подобрать классы для спама 2 кнопок, но это не будет реализацией полного потенциала героя).

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

      К примеру, мне вов не зашел из-за своей мультяшности, и тоже самое касается третьей Диаблы. Атмосфера не способствует погружению, по крайней мере у меня.
      Зато нравится атмосфера линейки, диаблы второй и титан квеста.

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

      Реальность такова, что на росийских официальных серверах очень много людей, которые играют по 8-16 часов ради того, чтобы продавать игровую валюту за реал. Если раньше это делалось скрытно и втихую, и влияние на игру было не очень большим, то сейчас под бездействие Инновы это делается в открытую. РМТшники держат все лучшие игровые ресурсы и составляют топовые сайды, не оставляя вообще шансов обычному игроку, у которого нету времени жить в игре. Из-за этого вся экономика игры катиться в мусорку, добиться хоть чего-то в игре можно исключительно вливая реал.

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

      Постепенно игру все больше упрощали, пока не сделали бесплатной и она потеряла весь свой шарм и смысл.
      Бесплатные сервера перешли на месячную, а затем на недельную модель жизни. Величайшее открытие года, которое заканчивается спустя неделю — и так бесеконечно. По сути большая часть нынешней аудитории л2 — это люди которые приемлют подобную ситуацию и способ игры.

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

      Недавно открылись американские сервера классика. Считаю их единственными возможными для игры.
      Также недавно увидел, что сервер который принес мне лучшие времена в линейки спустя долгих лет тоже планирует открыть новый сервер — как по мне, это вторая потенциальная возможность хорошо поиграть. Проект пилится энтузиастом, который не ставит перед собой цель побыстрому срубить бабла на «эпическом недельном открытии года». Но так как он один, процесс идет не очень быстро. Было бы здорово если бы на хабре нашлись люди с похожими идеями и приняли участие в разработке. На форуме можно с ним связаться и обсудить чем можно помочь проекту.
      www.blacksun.com.ua

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


  1. balsoft
    26.11.2018 23:45
    +1

    Зачем какие-то странные и жутко тяжелые контейнеры в докерах с базами данных и рисовалками графиков на их основе? Всё описанное в статье (1)вытягивание данных с сайта, складывание на диск, структурирование, анализ, оповещения в tg 2)построение графиков), можно легко реализовать как небольшой скрипт на <любом из адекватных скриптовом языке> с выводом данных в csv и последующим построением графика в <любой из утилит>. С первой частью справился бы любой калькулятор, подключенный к интернету, а для второй с него можно было бы стаскивать данные хоть телефоном, хоть компьютером. Я для похожего проекта использовал домашний wifi-роутер и тонкий клиент со старым монитором, итоговая цена конкретно для этого проекта — 0$, а не 5$. И я очень сомневаюсь, что у меня 50 строк на perl заняли больше времени, чем вся эта мутотень с кучей ненужно.
    Но если забыть про все эти придирки — классная штука, но только не очень понятна её «законность» в линейке (скорее всего, она запрещена ToS).


  1. DistortNeo
    26.11.2018 23:55

    Самое интересное здесь — сниффинг. Я играл на евро, и там никакой проблемы разобрать протокол не было: достаточно было просто взять исходники Java-сервера.

    А ещё можно было пользоваться социальной инженерией. Посадить одного перса продавать что-то по завышенной цене, а другим орать в чат «WTB ***» по ещё более завышенной цене.


    1. Jukobob
      27.11.2018 06:00

      Жаль собачий корм убрали, а то под видом варниша бы на ура заходил


  1. forcam
    27.11.2018 02:41

    Шутки шутками, но находятся и те кто заколачивают там состояния.
    Если брать классику в которой нет аукциона — да, вполне сложно заработать, просто потому что оптимизировать процесс очень сложно, в плане автоматом покупать/продавать.
    А вот вне классики есть аукцион, отдельный нпс, поставил перса около НПС и покупай продавай сутками никуда не отходя, так вот подозреваю, что кто-то сварганил прогу котрая скупала все дешевое и подозреваю после определенной аналитики выставляла на продажу, т.е. купил оч дешево, поставил дешевле среденерыночно и опять же продал, просто подождал дольше того кто продал совсем дешево. Там на ауке можно просто обновлять новые товары, достаточно знать цены на все товары и просто сверять с тем что только что поставили на аук и если цена входить в нужны диапазон, скупать и тут же ставить на продажу. Ограничение 10 продаж на одно окно, но никто не мешает завести много окон. Будет ли кто-то мониторить, что определенный перс слишком быстро обогащается — не факт. Сейчас руоф практически умер, но подозреваю, что где-то на корее или на норм фрихе десяток таких ботов принесет не слабую прибыль, аденку скупают вполне полулегальные сервисы) а процессе можно автоматизировать.


  1. fideze
    27.11.2018 12:48
    +1

    Возможно, кого-то заинтересует тоже достаточно популярная игра про гринд с живой экономикой Path of Exile.

    В ней торговля изначально осуществлялась через чат и официальный форум. Через какое-то время начали появляться сайты которые мониторили форум. Эти сайты существуют до сих пор, например, poe.trade. Через несколько лет разработчики запустили аналог этого сайта.
    Более того, разработчик ввел в игру вкладки сундука (за реальные деньги), в которых можно не только хранить предметы, но и выставлять на продажу. И всё это завернул в публичный API

    Сообщество конечно же пошло дальше и начали появляться простые и не очень инструменты аналитики. Один из самых популярных это poe.ninja. Ведёт простой мониторинг цен на всё что можно продать и купить.

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