Обмеження багатокористувацьких ігор p2p проти клієнт-сервер [закрито]


12

Я читаю про багатокористувацьку архітектуру ігор.

Поки більшість статей, які я знайшов, стосуються моделі клієнт-сервер.

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



Для прикладу справжньої гри P2P ви можете подивитися на Gunz: The Duel, який через це має величезні проблеми в мультиплеєрі та злому.
п'ятниця

Відповіді:


11

Ось два мої центи:

P2P :

  • Плюси:
    • Немає необхідності в центральному сервері : це робить його значно дешевшим та більш життєздатним для низькобюджетних ігор з інді.
    • Масштаби дуже добре (до певного моменту, коли середній клієнт просто не може впоратися з пропускною здатністю).
    • Дуже добре для розповсюдження даних : підходить для ігор, де створений користувачем вміст динамічно синхронізується (наприклад, торенти).
    • Більш стабільний: Ніколи не може статися, що у сервера є проблеми, і ніхто не може грати (залежно від реалізації).
  • Мінуси:
    • Важко реалізувати : набагато складніше створити надійну архітектуру P2P, ніж сервер-клієнт.
    • Дуже важко попередити обман у такій системі, якщо ви не призначите авторитетного однолітка (що заважатиме будь-яким перевагам масштабування P2P).
    • Безпеки важко досягти.
    • Підключення до Інтернету клієнта може впливати на гру і для інших.
    • Затримка зазвичай набагато більша (хоча, наприклад, може бути кращою при підключенні до Інтернет-ігри з кількома людьми з локальної мережі).
    • Може знадобитися переадресація портів : P2P через Інтернет вимагає переадресації портів, і не всі мають технічну схильність для цього. Крім того, Інтернет-провайдер може перешкоджати переадресації портів і збільшує бар'єр для входу.

Сервер-клієнт :

  • Плюси:
    • Легко здійснити: Це так само просто, як це стає.
    • Якщо це добре реалізовано, масштаби надзвичайно добре (якщо роботу можна розподілити на декількох серверах).
    • Обману можна уникнути легко (порівняно з P2P).
    • Нижня затримка : Якщо сервер має міцне з'єднання, затримка може бути надзвичайно низькою.
    • Підключення до Інтернету гравця ніколи не впливає на гру чужого.
  • Мінуси:
    • Коштує ваших грошей для запуску серверів : точно не підходить для безкоштовної гри (якщо ви не дозволите гравцям встановити виділений сервер, але це може бути проблемою безпеки).
    • Якщо у сервера є проблеми, все роблять.

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

Існують також деякі архітектури, що поєднують P2P із сервером-клієнтом.


P2P Con: Проведення сватання, якщо це не гра в локальну мережу, ви не знаєте, як знайти свого однолітка. CS: Нижня затримка - це не той момент, коли один гравець, скажімо, в Німеччині, а інший в Австралії. Проблема все ще залишається через 6 років. CS: Насправді коштують не так багато грошей . Сервери стають досить дешевими. Також ви можете почати з розміщення гри на власному ПК, використовуючи якийсь веб-проксі, щоб вказати на неї.
бадуній

2

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

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


Використовуючи консенсус-модель, обман не є більшою проблемою, як це було б у моделі клієнт-сервер.
Jeroen

1

Реалізація багатокористувацьких ігор «однолітків до однолітків» непроста і наразі не застосовується.

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

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

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


3
Що ви маєте на увазі "не застосовується на даний момент"? Існує безліч ігор, які використовують P2P для створення мереж. Крім того, "ніхто з однолітків не знає всіх інших ровесників" сформульовано неправильно. Хоча на практиці потрібно підтримувати реле для покращення надійності, цілком можливо мати ідеальну топологію мереж "для всіх", особливо з невеликим підрахунком однолітків або в локальній мережі, де немає маршрутизаторів NAT.
Тапіо

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

@Horstinator Я знаю про гру, яка використовує P2P для гри на FPS, вона твердо підтримує 50-100 гравців без проблем із затримкою. (Це називається "stickman warfare" для всіх, хто дбає)
akaltar

@akaltar Це відкритий код? Мені подобається бачити, як вони це роблять.
Horstinator

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