关于增加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实现思路历程
blog编写环境搭建 前言偶然可能换电脑了,需要重新搭建起编写blog的环境。 步骤 安装git,拉取blog工程。 设置git环境。 123git config --global user.name "你的GitHub用户名"git config --global user.email "你的GitHub注册邮箱"ssh-keygen -t rsa -C " 2023-09-03 notebook #notebook
关于增加skynet_fly lua服务启动的后置加载 前言skynet lua服务默认启动加载是使用skynet/lualib/loader.lua,loader.lua 会加载并执行config中配置的preload路径的lua文件,这个操作的好处是可以把所有服务的一些前置环境操作,或者一些常用工具函数写到全局变量中(我更倾向于封装成工具模块通过require引用,不去污染全局环境,尽量保持原生环境)。在skynet_fly框架中,我就利用prel 2023-08-20 skynet_fly实现思路历程 #skynet_fly实现思路历程
linux系统常用命令记录 gdb调试打开core文件gdb filename core 查看错误堆栈bt centos gcc版本升级sudo yum install centos-release-sclsudo yum install devtoolset-9-gcc*scl enable devtoolset-9 bash 如何使用systemd运行程序cd /etc/systemd/systemvim myapp.s 2023-08-12 notebook #notebook
linux不产生core原因 首先可能ulimit限制了。ulimit -a 如果core 限制大小为0,需要修改。调用命令ulimit -c unlimited 考虑产生位置问题查看 /proc/sys/kernel/core_pattern文件内容。如果文件内容不是core,通知命令sudo bash -c "echo core > /proc/sys/kernel/core_pattern" 2023-07-28 record #record