Проблематика получения преимуществ с помощью ботов и твинков

в 14:39, , рубрики: game development

Написать данную статью меня побудил спор на просторах интернета, а так же давно наблюдаемая бессмысленная борьба с ботами в играх и дополнительными аккаунтами, заводимыми для того, чтобы играть за второго персонажа, чтобы дать преимущество своему основному персонажу. Сразу скажу, что такая проблема возникает только в низко интеллектуальных играх. Более того, можно смело утверждать, где такая проблема есть — эта проблема возникает только из-за того, что разработчики не захотели, не смогли сделать сбалансированную и интеллектуальную игру. Просто подумайте, чем Вам поможет новый аккаунт, если Вы будете играть в шахматы? Ну, скажите Вы, шахматы :) Но принцип можно распространить и на все другие игры. Тогда меня спросили:

Как вообще можно сделать игру, в которой два персонажа не имеют преимуществ перед одним?

В разрабатываемой мной игре «Кибер развитие» это реализовано, может еще не окончательно, но в значительной мере. А тем кому действительно интересен ответ — читаем дальше…

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

Ключ таится в торговле

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

Принцип №1. Торгуют не все! Попадая в игру, персонаж не может торговать сразу между городами. Персонаж может только купить товар на рынке в том городе, в котором находится. Но вначале у него нет денег. Чтобы их заработать он должен, что-то произвести и потом продать на рынке этого города. Уже здесь многие хитрости отвалятся. Если ты заводишь дополнительный аккаунт, ты начинаешь производить все заново и без преимуществ. Но вот ты накопил за пару дней заветные 100.000$ и тебе разрешили торговать, и даже больше, ты завел ещё дополнительный аккаунт с новым персонажем и хочешь передать ему 100.000$, чтобы развить твинка, чтобы потом он мог помогать основному персонажу.

Принцип №2. Естественный рынок! Самый простой способ реализовать естественный рынок — это его не реализовывать :) Торгуют только сами игроки. Но тут проблемка, у них нет изначально денег, а значит вообще в виртуальном мире нет денежной массы. В некоторых играх игроку дают некую стартовую сумму, а еще чаще делают искусственный рынок, когда деньги даются неким правительством, которое печатает деньги. Если дать стартовую сумму — уже есть риск: игрок заводит 1000 аккаунтов и если в игре есть моментальный рынок перекидывает их основному аккаунту. Но такую примитивную схему мы нейтрализовали уже принципом №1. Игроку, чтобы завести 1000 аккаунтов, да ладно даже 5 — нужна неделя, чтобы развить этих 5-х персонажей до уровня, чтобы они могли торговать. Итак, не имея источников денежной массы мы не можем создать естественный рынок. Мы вводим правительство, которое печатает деньги. Но тут Вы могли бы схватить меня за руку и сказать, что это искусственный рынок. Не совсем. Искусственным он станет тогда, когда деньги будут только выдаваться, и главное выдаваться не пропорционально. Мы же сделаем так. Продукт производиться в игре некоторое количество минут. И если правительство будет скупать по цене, которое будет пропорционально затраченному в игре времени, то цена будет соответствовать тому, сколько игрок потратил на игру времени. Т.е. в нашем примере из первого принципа, игроку будет без разницы или потратить время основным персонажем, чтобы добыть 100.000$ для второго персонажа, или потратить это же время сразу вторым персонажем. Это в случае, если скупает виртуальное правительство, если же удалось осуществить сделку среди игроков, так еще лучше — это в рамках правил игры.

Принцип №3. Время скоротечно! Конечно, когда итерация в игре занимает большое количество времени, скажем от часа, то у игрока есть время, чтобы завести дополнительного персонажа и управлять ими одновременно. Но если у тебя действие занимает несколько минут, или максимум 20 минут. То как часто ты будешь успевать переключаться между аккаунтами? Сколько ты сможешь заводить одновременно?

Принцип №4. Сделаем доп. персонажей элементом игры (разрешим твинков)! И не просто разрешим, а сделаем для них преимущества. Например, если с нового аккаунта персонаж попадает в случайный город, и чтобы основной персонаж имел возможность с ним торговать, нужно кому-то из них накопить коней и съехаться в один город. Мы же дадим такую возможность сразу и сделаем это элементом игры, вида «найти друга/коллегу, которым сам же и будешь управлять». Таким образом, значительная часть «хитрицов» будет выведена на свет, ну а кто упрямый, и хочет получить преимущества, будет терпеть большие неудобства.

