Scut游戏引擎

编辑:葬身网互动百科 时间:2019-11-21 00:51:34
编辑 锁定
本词条缺少信息栏名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!
这是一款免费开源的游戏服务器引擎,适用于开发AVG、SLGRPG、MMOG等类型的网络游戏,同时支持Http、WebSocket和Socket协议通讯,支持Window、Mac和Linux多种平台部署,支持Redis内存数据库和Microsoft SQL、MySql数据库;服务器引擎框架基于C#编写,游戏逻辑层可以选择使用C#、Python和Lua多种脚本进行开发,支持热更新的方式部署;客户端可以使用Coscos2d、Unity3d、FlashAir与服务器引擎对接;提供了丰富的中间件,可以简单快捷的搭建您的游戏。

Scut游戏引擎概述

编辑
Scut这是一款具有自主知识产权的免费开源的游戏服务器引擎,适用于开发AVG、SLGRPG、MMOG等类型的网络游戏,同时支持Http、WebSocket和Socket协议通讯,支持Window、Mac和Linux多种平台部署,支持Redis内存数据库和MicrosoftSQL、MySql数据库;服务器引擎框架基于C#编写,游戏逻辑层可以选择使用C#、Python和Lua多种脚本进行开发,支持热更新的方式部署;客户端可以使用Coscos2d、Unity3d、FlashAir与服务器引擎对接;提供了丰富的中间件,可以简单快捷的搭建您的游戏。

Scut游戏引擎引擎特点

编辑
多协议:支持Http/WebSocket/Socket
  脚本化:支持C#/Python/Lua脚本开发
  多平台:Windows/Linux平台
  多数据库:MSSQL、Mysql及NoSql
  服务器框架层次结构

Scut游戏引擎层次结构

主要包括:通讯协议层,Action动作层,中间件层,数据缓存层,数据实体层,数据持久层。层次关系如下:

  Scut框架[1] 
Scut框架 Scut框架

  通讯协议层
  服务器支持同时提供Http、WebSocket和Socket两种通讯接入方式;使用二进制的通讯协议,通过“协议生成器”工具设计客户端与服务器的通讯协议Action接口,它将生成客户端与服务器两端的接口通讯代码,减少通讯协议联调时间;另外也支持自定义的通讯协议,需要实现IActionDispatcher接口。
  Action动作层
  它属于业务逻辑层模块,需要开发者实现,你可以选择喜欢的(C#、Python和Lua)脚本语言开发,需要为每种请求行为设计相应的Action响应数据,客户端获得数据有两种方式,一种由客户端主动请求获得响应数据,或者由服务器主动推送相应的Action响应数据。
  Action层使用脚本的优先级为:Python脚本->Lua脚本->C#脚本
  中间件层
  提供的游戏模块中间件可以方便快速构建应用,特别对繁琐的渠道登录和充值的SDK模块接入进入封装,简单的配置即可完成接入,参考《中间件使用文档》。
  数据缓存层
  缓存的基本元素是数据实体对象,分为ShareEntity、BaseEntity和LogEntity子类。
  缓存的类型分为共享全局的和私有的两种,共享的缓存如果在内存中不存在时,它会从数据库中加载所有的数据到内存中;而私有类型的只会根据相应的Key加载部分数据到内存中;因此玩家特有的数据(如:背包,任务,副本)定义成私有的,像排行榜类型的定义成共享的。
  为了提高服务器的响应速度,我们会将需要处理的实体数据放到缓存中,减少从数据库取数据的次数,同时缓存中的实体数据被改变后,引擎以异步的方式(100ms延迟时间)将数据同步到数据库中;当缓存中的数据在24小时内(可配置)未被使用时,缓存将会过期,引擎会自动将过期的缓存回收,降低内存使用。
  数据实体层
  数据实体是缓存存储的基本元素,通过对它进行序列化方式持久化存储(目前只支持C#脚本定义,实体类中不能有业务逻辑处理),并且定义有数据库表结构信息,通过表结构信息可以自动创建表、列,也及生成更新sql语句等功能,开发人员不必关注数据库结构设计,需要定义自己的数据实体类及属性(类名对应数据库的表名,属性对应字段)。
  数据持久层
  游戏数据持久化是最重要、最复杂、也是最容易出错的部分,框架封装了对数据库数据的读取、更新、删除和表的创建维护等管理;我们支持Redis、MSSQL、Mysql等多种数据库的方式持久化。

Scut游戏引擎服务器架构

包括:用户中心服务器,分服中心服务器,游戏私服服务器,Redis服务器,数据库服务器。服务器的拓扑结构图:

  Scut服务器架构
Scut服务器架构 Scut服务器架构

  用户中心服务器
  用户中心负责用户注册,登录验证等服务。
  分服中心服务器
  分服中心管理多个游戏私服的状态、名称、通讯地址等信息,提供获取私服列表及私服状态查询服务。
  游戏私服服务器
  游戏私服提供具体的游戏业务逻辑服务,支持同时多人在线;一个私服对应一个Redis服务顺和一个数据库服务器。
  Redis服务器
  Redis服务器主要负责存储玩家游戏数据信息,游戏私服重启后玩家的数据不会丢失。
  数据库服务器
  数据库提供游戏配置数据信息,玩家操作日志信息,或者提供报表分析数据。

Scut游戏引擎稳定与性能

程序稳定
  游戏服超过1000小时无须进行任何维护;数据自动同步,减少因开发者技能问题造成数据丢失。
  内存占用
  玩家不在线,在指定时间(24H)内将数据从Cache中移除,释放内存使用。
  CPU占用
  16核服务器,部署20个游服平均CPU低于10%,峰值低于30%。
  压力在2500个玩家并发,响应时间平均20ms。(注:取2500并发是单服在线人以2k-3k上限,超出以扩新服的方式,需要高并发量考虑使用分布的架构)

  
参考资料
词条标签:
科技