Страница 1 из 2

Моментальные запросы

СообщениеДобавлено: 23 сен 2020, 05:15
krauser0993
:-h
Делаю онлайн игру через стандартные запросы (через корутину), при этом чувствуется задержка.
Интересует как работают запросы в MMORPG, даже с моим пингом 250мс выполняется все моментально (имею в виду клики, например, завершить задание) и можно ли добиться такого результата в Unity?

Хотя есть мысль, например условие если не пингуется, то нельзя завершить задание, но вряд ли так реализовано

Re: Моментальные запросы

СообщениеДобавлено: 23 сен 2020, 09:57
Saltant
Что в твоем понимании "стандартные запросы" и причем ваще тут корутины? В мморпг сеть работает по UDP протоколу через удаленный вызов процедур (RPC).
По поводу моментальности действий: в онлайн играх, если это не пошаговые, то когда игрок нажимает клавишу бега, он сразу начинает бежать не дожидаясь ответа от сервера, т. е выполняет бег вместе с отсылкой нажатых клавиш на сервер, после того как от сервака пришел ответ с координатами клиент сверяет все ли он верно посчитал и оказался там где надо, если не там, то корректируешь положение, в итоге если клиент все верно считает (игрок не читерит и т. п) то должны быть действия без задержки, игрок не увидит разницы т. к для него все выполняется моментально.

Re: Моментальные запросы

СообщениеДобавлено: 23 сен 2020, 10:27
krauser0993
Saltant писал(а):Что в твоем понимании "стандартные запросы" и причем ваще тут корутины? В мморпг сеть работает по UDP протоколу через удаленный вызов процедур (RPC).
По поводу моментальности действий: в онлайн играх, если это не пошаговые, то когда игрок нажимает клавишу бега, он сразу начинает бежать не дожидаясь ответа от сервера, т. е выполняет бег вместе с отсылкой нажатых клавиш на сервер, после того как от сервака пришел ответ с координатами клиент сверяет все ли он верно посчитал и оказался там где надо, если не там, то корректируешь положение, в итоге если клиент все верно считает (игрок не читерит и т. п) то должны быть действия без задержки, игрок не увидит разницы т. к для него все выполняется моментально.


стандартные запросы имею в виду post запросы которые через корутины.
с бегом то понятно, а вот с получением дропа например? получает награды тоже без ответа от сервера? если так, то неужели это не вызывает кучу багов?

Re: Моментальные запросы

СообщениеДобавлено: 23 сен 2020, 10:34
krauser0993
P.S. у меня пошаговая игра, например чтобы подгрузить ивенты, список друзей нужно ждать где-то полсекунды

Re: Моментальные запросы

СообщениеДобавлено: 23 сен 2020, 10:50
Alex5
krauser0993 писал(а):с бегом то понятно, а вот с получением дропа например? получает награды тоже без ответа от сервера? если так, то неужели это не вызывает кучу багов?

А в чём тут баг должен быть? При дропе то ведь выпадает вполне конкретная награда, которая уж точно будет отражена на сервере. Т.е. сначала ответ от сервера, а потом сам дроп. Конкретный.

Re: Моментальные запросы

СообщениеДобавлено: 23 сен 2020, 11:13
Saltant
krauser0993 писал(а):чтобы подгрузить ивенты, список друзей нужно ждать где-то полсекунды

Крути какую нить анимацию эти пол секунды и игрок не заметит подгрузки данных. Тебе лучше найти геймдизайнера какого нить, который будет закрывать вот такие моменты. Но вообще вроде бы есть WebGL если у тебя игра на http запросах, крути её в браузере который есть у каждого и на ПК и мобилке, мощности клиента особо тут и не нужны.

Re: Моментальные запросы

СообщениеДобавлено: 23 сен 2020, 12:51
Jarico
Saltant писал(а):Что в твоем понимании "стандартные запросы" и причем ваще тут корутины? В мморпг сеть работает по UDP протоколу через удаленный вызов процедур (RPC).
По поводу моментальности действий: в онлайн играх, если это не пошаговые, то когда игрок нажимает клавишу бега, он сразу начинает бежать не дожидаясь ответа от сервера, т. е выполняет бег вместе с отсылкой нажатых клавиш на сервер, после того как от сервака пришел ответ с координатами клиент сверяет все ли он верно посчитал и оказался там где надо, если не там, то корректируешь положение, в итоге если клиент все верно считает (игрок не читерит и т. п) то должны быть действия без задержки, игрок не увидит разницы т. к для него все выполняется моментально.


Это называется предсказание и согласование с сервером :)

Re: Моментальные запросы

СообщениеДобавлено: 23 сен 2020, 13:05
Saltant
Jarico писал(а):
Saltant писал(а):Что в твоем понимании "стандартные запросы" и причем ваще тут корутины? В мморпг сеть работает по UDP протоколу через удаленный вызов процедур (RPC).
По поводу моментальности действий: в онлайн играх, если это не пошаговые, то когда игрок нажимает клавишу бега, он сразу начинает бежать не дожидаясь ответа от сервера, т. е выполняет бег вместе с отсылкой нажатых клавиш на сервер, после того как от сервака пришел ответ с координатами клиент сверяет все ли он верно посчитал и оказался там где надо, если не там, то корректируешь положение, в итоге если клиент все верно считает (игрок не читерит и т. п) то должны быть действия без задержки, игрок не увидит разницы т. к для него все выполняется моментально.


