Войти
ФлеймФорумРазработка игр

Авторитарный сервер против п2п (метастазы конкурса MMORPG)

Страницы: 1 2 3 Следующая »
#0
14:32, 27 июля 2017

Без привязки к конкретной игре конечно разговор получается несколько абстрактный, каждый тянет в свое болото, поэтому можно рассмотреть некий общий знаменатель:
- мморпг. Не сессионка, т.е. на локации может собраться в кучу тысяча (или больше) игроков.
- нонтаргет, возможно даже шутер. Можно обсудить и другие, но я так понимаю, тренд на конкурсе явно в сторону игр с физикой.
- должно, хотя бы потенциально, работать и для 5-10 игроков с самым дешевым vps и для тысяч игроков (возможно уже на не самом дешевом vps).
- должно быть по силам в реализации не только признанному гению физики и сетевых взаимодействий.
- (важно) рассматриваются не "реальные коммерческие ААА-проекты заработали миллионы на гуглплее а вы все лузеры", а мечты идеалистов с форума. Поэтому примеры коммерческих игр приводить можно, но они имеют силу только в положительную сторону, т.е. что "так сделать можно", а не "так сделать невозможно".

И небольшой ликбез\мое понимание терминов:
1. Авторитарный сервер. Все происходящее симулируется на сервере, клиенты занимаются только отображением. Идеальный авторитарный сервер принимает нажатия на клавиатуре\движения мышки и выдает картинку, но до такого безумия все-таки доходить не будем - клиент получает достаточно информации чтобы нарисовать объекты и даже чтобы чуть-чуть предсказывать их перемещение. Но все-таки не может видеть других игроков сквозь стены и не может сквозь стены ходить.

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

Дискач.

#1
14:33, 27 июля 2017

tac
> здания с этажами простой самый пример
каждый этаж отдельно плюс порталы на стыках.

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

Ну и не думаю что проверка столкновений в 3д намного больше будет жрать чем в 2д. Скорее всего как раз кинематика костей тормозила.

> это будет сродни эффекту прохождения через стену, на гемплей это не влияет, но заставляет игрока заходить через двери
прохождение через стену влияет на геймплей. Можно войти, ударить и спрятаться от ответки назад за стену. Или время сэкономить. В общем влияет. А вот то как он локоть поднял или колено - влияет либо если это симулятор фехтования, либо если шутер и важно точно знать попал\не попал в это колено (а не примерно в хитбокс ).

> может быть видна только рука из за стенки, или пуля влетающая в окно
какое отношение это имеет к физике?

#2
14:48, 27 июля 2017

>Идеальный авторитарный сервер принимает нажатия на клавиатуре\движения мышки и выдает картинку, но до такого безумия все-таки доходить не будем
Для движения, поворота и боя у меня ровно так и сделано. По кнопкам отсылаются нажатия и отжатия клавиш, для мышки - угол поворота.

#3
14:52, 27 июля 2017

kipar
> > может быть видна только рука из за стенки, или пуля влетающая в окно
> какое отношение это имеет к физике?

к расчету, видит перса кто то еще или нет, может в него прицелится или нет

#4
15:04, 27 июля 2017

kipar
> столкновения все равно будут 2д

ну давай так - нужно реализовать aabb collision для трехмерных объектов (хотя бы кубов), если это по твойму 2D - ок

#5
15:08, 27 июля 2017

AWPStar
но с сервера же не просто картинка приходит. Соответственно у клиента может оказаться больше информации чем если бы приходила картинка. Например если приходят координаты существ, то можно сделать бота который сам будет в них целиться. Но да, по-моему это все еще авторитарный сервер.

tac
> к расчету, видит перса кто то еще или нет, может в него прицелится или нет
По-моему можно проверять видимость считая предметы кубиками. Проверять видимость с точностью до пискеля уже перебор.

#6
15:09, 27 июля 2017

Главная проблема п2п - легко надуть. Если у тебя есть любая форма соревновательного ПВП и нет возможности ограничить возможность игрока залезать в память - то сервер должен быть авторитарным. Если у тебя кооперативное рубилово или ПВП без рейтингов и наград, всё уровня "побегать пострелять с друзьями" - то п2п достаточно.
В ММОРПГ п2п сервер не пойдёт уже хотя бы из за того что игроки могут друг друга разным образом нагибать, а весь трафик придётся передавать между всем тысячами игроков.
Любой нормальный сетевой код всё равно требует нормальной квалификации и людям вчера прочитавшим книжку "Делаем игры на Юнити3Д с нуля" не под силу.

