服务录像与重放 前言对于复杂的业务逻辑,出现的bug,通过日志手段或者review代码都没法查明原因的情况下,这时候我们可以通过服务录像重放来还原整个事故现场。 实现方案skynet是多线程的,我们不太方案对整个进程进行录像,对于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
远程订阅发布模式 watch_server.luasever M.publish(channel_name, …) 描述: 发布名为channel_name的事件 参数: - channel_name (string): 事件名 M.pubsyn(channel_name, …) 描述: 发布名为channel_name的同步事件 参数: - channel_name (string): 事件名 2024-06-29 skynet_fly_api #skynet_fly_api
远程sub/pub 模式 和 远程subsyn/pubsyn 模式 前言有时候,一些事件的通知目标是不确定或者增量的,此时就需要用到订阅发布模式(sub/pub),发布者只负责发布事件数据,谁关心此事件,订阅即可。 对比redisredis也支持sub/pub模式,并且有psub批量订阅支持。 skynet_fly目前只实现了sub/pub模式,后续如果发现有非常硬性需要psub也可以考虑实现一下。不过skynet_fly实现了red 2024-06-29 skynet_fly 文档 > 强化篇 #skynet_fly_word
为skynet_fly新增远程调用方式 前言目前skynet_fly的远程调用方式,是采用了封装skynet的cluster 集群方式,每个连接都会有一个服务端有一个clusteragent 接收代理,客户端有一个sender 发送代理服务。再加上我封装的cluster_server和cluster_client,这样发送端和接收端就分别存在了2个代理服务。也就是说调用一个rpc请求会经过非常多次的打包解包流程。 发送者->clu 2024-05-03 一些想法 #一些想法