cocosocket
cocosocket — это базовый коммуникационный фреймворк, предназначенный для мобильных сетевых игр на основе cocos2d-x и Unity 3D. Он удовлетворяет потребности высокопроизводительной сетевой связи для мобильных игр, основанных на сокетах.
Проблемы
Одной из ключевых задач при разработке мобильной сетевой игры на основе cocos2d-x является создание стабильного и надёжного слоя сокетной коммуникации. Однако BSD socket представляет собой библиотеку функций на языке C, которая может быть сложной в использовании. Поэтому требуется создать стабильный и надёжный, но при этом достаточно простой в использовании слой коммуникации. Этот слой должен обеспечивать возможность установления соединения, чтения и записи основных типов данных (byte, short, int, long, utf8-строки), а также гибкого проектирования коммуникационных протоколов (например, разделение на фреймы и обработку пакетов). Кроме того, он должен работать в отдельном потоке от основного игрового потока и вызывать прослушиватели событий при возникновении сетевых событий (таких как установление соединения, закрытие соединения, ошибки или поступление пакетов). Возможно, потребуется синхронизация, например, если необходимо поместить полученные пакеты в очередь для обработки основным игровым потоком.
Решение
Cocosocket реализует упрощённый и элегантный API на C++, основанный на BSD socket. Помимо поддержки потоков, пулов потоков, очередей, сокетов и сокетных прослушивателей, Cocosocket предоставляет API для создания пользовательских коммуникационных протоколов. Также предлагается реализация протокола на основе lengthfield, который рекомендуется использовать. Cocosocket обеспечивает чтение и запись основных типов данных в соответствии с порядком сетевого потока (big endian).
Кроме того, Cocosocket включает поддержку механизмов блокировки, очередей и пулов потоков. Хотя эти функции не являются обязательными, они могут быть полезны для расширения функциональности.
Использование
Использование Cocosocket довольно просто. Рассмотрим следующий код:
Socket* s = new Socket();//1
SocketListerner* sl = new DefaultListerner();//2
s->SetListerner(sl); //3
s->SetProtocal(new LVProtocal());//4
s->Connect("192.168.1.100", 3333);//5
Этот код выполняет следующие действия:
О Cocosocket-server
Серверная часть представляет собой программу на Java, которая использует Netty в качестве основы. Netty — это высокопроизводительный коммуникационный фреймворк. Cocosocket-сервер скрывает сложность Netty, делая его более удобным для использования. Сравнение с Cocosocket-client может помочь понять обе стороны. Для использования Cocosocket можно начать с клиентской или серверной части, что облегчит понимание другой стороны.
О Cocosocket4unity
Эта программа предназначена для Unity 3D и имеет схожий API и функциональность с версией для C++. Она подходит для разработки сетевых игр в Unity 3D. В ней используется LitJSON, который был исправлен от проблемы с кодировкой UTF-8. Если требуется JSON-анализ, рекомендуется использовать LitJSON.
О KCP
В проекте Cocosocket4unity интегрирован KCP на C#, подходящий для разработки Moba-игр. Более подробную информацию о KCP можно найти в соответствующих источниках. KCP представляет собой алгоритм повторной передачи, независимый от базового протокола связи. Cocosocket4unity и jKCP предоставляют реализацию KCP, построенную поверх UDP и предоставляющую полный программный интерфейс. Это позволяет разработчикам легко создавать приложения для высокоскоростной передачи данных без необходимости разбираться в деталях UDP и KCP.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )