Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Свободные библиотеки для сетевых реалтайм-игр. Кто использовал? (2 стр)

Свободные библиотеки для сетевых реалтайм-игр. Кто использовал? (2 стр)

Страницы: 1 2 3 411 Следующая »
DampireУчастникwww12 апр. 201811:25#15
Роман Шувалов
Этого нет вообще ни в одном бесплатном движке. Возможно есть в BigWorld, но его я не ковырял. Для квейкоподобных игр нужны оптимизированные пакеты, которых нет в racknet. enet еще куда ни шло, если ты не будешь налегать на пакеты с гарантированной доставкой, они лагают ого-го. При любом раскладе придется писать историю на сервере (на интересный тебе период, 100, 200, 300мс) и интерполяцию + client side prediction для контролируемых игроком штук на клиенте. Have fun.

P.S. во всех движках, где заявлен сетевой код - обычная синхронизация и rpc. Смотрел Urho, Unity, Unreal Engine, Godot.

Правка: 12 апр. 2018 11:27

DampireУчастникwww12 апр. 201811:32#16
Роман Шувалов
> где в указанный момент времени находится (находился, будет находиться) объект
> с учётом всех задержек в передаче пакетов.
Это, кстати, нонсенс. Гугли как работает лагокомпенсация. Серверсайд предикшн - весьма бестолковая вещь и работает только в сильно инерционных играх и только в теории идеально. Fast Paced сетевой код предоставляет игроку прошлое и действует игрок в прошлом, после чего действия применяются на сервере. Если, конечно, речь идет об авторитарном сервере. Можно конечно доверять безоговорочно данным клиента, но в любом случае игрок видит прошлое с точки зрения сервера.

Вот самый лучший цикл статей, который я видел на просторах.
https://gafferongames.com/post/networked_physics_2004/

Правка: 12 апр. 2018 11:33

Роман ШуваловУчастникwww12 апр. 201812:33#17
Dampire
> писать историю на сервере (на интересный тебе период, 100, 200, 300мс) и интерполяцию
Т.е. из коробки такого нигде нет?

Короче, как я понял, сетевые библиотеки только обеспечат связь между несколькими игроками и обмен состояниями. Всё остальное (вообще всё) надо писать руками.

DampireУчастникwww12 апр. 201812:51#18
Роман Шувалов
Конечно нет. Это все специфичное для игры. Сетевые библиотеки могут дать тебе всякие плюшки типа лобби, замеры задержек, статистику доставки, order (in)dependency, гарантия доставки для маркированных сообщений, готовый формат сериализации и все такое прочее. То есть просто упростят тебе жизнь. Разумеется ценой определенных микрооптимизаций, которые ты мог бы сделать в своем протоколе. На голых сокетах (или на SDL сокетах) ты заколебешься писать эти мелочи. Или нет, если шаришь.

Например enet сам режет пакеты по размеру mtu и обеспечивает сборку в правильном порядке. Свое писать - нужно время.

Правка: 12 апр. 2018 12:54

Роман ШуваловУчастникwww12 апр. 201813:01#19
Под фразой "обеспечат связь" я всё это и имел в виду, просто неясно выразился.
foxesПостоялецwww12 апр. 201813:24#20
Sh.Tac.
> (как уже в торрентах)
Да, но я не думаю что в торренах это достаточно эффективно реализовано, что дотягивает до релтаймовых вычислений. Тем не менее мне кажется это достаточно эффективный путь, пусть даже так пока ни кто не делает.
damikПостоялецwww12 апр. 201813:29#21
возможно подойдет либа TNL из Torque3D(правда она старая). лицензия вроде была GPL version 2
The Torque Network Library was designed to overcome, as much as possible, the three fundamental limitations of network programming - high packet latency, limited bandwidth and packet loss.
там в описании есть пункт Strategies for Dealing With Latency
http://opentnl.sourceforge.net/doxydocs/fundamentals.html

Правка: 12 апр. 2018 13:30

Роман ШуваловУчастникwww12 апр. 201813:45#22
damik
> GPL version 2
Отстой.

Я так понял, RakNet обладает наибольшими возможностями, и если удастся ее без головняка прикрутить - то ей и надо пользоваться.

DampireУчастникwww12 апр. 201816:11#23
Роман Шувалов
Сомнительно, что RakNet удастся прикрутить прям уж без головняка. Особенно при условии, что ты пишешь на С.
Роман ШуваловУчастникwww12 апр. 201816:22#24
Dampire
> Особенно при условии, что ты пишешь на С.
Не понял. RakNet же на Си++. Ну, напишу обёртку, делов то. Для Bullet Physics написал же.
DampireУчастникwww12 апр. 201816:28#25
Дофига оборачивать. Пробуй, может и получится.
Роман ШуваловУчастникwww12 апр. 201816:42#26
А я только нужное возьму. И это не совсем обёртка, это будет считай собственный интерфейс, реализованный на Си++ с помощью RakNet, с хеадерами, пригодными для использования в Си.
Sh.Tac.Постоялецwww12 апр. 201818:41#27
Dampire
> enet сам режет пакеты по размеру mtu
да, только лучше нарезать самому : )
а то enet пошлет два пакета и при потере одного потеряются оба
DampireУчастникwww12 апр. 201819:09#28
Sh.Tac.
Это и называется негарантированная доставка, лол. Хочешь гарантированную - ставь флаги.
Sh.Tac.Постоялецwww12 апр. 201820:13#29
Dampire
> лол
поинт не в этом, гарантированная будет в два раза чаще пересылаться : )
только отправитель может логически разбивать на пакеты, которые имеют смысл по отдельности

З.Ы. ну т.е. это вообще сомнительная фича, особенно с учётом того, что IP-пакеты фрагментируются хардварно и так, если не лезут в MTU

Правка: 12 апр. 2018 21:01

Страницы: 1 2 3 411 Следующая »

/ Форум / Программирование игр / Сеть

2001—2018 © GameDev.ru — Разработка игр