2024 年度总结 前言今年是skynet_fly的第二年,但是这却是skynet_fly的第一篇年度总结,我相信这肯定不是最后一篇,第一年是因为确实没有这个规划,这个想法也是2024的最后一天才有的。想着这一年加了很多新东西,也方便使用者能快速知道这一年更新了什么,也算是对skynet_fly做一个年度回顾吧,可能会有一些遗漏,因为是临时起意,不是修改后立马写记录,只能靠记忆和查阅提交记录来汇总了。来年想着安排一个 2024-12-31 年度总结 > 2024 #年度总结
可热更匹配房间类游戏架构基础设施 客户端 rpc 协议的支持 前言一开始,对与客户端交互协议仅仅提供了name, body,包名加包体的简单打包方式,对于body大家可以自由选择任意编码解码方式(json、protobuff、sproto …)。后面觉得name少许增加了包体大小,就新增了packid,body协议码加包体的方式。这两种方式都没法让客户端rpc调用服务端,客户端在编码时只能监听服务端的各种消息,有时候非常不方便。于是就有打算新增 客户端rpc 2024-12-29 skynet_fly 文档 > 强化篇 #skynet_fly_word
全局唯一ID(guid)的生成 利用雪花算法生成全局GUID。 machine_id 机器号 可分配 8191个 time 时间支持到 21060207 14:28:15 也就是说到这个时间,这个雪花算法就用不了了 incr 同一秒支持分配 262143 分配guid M.new_guid() 函数作用域:M 对象的成员函数 描述: 分配guid 参数: 无 返回值 guid(number): 全局唯一ID 2024-12-01 skynet_fly_api #skynet_fly_api
服务录像与重放 前言对于复杂的业务逻辑,出现的bug,通过日志手段或者review代码都没法查明原因的情况下,这时候我们可以通过服务录像重放来还原整个事故现场。 实现方案skynet是多线程的,不太方便对整个进程进行录像,而对于skynet的单个服务,能保证消息是同步处理的,所以可以比较方便实现对于单个服务录像,可以同时录制多个服务。实现思路就是把所有消息记录下来,重放时读取记录,解析重放即可。其中有一些细节点, 2024-10-27 skynet_fly 文档 > 强化篇 #skynet_fly_word
代码加密 前言很多群友都有加密代码的需求。为了群友辛辛苦苦写的游戏不被人轻易白嫖,这必须得安排上。 实现方案lua加载代码通常都是用loadfile跟require,所以我们可以先把lua文件通过string.dump打成二进制格式,再通过加密算法加密,之后直接使用加密的文件去运行,通过重写loadfile的底层函数,内置解密过程,即可实现代码加密的效果。 如何使用修改解密key修改skynet_fly\s 2024-10-14 skynet_fly 文档 > 强化篇 #skynet_fly_word
sharedata.lua 共享配置数据 sharedata.lua加载配置 M.load(dir_list, mode) 函数作用域:M 对象的成员函数 描述: 以mode方式加载指定dir_list目录列表的lua配置文件 参数: - dir_list (table): 路径列表 - mode (number): 模式 访问对象 M:new(file_path, mode) 函数作用域:M 对象的成员函数 描述: 2024-09-14 skynet_fly_api #skynet_fly_api
共享配置数据 前言由于skynet每个服务都是独立的lua虚拟机,一般游戏开发又需要加载大量的配置文件,如果每个服务都加载一遍,会造成过多的内存浪费,所有skynet就提供了sharedata,sharetable共享配置数据的手段。由于两种方案各有优缺点,所以我在封装实现上让使用者可以任选其一,在make/script增加热更配置命令,方便于热更配置。 优缺点对比sharedata 优点 c内存占 2024-09-14 skynet_fly 文档 > 强化篇 #skynet_fly_word
常见问题收录 问题11234root@VirtualBox:/skynet_fly/test# sh ../binshell/make_server.sh ../: not found/make_server.sh: 3:: not found/make_server.sh: 5:../binshell/make_server.sh: 24: Syntax error: end of file unexpect 2024-08-17 skynet_fly 文档 > 入门篇 #skynet_fly_word
断点调式的支持 前言很多群友都问怎样调试skynet_fly,于是就有了对单点调式的支持,调式对于老手来说并不是那么的必要,对于新手来说确实有助于编码学习,毕竟刚学编程那会儿也比较依赖调试,后面逐渐习惯用打印日志的方式查找问题。 实现方案在vscode有部分插件说支持了对skynet的调试,我跟着他们的步骤进行操作,都没能成功调试。之后尝试能不能用lua helper插件支持的调式功能。研究之后发现lua hel 2024-08-03 skynet_fly 文档 > 强化篇 #skynet_fly_word
可热更服务,热更脚本支持 前言对于有状态的服务,利用新服务替换旧服务的方式,旧服务我们一直会维持到没有状态存在为止,当有简单逻辑bug的时候,旧服务没法立即更新,没法完美的解决问题,这时候可能就需要用到热更脚本来解决突发的一些简单逻辑bug。 限制热更脚本对比滚服更新的最大区别就是: 热更脚本是在旧的lua服务中完成 滚服更新启动新lua服务,流量切入新的lua服务 使用滚服更新的好处是,我们不需要考虑热更后对于服 2024-07-27 skynet_fly 文档 > 强化篇 #skynet_fly_word