krauser0993 писал(а):В мморпг сеть работает по UDP протоколу через удаленный вызов процедур (RPC).
Т.е. сначала ответ от сервера, а потом сам дроп. Конкретный.
несостыковка получается. нужно ждать ответ от сервера, а это задержка.
Крути какую нить анимацию эти пол секунды и игрок не заметит подгрузки данных.
знаю моб игры, где моментально без анимаций обновляется.
Мне это конечно сильно пока не нужно, но интересно как добиться такого быстрого ответа от сервера и при этом надежно.
Ни какой несостыковки. Дроп всегда идет с сервера когда ты кликаешь открыть сундук или облутать моба и т.п. Если ты играл в WoW например, когда сервак тупит у них, при облутке моба окно с лутом может появляться задержкой в несколько секунд, а если собрать поляну мобов (50-100) и всех грохнуть, при попытке облута (сейчас в вов лутаются мобы по AOE, т.е если в радиусе 15 метров есть тушки мобов с лутом, достаточно начать лутать одного и с остальных лут тоже к тебе в окошко подтянется) - так вот, при таком масс луте тоже сервак думает секунду+, и это сервера близзард которые явно не 3 копейки стоят.
Простыми словами - без задержки симулируется то на клиенте, что клиент уже и так знает, яркий пример это передвижение персонажа т.к клиент четко знает на сколько и куда подвинется персонаж когда юзер тыкает кнопку, по этому делает это моментально вместе с отсылкой на сервер движения, сервер через сколько то миллисекунд пришлет на клиент координаты такого движения и клиент должен их проверить как бы в прошедшем времени, были ли они верны или нет, простыми словами - клиент должен запоминать движения каждый такт времени (в коллекцию писать куда нить). Если пошел какой то рассинхрон, например инет у клиента лаганул то как бы на экране персонаж бежит а на сервере он стоит и как только отлагает, сервер пришлет верные координаты и игрока откинет назад. Так же как если игрок захочет пройти сквозь стену используя читы, на своем экране то он передвинет игрока за стену но сервер же проверяет каждое движение и если посчитает что пройти так за стену нельзя - он у себя (на серваке) не передвинет перса за стену и опять же пришлет на клиент верные координаты.
По поводу моментальности в моб играх, - ничего нельзя сделать моментально что идет напрямую с сервера в реальном времени. Как устрона та игра, знают только разрабы, может быть там какой то пул лута прилетает на клиент при логине и из этого пула клиент уже по итогу сам рандомит что выпадет впервую очередь, моб игры не для хардкорных игроков, не думаю что там прям очень строго стедят за читерами кто захочет "руками" себе подстроить нужный лут из такого пула, там же нормальный шмот или лут всегда за донат продают и он уже точно тебе с сервера передается, а всякий треш вполне вероятно и клиент может тебе выдавать из начального пула - таким способом лут будет моментальный, но это естественно просто мои догадки.
P.S В общем, разработка сетевой игры это очень серьезное и не простое занятия, если делать еще пошаговую игру, пол беды, но вот какой нить 3д шутер или ммо... я честно говоря такое в соло неасилю на должном уровне или буду демку делать несколько лет. По этому мне проще заплатить денег сетевому программисту который напишет всё это дело т.к имеет узкую специализацию на сетях и играх в частности.