Это называется предсказание и согласование с сервером :)

Мне то понятно как это называется, но для ТС лучше расписать чтоб он понимал.

Re: Моментальные запросы

СообщениеДобавлено: 24 сен 2020, 09:58
krauser0993
В мморпг сеть работает по UDP протоколу через удаленный вызов процедур (RPC).

Т.е. сначала ответ от сервера, а потом сам дроп. Конкретный.


несостыковка получается. нужно ждать ответ от сервера, а это задержка.

Крути какую нить анимацию эти пол секунды и игрок не заметит подгрузки данных.

знаю моб игры, где моментально без анимаций обновляется.

Мне это конечно сильно пока не нужно, но интересно как добиться такого быстрого ответа от сервера и при этом надежно.

Re: Моментальные запросы

СообщениеДобавлено: 24 сен 2020, 11:16
Saltant
krauser0993 писал(а):
В мморпг сеть работает по UDP протоколу через удаленный вызов процедур (RPC).

Т.е. сначала ответ от сервера, а потом сам дроп. Конкретный.


несостыковка получается. нужно ждать ответ от сервера, а это задержка.

Крути какую нить анимацию эти пол секунды и игрок не заметит подгрузки данных.

знаю моб игры, где моментально без анимаций обновляется.

Мне это конечно сильно пока не нужно, но интересно как добиться такого быстрого ответа от сервера и при этом надежно.

Ни какой несостыковки. Дроп всегда идет с сервера когда ты кликаешь открыть сундук или облутать моба и т.п. Если ты играл в WoW например, когда сервак тупит у них, при облутке моба окно с лутом может появляться задержкой в несколько секунд, а если собрать поляну мобов (50-100) и всех грохнуть, при попытке облута (сейчас в вов лутаются мобы по AOE, т.е если в радиусе 15 метров есть тушки мобов с лутом, достаточно начать лутать одного и с остальных лут тоже к тебе в окошко подтянется) - так вот, при таком масс луте тоже сервак думает секунду+, и это сервера близзард которые явно не 3 копейки стоят.

Простыми словами - без задержки симулируется то на клиенте, что клиент уже и так знает, яркий пример это передвижение персонажа т.к клиент четко знает на сколько и куда подвинется персонаж когда юзер тыкает кнопку, по этому делает это моментально вместе с отсылкой на сервер движения, сервер через сколько то миллисекунд пришлет на клиент координаты такого движения и клиент должен их проверить как бы в прошедшем времени, были ли они верны или нет, простыми словами - клиент должен запоминать движения каждый такт времени (в коллекцию писать куда нить). Если пошел какой то рассинхрон, например инет у клиента лаганул то как бы на экране персонаж бежит а на сервере он стоит и как только отлагает, сервер пришлет верные координаты и игрока откинет назад. Так же как если игрок захочет пройти сквозь стену используя читы, на своем экране то он передвинет игрока за стену но сервер же проверяет каждое движение и если посчитает что пройти так за стену нельзя - он у себя (на серваке) не передвинет перса за стену и опять же пришлет на клиент верные координаты.

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

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

Re: Моментальные запросы

СообщениеДобавлено: 24 сен 2020, 15:46
krauser0993
Понятно, спасибо за разъяснение.
В принципе, во многих случаях можно обыграть задержку, сделать незаметной.

Re: Моментальные запросы

СообщениеДобавлено: 24 сен 2020, 19:56
Saltant
krauser0993 писал(а):Понятно, спасибо за разъяснение.
В принципе, во многих случаях можно обыграть задержку, сделать незаметной.

То что симулирует клиент, можно выполнять сразу не дожидаясь ответа от сервера, а то что клиент не может симулировать (типа открытие лутбоксов) - без ответа с сервера не реализовать наперёд. По этому писать сетевую игру требует довольно много опыта, т.к новичок наперёд не сможет всё продумать и в итоге запутается сам в своём же коде когда будет пытаться что то исправлять.

Re: Моментальные запросы

СообщениеДобавлено: 24 сен 2020, 21:17
Tolking
А главное - МОБЫ ММО и прочие реалтайм работают не через пост запросы...

Re: Моментальные запросы

СообщениеДобавлено: 25 сен 2020, 03:08
krauser0993
Tolking писал(а):А главное - МОБЫ ММО и прочие реалтайм работают не через пост запросы...

суть остается такой же, отправляется запрос получает ответ. или POST чем-то хуже?

Re: Моментальные запросы

СообщениеДобавлено: 25 сен 2020, 10:11
Saltant
krauser0993 писал(а):
Tolking писал(а):А главное - МОБЫ ММО и прочие реалтайм работают не через пост запросы...

суть остается такой же, отправляется запрос получает ответ. или POST чем-то хуже?

Хуже тем что это http протокол.