Infernus 单仓架构与子包

Infernus 单仓架构与子包 由 Archify 生成的架构图。 create-app · 脚手架 CLI · 架构组件 create-app 脚手架 CLI 业务 Gamemode · 业务脚本入口 · 架构组件 业务 Gamemode 业务脚本入口 @infernus/core · 核心库 · 架构组件 @infernus/core 核心库 samp-node 插件 · Node 运行时 · 架构组件 samp-node 插件 Node 运行时 @infernus/fs · 内置脚本集合 · 架构组件 @infernus/fs 内置脚本集合 @infernus/types · 类型声明 · 架构组件 @infernus/types 类型声明 open.mp Server · 服务端宿主 · 架构组件 open.mp Server 服务端宿主 Node.js 22 · JS 运行时 · 架构组件 Node.js 22 JS 运行时 @infernus/shared · 构建期共享代码 · 架构组件 @infernus/shared 构建期共享代码 raknet · 网络包与同步 · 网络与反作弊 raknet 网络包与同步 nex-ac · 服务端反作弊 · 网络与反作弊 nex-ac 服务端反作弊 weapon-config · 武器伤害与同步 · 网络与反作弊 weapon-config 武器伤害与同步 query · 服务器状态查询 · 网络与反作弊 query 服务器状态查询 streamer · 实体流式加载 · 世界、地形与导航 streamer 实体流式加载 colandreas · 碰撞体查询 · 世界、地形与导航 colandreas 碰撞体查询 mapandreas · 地形高度查询 · 世界、地形与导航 mapandreas 地形高度查询 map-loader · 地图文件加载 · 世界、地形与导航 map-loader 地图文件加载 mapfix · 地图漏洞修补 · 世界、地形与导航 mapfix 地图漏洞修补 gps · 导航与寻路 · 世界、地形与导航 gps 导航与寻路 cef · 浏览器界面 · 界面与呈现 cef 浏览器界面 ompp · open.mp 扩展 · 界面与呈现 ompp open.mp 扩展 progress · 进度条显示 · 界面与呈现 progress 进度条显示 qrcode · 二维码生成 · 界面与呈现 qrcode 二维码生成 s-art · 图像渲染 · 界面与呈现 s-art 图像渲染 e-selection · 模型选择菜单 · 界面与呈现 e-selection 模型选择菜单 fcnpc · NPC 与机器人 · 玩家与玩法 fcnpc NPC 与机器人 samp-voice · 语音聊天 · 玩家与玩法 samp-voice 语音聊天 veh-para · 载具降落伞 · 玩家与玩法 veh-para 载具降落伞 distance · 距离计算 · 玩家与玩法 distance 距离计算 drift-detection · 漂移检测 · 玩家与玩法 drift-detection 漂移检测 rec · 录制格式转换 · 玩家与玩法 rec 录制格式转换 生成骨架 import core callNative 网络与反作弊 世界、地形与导航 界面与呈现 玩家与玩法 图例 前端 后端 云服务 安全 外部系统

三种实现路数

  • • 包装原生插件:raknet、streamer、colandreas、cef、ompp、fcnpc 把插件原生包成带类型函数
  • • 增强 core 行为:nex-ac、weapon-config、veh-para、distance 替换 core 的原生调用,改写伤害与位置逻辑
  • • 纯 TypeScript:mapandreas、rec、query、e-selection 完全不用原生插件

core 提供的接入面

  • • defineEvent 建事件,监听器按注册顺序组成中间件链,用 next() 传递
  • • defineHooks(Class) 返回原始方法快照与 setHook,用于替换类方法
  • • GameMode.use() 只入队,装载发生在 onInit

构建与运行时边界

  • • scripts/build-all.ts 串行构建:streamer、core、raknet,再其余
  • • 每包先 type-check 再 rolldown;产物为 bundle.mjs / bundle.js / bundle.d.ts
  • • samp-node 由 open.mp 加载并注入全局 samp;streamer 与 types 不发布