ENet - Сетевая UDP-библиотека с гарантией доставки

Модератор: Модераторы

ENet - Сетевая UDP-библиотека с гарантией доставки

Сообщение Black Doomer » 25.02.2015 21:58:04

ENet - Reliable UDP networking library

Официальный сайт (на английском)

ENet - это сетевая библиотека, реализующая поверх UDP лёгкий и в то же время мощный протокол с ленивой гарантией доставки (т.е. пакет будет доставлен, но без использования всяких ресурсоёмких методик адаптации к условиям сети) и множеством других полезных функций. Данный протокол идеально подходит для realtime-игр, в которых скорость отсылки данных в сетевой игре важнее гарантии их доставки, однако сама она в некоторых случаях необходима - это обусловлено тем, что ENet сам изначально создавался для небезызвестной Cube. Стоит заметить, что несмотря на свою игровую направленность, этот протокол можно с не меньшим успехом использовать и в других сферах деятельности.

Так чем же так хорош ENet? Что ж, приведу краткий список:
  • Собственная система сокетов, аналогичная стандарту сокетов Беркли.
  • Возможность опциональной отправки пакетов как с гарантией доставки, так и без неё, причём в рамках одного и того же сокета.
  • Порядок пакетов соблюдается принимающей стороной вне зависимости от гарантии их доставки (т.е. если опоздал гарантированный пакет, то он будет ожидаться, в противном же случае он будет забыт и в случае прибытия просто отброшен, не тормозя таким образом приём). Однако также присутствует возможность отправлять пакеты вне последовательности без гарантии её соблюдения.
  • Возможность канальной отсылки пакетов (один канал - одна соблюдаемая последовательность) и их мультиплексирование в рамках одного и того же сокета.
  • Поддержка Windows и Unix.
  • Ну и в конце концов, эта библиотека обеспечивает действительно БЫСТРУЮ и СТАБИЛЬНУЮ сеть при грамотном её использовании, в котором она весьма проста при сохранении широты возможностей.

Более полный и подробный список можно прочитать на официальном сайте.
Там же можно ознакомиться с обучающими примерами использования.

В этой теме представлены заголовочные файлы для использования этой библиотеки в FreePascal.

В рамках создания мультиплеера в Doom 2D: Forever я транслировал заголовочные файлы ENet с Си на Delphi 7 (кому интересно, вот ссылка на них). Однако вскоре коллективом разработчиков было принято решение по возможности как можно быстрее заняться разработкой проекта с нуля на FreePascal дабы избавиться от большого количества старого, плохо поддерживаемого и местами довольно-таки кривого кода. Для этого я адаптировал заголовочные файлы для Delphi 7 под FreePascal с использованием его возможностей. И заодно решил поделиться ими с потенциально заинтересованными в этой библиотеке людьми, то есть вами. :)
Как по мне, ENet незаслуженно малоизвестен среди русскоговорящих разработчиков, поэтому я надеюсь, что так или иначе поспособствую выправлению этой несправедливости.

Что ж, желаю удачного использования!
Вот ссылка: https://github.com/cher-nov/enet-fpc
Любые отзывы и критика также приветствуются.)
Последний раз редактировалось Black Doomer 29.07.2017 22:47:43, всего редактировалось 2 раз(а).
Аватара пользователя
Black Doomer
незнакомец
 
Сообщения: 3
Зарегистрирован: 25.02.2015 14:39:13
Откуда: Vladivostok, Russia

Re: ENet - Сетевая UDP-библиотека с гарантией доставки

Сообщение Zhbr » 25.02.2015 22:55:11

Хорошая новость)
Планируется ли трасляция unix.h?
Zhbr
новенький
 
Сообщения: 44
Зарегистрирован: 31.01.2014 02:34:21

Re: ENet - Сетевая UDP-библиотека с гарантией доставки

Сообщение Black Doomer » 26.02.2015 03:25:19

Zhbr писал(а):Планируется ли трасляция unix.h?

Так ведь уже.) Я объединил транслированные win32.h и unix.h в один ENet_Platform.pas, разделив там код ifdef'ами. Потому что ввиду некоторой избыточности синтаксиса Паскаля (вообще языка, не только FPC) и особенностей его работы с модулями будет намного проще и лаконичнее в каждом использующем ENet_Platform.pas модуле в uses написать лишь

Код: Выделить всё
uses
   ..., ENet_Platform, ...;

чем нечто вроде такого:

Код: Выделить всё
uses
   ..., {$IFDEF MSWINDOWS} ENet_Win32 {$ELSE} ENet_Unix {$ENDIF}, ...;
Аватара пользователя
Black Doomer
незнакомец
 
Сообщения: 3
Зарегистрирован: 25.02.2015 14:39:13
Откуда: Vladivostok, Russia

Re: ENet - Сетевая UDP-библиотека с гарантией доставки

Сообщение Zhbr » 26.02.2015 08:45:11

Спасибо. Будем пользовать)
Zhbr
новенький
 
Сообщения: 44
Зарегистрирован: 31.01.2014 02:34:21

Re: ENet - Сетевая UDP-библиотека с гарантией доставки

Сообщение Black Doomer » 26.02.2015 09:18:26

Zhbr писал(а):Спасибо. Будем пользовать)

На здоровье.) А если и ещё покажешь кому, то вообще благодарен сильно буду.)
Аватара пользователя
Black Doomer
незнакомец
 
Сообщения: 3
Зарегистрирован: 25.02.2015 14:39:13
Откуда: Vladivostok, Russia


Вернуться в Сети

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru
cron