Страница 1 из 1

Дельта-компрессия

СообщениеДобавлено: 14 мар 2019, 17:08
Jarico
Всем прив.

За основу брал RakNet и начиркал своё сетевое решение для Unity с блэкджеком и ш... ясно...

Но дело в том что как мне кажется в проекте на 1 сетевой объект уходит много трафика
Синтаксис:
Используется csharp
public struct ent_Data
{
     Vector3 pos;// 12 байт
     Quaternion rot;// 8 байт (если не сжимать то выходит 16 байт)
     int netId;// 4 байта (для идентификации сетевого объекта на сцене)
     Vector3 velocity;// 12 байт
}
 


Итог: 36 байт на 1 объект + идентификатор пакета (1 байт) + размер пакета (4 байта)

Делал тесты, создавал 250 сетевых объектов на сцене и трафика уходило 9000 (+-200) байт (8.8 кб/с), отправляю данные каждые 66 ms (проверял в статистике RakNet'а и через сниффер)


Вопрос: Не многовато ли трафика уходит? Это без учёта того что в игре будут происходить и другие события (чат и синхронизация времени суток к примеру) Можно ли еще сжать данные?

Re: Дельта-компрессия

СообщениеДобавлено: 14 мар 2019, 17:11
1max1
Что поделать... :(

Re: Дельта-компрессия

СообщениеДобавлено: 14 мар 2019, 17:17
Jarico
1max1 писал(а):Что поделать... :(


Подскажи :)

Re: Дельта-компрессия

СообщениеДобавлено: 14 мар 2019, 17:27
1max1
8 кб / сек это не так много) У меня домашний интернет 6000 кб / сек.
int netId; можно заменить на short netId; -2 байта xDD

Re: Дельта-компрессия

СообщениеДобавлено: 14 мар 2019, 17:38
Jarico
1max1 писал(а):int netId; можно заменить на short netId; -2 байта xDD


Точно! Спс :D

1max1 писал(а):8 кб / сек это не так много) У меня домашний интернет 6000 кб / сек.


Чем меньше объём данных тем меньше время обработки....

Re: Дельта-компрессия

СообщениеДобавлено: 14 мар 2019, 18:11
Jarico
Кому нужно будет нашёл статейку
http://www.kinematicsoup.com/news/2016/ ... acking-101

Пример сжатия с битовой упаковкой (из статьи)
https://github.com/ks-examples/BitPacking101

Сжатие Quaternion
https://gist.github.com/StagPoint/bb7ed ... ression-cs

Re: Дельта-компрессия

СообщениеДобавлено: 14 мар 2019, 19:25
lawson
Jarico писал(а):
1max1 писал(а):Что поделать... :(


Подскажи :)

не обрабатывать такое кол–во объектов.

Re: Дельта-компрессия

СообщениеДобавлено: 14 мар 2019, 20:31
seaman
Все 250 двигаются одновременно?
Отправлять только когда двигаются и раз в секунду на всякий случай для уточнения позиции.

Re: Дельта-компрессия

СообщениеДобавлено: 14 мар 2019, 21:16
Jarico
seaman писал(а):Все 250 двигаются одновременно?


Да, я отправляю данные объектов которые в движении ( bool isMove = rigidbody.velocity.sqrMagnitude > 0.15f )


seaman писал(а):Отправлять только когда двигаются и раз в секунду на всякий случай для уточнения позиции.


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

Re: Дельта-компрессия

СообщениеДобавлено: 14 мар 2019, 21:24
seaman
Я имею в виду игру. В игре 250 движущихся объектов в камере - многовато. Если это нечто типа TotalWar - имхо там не нужно знать точные позиции каждого юнита.

Re: Дельта-компрессия

СообщениеДобавлено: 14 мар 2019, 22:25
Jarico
seaman писал(а):Я имею в виду игру. В игре 250 движущихся объектов в камере - многовато.


Объекты имеют меши простых фигур (куб, сфера), и компоненты Transform и Rigidbody. Кодом добавляются компоненты (на клиенте нет коллайдеров и Rigidbody но есть меши, на сервере есть коллайдеры и Rigidbody но нет мешей)


seaman писал(а):Если это нечто типа TotalWar - имхо там не нужно знать точные позиции каждого юнита.

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

Re: Дельта-компрессия

СообщениеДобавлено: 15 мар 2019, 04:29
Dewa1s
Jarico писал(а):
1max1 писал(а):int netId; можно заменить на short netId; -2 байта xDD


Точно! Спс :D

1max1 писал(а):8 кб / сек это не так много) У меня домашний интернет 6000 кб / сек.


Чем меньше объём данных тем меньше время обработки....

чоэта? Данных-то столько же приходит, только добавляется время на распаковку этих самых данных

Re: Дельта-компрессия

СообщениеДобавлено: 15 мар 2019, 11:44
Jarico
Dewa1s писал(а):чоэта? Данных-то столько же приходит, только добавляется время на распаковку этих самых данных


Распаковка занимает меньше времени чем пересылка большого объёма данных по сети...