Прийоми в ігровій механіці, щоб не мати справу з компенсацією відставання в мережі?


20

Реалізація компенсації відставання в мережі важко, як цього уникнути?

Можливо, можна використовувати хитрощі та будувати ігрову механіку таким чином, щоб відставання сприймалося як некритичне або навіть як природна частина гри?

Що це за техніка та чи існують ігри (MMORPG, Strategies, ...), які використовують таку техніку?

ОНОВЛЕННЯ:

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

Основна причина, щоб я уникав компенсації відставання, - це простота.



6
Якщо ви хочете створити гру, де затримка не є проблемою; Подумайте про те, щоб побудувати щось по черзі, де прийнято кілька секунд.
Vaughan Hilts

3
Це посилання Valve - це про досить складні способи реалізації компенсації відставання в мережі - отже, це протилежне тому, що задається питанням.
Kylotan

@JohnMcDonald Так, я знаю про цю статтю від Valve, і, як вона згадувала, - це навпаки того, що я прошу :).
Олексій Петрушин

Ви можете захотіти поглянути на GGPO , а також: ggpo.net
Порядність

Відповіді:


16

Клієнт звичайно впроваджує якийсь зворотній зв'язок, щоб негайно повідомити гравця, що обрана ним дія була зареєстрована, наприклад:

  • звук інтерфейсу (наприклад, натискання кнопки)
  • всесвітній звук (наприклад, персонаж, який говорить: "Одразу, командир")
  • анімація (наприклад, почати розмахувати мечем)

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

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

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

1
Дякую, ви формалізуєте те, про що мене запитують - використовуйте нечасті, відкладені входи від гравця. Було б цікаво побачити фактичні ігри, які використовують це.
Олексій Петрушин

2
Сотні ігор в чомусь використовують подібні речі, але, швидше за все, це було зроблено з інших причин з приховуванням відставання корисним побічним ефектом.
Килотан

7

Випадкові думки:

  1. чит: використовувати ракети . Ракети вибухають у радіусі, приховуючи будь-які дивацтва.
  2. чит: заздалегідь визначте результат і змусьте умову статися візуально
  3. чит: напади потребують часу , приховуйте затримку в atk + anim + припинення результату
  4. чит: відключіть локальний зворотний зв'язок від мережевих матеріалів
  5. чит: чимало VFX або екранні дії, які охоплюють будь-які дивацтва.
  6. використовувати проект реакції на дію, який потребує вирішення, перш ніж продовжувати

Так що так, обманюйте багато.


4

Відповідь досить проста - просто будуйте ігри, які не мають критичних часових розділів. Ви шукаєте, щоб уникнути впровадження таких типів інтерполяцій з певної причини, я вважаю, що ви не переймаєтесь хитрим та швидким геймплеєм. Це ідеально підходить для багатьох ігор, включаючи Civilization (це стратегічна гра). Однак зрозумійте, що це НЕ прийнятно для стратегії РЕАЛЬНОГО ЧАСУ, коли вам потрібно передавати багато даних через мережу в різні терміни. Якщо ви хочете розробити гру навколо мережі із дуже високою затримкою, врахуйте наступне:

  1. Створюйте покрокові ігри. У таких типах ігор введення в режимі реального часу стану не потрібно, а інший гравець може просто натиснути стан гри на свого клієнта, коли настає їх черга. Це зменшує тиск на мережу і дозволяє затримувати вгору навіть на кілька секунд, якщо цього забажає. Цивілізація - це поворотна гра, яка дуже популярна, і в стратегії.
  2. Зведіть до мінімуму вплив на інших гравців.Якщо ваша гра є стратегічною і не може грати по черзі, спробуйте зменшити вплив затримок пакетів. Чи може клієнт робити більшу частину моделювання? Прикладом може слугувати стратегічна гра, яка грається окремо на деякий час, а потім, скажімо, 16 хвилин, імітується проти іншого гравця (можливо, бойова гра, де гравці відправляють війська кожні х інтервали та звітують про кожен інтервал y.

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


4

Ви також можете зробити відставання частиною вашого ігрового процесу заради «реалізму». Скажімо, ваші гравці призначені для управління деякими роботами на відстані, ви можете змусити відстань бути не менше 500 мс або 1 с (вам доведеться впровадити деяку динамічну систему затримки відставання).


Це приємний твіст
o0 '.

0

Також приємний трюк - просто приховати дії гравців. Дуже багато FPS ігор роблять саме це. Вони не демонструють жодної візуальної карти більшості куль, грають лише звуки, і ви отримуєте результат у вигляді шкоди, завданої гравцям.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.