Превью обновления Survarium 0.52

Обсуждение последних новостей и событий вокруг проекта Survarium ведется в данном разделе.

27.03.2018, 23:26

Некроморффф писал(а):Дима вы когда приведете сеть в порядок

еще раз расскажу, постараюсь коротко

для создания иллюзии совместной игры текущая версия сетевой синхронизации использует следующий прием:
игровой мир и персонаж, которым управляет локальный игрок, рисуются в текущем игровом времени, а все остальные персонажи - в прошлом, с отставанием от текущего игрового времени на величину, которую мы назвали latency

эта величина постоянно рассчитывается и зависит от времени, необходимого для доставки пакета от клиента серверу, от сервера клиенту, способности клиента и сервера (по отдельности) обрабатывать пакеты, т.е. грубо говоря, от их фпс

такой прием используется в играх Valve и, скорее всего, многих других

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

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

сами Valve, описывают свой подход лишь до какой-то небольшой величины latency, а дальше все-таки начинают экстраполировать.

другой распространенный подход заключается в том, чтобы всегда экстраполировать персонажей других игроков. Точной информации у меня нет, но полагаю, что он использован в PUBG, Fortnite и других играх на UE. Мы также использовали такой подход до патча 0.34

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

судя по всему, большинство игр засчитывают нанесение повреждения, основываясь на информации, которую предоставляет клиент. Это называется client side hit detection, т.е. до какой-то степени сервер просто "верит" клиенту. Наверное, все помнят видео читов для PUBG, когда один игрок убивал 70 других ближним боем еще до того, как они успевали приземлиться. Это - последствия такого подхода. В нашей игре такие читы принципиально невозможны. Зато такой подход позволяет достичь идеальной точности попадания без лишних хлопот.

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

аудитория наших игроков очень разная: пинги варьируются от 10 до 450.
что мы сделали:
* реализовали схему Valve
* исключили из нее экстраполяцию, оставили только интерполяцию
* все решает только сервер - server side hit detection
* реализовали идеальную точность попадания!

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

мне неизвестна ни одна игра, которая имеет server side hit detection и хотя бы один пункт из следующего списка
* идеальная точность попадания
* отсутствие постоянной экстраполяции
* независимость от пингов других игроков (кроме двух описанных артефактов)

в Сурвариуме реализован все 4 пункта. И сделать это было непросто.

но да, у нас есть эти самые два артефакта, за которые нас так жестко критикуют.

мне вот интересно, вы в другие игры играете? так чтобы были игроки с большими пингами? чтобы у вас был большой пинг?

как правило, все сравнения проводятся с играми, до серверов которых пинг <50мс и которые не пускают к себе игроков с большим пингом

мы не можем не пускать игроков с большими пингами.

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

надеюсь, я ответил на ваш вопрос.
Аватара пользователя
dima
Vostok Games
 
Сообщения: 2545
Регистрация: 03.04.2013, 11:52
Откуда: Kyiv

27.03.2018, 23:37

dima: текущая версия сетевой синхронизации использует следующий прием:
...

Благодарю за ответ.
Странно, что в последнем подкасте так подробно не разобрался этот вопрос.
Последний раз редактировалось Фил Топаз 27.03.2018, 23:38, всего редактировалось 1 раз.
Аватара пользователя
Фил Топаз
Легенда
Выживший
Исследователь
Ветеран
Мастер
 
Сообщения: 3099
Регистрация: 05.04.2013, 14:47
Откуда: бы взять голды? ☻ Конкурс https://goo.gl/WO1KNS

27.03.2018, 23:41

Цен
dima:
еще раз расскажу, постараюсь коротко.

Ох ни хрена (растение) себе коротко! Спасибо, изучим внимательно о0
Последний раз редактировалось WoooKer 27.03.2018, 23:43, всего редактировалось 1 раз.
Аватара пользователя
WoooKer
 
Сообщения: 959
Регистрация: 04.04.2013, 19:32
Откуда: Армия Брабольки ⇚Киев⇛

