Меню сайта


[DS]: Half-Life Server
[DS]: Half-Life Server


[DS]: CS:S GunGame v34 Server
[DS]: CS:S GunGame v34 Server


[DS]: CS:S v34 Server
[DS]: CS:S v34 Server


Поиск

add_newДобавить новость
Последние добавленные
HLRS (Half-Life Rank System) — это плагин , который добавит вам на сервер систему прокачки рангов , при этом с каждым новым з...
Читать далее

Unreal tournament 2004

Сегодня в нашем мониторинге появилась поддержка игровых серверов Unreal Tournament 2004.

Читать далее
• CS 1.6 CSS Edition. 
• Русская версия с озвучкой и чатом.
• Оптимальная настройка конфига.
• Модели ...
Читать далее
• CS 1.6 CSS Edition. 
• Русская версия с озвучкой и чатом.
• Оптимальная настройка конфига.
• Модели ...
Читать далее
• CS 1.6 CSS Edition. 
• Русская версия с озвучкой и чатом.
• Оптимальная настройка конфига.
• Модели ...
Читать далее

Большинство игроков, начинавших с классики, отказались переходить на CSS, новые хитбоксы, наличие физики и нестабильный движ...

Читать далее

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

Читать далее
Чистая версия Counter-Strike Source v34 с рабочими ботами и поиском серверов. Вы можете подключится к любому серверу с любой мод...
Читать далее

На сегодняшний день, каждый человек хоть раз слышал про игровые автоматы и казино

Читать далее

Фильм "Великая стена"

Фильм «Великая стена» («The Great Wall») фантастика, боевик, приключения в древнем Китае. Фил...

Читать далее

Еще несколько лет назад выбор казино-онлайн был достаточно простым

Читать далее
STARGATE: ORIGINS TRAILER | Stargate: OriginsOn February 15th, witness the premiere of a Stargate story that takes you back to where it all began. Buy an All-Access Pass at http:... Читать далее

Множество букмекерских контор позволяют всем людям реализовать свою мечту – зарабатывать на своем увлечении.

Читать далее

Разработчики Black Mesa выпустили открытую бету игры, поддерживающую все обещанные изменения движка...

Читать далее
Этот плагин добавляет на сервер автомат AK Paladin из игры CSO.

Читать далее

Сеть Burger King совместно с телеканалом Game Show и оператором «Синтерра Медиа» запустили CTRL PLAY

//ds.nue.de.dsncdn.net/uploads/images/_gen-176/5a4e54846b894.png

Читать далее

Фильм "Меч короля Артура"

Фильм "Меч короля Артура", это фэнтэзийный приключенческий фильм в мире альтернативных легенд о короле Артуре и его мече Эк...

Читать далее

Уважаемые участники!
Команда проекта DS-Servers, от всей души поздравляет вас с Новым Годом!
//ds.nue.de.dsncdn.net/uploads/images/_gen-176/5a46b6d92c995.png

Читать далее

Этот плагин добавляет вам на сервер дробовик KSG-12

Читать далее

Фильм "Война миров Z"

Фильм «Война миров Z» ужасы, фантастика, боевик, триллер, приключение в современном мире,  в котором б...

Читать далее

The University of Southern California’s premier video games program USC Games will feature hands-on playable code for th...

Читать далее
ЗАКАЗЫВАЕМ СЕРВЕР НА ХОСТИНГЕ (mineсraft, Unturned, кс.1.6)(Бесплатный хост)Самые дешевый хостинг в мире. Заходи не пожалеешь, я уже почти год держу свой сервер там. https://dsn.host/?ref=141565 https:/... Читать далее
THAT'S A WRAP! - Behind the Scenes | Stargate: OriginsThat's a wrap on filming for Stargate Origins - the exciting new chapter in the Stargate saga. Stay until the end of the video for a li... Читать далее
ORIGINS TEASER | Stargate: OriginsPremiering on Stargate Command, STARGATE ORIGINS explores the journey that sets a young Catherine Langford on the way to helping ... Читать далее

<JAM>
m1-palinka


HL-HEV
hl-hev

DS-Servers
Статьи
Разработка
Игры
Сеть

Мультиплеер в быстрых играх (Часть I)



