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

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

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

kipar
> И небольшой ликбез\мое понимание терминов:
3. Релейный сервак. Клиенты  отправляют команды только через сервер, который обеспечивает единый порядок их отправки клиентам и вообще единый ход времени. Вместе с командами логики шлются контрольные суммы состояния игры, сервер сверяет их у всех игроков и прекращает игру, если они не сходятся. Так делался мультиплеер в Order of War, например. До кучи решает проблему NAT.

Минусы:

- один читер ломает игру всем;
- читеры могут сговориться и играть, фармя ресурсы;
- один игрок с лагами делает лаги всем;
- бОльшая сложность реализации клиента, так как его поведение должно быть полностью детерминированным (например, надо реализовывать точную арифметику).

#16
15:50, 27 июля 2017

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

> необходимость в наличии
>
> > aabb collision
> > алгоритм raycasting
> > не говорю уже о "поправках на ветер"
>
> думаю не позволяет удовлетворить этому требованию
в п2п. Там придется рассчитывать эту физику кусками, причем не так что каждый рассчитывает для себя, а так что каждый рассчитывает ее для н клиентов и они потом сравнивают результаты. При этом следить чтобы не просочилось никакой информации которую мог бы использовать другой игрок. А с авторитарным сервером - либо любой физдвижок, либо наколенная реализация по нагугленным формулам.

Роман Шувалов
> Под аркадным режимом я подразумевал режим, где всё это не набивается.
тогда ради него стоит ли вообще городить эти сложности.

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

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

#17
15:56, 27 июля 2017

Мои мысли по теме.

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

2. Все очень сильно зависит от характера игры. Контр-страйк с жизненно (смертельно) важными прицельно точными попаданиями это одно. А беготня с оружиями наподобие пулемета или огнемета против толпы NPC-мобов без прицельной стрельбы - другое. Такую беготню здесь и далее я буду называть "аркадной стрельбой" (в противовес спортивной прицельной контрстрайкоподобной стрельбе). Если существует другой термин - скажите.

3. Собрать тысячу игроков в одной локации для прицельной стрельбы невозможно ни через п2п, ни через сервер.

4. Возможности в плане читерства в п2п сопоставимы с возможностями читерства при сервере. Возможно, п2п чуть более подвержен читерству, но не критично. Спидхак, бесконечные патроны и бесконечные жизни легко проверяются самими игроками.

5. Для аркадной стрельбы тысячи игроков против NPC-мобов (например против толпы зомби как в Left 4 dead) в одной локации предлагаю следующее решение, которое я собираюсь реализовать через п2п в своем ближайшем проекте (нет, не том, что на конкурс).

- игроки объединяются в группы по несколько человек (один из игроков случайно выбирается в роли сервера; проброс портов роутера пока оставим за рамками данного обсуждения).
- главы групп (игроки-серверы) синхронизируются друг с другом также, как это делают игроки в пределах одной группы.
- толпа NPC-мобов программируется как единая субстанция, позиция каждого отдельного моба не передается, передается только общая информация. У каждого игрока эта толпа может быть нарисована по-разному.
- стрельба и факт попадания высчитывается игроками, корректность данных проверяется главой группы.
- данные о попаданиях и убитых мобах передаются с большими периодами примерно так: "за последние 500 миллисекунд в толпе мобов №41760 я застрелил 17 мобов". По этой информации каждый игрок может сделать соответствующие корректировки.

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

#18
16:03, 27 июля 2017

Роман Шувалов
> 3. Собрать тысячу игроков в одной локации для прицельной стрельбы невозможно ни
> через п2п, ни через сервер.

они смогли

#19
16:04, 27 июля 2017

Роман Шувалов
Если я  правильно понял
На мой взгляд тебе проще делать сессионный шутер "а-ля Тхарков".
По организации рейдов, я бы посоветовал аналог Визарди Онлайн.

Есть одно "но" если игра с "прокачкой", читер на п2п прокачивается резвее.

#20
16:05, 27 июля 2017

Ren
> Задержка в 1/30 секунды - это критично? Насколько я помню реакция человека где-то 1/3 секунды.
Предсказание даёт ошибки. Сервер может ошибочно посчитать, что противник уже виден и передать его координаты. А потом исправиться и сказать "нет, там никого нет". При волл-хаке такие мелькания обеспечены. К тому же у сервера не всегда есть возможность 100% определить видимость, она показывается приближенно.