27.03.2018, 23:47

Фил Топаз:
Странно, что в последнем подкасте так подробно не разобрался этот вопрос.

Просто если сесть и расписать - получится удобнее и понятнее, чем пытаться всё объяснить в один заход при общении :)

Oleg gde maket
Отряд "Альфа"
 
Сообщения: 94
Регистрация: 08.04.2013, 20:23
Откуда: gameru.net

27.03.2018, 23:54

OlegatoR:
Просто если сесть и расписать - получится удобнее и понятнее, чем пытаться всё объяснить в один заход при общении :)

Но к сожалению найти эту информацию в недрах форума через пару месяцев будет очень сложно.
Да понимаю, когда печатаешь сообщение есть больше времени обдумать, составить, но уж времени на это всё точно
не меньше тратится, чем ответ в устной форме.
В подкастах проставляются тайминги и очень легко найти всю интересующую информацию.
Пример dima упоминал о сетевой синхронизации патча 0.34, так вот я за 1 минуту на YouTube нашел о чём идет речь - https://youtu.be/sWQZat4ey80?t=31m15s (от 9 июн. 2016 г.) , а вот информация о сетевой синхронизации 0.24 патча - https://youtu.be/Y-Jm-MxAEvo?t=41m16s (от 28 окт. 2014 г) .
На форуме как понимаете около 3,5 лет назад также dima рассказывал о сетевой синхронизации, но его сообщения сейчас найти ну очень сложно, как мне кажется.
Последний раз редактировалось Фил Топаз 28.03.2018, 10:16, всего редактировалось 4 раз(а).
Аватара пользователя
Фил Топаз
Легенда
Выживший
Исследователь
Ветеран
Мастер
 
Сообщения: 3099
Регистрация: 05.04.2013, 14:47
Откуда: бы взять голды? ☻ Конкурс https://goo.gl/WO1KNS

28.03.2018, 01:49

dima:
что у нас сейчас реализован.

надеюсь, я ответил на ваш вопрос.
Спасибо за информацию и за ваш труд, постараюсь в будущем игнорировать артефакты, и больше не поднимать эту тему.
Аватара пользователя
Некроморффф
 
Сообщения: 348
Регистрация: 18.01.2014, 09:38
Откуда: Dead Space

28.03.2018, 09:54

dima:еще раз расскажу, постараюсь коротко

Дмитрий, вот играл в одну 2д игру ... но об этом чуть позже ... помните ботов на ПВЕ, когда они встают и начинают крутиться вокруг своей оси, в них становится сложно попасть, как думаю, что все обратили на это внимание.

Почему бы эту фичу не присобачить к макросной мышке, что мол когда игрок перезаряжается ))) он бы крутился как волчёк в 30% своего времени, те часть пуль по нему не попадёт и будет шанс перезарядившись влепить очередь, я правильно понимаю ?

Далее, если я правильно понимаю, между выстрелами есть временной промежуток, так в этом временном промежутке можно поворачивать главного героя на 90 градусов туда-сюда, что приведёт к частичной потере урона по персонажу, я правильно понимаю ?

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

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

Далее немного не по теме.
заметил БАГ в игре, давно. Когда персонаж прыгает вперёд - то всё нормально, а когда одновременно вперёд и вправо, то персонаж прыгает по длинне как в перёд, но ещё и + вправо. Те он прыгает ДАЛЬШЕ вперёд и вправо, чем просто вперёд. Если мне кажется то извинте. А то прыжок по диагонали по теореме пифагора считается, если я не прав то ещё раз сори.

Ишак
 
Сообщения: 1139
Регистрация: 26.10.2014, 15:54
Откуда: все оттуда

28.03.2018, 11:22

dima:судя по всему, большинство игр засчитывают нанесение повреждения, основываясь на информации, которую предоставляет клиент. Это называется client side hit detection, т.е. до какой-то степени сервер просто "верит" клиенту.

Как понимаю, при таком подходе экономится серверная мощность, ведь сервер не перепроверяет присланную клиентом информацию?

