关于增加skynet_fly orm_table_m 可热更服务 前言因为orm在多个服务持有的时候,没法保证一致性,所有需要把orm封装到独立服务中,其他服务通过rpc调用,为了使用便利性,封装了通用的orm可热更服务orm_table_m.lua和rpc调用模块orm_table_client.lua。 orm_table_m.lua转入的config需要提供一个配置项orm_plug,它是lua模块文件。需要提供init,call两个方法。 init() 2023-12-24 skynet_fly实现思路历程 #skynet_fly实现思路历程
关于增加skynet_fly orm数据关系映射 ORM简介ORM(Object-Relational Mapping,对象关系映射)是一种编程技术,用于在不同类型的系统之间转换数据。在关系数据库和面向对象编程语言之间,ORM 为数据的转换提供了一个桥梁。这种技术允许我们使用编程语言中的对象表示和操作数据库中的数据,而不必编写底层的SQL代码。 ORM 的核心优势在于抽象化和自动化数据存储的细节,使开发者可以专注于业务逻辑,而无需关心数据库操作的 2023-12-24 skynet_fly实现思路历程 #skynet_fly实现思路历程
新增可热更服务 规范统一写在module的文件夹,好处就是review代码时能比较清晰的分清那个文件是可热更服务,还是lua模块文件,还是skynet的普通服务(skynet普通服务建议都放在sevice文件夹下)。 示例1234567891011121314151617181920212223242526272829local CMD = {}function CMD.start(confi 2023-12-17 skynet_fly_api #skynet_fly_api
启动配置load_mods.lua 作用定位可热更服务的启动配置文件,用于配置可插拔的可热更服务,可以自定义启动顺序,数量,配置参数,推迟最后启动。 示例参考AB_question 1234567891011121314return { A_m = { launch_seq = 1, launch_num = 1, }, B_m = { launch_seq = 2, 2023-12-17 skynet_fly_api #skynet_fly_api
关于skynet_fly gate,ws_gate消息包设计 前言最近skynet_fly被群友用来写项目,并且上线了,感觉还是很欣慰的,群友用了我的房间类游戏架构,大概三周的时间,游戏就直接上线了,过程中咨询过我一些问题,其中关于协议这一块,解释的比较久,并且最后是我把我写好的中国象棋客户端上传了github,让他给客户端参考,才较快解决了前后端协议对接。所以想写这一篇来拆解一下协议封装。 协议图 skynet gate协议包skynet协议包就是上图红色 2023-12-10 skynet_fly实现思路历程 #skynet_fly实现思路历程
关于skynet_fly热更模块启动配置的调整 前言经过几个月的打磨使用,发现之前想的生成mod_config.lua热更模块配置文件用于启动的方式并不是很好。 缺点 1. 很少需要修改里面的值,当修改掉load_mods.lua,需要重新生成mod_config.lua。 2. 数组的配置重新生成也不好覆盖。 3. 有些配置想一直用load_mods.lua中的,却要手动同步改一遍mod_config.lua。 一开始 2023-12-10 skynet_fly实现思路历程 #skynet_fly实现思路历程
关于skynet_fly热更新实现细节 前言由于几个月的时间里,断断续续发现一些问题,做了很多调整,与最初的版本已经有些许差异了,于是打算重新梳理一下热更的流程实现的细节。 实现思路可以先看看这篇关于skynet_fly热更新实现 整体还是围绕容器管理员,容器客户端,可热更服务展开。 职责 容器管理员 负责启动,通知关闭,通知更新 容器客户端 负责注册访问,监听,服务切换,记录需要访问,回复是否需要访问 可热更服务 负责记录来访,检查安 2023-12-03 skynet_fly实现思路历程 #skynet_fly实现思路历程
关于增加skynet_fly 日志服务 前言最近在skynet_fly_demo中尝试用skynet_fly后台管理,想通过后台监控服务器的历史运行状况,服务实时信息,错误日志报警,等等。历史运行状况,服务实时信息这两个通过skynet的debug_console再加上我封装的集群,很方便的就做好了。之后考虑错误日志报警的问题,错误日志分为主动打印的异常日志和被动触发lua断言错误。 主动打印的异常日志 这个好解决,我封装的log模块 2023-11-19 skynet_fly实现思路历程 #skynet_fly实现思路历程
关于新增定时器的扩展 整点报时 前言对于游戏来说,经常有一些跨天整点的活动,比如英雄联盟手游的峡谷之巅每天12点到0点开放。做这种功能就需要分别在每天的12点和0点触发事件调用。 如何新增一开始想在timer.lua去新增一些新增一些方法,但是想保持timer.lua足够简单,就独立了一个文件用继承的方式来扩展。 提供功能可以像设置闹钟一样设置。 设置每分钟的哪一秒。 设置每小时几分几秒。 设置每天的几时几分几秒。 设置每周的 2023-10-22 skynet_fly实现思路历程 #skynet_fly实现思路历程
关于room_game可热更匹配房间类游戏架构的优化 前言在用这种架构模式实现中国象棋游戏的过程中,发现之前的设计有些诟病的地方。 gate和fd没必要暴露给业务层。 登录后连接大厅就行,不用强制进房间,这样能适配的业务功能更广泛,进不进房间应该由业务决定,退出房间也一样,退出不代表登出。 缺少通用的发消息接口。 消息处理函数不够优雅。 业务层缺少CMD命令注册入口。 table缺少主动访问hall大厅和alloc的接口。 优化新版本的room 2023-10-15 skynet_fly实现思路历程 #skynet_fly实现思路历程