摘要: // golang amc框架自动化handler示例 struct module { amc.handler } // 自动handler规则:普通消息 // onmsg_前缀 // 第1个参数是amc.msg_base的子类 func (module* this) onmsg_login(msg 阅读全文
posted @ 2025-09-01 22:51 码客-ygluu 阅读(11) 评论(0) 推荐(0)
摘要: 架构需要从庞杂的需求中拆解出业务需求的层次和共性,才能更好的进行抽象 阅读全文
posted @ 2025-08-31 11:48 码客-ygluu 阅读(9) 评论(0) 推荐(0)
摘要: 架构的终极目标是:降本增效 架构的工作内容是:性能和易用性的权衡 假如框架每一个环节的易用性有那么一点微不足道的提升,整体开发效率的提升是这一点的N倍。 // 普通框架的消息handler void on_login(int msg_id, char* buf, int len) { // 在业务线 阅读全文
posted @ 2025-08-31 00:38 码客-ygluu 阅读(10) 评论(0) 推荐(0)
摘要: 关键词:C/C++、模板、template、反射、Lua、API、绑定、自动化、开发、效率、成本 痛点: C/C++没有完美的反射功能(如golang/delphi),对开发 Lua ⟷ C API 来说是比较繁琐和耗工时的,并且人工编码的出错率也非常高。 方案 C++模板编译期自动化推导。 优点 阅读全文
posted @ 2025-08-24 12:32 码客-ygluu 阅读(107) 评论(0) 推荐(0)
摘要: 本文结合游戏的特点对分布式ID进行设计,以方便游戏系统对ID空间的需求。 (一)分布式ID 改进雪花算法: 1、去掉符号位 2、41位时间戳:表示从起始时间到当前时间的毫秒数,支持约69年的时间范围。 3、11-13位机器ID:可支持2048-8492个节点(进程),只有登录服和游戏需要配置机器ID 阅读全文
posted @ 2025-05-02 22:57 码客-ygluu 阅读(57) 评论(0) 推荐(0)
摘要: (一)格式说明 异步微服务框架TCP网络协议格式如图所示: INDEX 序号,1字节,循环计数,起始为0 FLAG 标志位信息,1字节, BIT0:Request消息标志,REQ-ID有效 BIT1:Response消息标志,REQ-ID有效 BIT2:RID接收者ID标志 BIT3~4:保留 BI 阅读全文
posted @ 2025-05-02 22:01 码客-ygluu 阅读(19) 评论(0) 推荐(0)
摘要: 程序异常后是带病继续运行还是结束进程? 从安全的角度来说应该结束进程,那么异常后如何善后? // 此处省略信号监听过程 // ... // 操作系统触发的奔溃异常信号函数, on_sig(sig, is_crash) { // 1、关闭所有定时器 close_timers(); // 2、关闭所有s 阅读全文
posted @ 2025-05-02 18:12 码客-ygluu 阅读(38) 评论(0) 推荐(0)
摘要: (一)前言 策划 x 程序 x 抽象 x 复用 x 易用 = 降本增效 公式为什么是乘法而不是加法? 如果是加法,任何一个维度的数据为0时结果可能还是正数;如果是乘法,任何一个维度数据都不能为0否则结果就是0,亦即:缺一不可。 注: 本文所述的策划(主策)、产品(经理)是一个层次的对象,技术包含技术 阅读全文
posted @ 2025-05-02 13:05 码客-ygluu 阅读(222) 评论(0) 推荐(1)
摘要: 如果所示: 无论客户端还是服务端链接网关的socket都拆分为读EPoll、写EPoll分别独立。 有两个线程:线程A(左)、线程B(右): 线程A负责服务端Socket的读和客户端socket的写,当读到服务端socket发给客户端的数据时根据规则找到对应的客户端的socket并直接写。 线程B负 阅读全文
posted @ 2025-05-01 22:56 码客-ygluu 阅读(39) 评论(0) 推荐(0)
摘要: 上周末和一位策划大佬讨论小游戏,提到新手服数据和本服区分的问题。 在游戏界,跨服数据加载和保存也是一个复杂的业务,常规方法是玩家进入跨服的时候,由本服推送数据到跨服,回来的时候再从跨服带回相关数据。这个方案会随着业务需求变更会带来相当大的开发和维护成本。 我们讨论了数据保存的时候给数据打服务标签的方 阅读全文
posted @ 2025-04-20 10:18 码客-ygluu 阅读(63) 评论(0) 推荐(0)