Ишак:Те он прыгает ДАЛЬШЕ вперёд и вправо, чем просто вперёд

Так же персонаж боком с легкостью заходит на препятствия, на которые он да же запрыгнуть не может (или с трудом запрыгивает).
Аватара пользователя
RockCat
 
Сообщения: 3346
Регистрация: 03.07.2013, 08:49
Откуда: Сталинград

28.03.2018, 11:45

RockCat писал(а):Как понимаю, при таком подходе экономится серверная мощность, ведь сервер не перепроверяет присланную клиентом информацию?

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

если же детерминизм вычислений поддерживается клиентом и сервером - наш случай - то с одной стороны никаких дополнительных вычислений делать не надо, а с другой мы имеем server side hit detection при идеальной точности попаданий.
Аватара пользователя
dima
Vostok Games
 
Сообщения: 2545
Регистрация: 03.04.2013, 11:52
Откуда: Kyiv

28.03.2018, 11:55

RockCat:ведь сервер не перепроверяет присланную клиентом информацию?

Я не понимаю, сервер только получает пакет "игрок попал в голову врагу", хотя игрок мог целиться вообще неизвестно куда ?

Ишак
 
Сообщения: 1139
Регистрация: 26.10.2014, 15:54
Откуда: все оттуда

28.03.2018, 12:33

Дима, всем давно понятно, что с сетевой синронизацией в Сурвариуме все в поядке, иногда только создается впечатление что сервера "шалят" к примеру на ру сервере это очень даже часто заметно, но это мелочи, в основном на синхронизацию жалуются те у кого интернет через мусоропровод подключен=) вы лучше скажите как там подготовка долгожданного ПТС 0.52 над чем трудитесь так долго? успеваете на этой неделе?
Последний раз редактировалось Pasza_dem 28.03.2018, 12:39, всего редактировалось 1 раз.
Аватара пользователя
Pasza_dem
 
Сообщения: 587
Регистрация: 27.03.2014, 16:08
Откуда: Warszawa

28.03.2018, 12:56

Pasza_dem писал(а):Дима, всем давно понятно, что с сетевой синронизацией в Сурвариуме все в поядке, иногда только создается впечатление что сервера "шалят" к примеру на ру сервере это очень даже часто заметно, но это мелочи, в основном на синхронизацию жалуются те у кого интернет через мусоропровод подключен=) вы лучше скажите как там подготовка долгожданного ПТС 0.52 над чем трудитесь так долго? успеваете на этой неделе?

сводим все концы вместе, если кратко

большое количество материалов изменилось, что-то поломалось

исправляем, чиним, готовим ПТС

мы уже тестируем на нем, но пока приватно

БД скопирована на состояние понедельника этой недели
Аватара пользователя
dima
Vostok Games
 
Сообщения: 2545
Регистрация: 03.04.2013, 11:52
Откуда: Kyiv

28.03.2018, 13:04

А скажите, новый рендер запускается на более 24-х процессорных потоках, или по прежнему крашится?

Sunshineman
 
Сообщения: 13
Регистрация: 09.04.2014, 15:25

28.03.2018, 13:12

dima:

