Сетевая библиотека для простой игры

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

Сетевая библиотека для простой игры

Сообщение nix » 20.10.2018 12:06:58

Всем привет. Отвечал в соседней теме по поводу библиотеки enet: версия от BlackDoomer'а так и не запустилась, а порт pasENet запустился, но работает проблемно. Понять, что это: мои кривые руки или дело в самом модуле (как-никак, не официальный) - тяжело, особенно, без наличия документации и сообщества. Вроде как, библиотека не очень распространена, особенно среди русских разработчиков. Тем более, ее порт, pasENet.

А я в работе с сетью только начинаю осваиваться. Теперь к вопросу. Подскажите наиболее подходящую, на ваш взгляд, сетевую библиотеку для написания простой, но динамичной 2D-игры (то есть, не крестики-нолики и не шахматы). Пишу на Delphi, но думаю, что библиотеки, подходящие к FreePascal, подходят и к Delphi. Изучал встроенные Indy-компоненты, но они показались слишком тяжелыми, а также, не понравилось, что это именно компоненты (так как игра пишется без использования VCL). Итак, подскажите наиболее подходящую для моей цели библиотеку, которая была бы не слишком нагруженной и простой в изучении, а также, имела бы, по возможности, хотя бы, англоязычное сообщество и некоторые примеры использования.
nix
незнакомец
 
Сообщения: 7
Зарегистрирован: 14.10.2018 10:28:53

Re: Сетевая библиотека для простой игры

Сообщение Alex2013 » 20.10.2018 13:01:18