#7
15:11, 27 июля 2017

kipar
> По-моему можно проверять видимость считая предметы кубиками. Проверять
> видимость с точностью до пискеля уже перебор.
нужен алгоритм raycasting - по сути тоже столкновение, только луча с препятствием

#8
15:14, 27 июля 2017

tac
> ну давай так - нужно реализовать aabb collision для трехмерных объектов (хотя
> бы кубов), если это по твойму 2D - ок
Во многих ммо это не нужно. Если персонажи ходят по рельефу как приклееные, или подпрыгивают только чтобы перешагнуть бордюр, то мир можно считать двумерным и столкновения будут двумерными. Вот если можно запрыгнуть на другого игрока чтоб выбраться в форточку - конечно нужен 3д.

Но аабб коллизии и в 3д легко потянут тысячи объектов.

#9
15:21, 27 июля 2017

kipar
> Если персонажи ходят по рельефу как приклееные, или подпрыгивают только чтобы
> перешагнуть бордюр
ну давай рассмотрим лестницу между этажами - по ней идет перс, если подойти к краю лестницы можно упасть вниз - как ты определишь координаты перса если не будешь рассчитывать столкновение куба с наклонной поверхностью ? а потом координаты куда ему падать?

#10
15:23, 27 июля 2017

tac
> ну давай рассмотрим лестницу между этажами - по ней идет перс, если подойти к
> краю лестницы можно упасть вниз - как ты определишь координаты перса если не
> будешь рассчитывать столкновение куба с наклонной поверхностью ?
край лестницы определяется в 2д, столкновений не требуется. Высоту перса определяет клиент, серверу главное что он на лестнице с такими-то координатами x y.

> а поток координаты куда ему падать?
строго вниз. Если конечно игра более-менее реалистичная, без контроля в воздухе. Ну, если важно чтоб можно было прыгать с разгона можно еще учесть высоту лестницы, скорость бега и прибавить поправку.

#11
15:26, 27 июля 2017

kipar
> Высоту перса определяет клиент
да ладно? а как же читер который ее меняет и летит к другому игроку и потом садится перед ним?

kipar
> строго вниз
до какого этажа? как он определит с чем он пересекся?

#12
15:32, 27 июля 2017

Ren
> Почему? При тике 1/30 секунды что нам мешает "дать сигнал" только когда враг в
> реальном поле видимости(вышел из-за стены)? А не в "допустимом не далеке"?
Ну так задержка же. Для предсказания надо знать хотя бы пару кадров до выскакивания из-за стены.

kipar
> если можно набивать рейтинг\уровень\деньги в "аркадном" режиме, то все топы будут читерами.
Под аркадным режимом я подразумевал режим, где всё это не набивается. Я вообще не люблю все эти прокачивания героев и тем более внутриигровые деньги и торговлю, поэтому и не собирался всё это реализовывать, как-то забыл об этом сказать.

> почему бы серверу не проверить видимость хотя бы приближенно.
Приближенно проверит. Состояния "враг за углом и вот-вот выскочит" достаточно, чтобы уже передать данные. Не говоря уже о том, что враг может сидеть в кустах и его невидимость обеспечивается только Z-буфером видеокарты. Либо просто быть в тени и не носить свветоотражающий жилет.

#13
15:33, 27 июля 2017

kipar
> - должно быть по силам в реализации не только признанному гению физики

необходимость в наличии

> aabb collision
> алгоритм raycasting
> не говорю уже о "поправках на ветер" и прочей физики

думаю не позволяет удовлетворить этому требованию

#14
15:36, 27 июля 2017

Роман Шувалов
> Ну так задержка же. Для предсказания надо знать хотя бы пару кадров до
> выскакивания из-за стены.
>
Задержка в 1/30 секунды - это критично? Насколько я помню реакция человека где-то 1/3 секунды.

Страницы: 1 2 3 Следующая »
ФлеймФорумРазработка игр

Тема в архиве.