Рекомендую убрать с КООП ПВЕ миссии - NA серверы для игроков с СНГ хотя бы на время.
(https://www.facebook.com/groups/survari ... 958889841/)
Сегодня попал на NA сервер - "Latency +250" игра вылетает бывает в лобби, задержки непонятные - ужас!
Играть так конечно можно, но у моих соотрядников выбрасывало в Лобби у меня при попытке записать видео про обнаруженный баг (при переходе в экранный режим) клиент вообще крешнулся.
"Очнулся" неподалеку от радиоактивной лужицы с минимумом ХП и чудом что не помер.
Последний раз редактировалось Фил Топаз 28.03.2018, 14:51, всего редактировалось 9 раз(а).
Аватара пользователя
Фил Топаз
Легенда
Выживший
Исследователь
Ветеран
Мастер
 
Сообщения: 3099
Регистрация: 05.04.2013, 14:47
Откуда: бы взять голды? ☻ Конкурс https://goo.gl/WO1KNS

28.03.2018, 13:16

Sunshineman писал(а):А скажите, новый рендер запускается на более 24-х процессорных потоках, или по прежнему крашится?

а он не запускается на такой системе?

пришлите crash report сюда, пожалуйста
iassenev@vostokgames.com

Vostok Engine поддерживает до 32-х потоков

на 16-ти потоках он точно работает, на 32-х проверю, отпишусь

сразу оговорюсь, что при таком мощном CPU узким местом в большинстве случаев будет либо видеокарта, либо поток команд DirectX, либо драйвер, т.е. не стоит рассчитывать на пропорциональный прирост фпс.

единственный сценарий, при котором можно получить выгоду от такого количества ядер, это
* мощная видеокарта
* минимальное разрешение экрана
* resolution scale 0.25
* найти место на уровне, где не будут видны персонажи и другие анимированные объекты

при таких условиях мы получали невероятный фпс (1400+) и действительно есть прирост от большого количества ядер
Аватара пользователя
dima
Vostok Games
 
Сообщения: 2545
Регистрация: 03.04.2013, 11:52
Откуда: Kyiv

28.03.2018, 13:18

Фил Топаз писал(а):Убедительно прошу убрать с КООП ПВЕ миссии - NA серверы для игроков с СНГ.
Сегодня попал на NA сервер - "Latency +250" игра вылетает бывает в лобби, задержки непонятные - ужас!
Играть так конечно можно, но у моих соотрядников выбрасывало в Лобби у меня при попытке записать видео про обнаруженный баг (при переходе в экранный режим) клиент вообще крешнулся.
"Очнулся" неподалеку от радиоактивной лужицы с минимумом ХП и чудом что не помер.

мы попробуем
Аватара пользователя
dima
Vostok Games
 
Сообщения: 2545
Регистрация: 03.04.2013, 11:52
Откуда: Kyiv

28.03.2018, 13:34

dima:
мы уже тестируем на нем, но пока приватно


спасибо большое за ответ!
Аватара пользователя
Pasza_dem
 
Сообщения: 587
Регистрация: 27.03.2014, 16:08
Откуда: Warszawa

28.03.2018, 13:39

Ишак:Я не понимаю, сервер только получает пакет "игрок попал в голову врагу", хотя игрок мог целиться вообще неизвестно куда ?

Да, подобное есть в в играх с "client side hit detection" синхронизацией.

Да же если не брать во внимание различное ЗПО, то по тому же ПАБГ-у в ютубе есть ролики, когда у игрока просто не прогрузились модели строений на карте и он гоняет на машине по чистому полю, но все остальные игроки видят как машина (с жуткими лагами) проезжает через заборы и дома... Вот это я понимаю доверие клиенту со стороны сервера! xD
Последний раз редактировалось RockCat 28.03.2018, 13:47, всего редактировалось 2 раз(а).
Аватара пользователя
RockCat
 
Сообщения: 3346
Регистрация: 03.07.2013, 08:49
Откуда: Сталинград

28.03.2018, 13:48

dima:
сводим все концы вместе, если кратко

большое количество материалов изменилось, что-то поломалось

исправляем, чиним, готовим ПТС

мы уже тестируем на нем, но пока приватно

БД скопирована на состояние понедельника этой недели

вы можете сказать ,сегодня стоит ждать птс или не стоит?
Аватара пользователя
yazzzpanzerwaffe
 
Сообщения: 190
Регистрация: 04.04.2013, 18:43

28.03.2018, 14:07

yazzzpanzerwaffe:
вы можете сказать ,сегодня стоит ждать птс или не стоит?

Что изменится? Скажут стоит, но в итоге по тех. причинам не получится.
КТТС.©
Аватара пользователя
Нипробил
 
Сообщения: 40
Регистрация: 29.11.2017, 14:53

Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.

Новости