Как ММО должны / должны обрабатывать отключение во время PvP?

20

В MMO (даже не обязательно в MMORPG), каковы некоторые методы борьбы с игроками, отключающимися в середине PvP?

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

И, что важно, как вы гарантируете, что отключение не может быть использовано как способ обмана?

Эндрю Рассел
источник

Ответы:

15

У нас была эта проблема с некоторыми онлайн CCG, над которыми я работал. Лучшее решение, которое я видел:

1) Игроки ДОЛЖНЫ подключаться к серверу, а не друг к другу напрямую, и вы НИКОГДА не должны передавать IP-адреса оппонентов в данных, которые вы передаете игрокам. Это предотвращает атаки типа «отказ в обслуживании», когда игрок вынуждает своего противника отключиться для победы.

2) Разорванная связь = вы проигрываете, оппонент выигрывает. Мы должны предположить, что если вы уронили, это был урон, чтобы избежать определенных потерь.

3) Разъединяет попытку переподключения в течение некоторого времени, так что небольшой сбой в сети не заставит вас проиграть не по своей вине. В идеале время должно быть достаточно продолжительным, чтобы позволить кому-то восстановить соединение, если он случайно ударил по кабелю, но достаточно коротким, чтобы противник не расстроился и не заснул во время ожидания. Я думаю, что мы нашли, что приблизительно 45 - 60 секунд чувствовали себя хорошо.

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

Ян Шрайбер
источник
13

Популярная MMORPG RuneScape использует 1-минутный таймер. Когда вы отключаетесь, ваш персонаж остается в мире на целую минуту, уязвим для атак, а что нет.

Xeon06
источник
1
То же самое для DAoC. Это прекрасно работает, так как если вы этого не сделаете, люди могут отключиться, чтобы избежать драки. Раньше в DAoC была команда «Quit To Desktop» / qtd, которая заставляла людей немедленно выходить, и из-за этого она была удалена.
Олафур Вааге
8

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

Мое решение пошло так:

  1. В начале матча, когда все игроки присоединились и игра началась, подсчитайте, каков будет результат, если наш игрок проиграет матч. В нашей гоночной игре «потерянный» означает «занял последнее место», а обычным результатом будет «минус N очков от рейтинга игрока».

  2. Сохраните результат в безопасном месте (Savegame, таблица лидеров, область данных онлайн и т. Д.).

  3. Вместе с результатом сохраните флаг «GameStarted». Это просто означает, что игра началась. Нам это понадобится позже.

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

  5. Однако, если игрок отключается, тянет за кабель или выключается, в конечном итоге он вернется в меню игр. В коде меню мы проверяем флаг «GameStarted». Если он установлен, мы уверены, что мы обнаружили отключение в игре от ранее. Затем мы можем применить сохраненный результат к счету / статистике игроков. Это будет так же, как если бы игрок проиграл игру. Это также хорошая идея, чтобы поставить предупреждение, информирующее игрока о том, что происходит. Затем, как только он увидит, что есть последствия для отключения в середине игры, вы увидите, что поведение начинает меняться.

JanSolo
источник
Это довольно хитро. Очевидно, что он не может применяться одинаково хорошо ко всем типам игр, но концепция расчета возможных последствий заранее хороша.
Килотан
1
Довольно резкое случайное отключение, однако, может использовать решение в этой области.
Kzqai
5

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

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

боб
источник
Это уникальный анализ, мне это нравится.
Kzqai
Это может быть использовано двумя игроками, которые знают друг друга. Они могут повторять это так часто, как им нравится, потому что проигравший не получает пенальти.
unor
5

Lineage II делает это так:

  • Вы не можете выйти из игрового клиента во время боя - любой бой начинается, независимо от того, атаковали ли вы, напали или исцелили напарника, который сражается, и вы находитесь в «боевой стойке», которая длится 15 секунд после последнего такого действия сделан.
  • Если вы все равно отключаетесь или ваша игра вылетает, ваш персонаж остается в игре в течение этих 15 секунд, а затем исчезает. Он даже продолжает авто-атаку независимо от того, на что он атаковал, но не использует навыки - так же, как если бы вы пошли АФК.
  • Там является способ отключиться мгновенно, однако, при повторном подключении к одной и той же учетной записи с другим клиентом. Сообществом это считается пограничным мошенничеством, когда оно выполняется в PvP, и некоторые чит-инструменты также могут использовать его, поэтому он там не используется. Однако, кусая слишком много, чтобы жевать в PvE, некоторые люди все еще используют этот трюк, чтобы избежать ненужных смертей (хотя есть в игре предметы, которые допускают почти то же самое, а именно «благословенные свитки побега»).
  • Повторное соединение с зоной, отмеченной PvP (например, земля замка во время осады) и некоторыми конкретными неэпансивными эпическими боссами, перемещает персонажа в ближайший город (безопасную зону). Таким образом, отключение во избежание «проигрыша» влечет за собой наказание для вашей команды, а это значит, что он сильно не одобряется социальными нормами игры.

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

Мартин Сойка
источник
Ницца! Мне это нравится! :)
Нажмите Ok
3

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

Обычно есть таймер от 1 до 5 минут, прежде чем ваше тело покинет мир.

ZorbaTHut
источник
3

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

Брайан Денни
источник
3

Способ, которым это обрабатывается EVE Online, заключается в следующем:

  • Корабль начинает активировать варп через 15 секунд после отключения. Если он деформирован, корабль не исчезнет. (Корабль вашего персонажа начнет «убегать» через 15 секунд, если он не «пойман в ловушку» другим игроком)

  • Таймер PVP (время, пока игрок «убегает» во время боя в PvP) установлен на 3 минуты. (Это для противодействия ряду других таймеров).

  • Таймер NPC остается на 1 минуте, но корабль исчезает через 15 секунд, если только NPC не скремблирует варп.

  • Когда корабль заблокирован игроком, он должен переключиться на таймер PvP (чтобы противостоять ему, используя таймер 1 мин, если он отключается при обстоятельствах, когда он недоступен до тех пор, пока не установлен таймер).

Шон Джеймс
источник
2

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

lathomas64
источник
0

Я бы реализовал какой-то гистерезис. Вы можете использовать морковь и палку. Но выбор того, что использовать, может быть основан на послужном списке (вы также можете сделать анализ их связи и текущей «выигрышной способности» и использовать это). Надеюсь, вы будете делать это лично. Простая модель:

  • Если я "плохой", и я DC, я получаю палку. Мне сейчас хуже.
  • Если я "плохой", и я заканчиваю, я не получаю палку, но я также не получаю вознаграждение. Теперь я ближе к тому, чтобы быть хорошим.
  • Если я "хороший" и я DC, я не получаю палку, но я также не получаю вознаграждение. Теперь я ближе к тому, чтобы быть плохим.
  • Если у меня все хорошо, я получаю награду. Теперь я более хорош.

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

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

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

черный
источник
Хммм. Я вижу одну неустранимую проблему ... Если «плохой» выигрыш может жаловаться на то, что он не получает «выигрыш», если вы не сделаете схему очень открыто задокументированной. Который, конечно, приглашает вмешаться. Возможное решение: скрыть награды до конца «сезона», который, по крайней мере, консолидирует проблему ... но может привести к тому, что «плохие» игроки откажутся от «потраченного времени» «инвестиций». Win-выиграть?
черный