А чем "стандартный" синапс ( Synapse ) не подходит ? :roll:
Еще есть например lNet ( http://wiki.lazarus.freepascal.org/lNet )
Зы
А вообще по идее написать "очередные унылые шашки" ... Блин лучше уж "Чапаева" (кстати игру "по приколу" можно назвать "ЧИПаев" :D ) сделали . Хоть капля оригинальности была-бы! Постоянно поражаюсь "квадратно - гнездовому" мышлению современных "начинающих" программистов. Причем пример миникрафта перед глазами, что мешает то ?
Зы Зы
Кстати интересная мысль ! Можно сделать смесь "Рэндзю" и "Жизни"... То есть добавить в динамически изменяющийся "матричный стимулятор " ручное управление и правило "пяти точек" . :idea:
Зы Зы Зы
Лучше уж пиши сразу в Лазарусе (или глянь на ХайАсм ) . Современный Дльфи обладает совершенно непредсказуемым статусом, а для начинающих разницы между современными Дельфи и Лазарусом практически нет ! :idea:
Alex2013
энтузиаст
 
Сообщения: 1046
Зарегистрирован: 03.04.2013 11:59:44

Re: Сетевая библиотека для простой игры

Сообщение Ichthyander » 20.10.2018 15:13:39

Alex2013 писал(а):А чем "стандартный" синапс ( Synapse ) не подходит ? :roll:
Еще есть например lNet ( http://wiki.lazarus.freepascal.org/lNet )
Зы
А вообще по идее написать "очередные унылые шашки" ... Блин лучше уж "Чапаева" (кстати игру "по приколу" можно назвать "ЧИПаев" :D ) сделали . Хоть капля оригинальности была-бы! Постоянно поражаюсь "квадратно - гнездовому" мышлению современных "начинающих" программистов. Причем пример миникрафта перед глазами, что мешает то ?
Зы Зы
Кстати интересная мысль ! Можно сделать смесь "Рэндзю" и "Жизни"... То есть добавить в динамически изменяющийся "матричный стимулятор " ручное управление и правило "пяти точек" . :idea:
Зы Зы Зы
Лучше уж пиши сразу в Лазарусе (или глянь на ХайАсм ) . Современный Дльфи обладает совершенно непредсказуемым статусом, а для начинающих разницы между современными Дельфи и Лазарусом практически нет ! :idea:

Про "жизнь" слышал, сам в школьные годы программировал. Еще идея игры. Можно сделать онлайн стратегию на основе игры Жизнь. Игрок имеет право вносить в популяцию противника лишнюю клетку, чтобы ее уничтожить и при этом исправлять вносимые вирусные клетки в свою популяцию. Причем действуют на одном большом поле, но разного цвета клетками. (Хотя может это и есть Рендзю? :) )
nix А так можете использовать и встроенные механизмы протокола TCP или HTTP в Lazarus или тот же Synapse. Проблема ж не в протоколе, я думаю. Классы для работы с сетью дело десятое в сравнении с остальным
Аватара пользователя
Ichthyander
постоялец
 
Сообщения: 436
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Сетевая библиотека для простой игры

Сообщение nix » 20.10.2018 17:02:38

Alex2013, не понимаю, почему вы думаете, что я начинающий программист и что решил написать "очередные унылые шашки". С Delphi работаю, в общей сложности, чуть более 5 лет, и около 10 лет - в области программирования. Сейчас появился именно вопрос по работе с сетью, потому что с этим я ранее почти не сталкивался, а уж, тем более, в вопросе динамических сетевых игр разобраться довольно непросто - именно в этом я начинающий. А идея игры есть, и сама альфа-версия игры - тоже, и это далеко не шашки, а, как написал выше:

простой, но динамичной 2D-игры (то есть, не крестики-нолики и не шахматы)


Вопрос, как раз, был в том, что лучше всего подойдет для динамичной сетевой игры. Например, протокол TCP многие в этом отношении ругают, советуют использовать UDP.
nix
незнакомец
 
Сообщения: 7
Зарегистрирован: 14.10.2018 10:28:53

Re: Сетевая библиотека для простой игры

Сообщение Ichthyander » 20.10.2018 18:06:17

nix в Synapse есть поддержка UDP протокола
Аватара пользователя
Ichthyander
постоялец
 
Сообщения: 436
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Сетевая библиотека для простой игры

Сообщение nix » 20.10.2018 18:32:06

Ichthyander, спасибо, почитаю о нем.
nix
незнакомец
 
Сообщения: 7
Зарегистрирован: 14.10.2018 10:28:53

Re: Сетевая библиотека для простой игры

Сообщение Alex2013 » 20.10.2018 21:22:05

nix писал(а):Alex2013, не понимаю, почему вы думаете, что я начинающий программист и что решил написать "очередные унылые шашки". С Delphi работаю, в общей сложности, чуть более 5 лет, и около 10 лет - в области программирования. Сейчас появился именно вопрос по работе с сетью, потому что с этим я ранее почти не сталкивался, а уж, тем более, в вопросе динамических сетевых игр разобраться довольно непросто - именно в этом я начинающий. А идея игры есть, и сама альфа-версия игры - тоже, и это далеко не шашки, а, как написал выше:

простой, но динамичной 2D-игры (то есть, не крестики-нолики и не шахматы)


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


Ну извини "метод исключения" подвел (Подумал раз не крестики-нолики и не шахматы то наверное шашки ... ) :lol:
Попробую угадать "Дина-бомбер" (Dyna Blaster) в сети ? :idea:
Изображение
АААА !! Какой балдеж был когда играли в четвером не предать ... :shock:
https://youtu.be/vLFDEreWPqM

Ктсати есть реинкарнация ! :idea:
Dynablaster Revenge
https://www.youtube.com/watch?time_cont ... qXBdOSJXGo
УХ ! Даже 3д есть !
https://www.youtube.com/watch?time_cont ... Xe0aPNz39Q
Зы
Ржачь на тему ...
:arrow: https://youtu.be/3yH9pqa8F_8
Последний раз редактировалось Alex2013 24.10.2018 10:58:46, всего редактировалось 1 раз.
Alex2013
энтузиаст
 
Сообщения: 1046
Зарегистрирован: 03.04.2013 11:59:44

Re: Сетевая библиотека для простой игры

Сообщение nix » 20.10.2018 22:19:50

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

P.S.: В одно время на mail.ru были неплохие бомберы, теперь, вроде, убрали.
nix
незнакомец
 
Сообщения: 7
Зарегистрирован: 14.10.2018 10:28:53

Re: Сетевая библиотека для простой игры

Сообщение Mirage » 21.10.2018 23:02:43

Для FPC я бы lnet использовал. Довольно приятная в плане архитектуры либа. Жаль не развивается.
Synapse вроде как блокирующие сокеты использует.
Но, в любом случае, выбор и освоение сетевой либы это не самое сложное в деле создания сетевой игры. Особенно динамичной.
Тут надо будет что-то придумывать на предмет борьбы с задержками, если через интернет можно будет играть, не только в лане.
Mirage
энтузиаст
 
Сообщения: 829
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Сетевая библиотека для простой игры

Сообщение Alex2013 » 24.10.2018 11:18:11

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

Еще есть "старый добрый" IPX при желании легко транслируемый в TCP/IP (на что есть куча простых утилит ) .

Зы
Читал что в умных сетевых играх задержка маскируется подключением частичного "автопилота" для аватаров игроков ( Если проходит два-три пакета в 5 секунд для обычного прямого управления аватаром это полный крах но если есть кратковременное подключение "круиз контроля"(он же пресловутая "поддержка системы" воспетая в ранобэ/аниме ) то скорее всего игроки даже не заметят разницы (управление частично перехватывает бот ) .

Да и вообще, в любом случае, разумная "поддержка системы", может значительно снизить сетевой тафик и разгрузить управление от "лишних движений " (как сказать добавит аватару немного условно независимых от прямых действий игрока "условных рефлексов" (которые кстати можно будет настраивать и "прокачивать" ) )
Alex2013
энтузиаст
 
Сообщения: 1046
Зарегистрирован: 03.04.2013 11:59:44

Re: Сетевая библиотека для простой игры

Сообщение nix » 24.10.2018 12:31:43

Alex2013, речь об интерполяции/экстраполяции и лагокомпенсации или это что-то другое? Если другое, то буду благодарен за ссылку, где можно почитать об этом.
nix
незнакомец
 
Сообщения: 7
Зарегистрирован: 14.10.2018 10:28:53

Re: Сетевая библиотека для простой игры

Сообщение olegy123 » 25.10.2018 00:18:36

Сам TCP/IP стек операционной системы не совсем может быть адекватный.
Пример чтобы получить чистый 1Гбит/с на гигабитной сетевой карте нужно крутить параметры в операционной системе. Но даже этого может быть не достаточно - оказывается сетевые интерфейсы(железо,сетевые карты)тоже имеют свои параметры - в виде буферов, прерываний, DMA режим, нормальные драва.. даже наличие "Jumbo - пакет" повышает производительность..
На форумах по сетям об этом более обсуждают.

Нужно формировать пакеты не более 1500байт (MTU). В VPN сетях он может быть еще меньше (1450байт)..
Если более провайдер сам начнет делить и фрагментировать пакеты - а когда они дойдут до адресата и их ОС соберет - в целый большой пакет этого никто не знает.
Надо работать с UDP, размер <1450. Создать конвейерную многопоточную систему, появился UDP пакет, создается поток,в который закидывается UDP пакет и в нем идет обработка. А UDP сервер готов принять следующий пакет без задержки.
olegy123
энтузиаст
 
Сообщения: 1038
Зарегистрирован: 25.02.2016 12:10:20


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

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

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

Рейтинг@Mail.ru