Идем дальше в развенчании возможности получить преимущество, если управлять одновременно несколькими персонажами. Но резюмируем то, что уже сделано. Честным игрокам мы дали преимущество перед «игрокам, желающим преимуществ, получаемых сомнительными способами» (где-то я видил неплохой для этого термин — багоюзер). Чтобы стать багоюзером — нужно честно затратить время, чтобы получить возможность торговать. Более того между персонажами надо разрываться, т.к. нужно отслеживать состояние каждого за короткое время. Торгуя на естественном рынке от «правительства» ты получаешь суммы пропорциональные затраченному времени. Какие возможности еще остаются у багоюзера? Иногда в игре нужны крупные суммы денег или товары, которые нет у основного персонажа, но есть у других в сумме. Есть еще вариант, когда что-то нужно в конкретный момент как «ложка к обеду», и тогда нужно быстро перекинуть все, что у тебя есть у разных персонажей к одному. Посмотрим, как нейтрализовать и это.

Принцип №5. Цены на рынке взвинчиваем вверх! Моментальный рынок есть только при торговле в одном городе, а между городами надо делать заказы и доставка товаров стоит средств и времени. Но находится в одном городе твинкам не выгодно. Города отличаются тем, какие ресурсы и как легко можно добыть. Причем если есть одно, другого может не быть. Поэтому для успешного развития нужно производить и торговать в разных городах. Теперь если ты торгуешь между своими персонажами, ты не можешь выставить по низкой цене — купит правительство или другой игрок за сравнительно не большие деньги. Тогда багоюзер идет на хитрость, твинк выставляет по взвинченной цене какую-то ерунду, и ее покупает основной персонаж. Тем самым передаются деньги твинку от основного персонажа. Вторым этапом, основной персонаж по завышенной цене выставляет товар, который хочет передать и твинк покупает. Основной персонаж возвращает свои деньги, а у твинка оказывается нужный ему товар. Отметим, что чтобы иметь возможность завысить цены багоюзер должен был накопить честным способом нужную сумму наличных. Этим способом можно слить все ценное нужному персонажу. Но увы, не получится сделать это моментально, т.к. перевозка между городами во что-то обойдется (т.е. при передаче в одно место получишь меньше, чем было в разных) и займет время.

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

Принцип №6. Одна из целей игры построить устойчивое производство! Мы сделаем проще, то что сделал багоюзер объявим целью игры и дадим преимущества тем, кто не скрывает своих доп. персонажей. Выделим специальную роль в игре — ремесленники. И сделаем их по принципу бото-твинков. Дадим игроку возможность составлять для них распорядок производства на игровую неделю. Они будут автоматически без участия игрока создавать продукты, и смогут по высоким ценам перекидывать результат за деньги от основного персонажа. Кто-то их будет снабжать лекарствами, кто едой. И то что делал багоюзер, только шире будет элементом игры. Более того, опять же честные игроки получат преимущество.

Принцип №7. А если хотим закрутить гайки? А можно прикрыть лавочку и по торговле по высоким ценам. Как? Как продавец находит покупателя? Один вариант, продавец выставляет то, что хочет продать. Второй вариант, покупатель делает заказ на то, что хочет купить. Предположим мы реализовали только второй вариант. Если покупатель выставит заказ по маленькой цене — он никогда не получит товар, т.к. его прежде скупит правительство или игроки в розницу. Тогда покупатель будет выставлять заказы по завышенной цене, такой по какой правительство покупать не будет. Но в ответ на такой заказ он получит 10-ок предложений. Если сделать так, что он не вправе выбирать у кого именно он купит, то целенаправленно он никогда товар не передаст.

Принцип «больше играешь — больше получаешь» необходимо заменить на принцип «лучше играешь — больше получаешь»

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

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

 

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

Онтологический граф

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

 

Graf_1

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

На графе можно увидеть один и тот же предмет, но с разным идентификатором. Дело в том, что могут существовать несколько способов получения продукта. Например, «1. Бревна» и «2. Бревна», в первом случае, для получения бревен не нужно ничего, но бревен получается мало, а во втором, для более быстрого получения бревен нужен топор. Проходя по графу в обратном порядке мы сможем наметить следующий план действий: Бревна(2) — Топор — Очаг — Железная руда (6) — Дрова(109) — Каменный топор — Каменная кирка — Бревна(1) — Кремень — Камень(63).

Проблематика

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

А что мы имеем в данный момент в отношении алгоритмов искусственного интеллекта (ИИ)? Чтобы было возможно здесь использовать любой из алгоритмов ИИ, мы будем вынуждены построить т.н. оценочную функцию (синонимы: функцию пригодности, функцию полезности).

Если бы онтологический граф не имел бы разных путей получения продуктов, то нам было бы достаточно воспользоваться т.н. прямым и обратным логическим выводом (глава 7). Но увы этого мало. Между разными путями нам необходимо выбирать. И тут нам приходится формировать оценочную функцию. Подчеркиваю оценочную функцию создает разработчик ИИ для каждой конкретной задачи, основываясь на ее формализацию.

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

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

Индекс успеха

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

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

Автор: tac

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js