同步操作将从 zum/ts-gameframework 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
服务端自行部署
+ 游戏客户端对接 tsgf-sdk
MGOBE
)# 切换到 servers 目录下
cd ./servers
# 安装依赖包 + 启动服务器
npm install & npm run dev
(端口:7100,7101,7102,7801,7901 如果被占用将导致启动失败!)
src/ServerConfig.ts
node dist/index.js -tsgfConfigFile="相对入口文件的其他位置"
./servers/
目录下执行 npm run build
,然后复制出下列目录和文件:
dist/
node_modules/ (不用此目录,则需要执行 npm i 下载)
package.json
tsgf.server.config.json (配置参考 `src/ServerConfig.ts`)
pm2
部署为系统服务wss://game.a.com/?srv=n1&port=p
(game.a.com
为 nginx 服务器地址),nginx是支持根据url参数定义代理规则,实际地址是:ws://n1.game.a.com:p/
,然后 n1.game.a.com
解析为内网IP, 指向游戏服务器tsgf-sdk 核心客户端SDK包,还需要根据客户端所属平台引用对应的实现包:
tsgf-sdk-miniapp 只有客户端是小程序时引用
tsgf-sdk-browser 其他客户端都引用本包(含浏览器、原生)
tsgf-dev-demo-client demoServer 的客户端封装
应用 一个开发者可以有多个应用,一般一个应用对应一个游戏。目前统一使用 default 应用标识
应用web服务器 为开发者自己实现用户体系的站点,用于将开发者的用户体系对接到 TSGF 的玩家体系
大厅服务器 为 HTTP 服务,可使用常规 web 集群方案进行部署,提供如玩家认证、创建房间、查询房间、匹配操作、分配游戏服务器等功能
游戏集群管理服务 为 websocket 服务,用来管理游戏服务器
的服务,只能部署一个实例
游戏服务器 为 websocket 服务,可以部署多台(横向拓展),部署实例的数量随着在线玩家数量增加而增加。需要能连接到游戏集群管理服务
,但实例之间并不进行通讯
匹配集群管理服务 为 websocket 服务,用来管理匹配服务器
的服务,只能部署一个实例
匹配服务器 为 websocket 服务,可以部署多台(横向拓展),部署实例的数量随着应用增加而增加(单应用场景,只需要部署一个实例即可)。需要能连接到匹配集群管理服务
,但实例之间并不进行通讯。
使用 TSRPC 作为通讯框架
并用 TSRPC
框架自带的代码生成/同步模块,导致 client
目录名以及相对路径的固定(乱改可能会导致出错)
匹配器
src/shared/tsgfServer/match/
src/shared/tsgfServer/match/IMatcher.ts
(可参考同目录下的 MatcherBaseMelee.ts
)src/shared/matchServer/BaseMatchServer.ts->onAssignTask
,加入本匹配器类的实例demoServer
服务。负责将应用自己的用户体系对接到 TSGF
的玩家体系应用的用户登录后,在应用的web服务器上请求 TSGF
大厅的服务端认证接口,获得玩家认证信息(playerId/playerToken等)
可参考 src/demoServer/api/ApiPlayerAuth.ts
由应用将玩家认证信息返回到客户端,用于客户端的所有需要认证的api
ICreateRoomPara.isPrivate
决定当前房间人不满时是否允许参与匹配(需配置 ICreateRoomPara.matcherKey)
matcherKey
:匹配器标识定义,不同匹配器的匹配请求之间不会互通。(内置匹配器标识 MatcherKeys
)matcherParams
:匹配器参数,根据不同的匹配器使用对应的类(请看 MatcherKeys
的注释)resultsContinueRoomJoinUsMatch
控制匹配成功是创建一个新房间时, 如果人未满,是否允许继续匹配满输入操作分离:与“我”无关的逻辑实现
其实只要是帧同步游戏,就需要做到上面说的设计
TSRPC 作为本框架的通讯层使用
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。