Питання щодо створення MMORPG Server на Unreal Engine 5

Доброго дня, товариство. Не так давно почав вивчати Unreal Engine 5. Але виявилось, що у нього дуже специфічний бекенд (Сервер). Тому зараз вивчаю технології, які потрібні для створення оптимізованого сервера для ММОРПГ ігор.

Звичайно, ніяких ілюзій (створення вбивці ВОВ) в мене нема, але попробувати написати точно хочу. Наразі трохи почитав книжок по цій темі, але є ще багато запитань. Наприклад: контроль колізії на стороні сервера, серверна архітектура — Відкритий, безшовний світ, з реалізацією «seamless traveling» зонуванням і підтримкою інстантизації (каналів). Поки що не зовсім розумію, як таке реалізується навідь на рівні логіки.

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

Або можливо є якісь готові рішення для частини задач, наприклад, якась бібліотека, яка реалізує кастомний протокол на основі UDP з підтримкою черговості, конфірмом і компрессом пакетів, оптимізована для ММО. Чи може якісь готові рішення для сериалізаці і так далі.

Буду радий будь-якій інформації за цією темою!

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини про геймдев

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному5
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

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

Ну і тут правильно пишуть що це зашвидко в цьому розбиратись якщо тільки починаєш.

якась бібліотека, яка реалізує кастомний протокол на основі UDP з підтримкою черговості, конфірмом і компрессом пакетів, оптимізована для ММО.

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

Та ну тут не в «за швидко» проблема, тут просто мій інтерес, по самому анрілу курсів просто купа, я десь годин під 150+ передивився досить хороших курсів від чуваків з Кембріджу, коли тільки починав, і там проблем нема що б знайти інфу по чомусь з графіки чи ще по чомусь, а от по кастомному сервері, і взагалі, навідь по серверу анріла інформації меньше чим нуль, відеокурсів нема в природі, документація просто «щоб було», тому довелось все розбирати самому і шукати інфу по крихтам, що б хоча зрозуміти як це працює на рівні «пальців». Мене не дуже сильно цікавить як зробити красивий террейн з кущами, чи сцену логін скріна, там є чуваки які назнімали цілі сантабарбари на 500 серій по 2 години кожна як вони роблять ммо з всією цією інфою :) Так шо я думаю що я все роблю правильно, без знань по серверу, вчити анріл не має сенсу.

То ви сильно замахнулись якщо тільки но почали вивчати UE. Розробка ігр це складно, а розробка ММО на порядок складніше. Універсальних рецептів немає: скільки ММО, стільки і підходів до організації системи. Але у будь-якому разі, якщо у вас є бажання вивчати цю тему (а також для всіх інших зацікавленних), спробую підкинути трохи матеріалу.

По мережевому коду рекомендую почитати блог Gaffer On Games. Автор також торкається теми синхронізації фізики. Також серію «Fast-Paced Multiplayer» у блозі Gabriel Gambetta.
По архітектурі ММО рекомендую ознайомитись з наступними статтями:
— «Building a Balanced Universe» у блозі EVE
— «A Distributed Architecture for MMORPG» (Marios Assiotis and Velin Tzanov) — як раз відповідь на запитання щодо безшовного світу.
— «Survey of State Melding in Virtual Worlds»
По геймдев шаблонам і т. п. книга «Game Programming Patterns» (Robert Nystrom).

По серіалізації — використовуйте вбудовану у обране мережеве рішення, або protobuf.

З готових мережевих рішень, на думку приходить тільки Photon, але мені він не подобається. Можливо э щось спеціально для UE, але я не з ним не працюю.

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

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

За ресурси дякую, нічого з цього списку ще не читав, і це добре.
А на рахунок колізії на сервері я скоріше мав на увазі перевірку координат геометрії світу, що би гравець не міг відключити колізію на клієнті і бігати крізь стіни, типу що би сервер знав що там стіна і що би не творилось на клієнті гравець ніколи не зміг пройти крізь стіну, бо на пакеті від сервера він получить коррекцію по координатам, ну якось так.. В UE це реалізовано, но його реалізація == його сервер і це вже ніяк не буде працювати на стендалон сервері. Ну а фізика на сервері це точно не для ММО, так що з цим навідь не буду нічого вчити.

Насправді фізика на сервері також реалізується. Це просто залежить від проекту, вимог. архітектурних рішень і т.п. Іноді нема інших варіантів, крім як реалізувати ії на сервері. Та і є випадки, коли гра має дуже примітивну фізику. У такому разі буває швидше та дешевше використати фізичний рушій на сервері, ніж реалізовувати перевірку колізій та синхронізацію положень між клієнтами. Якщо я правильно памʼятаю, agar io дуже непоганий приклад.
Є також випадки, коли сервер дублює частину фізики клієнта і на основі цього коригує чи перевіряж клієнтську. Як я казав вище, скільки ММО, стільки и різних підходів)

Не знаю, як ти шукав, але по нетворкінгу анріала є достатньо інформації, щоб стартанути, а далі вже треба самому розбиратися і копатися в коді
Загалом про нетворкінг www.youtube.com/...​519DocM4AqiK08GfsUSnxRPdv
Знову про нетворкінг, іншими словами cedric-neukirchen.net/...​player-network-compendium
Про анріаловський мувмент та його реплікацію www.youtube.com/...​iwPmeABEhjwIALvxRSZkzoQpk
В останньому трохи розкривається тему предикшину, без якого досвід гравця був би на порядок гірший.
Якщо хочеш чесну гру, то фізики на сервері не уникнути, питання буде лише в її оптимізації.
І що ти маєш на увазі під стандалон сервер?

www.youtube.com/...​iwPmeABEhjwIALvxRSZkzoQpk

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

І що ти маєш на увазі під стандалон сервер?

Сервер, який не має відношення до коду анріла.

Тобто щоб гра була на анріалі, а сервер свій?
А як це реалізована зазвичай комусь нема сенсу комусь розповідати окрім самих епіків
Наприклад, плюс, ще раз повторю, код. Хоча це по реплікейшн графу, який вони відносно недавно заінтордюсили, а ще менше недавно вже задепрікейтили, бо тепер є Iris

Йопт такий сочний комент, що аж дяка від сухого геймдев-поліна

Підписатись на коментарі