Вобщем, есть идея.
К сожалению, возникшая задача - формализации понятия ботинга, является достаточно сложной, поэтому и определение получится сложным. Прошу читать внимательно мой пост.
Вначале выскажусь по поводу другого пункта УКБ:
Цитата:
6.3.Д. Использование описаний, вводящих в заблуждение относительно состояния персонажа, степени его экипированности; описаний, имитирующих действия в локации; попытка несанкционированного воздействия на клиентские триггеры других игроков.
|
В частности, я против последнего. Триггера - это автоматизация. Какую задали автоматизацию - такую и получите.
Естественно, не должно быть каких-то левых строк в описаниях персонажей, на досках и в других местах, которые позволяют игроку обойти добавление сервером префиксов типа "Такой-то сказал:" - но это первая часть обеспечивает.
В остальном, если есть кривой триггер "Вы голодны" -> "осушить отвар" - ничто не должно мешать другим игрокам с помощью "г Вы голодны" засадить этого горе-писальщика триггеров в лаг от осушения отваров, а потом надругаться над ним.
Потому как защищая от такого - этим защищаем ботов.
Теперь, собственно, про ботов.
Отличие бота от игрока - в том, насколько умны его триггеры. У бота они, несомненно умнее в среднем, хотя и возможно использование очень умных триггеров при активной игре и присутствии человека.
Обратимся к "Законам дизайна онлайновых миров" (
http://dtf.ru/articles/read.php?id=3774):
Цитата:
Хотите узнать, какие части игры утомительны и неинтересны - посмотрите, какие из них автоматизируются игроками.
|
Если что-то (например, еду, питьё) автоматизируют все поголовно - значит не здесь нужно бороться с ботингом! Здесь нет игры как таковой, влияние на игровой процесс минимально, здесь от игрока фактически требуются примитивнейшие действия, не требующие участия головного мозга - а только спинного, коий вполне заменяют триггера.
Таким образом, предложение отделить ботов от просто автоматизаторов скучного - ввести понятие сложности триггеров.
Немного
вводных понятий:
1.
Событием называется группа строк, сгенерированных сервером с интервалом менее 10мс (1 квант времени в маде, пульс кажется он назвается) и отправленная игроку.
2.
Триггером называется группа команд (1 и более) игрока, обусловленная достаточным образом группой (1 и более) неких
событий, при том, что промежуток времени между последним
событием группы и поступлением первой команды от игрока менее 10 секунд.
3.
Сложностью триггера называется минимальное достаточное число
событий, вызывающее срабатывание
триггера.
4.
Цепочкой триггеров называется группа
триггеров, при выполнении которой (группы) выполнение
триггеров из этой группы обусловлено достаточным образом
событиями, являющимися прямыми результатами выполнения других
триггеров этой группы.
5.
Сложностью цепочки триггеров называется сумма сложностей
триггеров, участвующих в выполнении
цепочки триггеров.
Пояснения и примеры для понятий:
1. Результат команды "смотреть" - одно событие. Оно включает в себя название комнаты, описание комнаты, предметы в комнате и живность в комнате.
Результат же двух команд "смотреть", даже отправленных через ";" ("смотреть;смотреть") - два события, так как каждая команда обрабатывается в одном своём пульсе.
Однако, в следующей ситуации только одно событие:
В одной комнате стоит Наём и спамит "заколоть .Колдун". В комнату заходит Имячара. Для всех (Колдуна, Наёма, наблюдателя) последовательность
Цитата:
Колдун прилетел с юга.
Двойник Колдуна прилетел с юга.
Двойник Колдуна прилетел с юга.
Наём нанизал Колдуна на стабер.
|
является одним событием, так как происходит в один пульс.
2. Так же, как и в пунктах 3. и 4., здесь используется только слово достаточное потому, что те же команды могут отдаваться и вручную (то есть событие не является необходимым), но если группа событий обязательно влечёт за собой команду от игрока - это триггер.
На самом деле, здесь всё ясно, но полная формализация требует формализации всех понятий.
Время в 10 секунд я подобрал с таким рассчётом, чтобы было невыгодно ставить у ботов задержки в триггерах, игрок же будет защищён в определении бота. Это время - параметр обсуждаемый.
Триггером может быть названо всё что угодно при предъявлении соответствующей группы событий. Однако, это не имеет значения, поскольку далее при вычислении сложности появляются ограничения.
3. Пример группы триггеров (с точки зрения клиента):
1) "^хлеб [10]" => "установить переменную $кушаем_хлеб = 1; установить переменную $пьём_отвары = 0"
2) "^отвар [10]" => "установить переменную $кушаем_хлеб = 0; установить переменную $пьём_отвары = 1"
3) "^Вы голодны." => "Если $кушаем_хлеб = 1, то 'есть хлеб'; иначе 'осушить отвар'"
В данном случае мы не можем предъявить одно событие, достаточно определяющее триггер 3) (хотя можем, но задача имма, как будет ясно позже - предъявить наибольшее число событий, а задача защищающегося - оспорить и уменьшить это число). Зато 2 события предъявить можем - при последовательных событиях "^хлеб [10]" и "^Вы голодны." однозначный и постоянный ответ игрока - 'есть хлеб'. То есть сложность триггера - 2. При объявлении иммом сложности данного триггера единицей у игрока есть возможность оспорить это, но выгоды ему это не принесёт, так как приведёт к увеличению. При объявлении иммом сложности триггера больше 2 - у игрока есть возможность оспорить это и уменьшить сложность до 2, предъявив приведённые события как минимальные.
Следует заметить, что если переключение переменных для определения, что же кушать, производится вручную, а не автоматически (что в принципе, рациональнее), то сложность триггера за номером 3) будет только 1.
4. Цепочка триггеров с точки зрения клиента:
1) "^Вы поплелись на" => "выходы"
2) "Видимые выходы :
Восток - Трясина" => "восток" (лучше не придумал

)
В данном случае событие из триггера 1) безусловно влечёт за собой выполнение двух триггеров - это цепочка из 2 триггеров. Можно назвать цепочкой триггеров только второй триггер, реагирующий только на одно событие, но имм может предъявить и цепочку из двух, и при этом игрок не может аргументированно возразить.
5. Теперь ещё сложнее система триггеров:
1) "^Солнце медленно исчезло за горизонтом." => "Установить переменную $хочу_жить = 0; установить переменную $хочу_в_дт = 1"
2) "^На востоке показались первые солнечные лучи." => "Установить переменную $хочу_жить = 1; установить переменную $хочу_в_дт = 0"
4) "^Вы поплелись на" => "выходы"
5) "Видимые выходы :
Восток - Трясина" => "Если $хочу_в_дт = 1, то 'восток'; иначе 'говорить ой куда это я зашёл, на восток я не пойду'"
Работает цепочка триггеров 4) и 5), как и в примере к пункту 4. Однако, сложность второго триггера в цепочке - за номером 5) - 2. При этом триггеры 1) (или 2)) и 5) могут быть разнесены во времени достаточно далеко. Итоговая сложность цепочки триггеров - 3.
Теперь формулирую
определение бота:
Ботом называется игрок, который после вопроса имма выполнил цепочку триггеров сложностью более 2 (начало цепочки может быть до вопроса) и не ответил на вопрос в течение 2 минут с момента показа строки вопроса игроку.
Такое уменьшение времени по сравнению с имеющимися 11 минутами оттого, что умные и сложные триггеры (автохил, автоматическое ПК) допустимы, но только в присутствии человека. А если человек отошёл, то эти триггера уже не должны выполняться - это уже слишком умные триггера, их нужно отключать при афк. Число 2, на мой взгляд, является оптимальным и для разграничения ботинга, и для иммов в смысле сложности сбора доказательств.
Данное определение ботинга не отсекает афкеров на ренте, которые могут пользоваться простейшими триггерами.
Для них предлагаю ввести следующее правило:
При отсутствии со стороны игрока в течение 30 минут каких-либо игровых или информационных действий, не являющихся триггерами, игрок признаётся ботом-афкером и соответственно наказываетя.
Игровые действия - это выход за пределы мирных комнат, замка, атаки, заклинания, приказы, передачи стафа (причём, ещё раз подчеркну, это не должны быть триггеры). Информационные - использование каналов общения (уже подробно расписаны), опять же, не триггера.
Наказание за иммами, я только определение предлагаю.
В следующем посте кратко правила, которые можно было бы скопировать (как просили

), а ещё через один - опишу предполагаемый процесс проверки, предполагаемую аргументацию сторон, а также возможные нюансы (которые сам увижу).