1 Star 0 Fork 100

兰轩儿 / ts-gameframework

forked from 蓝色孤舟 / ts-gameframework 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

ts-gameframework

介绍

typescript写的快速使用的联机游戏框架, 入口服务器+游戏服务器集群+帧同步游戏框架

软件架构

  • 入口服务器: 提供游戏服务器列表或调度, 账号登录等功能
  • 集群服务器: 游戏服务器都会连接到管理节点
  • 游戏服务器: 游戏通讯和逻辑都走这里
  • 通讯采用 tsrpc
  • 服务端的游戏框架内置实现: Game, 支持帧同步(游戏逻辑无需放在服务端)
  • 帧同步时, 默认开启随机要求客户端同步状态给服务端的功能, 方便大大缩短 中途加入/断线重连 客户端的追帧时间

集群服务器暂时和入口服务放在一起

安装教程

暂时没提供复用性安装方式,只能源码拷贝,直接使用

设计要求

  • 状态数据分离, 如经典的ECS设计, 方便状态同步,或者帧同步中用作中间状态缓存
  • 输入操作分离: 方便接入帧同步

其实只要是联机游戏, 就需要做到上面说的设计, 只是这里为了对接本框架而提出的设计原则

启动帧同步demo

  • 用vscode打开各端项目: gate, backend, frontend
  • 配置 gatebackend 目录 gf.*.config.json 里的资源 (主要是连接的redis需要配置一下)
  • 按顺序执行各端的npm脚本: gate/dev => backend/dev
  • 浏览vue实现的例子: frontend/devVue (注意用移动端H5的方式浏览) 示例图片
  • 浏览creator3.4.1的例子 (导入后直接预览) 示例图片

帧同步游戏对接要点(具体的参考demo)

  1. 配置各端的 gf配置文件 ,redis服务器和各服务器的ip/port
  2. 设计独立的数据存储方式,如ECS
  3. 游戏服务端: 根据使用场景,实例化游戏对象 Game ,然后调用startGame() (默认开启功能:帧同步+随机要求客户端同步状态给服务端)
  4. 客户端: 主要实现:
    • AfterFrames: 追帧消息,客户端根据消息中的状态数据+后续帧,来复原游戏
    • SyncFrame: 服务端帧同步消息,默认每秒60帧(即每秒60条消息)
    • InpFrame: 客户端的输入帧消息,建议统一收集,定时发送(如30ms发送一批), 将在服务端收到的下一帧生效
    • [RequireSyncState]: [可选,默认开启] 服务端要求客户端将本帧的游戏数据收集上来,使用SyncState消息发送给服务端
    • [SyncState]: [可选,默认开启] 客户端将游戏数据状态化,发送给服务端,用于后续追帧时能从这个状态+后续帧来快速复原游戏
  5. 入口服务器实现用户登录 (参考例子ApiLoginToGame)
MIT License Copyright (c) 2022 风恒 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

typescript写的快速使用的联机游戏框架, 入口服务器+游戏服务器集群+帧同步游戏框架 展开 收起
TypeScript
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
TypeScript
1
https://gitee.com/lan-xuaner/ts-gameframework.git
git@gitee.com:lan-xuaner/ts-gameframework.git
lan-xuaner
ts-gameframework
ts-gameframework
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891