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

OSCHINA-MIRROR/jxy918-swoole-game

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 7.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 30.06.2025 06:06 547f75c

swoole-game

  • Основан на расширении Swoole для создания игрового серверного фреймворка
  • Другая версия, основанная на фреймворке Swoft: swoft-game

1. Обзор

  • Этот фреймворк主要用于开发游戏服务器,简化游戏前后端开发,框架主要实现了前后端,封包解包,协议解析,压缩,粘包,路由等功能,代码示例为h5游戏.
  • Фреймворк достаточно прост, почти не зависит от внешних библиотек, что облегчает его чтение и использование.
  • Основные функции фреймворка реализованы, но компоненты фреймворка еще не полностью развиты, можно легко интегрировать необходимые компоненты.

2. Примеры

Игровой демонстрационный пример 1 Игровой демонстрационный пример 2 Игровой демонстрационный пример 3 Игровой демонстрационный пример 4 Инструмент для тестирования взаимодействия с клиентом

3. Особенности

  • Обертка для протоколов WebSocket, HTTP и TCP с асинхронной обработкой задач
  • Реализация бинарной упаковки и распаковки данных на стороне клиента и сервера с использованием расширения msgpack, которое сжимает данные и обрабатывает стикинг пакетов. Сервер поддерживает protobuf, есть примеры тестирования для TCP
  • Данные используют фиксированную заголовочную структуру, где первые 4 байта содержат длину пакета, следующие 2 байта — основную команду (cmd) и подкоманду (scmd), а затем идет содержимое пакета
  • Использование паттерна стратегии для декуплинга логики каждого протокола в игре
  • Определение основных команд (cmd) и подкоманд (scmd) для маршрутизации к логике обработки игровых протоколов
  • В коде есть класс JokerPoker, который представляет собой алгоритм для мини-игры, как показано на примерах 1, 2, 3 и 4
  • Код в основном реализует пример мини-игры JokerPoker с использованием фреймворка. Исходный код сервера открыт, но исходный код клиента пока не открыт. Однако предоставляется инструмент для тестирования взаимодействия с клиентом, как показано на примере 5
  • Можно легко удалить пример JokerPoker и использовать функции фреймворка для разработки собственных игровых функций

Примечание: все числовые значения в этом примере являются значениями по умолчанию и не используются для хранения. Для работы не требуется база данных, конфигурация базы данных используется только для тестирования операций с базой данных.

4. Зависимости среды

Требуется поддержка высоких версий Swoole. Среду можно скомпилировать самостоятельно. Для удобства использования можно использовать файл Dockerfile в корневом каталоге для создания среды.

  • PHP 7.1 и выше
  • Swoole 1.9 и выше
  • Msgpack
  • Protobuf (по желанию)

5. Начало работы

    1. Установка Swoft
composer install
    1. Описание каталогов:
./bin — каталог для запуска службы
./core — ядро серверного кода фреймворка
./lib — код общих библиотек
./app — код для обработки логики игровых протоколов
./conf — каталог с конфигурациями
./log — каталог с логами
./client — инструмент для тестирования взаимодействия с клиентом
    1. Перейдите в каталог bin и запустите сервер:
./game start — запуск службы
./game stop — остановка службы
./game reload — перезагрузка службы, грациозная загрузка изменений без необходимости перезапуска службы

Также можно запустить сервер с помощью командной строки PHP, но перед этим убедитесь, что все связанные процессы завершены.

php run.php
    1. Если включен HTTP-сервер, то WebSocket и HTTP запускаются одновременно. Если вы хотите запускать их отдельно, можно настроить отдельные порты для прослушивания. Пример кода для тестирования HTTP-запросов в браузере:
http://[ip]:[port]/HttpTest?aaa=bbb&ccc=ddd
    1. Если включен TCP-сервер, пример тестирования находится в каталоге client. Обратите внимание, что пример использует protobuf, поэтому его нужно установить. Также можно изменить на msgpack по своему усмотрению. Выполнение следующей команды PHP покажет результат:
php tcp_client.php
    1. Исходный код H5-клиента игры из-за ограничений компании временно недоступен, но предоставляется инструмент для тестирования взаимодействия с клиентом. Просто поместите каталог client на веб-сервер и измените конфигурацию клиента для подключения к WebSocket.

6. Контакты

  • QQ: 251413215, при добавлении в QQ укажите сообщение для проверки: swoole-game

7. Примечания

  • В корневом каталоге добавлен файл Dockerfile для создания среды выполнения (Dockerfile), можно выполнить следующую команду для создания образа php_swoole с поддержкой php-protobuf.
docker build -t php_swoole .

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/jxy918-swoole-game.git
git@api.gitlife.ru:oschina-mirror/jxy918-swoole-game.git
oschina-mirror
jxy918-swoole-game
jxy918-swoole-game
master