Pull to refresh
84
0
Michael Panin @marsermd

Game Developer

Send message

Приятно читать и осознавать что все (кроме дельта-комперссии) сделано так же:D


На тему задержек: мы вот с такой проблемой сталкиваемся: у Wi-Fi роутера иногда случается буфферизация, которая на 0.1-0.4 секунды задерживает пакеты, а потом выдает их все пачкой. (Пакеты — UDP, проверяли с помощью wireshark)


Вроде причина такая: сети 2.4 GHz очень уж плотно населяют наш мир. И две точки на соседних каналах не могут говорить одновременно. Так что если кто-то посторонний начинает активно орать в эфир, наша точка стоит и ждёт своей очереди.
В пользу этой теории говорит тот факт, что подобных провисаний на роутере 5GHz не наблюдается.


Вы с таким сталкивались? Какое у вас решение этой проблемы?

Наверное в этом и шутка?

Так и собака ничего не может сделать с тем, что у неё сердце остановилось.
Я уж не говорю о клеточном апоптозе.

Холодильник понижает свою энтропию:)


А то что при этом энтропия окружающего мира повышается — следует из второго начала термодинамики.

Размытие — не очень дорогая операция если разрешение 1/4 по каждой из осей.
Но да, эта часть жрет заметную часть производительности.


не пробовали сначала осветить облачно а только потом его заблюрить?

От перемены мест слагаемых сумма не меняется:) Ну и различные нойзы явно надо применять после размытия а не перед ним.

Не правильным вещам учат некоторые Русские люди

С чего вы взяли что это вам решать?


И вообще у вас очень странные отношения с грамматикой для русского человека.
Прошу вас, хотя бы не пишите "как-то" через тире:)

Да, вот это круто.
Очевидно что будет работать и не ухудшает соединение!
Спасибо:) Держите приглашение на случай если решите статьи писать:)

Хех:)
Ок, жду статьи:)

  1. Клиент симулирует и врагов? Т.е. наивная экстрополяция? Мы ведь не знаем ввода других игроков:)
  2. Мы же говорим про дельта-компрессию. т.е. если у вас есть S5 и дошла delta(S6,S7), вы не можете восстановить S7, т.к. у вас нет delta(S5,S6). Или под дельта-компрессией вы подразумеваете что-то другое?
него заново накатываются инпуты

Нет-нет.
1) мир откатывается
2) проверяем, попал ли игрок во врага
3) мир возвращается в исходное состояние
4) попадание применяется (если оно было)


Мы много всяких прототипов писали, даже со сложными временными взаимодействиями, но никогда не надо было переприменять ввод на сервере.

Да, ввод понятно что дублируете:)
Т.е. если я правильно понял, при потере 1 пакета состояния мира, вы не можете применить состояние на клиенте в течение еще 1 RTT?


т.к. клиент должен отправить на сервер nack, и только после этого сервер перепошлет потеряный пакет?

Да, это мне все понятно. Непонятно только как системы отличают локального игрока и не локального:)


В общем ок, жду следующей статьи.

Ок, понятно.
Мы примерно из тех же соображений слили воедино сериализацию и дупликацию объектов:) Правда интерполяция у нас немного в стороне.

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

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


А так да, много раз в секунду отправляется все состояние мира.

Забавно кстати что вы это решили включить в ECS:)
Кажется что интерполяция, сериализация и ECS — три разные вещи, а у вас они вместе лежат.


Кстати, у меня вот какой вопрос:
Своего игрока, как известно, надо экстрополировать (ну т.е. client-side prediction).
А вражеских игроков надо интерполировать.


Как у вас это разделение реализовано в концепции систем?


А еще: при выстреле вы наверняка используете Lag Compensation. Для этого надо откатывать во времени назад всех, кроме стрелка. Так что тут аналогичный вопрос. Или вы откатываете только физику, а поля компонент оставляете теми же?


P.S. если кто-то не понимает о чем я тут говорю, тут можно прочитать.

Скажите пожалуйста, а как вы применяете команды (пользовательский ввод) в системах?


Удобно ли пользоваться подходом "все есть компонент" и в случае с "событием" Dead? Или все же есть ощущение что не хватает более callback ориентированного подхода?

Забавный факт №1: я вас не минусил.
Забавный факт №2: если вы в ветке про дискриминацию оставляете односложный комментарий, выглядещий как "The MeToo movement is an international movement against sexual harassment and assault.", не ожидайте что кто-то использует менее очевидную интерпретацию ваших слов.

Как вы тут захарраситься умудрились?

Здорово что вы делаете свой вклад в opensource.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity