1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/beykery-cocosocket

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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

Этот код выполняет следующие действия:

  1. Создаёт объект Socket. 2–3. Инициализирует и устанавливает сокетный прослушиватель (SocketListerner), который обрабатывает различные события, связанные с сокетом, такие как успешное соединение (OnOpen), закрытие соединения (OnClose), получение сообщения (OnMessage), тайм-аут соединения (OnIdle) и ошибки соединения (OnError). Эти методы вызываются в отдельном от основного игрового потоке, так как сокеты работают в своём собственном потоке. DefaultListerner используется только для тестирования, и при использовании Cocosocket необходимо настроить собственный прослушиватель.
  2. Устанавливает протокол (Protocal) для разделения на фреймы. Разделение на фреймы позволяет анализировать отдельные логические единицы информации из непрерывного потока данных. Например, сервер может отправлять два фрейма данных, AB и CD, которые могут быть получены клиентом в разных порядках. В этом случае логика приложения требует, чтобы AB и CD рассматривались как отдельные фреймы, а не как отдельные фрагменты данных.
  3. Соединяется с сервером, указывая IP-адрес и порт сервера. Если соединение успешно, вызывается метод OnOpen сокетного прослушивателя. При неудачном соединении вызывается OnClose.

О 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Для мобильных игровых клиентов (cocos2d-x и unity 3D) подготовлен коммуникационный слой, включая TCP и KCP. Логика разделения на кадры использует lengthfield или varint32 или настраивается индивидуально для решения проблемы пакетирования. В части cocos2d-x реализованы thread, threadpool, синхронизация мьютекса и другие функции. Проект также вк... Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/beykery-cocosocket.git
git@api.gitlife.ru:oschina-mirror/beykery-cocosocket.git
oschina-mirror
beykery-cocosocket
beykery-cocosocket
master