Як / повинні ММО обробляти відключення під час PvP?


20

У MMO (навіть не обов'язково MMORPG) які існують методи роботи із відключенням гравців посеред PvP?

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

І, що важливо, як ви гарантуєте, що відключення не можна використовувати як метод обману?

Відповіді:


15

У нас була ця проблема з деякими Інтернет-CCG, над якими я працював. Найкраще рішення, яке я бачив:

1) Гравці ОБОВ'ЯЗКОВО підключаються до сервера, а не один до одного безпосередньо, і вам НІКОЛИ не передавати IP-адреси супротивників у даних, які ви передаєте гравцям. Це запобігає атакам відмови в обслуговуванні, коли гравець примушує свого противника в автономному режимі для перемоги.

2) Перерване з'єднання = ви програєте, опонент виграє. Треба припустити, що якщо ви кинули, то це була крапля, щоб уникнути певних втрат.

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

4) Дозволити гравцям повідомляти про своїх опонентів. Це необхідний підхід для запобігання пошуку будь-якого дратівливого шляху навколо вашої політики. Мовляв, може бути настільки словесно зловживаючим, що опонент падає просто, щоб вийти звідти, або постійно відключатись і знову підключатися, щоб розтягнути довжину гри, або встановити кам'яну стіну, щоб уникнути втрати, чи будь-чого іншого. Ви не можете зупинити ВСІ погані поведінки, але ви можете включити ігровий механізм, щоб повідомити про це, а потім дозволити вашому відділу підтримки клієнтів обробляти решту.


13

Популярний MMORPG RuneScape використовує таймер 1 хвилини. Коли ви від'єднаєтесь, ваш персонаж залишається у світі на повну хвилину, вразливий до атак і чого ні.


1
Те саме для DAoC. Це чудово працює, оскільки якщо цього не зробити, люди можуть відключитися, щоб уникнути бійок. Раніше в DAoC була команда "Вийти на робочий стіл" / qtd, яка змусила людей миттєво кинути роботу, і її було видалено через це.
flafur Waage

8

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

Моє рішення пішло так:

  1. На початку матчу, як тільки всі гравці приєднаються і гра почнеться, порахуйте, який був би результат, якщо наш гравець програє матч. У нашій гоночній грі «програний» означає «вийшов на останнє місце», а звичайним результатом буде «мінус N балів від рейтингу гравців».

  2. Збережіть результат у захищеному місці (Savegame, таблиця лідерів, область даних в Інтернеті тощо).

  3. Поряд з результатом зберігайте прапор "GameStarted". Це просто означає, що гра почалася. Нам це знадобиться пізніше.

  4. Коли гра завершиться, обчисліть фактичний результат та застосуйте його до балу / статистиці гравців. Видаліть прапор "GameStarted". Це звичайний процес завершення гри.

  5. Однак якщо гравець відключиться, витягне кабель або відключить живлення, з часом він повернеться до меню ігор. У коді меню ми робимо перевірку на прапор 'GameStarted'. Якщо це встановлено, ми впевнені, що виявили відключення в грі від попереднього. Тоді ми можемо застосувати збережений результат до рахунку / статистики гравців. Це буде те саме, як якщо гравець програв гру. Також непогано підняти попередження, яке інформує гравця про те, що відбувається. Потім, побачивши, що є наслідки для відключення середини гри, ви побачите, що поведінка починає змінюватися.


Це досить хитро. Очевидно, він не може однаково добре застосовуватись до всіх типів гри, але концепція обчислення потенційних наслідків наперед є приємною.
Kylotan

1
Хоча досить суворий випадок випадкового відключення, але може використовувати рішення у цій галузі.
Kzqai

5

Я думаю, що єдиним способом зняти це було б питання структури вашої гри. Два способи зробити обман менш бажаним: покарання чи винагорода. Тож, якщо ви не хочете несприятливого покарання, придумайте способи нагородити гравця, який не випав.

Замість того, щоб винагорода від PvP була розграбленим тілом завойованого (що робить падіння дуже поганою справою), виграйте нагороду, як нагороду, золото чи щось інше (бали? Рейтинг?). Якщо одного з гравців запускають, то гравець, що залишився, отримує нагороду, а гравець, який був вигнаний, нічого не отримує, але нічого не втрачає. Якщо це не система рейтингу, в такому випадку гравець, який виходить, може втратити деякі рейтингові очки.


Це унікальний аналіз, мені це подобається.
Kzqai

Цим могли скористатися два гравці, які знають один одного. Вони можуть повторювати це так часто, як їм заманеться, тому що програв не отримує штрафу.
unor

5

Lineage II робить це так:

  • Ви не можете вийти з ігрового клієнта під час бійки - будь-який бій починається, незалежно від того, напали ви, напали або вилікували товариша по команді, який воює, і ви перебуваєте в "бойовій позиції", яка триває 15 секунд після останньої такої дії був зроблений.
  • Якщо ви все одно відключитеся або ваша гра вийде з ладу, ваш герой залишається в грі протягом цих 15 секунд, перш ніж зникнути. Він навіть продовжує автоматично атакувати все, на що напав, але не використовуючи навичок - так само, як це було б, якби ви йшли в AFK.
  • Однак існує спосіб миттєвого відключення, підключившись до того ж облікового запису з іншим клієнтом. Це розцінюється як прикордонний обман у громаді, коли він робиться в PvP, і деякі інструменти обману можуть також використовувати його, тому його там мало використовують. Однак, кусаючи занадто багато, щоб пережовувати PvE, однак, деякі люди все ще використовують цей трюк, щоб уникнути зайвих смертей (хоча є ігрові предмети, які дозволяють майже те саме, а саме "блаженні сувої втечі").
  • Повторне підключення до зони, на якій позначено PvP (наприклад, земля замку під час облоги) та деяких конкретних неінстальованих епічних зон босів, замість цього переміщує персонажа до найближчого міста (безпечної зони). Таким чином, відключення там, щоб уникнути "програшу", несе штраф для вашої команди, а значить, сильно відлякує соціальні норми гри.

Особисто я б це зробив так само, лише дозволю гравцям заздалегідь визначити дії, які їх персонаж здійснює на відключення (зупинись та бийся, біжи до найближчої безпечної зони, уникаючи агроградусу, використовуй звичайний прокрутку втечі, використовуй блаженний прокрутку втеча, ...), і персонажі зберігатимуться в ігровому світі, навіть якщо гравець не входить у систему.


Приємно! Мені це подобається! :)
Натисніть Ок

3

Той, хто відключився, помре, як тільки отримає колоту, а інший буде зарахований за вбивство. Буде використане все більш м'яке.

Зазвичай є час від 1 до 5 хвилин, перш ніж ваше тіло покине світ.


3

Немає можливості визначити, що спричинило відключення (відключилося електроенергія? Чи я люту кинув свою машину на стіну?), Тож ви можете лише припускати, що користувач намагається (чи намагався б) обдурити і зробити їх уразливими протягом X хв.


3

Це допомагає EVE Online таким чином:

  • Корабель починає брати основу через 15 секунд після відключення. Якщо це застебнуло основу, корабель не викривиться. (Корабель вашого персонажа почне "бігти" через 15 секунд, якщо його не захопить інший гравець)

  • Таймер PVP (час, поки гравець "не втече" під час участі в бою з PvP) встановлюється на 3 хвилини. (Це для протидії ряду інших таймерів).

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

  • Якщо судно заблоковано гравцем, воно повинне перейти на таймер pvp (щоб протистояти йому, використовуючи таймер 1 хв, якщо він відключається за обставин, коли його не можна націлити, поки таймер не встановлений).



2

Якщо у вас є спосіб моделювання звичних шаблонів гравців у бою, ви можете відправити їх в режим AI, поки вони не підключуються або бій закінчиться в залежності від того, що настане першим. Але не дайте їм жодної винагороди (досвіду, предметів тощо) за битву, якщо вони не повернуться за X кількість часу.


0

Я б реалізував якийсь гістерезис. Можна використовувати моркву і паличку. Але вибір того, який використовувати, може ґрунтуватися на записі (ви також можете проаналізувати їх зв'язок та поточну "виграшну здатність" та використати це.). Це, як ви зробите це особисто, сподіваємось. Проста модель:

  • Якщо я "поганий" і я постійний, я дістаю палицю. Мені зараз більше погано.
  • Якщо я "поганий" і закінчую, я не отримую палицю, але я також не отримую нагороди. Зараз я ближче до того, щоб бути добрим.
  • Якщо я "хороший" і я постійний, я не отримую палицю, але я також не отримую нагороди. Зараз я ближче до поганого.
  • Якщо я добрий і завершений, я отримую нагороду. Я зараз добріший.

Ви можете зловживати так. Але це може зайняти більше зусиль, ніж просто кусати кулю. (Якщо, наприклад, 2 ДК були поганими, ви могли б технічно позбутися половини своїх втрат. Але це пом'якшує деякі зловживання, а якщо менше розумних гравців - все зловживають).

Зазначене за допомогою цього означає, що табло не становитимуть 100%. Так як ви можете постійним клієнтом, хоча це добре, і не зафіксувати втрати. Але інший хороший гравець може записати перемогу. Крім того, що не підсумовувати 100%, значить, 2 гравці можуть співпрацювати, вимикаючи програвач DC для встановлення виграшів.

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


Хммм. Я бачу одну невідправлену проблему ... Якщо "поганий" виграш може скаржитися на те, що вони не отримають "виграш", якщо ви не зробите схему дуже відкрито задокументованою. Що, звичайно, запрошує заплутатися. Можливе рішення: приховати винагороду до кінця "сезону", який у меншій мірі консолідує проблему ... але може призвести до того, що "погані" гравці відпадуть від витраченого часу "інвестиції". Безпрограшний?
Чорний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.