ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Akebi-GC架构揭秘:CheatManagerBase如何优雅注册50+游戏作弊功能

Akebi-GC架构揭秘:CheatManagerBase如何优雅注册50+游戏作弊功能 Akebi-GC架构揭秘CheatManagerBase如何优雅注册50游戏作弊功能【免费下载链接】Akebi-GC(Fork) The great software for some game that exploiting anime girls (and boys).项目地址: https://gitcode.com/gh_mirrors/ak/Akebi-GCAkebi-GC是一个面向《原神》的开源游戏内菜单game cheat / trainer项目。它的核心问题其实是几十个互相独立的功能模块如何被一个统一的管理器优雅地注册、分组、绘制和热键调度本文从 C 架构角度拆解CheatManagerBase基类的设计并解释它是如何在一个列表里注册 50 个作弊功能同时保持代码整洁的。项目结构三层职责分离Akebi-GC 采用基础库 功能库 注入器的三层结构模块路径职责基础框架库cheat-base/菜单渲染、事件系统、配置序列化、Hook 管理功能实现库cheat-library/具体作弊功能ESP、无限体力、传送等 管理器子类注入器injector/把 DLL 注入游戏进程这种分层意味着cheat-base完全不知道原神的存在它只认识抽象的Feature所有游戏相关逻辑都封装在cheat-library里。核心抽象Feature 接口一切功能的共同身份是 Feature.h 中定义的极简抽象基类class Feature { public: virtual const FeatureGUIInfo GetGUIInfo() const 0; // 名称/模块名/是否分组 virtual void DrawMain() 0; // 菜单主界面绘制 virtual void DrawStatus() { } // 状态窗可选 virtual void DrawInfo() { } // 信息窗可选 virtual void DrawExternal() { } // 外部窗口可选 };这个设计非常克制Feature只约定你是谁、怎么画不关心功能逻辑。因此添加新功能 写一个继承Feature的类零侵入。CheatManagerBase注册与自动分组的魔法基类位于 CheatManagerBase.h它的注册入口只有两个void AddFeature(Feature* feature); // 单个注册 void AddFeatures(std::vectorFeature*); // 批量注册真正的魔法在 CheatManagerBase.cpp 的PushFeature中void CheatManagerBase::PushFeature(Feature* feature) { m_Features.push_back(feature); auto info feature-GetGUIInfo(); // 模块不存在则自动创建并追加到模块顺序 if (m_FeatureMap.count(info.moduleName) 0) m_ModuleOrder.push_back(info.moduleName); // 按模块 → 分组 → 功能列表三级自动归档 m_FeatureMap[info.moduleName][sectionName].push_back(feature); }一个函数完成了三件事收集—— 全部功能存入m_Features供状态窗/信息窗统一遍历分组—— 按moduleNamePlayer、World、Teleport…和isGroup自动建立模块 → 分组 → 功能的三级目录树自动建栏—— 新模块首次出现时自动追加到侧边栏列表无需任何额外注册代码。这就是优雅的来源注册时不需要声明菜单结构结构是从功能自身元数据中涌现出来的。实际注册现场一次调用挂上 50 功能在 cheat.cpp 的cheat::Init()中可以看到完整的注册清单GenshinCM manager GenshinCM::instance(); #define FEAT_INST(name) feature::##name##::GetInstance() manager.AddFeatures({ FEAT_INST(GodMode), FEAT_INST(NoClip), FEAT_INST(AutoLoot), FEAT_INST(KillAura), FEAT_INST(ChestTeleport),FEAT_INST(ESP), // … 共 50 个功能 }); manager.SetModuleOrder({ Player, World, Teleport, ESP, Visuals, Hotkeys, Settings, About, Debug });几个值得注意的细节FEAT_INST宏把GodMode展开为feature::GodMode::GetInstance()——每个功能都是单例注册即取实例SetModuleOrder见 CheatManagerBase.cpp允许自定义侧边栏顺序未列出的模块自动排在末尾容错性很好每个功能类如 GodMode.h、ESP.h 各自独立成文件目录即分类player/、world/、teleport/、visuals/、esp/。事件驱动菜单如何活起来注册完成后CheatManagerBase::InitCheatManagerBase.cpp把自己挂到三个全局事件上events::RenderEvent MY_METHOD_HANDLER(CheatManagerBase::OnRender); events::KeyUpEvent MY_METHOD_HANDLER(CheatManagerBase::OnKeyUp); events::WndProcEvent MY_METHOD_HANDLER(CheatManagerBase::OnWndProc);这套事件系统event.hpp是整个框架的心跳每帧渲染→OnRender依次绘制外部覆盖层、菜单、状态窗、信息窗、FPS按键抬起→CheckToggles遍历所有配置中的热键Toggle命中即翻转开关并弹出 toast 通知CheatManagerBase.cpp游戏消息→ 光标显示/隐藏的智能切换菜单打开时自动解锁鼠标。而事件源头在游戏侧cheat.cpp 通过HookManagerHook 住GameManager.Update每帧转发为GameUpdateEvent所有功能的自动逻辑自动拾取、自动钓鱼等都订阅它。功能之间零耦合全靠事件松耦合协作。模板方法模式GenshinCM 的二次扩展Feature.h 解决功能的抽象而 CheatManagerBase.h 用虚函数模板方法解决管理器的扩展。具体实现类 GenshinCM.h 只需覆写差异点class GenshinCM : public CheatManagerBase { void DrawProfileEntryActivities(const std::string) final; // 覆写追加账号绑定按钮 void DrawProfileLine() final; // 覆写显示当前账号名 void OnAccountChanged(uint32_t userID); // 换号自动切配置 };例如 GenshinCM.cpp 中的DrawProfileEntryActivities先调用CheatManagerBase::DrawProfileEntryActivities保留基类行为再追加/-账号绑定按钮——多账号切换时自动切换配置档案这是原神版管理器的独有增值而基类对此一无所知。一次启动的完整链路把 main.cpp 串起来启动流程一目了然DLL 注入 → 等待 UserAssembly.dll → 初始化 IL2CPP 元数据 → config::Initialize(cfg.json) 加载配置 → cheat::Init() ├─ AddFeatures(50) 注册全部功能 ├─ SetModuleOrder 定制侧边栏 ├─ Init(font) 挂载渲染/按键事件 └─ InstallEventHooks Hook 游戏 Update架构亮点总结设计手法体现位置收益抽象基类 单例Feature/FEAT_INST新增功能零侵入元数据驱动的自动分组PushFeature菜单结构自动涌现事件总线events/功能间松耦合模板方法模式GenshinCM覆写游戏特化逻辑不污染基类配置字段系统config/所有开关自动持久化 支持热键绑定对想学习 C 框架设计的读者来说Akebi-GC 是一个很好的范本它没有堆砌复杂设计模式而是用接口最小化、注册自动化、事件松耦合三板斧就把 50 个功能组织得井井有条。建议从 cheat-base/ 的Feature.h读起再到 cheat-library/src/user/ 看具体功能如何实现两小时即可掌握整个骨架。【免费下载链接】Akebi-GC(Fork) The great software for some game that exploiting anime girls (and boys).项目地址: https://gitcode.com/gh_mirrors/ak/Akebi-GC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表