启动配置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实现思路历程
对安全关服的支持 前言我们通常使用kill命令去关闭一个,在单进程序中,程序结尾一般都会有收尾的关闭动作。skynet并没有对收尾动作做太多文章,对于skynet.abort()也只是粗暴的关闭掉所有服务,清除掉所有未处理的消息。但是在实际应用开发中,我们通常需要做一个收尾处理,比如orm缓存的修改进行同步、把在线的玩家都踢出。 实现方式对于skynet,不太好依赖信号去处理,信号那需要阻塞等待所有服务都完成收尾动 2023-10-12 skynet_fly 文档 > 基础篇 #skynet_fly_word
skynet_fly热更新存在的问题 前言最近有空在用skynet_fly写中国象棋的游戏,发现了room_game房间类游戏基础架构有些许不够好的地方,就对room_game房间类游戏基础架构做了优化,具体优化有空会另外写一篇blog,这里主要记录一个我在优化的时候,突然想到的一个热更问题。 问题描述触发场景分析假如有A、B 两个服务,代码如下: A服务 1234567891011121314151617181920local 2023-10-06 一些想法 #一些想法
关于增加skynet_fly 日志分割模块 起因通过群友对skynet_fly的使用测试,发现使用系统日志分割系统会有两个问题。 软件问题 可能有些系统并不会默认装载logrotate分割软件。 权限问题 非root用户可能无法在/etc/logrotate.d/新增文件。 就此埋下了我想实现一个内置日志分割模块的决心。 项目修改 修改原来的run.sh不再启动即配置日志分割。 把使用系统日志分割变成一个可选项,增加了create_lo 2023-09-10 skynet_fly实现思路历程 #skynet_fly实现思路历程