7*12小时客服 3375330638
首页 YouYouFramework&YouYouServer 购买课程 关于悠游
课程下载 交流群:606498324
YouYouFramework+YouYouServer轻量级框架介绍
通用工具 标签:表格工具 协议工具 【表格工具:youyou_ExcelFlatbufTool】 【协议工具:youyou_ProtobufTool】
YouYouEditor 标签:悠游编辑器 全局参数管理 宏定义 资源打包 对象池统计
YouYouFramework 标签:YouYouFramework 包含游戏入口、全局参数、表格管理、声音管理、下载管理、事件管理、状态机、Http管理、 Socket通讯管理、对象池管理、流程管理、可寻址资源管理、场景管理、计时器、UI框架, Lua框架、多语言、日志管理等多种通用模块
YouYouServer 标签:YouYouServer 分布式服务器 MongoDB管理、Redis管理器、分布式服务器框架

youyou_ExcelFlatbufTool

基于Flatbuffers
原始表格为xls,xlsx格式 支持公式等表格功能

可以生成客户端c#代码、lua代码、服务器端代码
表格存储采用flatbuffers二进制格式存储并压缩

客户端在预加载流程中进行表格数据反序列化
客户端的lua表格数据直接生成在lua代码中

支持数组字段定义


支持系统表生成,如Sys_Code(系统码),Sys_Effect(特效)

目的:避免在项目中编码硬代码,方便查找

youyou_ProtobufTool

基于Protobuf3

根据协议定义生成客户端 ProtoIdDefine(消息编号定义)
生成客户端c#版 协议监听

生成客户端Lua版 ProtoIdDefine(消息编号定义)
生成客户端Lua版 协议监听

生成服务器端协议编号


YouYou编辑器

框架介绍

宏定义

等级参数管理

资源包设置

对象池分析

宏设置

常用的编辑器开关 都在这里管理,能够方便进行全局设置

参数设置

项目启动会有个设备等级参数(高 中 低 配机)

各个管理器的参数可在这里根据不同等级配置成不同参数值

如Http失败重试次数,不同等级设备可以配置不同

资源包设置和打包

资源包版本号手动管理

资源包按文件夹划分大类,并可以设置把文件夹打成一个整体资源包,还是文件夹内容打散打包

如表格 Lua脚本 图集等可以打成一个包,角色、场景、特效等可以打散打包

文件夹可以设置是否初始资源,是否加密

打包时候自动生成依赖文件,按文件生成依赖关系,比如一个预设依赖材质 贴图,一个二进制格式,游戏启动后加载,一个Json文件,方便开发阶段查看依赖关系

自动生成资源包版本文件,一个二进制格式,一个Json文件

打包后自动生成到【对应版本号/平台】文件夹内

对象池分析

包含类对象池

AssetBundlePool

AssetPool

方便查看各个池中的资源,每个资源的计数和剩余释放时间

游戏入口

客户端框架只有一个继承自MonoBehaviour的类 游戏入口

可设置当前设备等级(非编辑器模式根据设备信息识别)

初始化全局等级参数,各个管理器通过key获取等级参数值

需要拖拽到监视面板的组件,都在这里设置,如游戏物体实例池分组设置,UI实例分组设置等

全局参数

根据KEY和设备等级,可获取等级参数

如下载管理器 可以在初始化时候 获取配置好的下载器数量

下载器数量: DownloadRoutineCount = GameEntry.ParamsSettings.GetGradeParamData(ConstDefine.Download_RoutineCount, GameEntry.CurrDeviceGrade);

重试次数:Retry = GameEntry.ParamsSettings.GetGradeParamData(ConstDefine.Download_Retry, GameEntry.CurrDeviceGrade);

事件管理

SocketEvent(派发Socket消息包)

CommonEvent
派发系统事件
派发通用事件

事件编号通过表格控制 同时生成c#和 Lua事件编号代码
对于没有参数的事件 直接派发
对于单参数的事件,使用类对象池获取如VarInt类对象传参 避免实例化对象 避免拆箱装箱
对于多参数的事件,可以使用BaseParams或自定义类型传递

流程管理

流程管理器通过状态机管理创建流程状态机
包含:
启动流程
检查更新流程
预加载流程
登录流程

表格管理

C#中在预加载流程,通过flatbuffers进行每个表格的反序列化,反序列化采用异步方式进行,所需表格并行加载,提升加载速度

在预加载流程中通过加载完毕的表格数量判断出表格是否全部加载完毕,然后执行后续流程

单一表格加载完毕和所有表格加载完毕都会派发系统事件

Http管理

通过Http管理器发送Web请求,管理器从类对象池获取Http访问器进行Web请求

Http管理器在初始化时获取 【失败重试次数】【失败重试间隔(秒)】

参数回调在进行Web请求时候直接传入

Socket通讯管理

创建Socket访问器

可以把小包合并大包发送 较少网卡通讯
消息包可配置压缩
消息包默认使用异或加密

下载管理

下载管理器在初始化时获取【下载重试次数】【重试间隔(秒)】【下载器数量】

可以进行单文件下载和多文件下载(检查版本更新使用的就是多文件下载)

下载中和下载完毕回调用过下载方法直接传入

对象池管理

类对象池

AssetBundlePool

AssetPool

GameObjectPool

UIPool

可寻址资源管理

在预加载流程中读取分类资源信息和资源包信息
检查版本更新时只检查初始资源,和本地资源信息对比进行下载
可寻址资源管理可以进行边玩边下载,所以游戏发行时候不需要发布完整包

