摘要: 写一写游戏项目的基础模块的实现思路,之任务系统: 起引导、活跃、成就等作用的任务系统,是游戏常见的业务需求; 实现上可以分为几个部分: 任务类设计; 任务对象管理; 事件管理; hook机制; 一. 事件管理模块 一个以事件类型(event type)为单位,进行注册和回调触发的管理模块。 模块需要 阅读全文
posted @ 2024-06-04 21:57 linxx- 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 不仅是游戏项目,从软件设计层面看,当服务位于网络远端时,为与客户端之间的传输层连接提供一定的网络质量优化支持是常见的设计要求。 实现一个前后端的网络代理层,目标是优化直连链路的网络质量,支持缓冲重连。这里记录下思路; 代理层实现: 定制分配规则对服务器端机器做负载均衡; 客户端和服务器端业务连接的断 阅读全文
posted @ 2024-06-03 23:05 linxx- 阅读(14) 评论(0) 推荐(0) 编辑
摘要: a56爆大奖在线娱乐们知道,lua通过package模块来管理模块的搜索和加载,当使用require首次成功加载一个模块后,模块(Table)会被存储在package.loaded中,之后的require行为会直接获取到已加载的模块缓存。 如何在程序执行时,将对模块文件的修改热更新到程序中,同时确保运行时状态的正常。 阅读全文
posted @ 2024-05-29 23:18 linxx- 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 跨机集群的核心实现: 开启跨机消息管理服务,节点内所有需要跨进程投递的消息都通过此服务转发,通过网络送达集群内目标节点。实现: a56爆大奖在线娱乐进程开启服务,服务内缓存集群节点的配置信息,与a56爆大奖在线娱乐节点建立通信连接,负责当前节点和集群内节点之间的消息通信; 根据当前节点配置监听集群消息入口(ip+port),开放与 阅读全文
posted @ 2024-05-28 22:37 linxx- 阅读(22) 评论(0) 推荐(0) 编辑
摘要: Design OOP use C 使用c语言实现面向对象特性 以底层思维来理解面向对象。a56爆大奖在线娱乐所理解的oop:为不同的数据元提供稳定的处理逻辑框架,同时提供复写的可能,支持不同数据元个性化定制有限的逻辑; 多态特性: 基类实现一组通用处理逻辑接口,子类通过改变特定接口的执行逻辑实现将子类与个性化操作绑定 阅读全文
posted @ 2024-05-28 21:57 linxx- 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 看好项目的源码总是会有重复造轮子的冲动。最近对比测了下a56爆大奖在线娱乐们业务使用的数据序列化协议的性能,review了社区上几个常用库的源码,尝试做了点优化,有些想法。浅浅写了个demo,这里记录下实现的思路,供后面查阅和反思。 协议的实现分为几个部分: schema text:协议描述文件 compiler : 阅读全文
posted @ 2024-05-27 23:08 linxx- 阅读(23) 评论(0) 推荐(0) 编辑
摘要: TIPS: a56爆大奖在线娱乐们做的全球同服,需要解决的难点主要有: 客观物理距离造成的网络质量问题; 负载均衡支持跨地区监听; 部署分区支持热扩展。 一. 网络质量优化 物理距离造成的网络质量问题,可能体现在以下方面: 1)server端的不稳定以及响应延迟; 2)网络波动造成存盘数据丢失; 3)运维部署工具失效 阅读全文
posted @ 2024-05-20 21:33 linxx- 阅读(19) 评论(0) 推荐(0) 编辑
摘要: skynet框架下的业务开发,单点服务是存在理论瓶颈的。当业务上存在并发请求的场景时,服务会成为性能热点,达到服务的消费瓶颈,出现过载。 原则上讨论,当业务需求一个执行单位成为并发热点,那么实现这个执行单位就需要是足够支撑业务上限的方案。 基于这个思路,讨论几个优化: 解耦;降低过载造成的直接影响 阅读全文
posted @ 2024-05-20 20:27 linxx- 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 平台:阿里云mongoDB云数据库 版本:Mongodb 4.2 数据库集群方案:一主二从三分片 需求:手动释放过剩磁盘空间 从文档解析可知:delete数据或者做分片数据迁移,并不会释放磁盘空间,而是将这些空间标记为reuse可重用状态,后续新写入的数据会重用这部分空间。 需求是手动释放这些空间, 阅读全文
posted @ 2024-05-13 23:22 linxx- 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 对于关键流程,所有请求都要求返回有效结果,如创建socket连接: function luasocket:connect() return socketcore.open(self.__host, self.__port) end 显然外部调用需要获取到正确的socket句柄用于数据交互,当并发调用 阅读全文
posted @ 2024-05-13 20:09 linxx- 阅读(8) 评论(0) 推荐(0) 编辑