kipar
> тогда ради него стоит ли вообще городить эти сложности.
Если я хочу 1000 человек на одну локацию то да, стоит городить. Тем более речь про серьезную экономию на выделенном сервере.

> В общем для авторитарного сервера проще сделать в игре механики создающие
> "сюрприз" (и при том невзламываемые).
Тут я согласен. Воллхак у тех п2п-игроков, которые выбраны серверами, неизбежен. У остальных - сопоставимо с авторитарным сервером.

patsanchik3
> они смогли
Хм, ок, но 10.000 игроков точно нельзя.

#21
16:10, 27 июля 2017

Роман Шувалов
> Хм, ок, но 10.000 игроков точно нельзя.
Можно. После изобретения кросс-серверной технологии, это всего лишь вопрос времени. (т.е. на самом деле они висят не на одном сервере. Это все обман)

#22
16:21, 27 июля 2017

Ren
> (т.е. на самом деле они висят не на одном сервере. Это все обман)
Ну так если обман то это не считается.

#23
16:25, 27 июля 2017

Роман Шувалов
> Ну так если обман то это не считается.
В зависимости от того что считать "сервером". Как я понимаю есть физический сервер и логический. С точки зрения игрока - все банда в 1000 тел висит на одном сервере - видит друг друга и обменивается бластерными лучами. С точки зрения кодера там есть 4 сервера  с плавающими границами по 250 игроков на каждом.

Кстати вот такие игры на конкурс должны быть. Как на видосе у пацанчика. :)

#24
16:28, 27 июля 2017

Роман Шувалов
> Спидхак, бесконечные патроны и бесконечные жизни легко проверяются самими
> игроками.
ну патроны допустим да, легко проверить.
Но для жизней и тем более спидхака надо повторять симуляцию движения либо обходится примерными прикидками. А при прикидках соответственно можно читерить "не наглея", завышая скорость и жизни в пределах допустимого.

В твоем варианте я так понимаю проверкой будут заниматься главы группы, а самих глав контролировать уже сервер? Тогда читеру достаточно стать главой и все находящиеся в его группе игроки смело будут суперменить, если распределять группы по территориальному признаку то сделать это будет тривиально (ну т.е. группа читеров ходит вместе, дожидается пока один из них станет лидером, и тогда остальные врубают автокилл\неуязвимость).
Хотя конечно если никаких рейтингов в этих матчах в принципе не будет, только индивидуальное удовлетворение, то читерить смысла мало.

> толпа NPC-мобов программируется как единая субстанция, позиция каждого
> отдельного моба не передается, передается только общая информация. У каждого
> игрока эта толпа может быть нарисована по-разному.
ну, конечно зависит от реализации, но по-моему будет несколько портить совместное впечатление то что для одного было "этот зомби меня почти сожрал, чудо что ты вовремя его подстрелил" для другого "да мы просто в толпу стреляли, риска ноль, там никто и близко не подошел. один ты зачем-то на месте крутился как будто тебя уже жрут."

#25
16:28, 27 июля 2017

patsanchik3
> они смогли
Там поле чистое :)

kipar
Думаю все эти споры закончатся, когда начнешь выкладывать свои кровные по каждой сотне другой игроков :)

#26
16:30, 27 июля 2017

Ren
> Задержка в 1/30 секунды - это критично?
Добавь сюда сетевой лаг.

#27
16:31, 27 июля 2017

zlos
> Добавь сюда сетевой лаг.
200 фпс - 0,005 секунды?
чет я адового затупил))
Пинг 200 - 0,2 секунды.

#28
22:33, 27 июля 2017

kipar
> в п2п. Там придется рассчитывать эту физику кусками, причем не так что каждый
> рассчитывает для себя, а так что каждый рассчитывает ее для н клиентов и они
> потом сравнивают результаты. При этом следить чтобы не просочилось никакой
> информации которую мог бы использовать другой игрок. А с авторитарным сервером
> - либо любой физдвижок, либо наколенная реализация по нагугленным формулам.

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

и ему ничего такого делать не надо - Юньку в руки и вся физика в коробке

#29
1:15, 28 июля 2017

tac
> А с авторитарным сервером
> > - либо любой физдвижок, либо наколенная реализация по нагугленным формулам.
неее .... тебе вначале надо свести к 2d столкновениям КАЖДУЮ твою игру, ты же хочешь 2d движок, а не в общем виде решать ... а по сути тебе надо конвентатор сцены из Unity в твое представление, т.к. никто не будет парится и создавать под твой сервер сцены

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

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