加载某个资源时候会先加载这个资源的依赖资源,然后加载自己
加载资源时候先检查只读区对比资源包版本号,如果只读区不存在从可写区读取

当加载资源时候如果资源在只读区和可写区都不存在则从CDN下载,下载完毕后加载

场景管理

场景可以进行分级切割(低配机可以只加载必须加载的场景)

场景数据在场景表和场景明细表中进行配置

场景加载使用异步累加加载

定时器

定时器管理器用来注册和移除定时器

定时器可以进行延迟启动、暂停、恢复

定时器回调【启动】【更新】【结束】直接在初始化时传入

UI框架

UI框架支持普通UI、反切UI(把UI存放在栈,只显示栈顶UI)

UI预设在Sys_UIForm配置,单个UI可配置单实例、多实例,可配置【UI分组】、【是否锁定】、【禁用层级管理】、【多语言】

UI默认有4个回调:【OnInit】【OnOpen】【OnClose】【OnBeforDestroy】

UI实例池可配置【最大数量】【释放间隔】【UI实例生命期】

UI回池后不是设置为禁用,而是把UI设置到不可见层级,防止SetActive卡顿

Lua框架

预加载流程中启动Lua框架
通过Lua管理器初始化表格,初始化PB协议,监听通讯回调

针对Lua版本的UI,可添加UI组件分组,使用分组可以对UI上不同模块组件分类,方便管理

在分组内添加UI元素并指定类型

Lua读取表格数据

表格数据可根据配置文件配置成直接从Lua实体文件读取

如果是Lua中偶尔用,c#中常用,并且数据量很大的表,Lua可以配置成直接读取C#数据,避免表格数据重复加载,但是这种方式会增加Lua和C#通讯,根据情况灵活使用

Lua通讯协议

Lua框架启动时候定义全局PB管理器进行加载协议文件,序列化反序列化协议数据

初始化协议时候,会初始化客户端相关的PB协议文件

协议文件以.bytes格式存储,和xlua代码放在同一个文件夹内,打成一个资源包

Lua和CSharp共享内存数据

为了减少Lua和CSharp交互,而又能满足Lua和CSharp共享内存数据,直接将数据存储到Lua分配的数组内

将Lua底层的内存结构直接暴露给C#

C#绕过LuaAPI直接以unsafe的方式直接读写Lua的内存

获得近乎原生的读写性能同时又节省内存


共享内存编辑器

通过共享内存数据编辑器,可扩展不同模块的共享内存数据,设置数据的字段类型、字段名称、描述信息

可生成对应的Lua和C#脚本,Lua中会自动生成GetSet方法,C#中会生成对应属性访问Lua内存

多语言

在Sys_Localization表格中配置多语言数据

表格工具生成数据时候自动切割表格生成不同语言二进制数据文件

为减少继承自Mono的脚本,扩展了YouYouText和YouYouImage(其他组件有需要自行扩展),可直接右键创建,也可以把现有Text直接转换成YouYouText!

通过代码给文本赋值,直接调用多语言管理器获取内容

声音管理

基于FMOD的声音管理器
声音数据通过表格配置

支持给声音事件传递参数,实现诸如:赛车游戏速度不同,发动机声音不同

包含背景音乐和音效

日志跟踪

可以根据功能模块的对日志进行分类

通过宏设置可以单独控制每个分类的日志开启,方便调试

不同种类日志按颜色区分,方便观看

日志管理

Reporter
通过宏设置开启日志调试模式

文本日志每次项目启动带Start标记,方便对每次游戏周期进行查找

可设置日志缓存数量
单文件最大存储数量

YouYouServer框架介绍

基于.Net Core跨平台的分布式服务器框架

数据库采用MongoDB

共享缓存采用Redis

使用.Net Code的优势:支持异步方法Async,对于数据存取、操作缓存、处理客户端发送的消息等耗时操作,全部使用异步方法,提升框架性能

DB和Redis

账号数据库单独存放

考虑到多个区服租用同一个云DB服务,所以每个服的DB名字带区服编号

Redis和区服相关的KEY,一样带区服编号

DB操作

所有的数据实体继承自YFMongoEntityBase,包含编号,状态,时间基本属性

数据管理继承自YFMongoDBModelBase,基类上已经实现了增删改查等常用同步和异步方法

共享缓存

昵称查重通过Redis集合验证

不同节点服务器通过Redis KEY获取共享数据

获取数据的时候通过YFRedisHelper缓存壳获取数据

缓存壳:先去Redis查,如果查不到去MongoDB查询,然后写入Redis

HotFix

服务器端通过Assembly.LoadFile 加载可热更新程序集

处理客户端消息 操作缓存 DB等逻辑代码,全部写在YouYouServer.HotFix程序集

服务器通过特定指令重新加载程序集,加载接口实例,实现玩家不下线,修正服务器代码

系列课程
悠游课堂实战课程 原价¥2988 现价¥2700
悠游课堂高级课程 免费下载观看
悠游课堂中级课程 免费下载观看
悠游课堂初级课程 免费下载观看
《悠游课堂Unity游戏开发视频课程》 为悠游课堂工作室独立制作发行,任何个人或单位未经许可禁止转载和翻录售卖,违者必纠 承担对应法律责任 解释权归悠游课堂所有
Copyright 悠游课堂 All Rights Reserved.Theme by U3dOL 备案:京ICP备14040629号-4 |
邮箱:mxwin#126.com 技术支持QQ:667683