Мультиплеер в быстрых играх (Часть I)
Добавил: root
2016-06-01 19:02:25
199 просмотров



Разработка игры — само по себе непростое занятие. Но мультиплеерные игры создают совершенно новые проблемы, требующие разрешения. Забавно, что у наших проблем всего две причины: человеческая натура и законы физики. Законы физики привнесут проблемы из области теории относительности, а человеческая натура не даст нам доверять сообщениям с клиента.

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

Часть I

Проблема читерства


Вся наша головная боль начинается с читерства.

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

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

Есть много вещей которые можно сделать чтобы предотвратить читерство. Но самый главный принцип(и наверное самый глубокий) очень прост: не доверяй игроку. Всегда ожидайте худшего — что игрок будет пытаться вас обмануть.

Авторитарный сервер и наивный клиент


Этот принцип ведет нас к простому, на первый взгляд, решению — вся игровая логика крутится на главном сервере, под вашим контролем, а клиент лишь демонстрирует текущее состояние сервера и отправляет ему команды (нажатия клавиш и т.д.). Обычно это называют авторитарным сервером, потому что он единственный, кто умеет моделировать мир.

Конечно, сервер может быть взломан, но эта тема выходит за рамки данной серии статей. Тем не менее, использование авторитарного сервера пердотвращает широкий спектр читов. Например, вы не можете доверять клиенту уровень жизней игрока. Взломанный клиент может изменить локальную информацию и сообщить что у игрока 100000% жизней, но сервер знает что жизней всего 10% и если игрока атакуют, он умрет вне зависимости от того, что об этом думает клиент.

Так же нельзя верить игроку, когда он сообщает о его позиции в мире. Если вы доверитесь, взломанный клиент может сообщить серверу:

— Я на (10, 10)
А секундой позже:

— Я на (20, 10)

При этом возможно он «прошел» через стену или двигается быстрее чем ему положено.

А вот правильная парадигма. Сервер знает что игрок находится в позиции (10, 10); клиент говорит: «Я хочу подвинуться на единицу вправо». Сервер обновляет позицию игрока на (11, 10), производя все необходимые проверки, а затем отвечает игроку: «Вы на (11, 10)»:





Подытожим: игровое состояние управляется только сервером. Клиенты отправляют свои действия на сервер, а сервер периодически обновляет свое состояние и отправляет его на клиенты, которые, в свою очередь отображают его пользователям.

Разбираемся с сетями


Наивный клиент отлично подходит для медленных пошаговых игр — стратегий или покера. Так же он неплохо сработает при локальном подключении, где информация передается практически мгновенно. Но он абсолютно непригоден для быстрых игр по интернету.

Давайте поговорим о физике. Предположим что вы находитесь в Сан-Франциско и подключаетесь к серверу в Нью-Йорке. Это примерно 4000 километров. Так как ничто не может передвигаться быстрее скорости света, в лучшем случае сигнал дойдет за 13 миллисекунд. Но весьма маловероятно, что у вас будет такая хорошая связь. В реальном мире информация не идет прямым путем, причем не со скоростью света.
Так что давайте предположим, что это занимает 50 мс. И это практически лучший сценарий. А что если вы подключаетесь к серверу в Токио? А что если линия связи перегружена? В таких случаях задержки доходят до половины секунды.

Вернемся к нашему примеру. Пусть клиент отправляет сообщение:

— Я нажал на стрелку вправо.

Сервер получает запрос через 50 мс и сразу отправляет обратно обновленное состояние.

— Вы на (11, 10)

Это сообщение дойдет до пользователя еще через 50 мс.

С точки зрения игрока, он нажал на стрелку, потом 0.1 секунды ничего не происходило, а затем персонаж наконец подвинулся на единицу вправо. Этот лаг между командой и её результатом может показаться незначительным, но он заметен. И уж конечно лаг в полсекунды был бы не просто заметным, а сделал бы игру абсолютно неиграбельной.

Резюмируя


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

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

Поделиться:
Тэги:

DS-Servers.com
Copyright © 2012-2018. All Rights Reserved.
При копировании материала ссылка на источник обязательна
За материалы, размещенные пользователями, администрация сайта ответственности НЕ несет