Unity - Урок за мрежови концепции на високо ниво
(За нови проекти трябва да използвате новата мрежова система, въведена в 5.1. Тази информация е за стари проекти, използващи старата мрежова система.)
Този раздел обхваща основните принципи на работа в мрежа, които трябва да разберете, преди да разработите игра, използваща мрежовата архитектура Unity.
Какво представлява мрежата?
Мрежата е комуникация между два или повече компютъра. Основната идея е да се изгради връзка между клиентския клиент (компютърът, който иска информация) и сървърния сървър (компютърът, който отговаря на заявките за информация). Сървърът може да бъде или специален хост компютър, който приема заявки от всички играчи, или компютър на един от играчите, изпълняващи игра на него, но работи и като сървър за други играчи. Веднага след като сървърът се стартира и клиентът се свърже с него, тези два компютъра могат да обменят информация в съответствие с играта.
Създаването на онлайн игри изисква специално внимание към някои конкретни детайли. Въпреки че Unity е сравнително лесно да се проектира и работи с мрежа, мрежовите взаимодействия остават доста сложни. В Unity беше взето основно решение за дизайн, за да се гарантира, че мрежата е възможно най-стабилна и гъвкава. Това означава, че вие като създател на играта носите отговорност за някои от нещата, които могат да се извършват автоматично в други двигатели, но са по-малко надеждни. Решенията, които вземате, потенциално могат да имат голям ефект върху архитектурата на вашата игра, така че е най-добре да ги вземете възможно най-рано във фазата на проектиране. Разбирането на принципите на работа в мрежа ще ви помогне да планирате правилно архитектурата на играта и да избегнете проблеми с изпълнението.
Подходи в мрежа.
Авторитетен сървър
От основно значение е да има разлика между това, което играчът иска да направи, и това, което всъщност се случва. Това позволява на сървъра да приема заявки от всеки клиент и след това да реши как да промени състоянието на играта.
Предимството на този подход е, че значително затруднява клиентите да използват нечестни практики. Например клиентът няма начин да заблуди сървъра (и съответно други клиенти), че врагът е бил убит, тъй като клиентът не взема такива решения. Той може само да каже на сървъра, че оръжието е стреляло и от този момент нататък само сървърът определя дали убийството е извършено или не.
Тъй като прогнозирането от страна на клиента е усъвършенствана техника, няма да се опитваме да го обясняваме в този урок, но има много книги и онлайн ресурси, които можете да проучите допълнително.
Не се изискват специални методи за прогнозиране, тъй като клиентите обработват сами цялата физика и събития и след това изпращат резултата на сървъра. Те са собствениците на тези обекти и единствените агенти с разрешение да изпращат локални промени към тези обекти по мрежата.