All Projects → jxy918 → Swoft Game

jxy918 / Swoft Game

Licence: apache-2.0
基于swoft框架开游戏服务器框架

Programming Languages

js
455 projects

Labels

Projects that are alternatives of or similar to Swoft Game

Saber
⚔️ Saber, PHP异步协程HTTP客户端 | PHP Coroutine HTTP client - Swoole Humanization Library
Stars: ✭ 866 (+792.78%)
Mutual labels:  swoole
Swpdo
Swoole Coroutine SQL component like PDO | 0成本迁移PDO到Swoole高性能协程客户端
Stars: ✭ 64 (-34.02%)
Mutual labels:  swoole
Ycsocket
基于swoole的socket框架,支持协程版MySQL、Redis连接池,已用于大型RPG游戏服务端
Stars: ✭ 77 (-20.62%)
Mutual labels:  swoole
Socket Io
基于Hyperf微服务协程框架开发的sokcet-io分布式系统
Stars: ✭ 38 (-60.82%)
Mutual labels:  swoole
Swoole Ide Helper
Auto completion, trigger suggest and view docs for Swoole in editor.
Stars: ✭ 1,116 (+1050.52%)
Mutual labels:  swoole
Swoft Framework
[READ ONLY] Swoft Framework, base of Swoft
Stars: ✭ 70 (-27.84%)
Mutual labels:  swoole
Swoft Db
[READ ONLY] Database Compoment for Swoft
Stars: ✭ 25 (-74.23%)
Mutual labels:  swoole
Yii2 Swoole
full solutions making yii2-framework run on swoole with coroutine.
Stars: ✭ 86 (-11.34%)
Mutual labels:  swoole
Mqcms
🤖 ⚡️ 麻雀虽小 五脏俱全 基于hyperf的快速优雅的应用开发框架
Stars: ✭ 64 (-34.02%)
Mutual labels:  swoole
Slim Swoole
Convenient library to run SlimPHP applications with Swoole
Stars: ✭ 75 (-22.68%)
Mutual labels:  swoole
Swoole Performance Tests
Performance tests of swoole against other PHP application server setups
Stars: ✭ 40 (-58.76%)
Mutual labels:  swoole
Siler
⚡ Flat-files and plain-old PHP functions rockin'on as a set of general purpose high-level abstractions.
Stars: ✭ 1,056 (+988.66%)
Mutual labels:  swoole
Mqtt
🕹 MQTT Protocol Analysis and Coroutine Client for PHP. Support for 3.1, 3.1.1 and 5.0 versions of the MQTT protocol.
Stars: ✭ 72 (-25.77%)
Mutual labels:  swoole
Framework
The Lawoole framework
Stars: ✭ 33 (-65.98%)
Mutual labels:  swoole
Mix Phar Skeleton
Phar command line program development skeleton
Stars: ✭ 81 (-16.49%)
Mutual labels:  swoole
Blink
A high performance web framework and application server in PHP.
Stars: ✭ 837 (+762.89%)
Mutual labels:  swoole
Phpspidermagnetbittorrent
php实现p2p中DHT网络爬虫,并提供搜索下载
Stars: ✭ 64 (-34.02%)
Mutual labels:  swoole
Swoole Source Analysis
swoole source reading 源码分析
Stars: ✭ 88 (-9.28%)
Mutual labels:  swoole
Php Arrays In Memory Comparison
How to store 11kk items in memory? Comparison of methods: array vs object vs SplFixedArray vs pack vs swoole_table vs swoole_pack vs redis vs memsql vs node.js arrays in php7
Stars: ✭ 83 (-14.43%)
Mutual labels:  swoole
Php Coroutine Engine
This project for php-fpm support coroutine
Stars: ✭ 74 (-23.71%)
Mutual labels:  swoole

swoft-game

  • 基于swoft2.0框架开发游戏服务器框架(把自己写的游戏框架swoole-game,移植到swoft框架上,可以使用swoft2.0框架的丰富组件功能)

  • 自己写的框架源码github:swoole-game

  • 自己写的框架使用github:swoole-game-framework

  • 基于swoft1.x版本实现swoft-game请查看分支github:swoft-game

  • 想关注更多游戏开发可以关注swoft-ddz斗地主:swoft-ddz

  • 想关注更多游戏开发可以关注hyperf-ddz斗地主:hyperf-ddz

