Зберігання координат кожного об'єкта на стороні сервера в MMO


12

У MMORPG:

Чи типово чи доцільно зберігати координати кожного дерева, куща породи .. тощо на стороні сервера для виявлення зіткнень?

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

Якщо ні, чи цей вид виявлення зіткнення здійснюється повністю на стороні клієнта, при цьому сервер взагалі не перевіряє?

Або середнє місце, коли клієнт перевіряє зіткнення та перевіряє сервер? Якщо так, як би сервер перевірив те саме, не зберігаючи координати і на сервері?


2
Я недостатньо знаю про це, щоб дати хорошу відповідь, але якщо ви виявите зіткнення лише на стороні клієнта, шахраї знайдуть спосіб пробити все або забрати бонуси, що знаходяться в милях від них.
Peethor

2
-1 "Питання не показує жодних зусиль для дослідження".
Vaillancourt


насправді, мабуть, не дублікат, я дізнався про схеми просторових розділів та структури просторових даних, яких не було в іншому питанні
Саджіт Ділшан Джамал

Відповіді:


15

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

Наприклад, у вашому типовому MMO серверу дійсно потрібно знати лише про грубу карту навігації, яку використовують AI та програвач маршрутів. Замість того, щоб зберігати місце розташування дерева, ви можете замість цього просто вирізати отвір у navmap у місці розташування дерева. Так само і для будь-яких інших великих перешкод.

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

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


7

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

Оскільки більшість об'єктів у MMO не переміщуються, ви також можете виконати пропуск попередньої обробки, коли об’єкти використовуються для створення дерев, що перевіряють зіткнення.

Слід пам’яті не є великою проблемою, якщо ви використовуєте інстанції. Зберігання пари поплавців на один предмет - це ніщо в грандіозній схемі речей. Сьогодні скромний ПК матиме 4 гігабайти, а для зберігання позиції - це лише 3 поплавця (або 3 парних) - що легко дозволить отримати кілька мільйонів збережених об'єктів в грі.

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

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

Ви також хочете використовувати сервер і для авторитетних речей. Наприклад, ви б виконували пошук маршрутів лише для клієнта, оскільки ви не можете обдурити, пройшовши менш ефективний шлях!


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