一,概述

  • 该框架是基于swoft2.0框架开发的游戏框架,主要用于开发游戏服务器,简化游戏前后端开发,框架主要实现了前后端,封包解包,协议解析,压缩,粘包,路由等功能,代码示例为h5游戏。
  • 框架比较简单, 把游戏框架里一些逻辑到swoft框架上。
  • 学习之前请先了解swoft2.0框架。

二,示例图

游戏demo1 游戏demo2 游戏demo3 游戏demo4 客户端交互测试工具

三,特性

  • 实现前后端二进制封包解包,采用的是msgpack扩展,msgpack对数据进行了压缩,并实现粘包处理
  • 数据采用固定包头,包头4个字节存包体长度,包体前2个字节分别为cmd(主命令字),scmd(子命令字),后面为包体内容
  • 采用策略模式解耦游戏中的每个协议逻辑
  • 实现定义游戏开发cmd(主命令字)和scmd(子命令字)定义,cmd和scmd主要用来路由到游戏协议逻辑处理
  • 代码里有个JokerPoker类是一个款小游戏算法类,是一个示例,如示例图1,2,3,4
  • 代码主要是用框架实现小游戏JokerPoker例子,服务端代码开源,客户端代码暂不开源,但是提供客户端交互测试工具,见示例图5。
  • 可以方便的把JokerPoker范例去除,只使用框架功能定制开发开发自己的游戏功能

四,环境依赖

依赖swoft环境,请安装php扩展msgpack

  • php vesion > 7.0
  • swoole version > 4.4.1
  • msgpack
  • swoft vesion > 2.0

五,开始使用

  • 1,安装
composer install
  • 2,目录说明(swoft目录不具体说明):
./app/Http/Controller/GameController.php		游戏http控制器逻辑
./app/WebSocket/Game		    是这个整体游戏服务器逻辑
./app/WebSocket/Game/Conf	    逻辑配置目录, 比如:命令字, 子名字, 路由转发
./app/WebSocket/Game/Core		游戏路由转发,算法,解包核心类
./app/WebSocket/Game/Login		游戏路由转发逻辑协议包处理目录
./public/client				    测试工具view的资源文件
./resources/views/game		    测试工具view
./app/Common/TcpReceiveListener.php	  重新覆盖tcp服务器路由到游戏处理逻辑

  • 3,进入根目录目录,启动服务器(swoft启动websocket启动法) :
// 启动服务,根据
php bin/swoft ws:start

// 守护进程启动,覆盖 
php bin/swoft ws:start -d

// 重启
php bin/swoft ws:restart

// 重新加载
php bin/swoft ws:reload

// 关闭服务
php bin/swoft ws:stop

  • 4,访问url:
//测试工具访问入口
http://[ip]:[port]/test

//广播消息测试, 可以通过次url给websocket广播消息, msg就是消息内容                       
http://[ip]:[port]/broadcast?msg=%E4%BD%A0%E5%A6%B9%E7%9A%84

  • 5 ,H5游戏客户端代码由于公司限制,暂不开放, 但是提供了一个客户端交互测试工具,直接把client目录放入web服务器, 修改客服端配置文件配置websocket链接就能运行。

六,联系方式

  • qq:251413215,加qq请输入验证消息:swoft-game qq群:100754069

七,备注

  • 可以使用根目录增加docker运行环境(Dockerfile), 可以直接执行下面的命令,创建镜像php_swoole, 环境增加php-protobuf,php-msgpack支持。
docker build -t php_swoole .

  • 注意如果程序不能自动加载,请去除环境中opcache扩展。
  • 服务器增加支持TCP服务器,服务器启动就会监控TCP游戏服务器, 可以通过/test/tcp_client.php测试。
php ./test/tcp_client

  • 请使用根目录下的Dockerfile可以直接跑, 如果使用swoft的Dockerfile需要自行安装msgpack扩展,
  • swoft框架

八,增加录像直播功能, 此功能只是测试

  • 1, 视频录制url,如果电脑没有摄像头, 请用手机测试录制视频:
http://[ip]:[port]/camera
  • 2,浏览器上播放视频url如下:
http://[ip]:[port]/show
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].