更新日志
3.0.3
- [feat] 移除SDK远程下载能力,防止客户端通过特殊手段下载SDK
3.0.2
[fix] 补充压测宿主容量饱和诊断
- 在同一次操作系统快照内聚合控制器、服务端组件和负载进程的 CPU、工作集与进程数,新增
process.owned-total.*指标,避免错误叠加各进程分位数。 - 新增
owned_cpu_p95_max_percent容量阈值;自有进程 CPU P95 超限时将报告标记为SLOW,明确区分引擎长尾与单机压测宿主饱和。 - 补充指标契约测试和中英文压测文档,固定聚合口径、默认阈值与报告诊断行为。
- 在同一次操作系统快照内聚合控制器、服务端组件和负载进程的 CPU、工作集与进程数,新增
[fix] 补齐性能压测脚本错误统计
- 错误日志采集兼容 Logger 的
S_ERR、组件标准输出的[S_ERROR]以及带组件名前缀的严重级别格式,避免脚本异常漏过质量门禁。 - 错误匹配继续限定在日志行首,避免将业务字段中的
error=...或正文中的错误关键字误计为异常。 - 增加分块增量读取、格式兼容和误报防护测试,确保跨采样周期不会重复统计。
- 错误日志采集兼容 Logger 的
[performance] 对齐 Linux io_uring 与 Windows IOCP 完成模型
- 统一 TCP accept、收发、取消、重投递和完成队列生命周期;空闲连接首包立即提交,发送按批次推进,并通过高低水位背压限制长业务回调期间的用户态积压。
- TCP 接收在进入 PacketReader/Entity 回调前预挂下一次读请求;完成项按数量和时间预算公平调度,避免网络突发饿死 Timer、Tick 和其他连接。
- io_uring UDP 使用单等待请求配合有界批量 drain,IOCP 保留多 outstanding buffer;两端统一逻辑 completion 计数、优先级调度、关闭竞态清理和可观测指标。
- Channel 索引纳入 TCP/UDP 传输类型,修复相同地址端口下 TCP 与 KCP 路由互相遮蔽;同步完善 KCP 调度、内部连接活性判断及完成模型背压诊断。
- 扩充 completion 公平性、TCP 发送队列、UDP 接收深度、跨 Cell 迁移与路由契约等回归测试,并优化万人压测进程拓扑和跨平台运行配置。
3.0.1
注意:3.x 正式从KBEngine baseline 2.x迁移到1.x,用于解决协议不合规问题
[security] 完成服务端跨组件入口与会话路由安全收口
- 加固 BaseApp、CellApp、BaseAppMgr、CellAppMgr、DBMgr、Interfaces 等组件之间的实体、回调、注册和销毁入口校验。
- 增加固定头、长度、实体类型、索引/标志和目标会话校验,阻止截断数据、非法实体类型、失效端点及过期回调继续进入业务处理。
- 修复回调超时未主动回收、管理器互注册连接竞态、加密握手竞态等生命周期问题。
- 加固客户端 SDK 的 Blowfish 帧长度与解密输入校验,避免异常数据导致帧状态错乱或越界处理。
- 覆盖客户端请求、组件注册、数据库操作、跨 Cell 迁移、计费和 Interfaces 生命周期等高风险入口,统一拒绝异常来源和失效会话。
[performance] 优化 KCP、UDP、IOCP 调度与高并发网络背压
- 重构 KCP ACK、数据发送、单通道 Flush 和更新队列的调度预算,提升多连接下的公平性,降低无效扫描、接收空窗和调度长尾。
- 限制外部 KCP 字节积压和单客户端缓冲增长,合并可合并的发送段,抑制背压反馈放大,改善万级 Bots 下的连接稳定性。
- 增加 IOCP completion 批量处理和自适应预算,避免单轮处理过量放大 Tick 长尾;同时保留 TCP 小包合并与发送队列优化。
- 增加 KCP 重传、ACK、窗口阻塞、UDP 背压、IOCP completion 和调度延迟等指标,为网络参数调优和正式压测提供依据。
[performance] 优化 AOI、Witness、Cell Tick 和 Space 分配
- 对 AOI dirty 广播、观察关系、位姿同步和坐标递归扫描进行去重,减少同一关系重复入队及高密度 AOI 的更新放大。
- 将 Witness 待处理数据按压力分层调度,优先处理有积压的 Witness,排除空视野对象,降低脏队列和位置同步长尾。
- 优化 CoordinateSystem、Updatable、RangeTrigger 等移动热路径的数据结构和重复距离/平方根计算,减少递归扫描和非连续内存访问。
- CellAppMgr 创建 Space 时综合已确认 Space、待确认 Space、Witness 压力和实时负载进行分配,降低新 Space 集中到单个 CellApp 的风险。
- 增加 Cell Tick、Cell 迁移、AOI、触发器、Python 回调和消息分段的分段耗时指标,用于定位 P95/P99/P99.9 长尾。
[performance] 建立可复现的多组件、多 Bots 标准压测体系
- 压测工程支持通过参数传入 assets、服务端组件数量、Bots 数量、启动批次和运行时长,并以服务端 Watcher/业务就绪状态作为启动门槛。
- 支持多个 Bots 进程聚合运行,支持 TCP/KCP 协议切换,补充 BaseApp、CellApp、Python 到底层调用和整体服务器的 P50/P95/P99/P99.9 指标。
- 增加进程 CPU、私有内存、峰值内存、网络收发、Tick、KCP、IOCP、Watcher 和消息处理等标准采样字段,支持短时对照压测和正式报告输出。
- 增加严格失败诊断、启动清理、日志生命周期隔离、Watcher 控制面复用及低扰动采样机制,降低压测工具本身对结果的影响。
[fix] 改善 Bots 移动、登录和压测运行稳定性
- 修复 KCP 背压、客户端 Tick 排队和过期移动输入导致的 Bots 长时间停顿,提升高并发场景下的移动推进公平性。
- 修复 Bots 移动回调生命周期和 AOI 语义消息清理问题,减少异常断线、重复回调和连接清理不完整。
- Bots 支持开发模式日志转发;非开发模式默认写入自身日志文件,避免大量日志经 Logger 放大压测开销。
- 压测服务端就绪判定、日志级别覆盖、Watcher 重连和部分启动进程清理流程得到统一,降低“未启动完成就开始压测”的误判。
[fix] 改动服务器def不应该导致客户端def md5改变
[fix] controlledBy 有值时,玩家断线重连后,不会同步给客户端
[feat] 扩展工具、协议和跨平台构建能力
- 接入 Space Viewer V2 与地图边界信息,补充全新的 GUIConsole 协议入口。
- Windows 构建入口统一切换到 CMake Preset/Ninja,和 Linux/WSL2、macOS 共用同一套现代 CMake 构建结构,减少旧 VS 工程与脚本分叉。
- vcpkg baseline 统一迁移到
kbengine1x工程使用的固定版本,主工程依赖清单和构建工具链改为可复现配置。 - 将嵌入式 Python runtime 迁入独立的 vcpkg manifest 和 triplet,统一 Python 头文件、库文件及扩展依赖的恢复路径。
- 迁移 utf8-cpp 到 vcpkg,适配 OpenSSL 3,修复 Windows/Linux/macOS 编译差异,并清理不再需要的 SDK 测试入口。
- 公共 C++ 测试聚合目标补齐 Blowfish 兼容性测试,统一
kbe_runtime、kbe_tests和 CTest 回归入口。
[feat] DetailLevel完整实现
[security] 收口数据库与组件生命周期数据流
- DBMgr 增加实体操作固定头、索引、标志和实体类型校验,拒绝截断、错位和非法类型数据进入数据库任务队列。
- 收口 DBTask 异步回调目标会话、回调超时回收、实体销毁和 Interfaces 生命周期,避免过期任务回调到已失效对象。
- 组件注册和端点发现增加无效端点、重复连接和连接状态校验,降低异常注册导致 BaseApp/CellApp 断言或错误退出的风险。
- 对跨 Cell 迁移、Ghost 更新、客户端入口和计费相关消息增加来源、目标和状态约束,避免迁移过程中的重入和越权调用。
[security] 加固客户端 SDK 与加密协议边界
- 统一 C++、C#、GDScript SDK 对 Blowfish 帧长度、解密输入、消息边界和异常状态的处理规则。
- 修复加密握手与 BaseApp 连接建立期间的竞态,避免过滤器安装前后收到异常帧时造成状态错乱。
- 保留账户、邮箱、登录名和重连名等调试追踪信息,同时对网络输入和服务端实体状态进行底层校验。
[performance] 完善 Watcher 与全链路低扰动性能观测
- 增加 BaseApp、CellApp、Bots 和整体服务器的 CPU、私有内存、峰值内存、网络收发、Tick、消息处理和队列指标。
- 增加 Python 到底层调用延迟、BaseApp/CellApp 真实业务调用分位数,以及 P50、P95、P99、P99.9 统计口径。
- Watcher 控制面采用复用连接、分目标低频采样和错峰调度,减少采样请求自身造成的 IOCP、网络和 Tick 抖动。
- 性能探针默认关闭,只有显式开启时才采集详细诊断数据,避免生产环境产生额外 CPU、内存和日志开销。
[performance] 优化 Cell 迁移、消息分段和 Tick 长尾
- 拆分 Python、Cell 迁移构造、迁移回调、AOI 和消息分段耗时,能够区分业务脚本耗时与底层调度耗时。
- 治理过期移动输入、慢 Tick 日志放大和迁移失败状态,避免异常请求长期占用调度队列。
- 增加 Cell Tick 分段延迟、慢轮询和待处理队列诊断,为 P99/P99.9 长尾定位提供调用链证据。
[performance] 优化 BaseApp 客户端分配与跨进程公平性
- 按客户端压力和迁移状态均衡 BaseApp 客户端,降低新连接集中到单个 BaseApp 导致的单核长尾。
- 增加 BaseAppMgr、CellAppMgr 的待创建、已确认和实时负载统计,创建请求发出后立即计入预留压力。
- 限制 Witness 待处理负载和 Space 集中分配,兼顾 Space 数量、Witness 压力和实时 CPU 负载。
[feat] 完善服务发现、端口和运行目录约定
- 优化 Machine 端点发现超时和发现过程指标,减少服务启动阶段的无效等待。
- 统一服务端 TCP/UDP 外部端口配置,避免 TCP 与 KCP 配置分散造成启动脚本和客户端连接不一致。
[tool] 完善压测工程的可操作性与失败诊断
- 支持 assets 路径、BaseApp/CellApp 数量、Bots 总数、批次、协议和运行时长参数化。
- 通过底层就绪事件和 Watcher 聚合判断服务端启动完成,避免组件尚未全部注册时提前启动 Bots。
- 支持本机多 Bots 进程聚合,具备连接建立、登录、角色选择/创建、移动、重连和异常清理等完整业务流程。
- 增加压测失败原因、进程残留、服务端日志、连接流失、握手超时和未知消息 ID 的统一诊断输出。
[tool] 优化 Bots 日志与业务运行模式
- 增加
dev启动模式:开发模式可将日志转发给 Logger 供 IDE 插件显示,非开发模式默认写入 Bots 自身日志文件。 - 将压测日志按启动、连接、稳态、采样和清理阶段隔离,避免日志放大影响网络和 CPU 指标。
- 支持 TCP/KCP 协议切换压测,为同一业务流程提供协议对照基线。
- 增加
[test] 建立跨平台构建与回归测试闭环
- Windows、Linux/WSL2、macOS 统一使用 CMake Preset、vcpkg manifest 和 CTest 入口,减少平台专用工程差异。
- 主工程和 Python runtime 使用独立 triplet 与固定 baseline,依赖恢复路径可审计、可复现。
- 完善网络、KCP、IOCP、AOI、Witness、CellAppMgr 分配、Blowfish 和安全契约测试,并纳入
kbe_tests聚合目标。
2.8.2
[feat] 官网重构,更简洁,更直观
[feat] SDK 异常处理,避免被上层错误导致stream错乱 Issue #189
[feat] KBEX增加插件管理功能
- 插件管理面板:支持 GitHub / Gitee 双仓库源切换
- 插件商城浏览:左侧插件列表(名称、作者、tags,状态靠右),右侧详情(描述、版本选择、README)
- 插件安装:下载 zip 并解压到 assets/plugins/{id}/,自动注册到 plugins.xml
- 插件卸载:删除插件目录并从 plugins.xml 移除
- 插件启用/禁用:通过 plugins.xml 控制加载
- 安装时支持版本选择
[feat] 背包插件 KBEngineNex-Plugin-Bag
- 将背包从"独立实体"改为"组件 + 独立数据表"模式,挂载在 Avatar 上的 BagComponent 组件。
- 背包数据落在独立数据库表
kbe_plugin_bag_items,不走 KBE 自动持久化,容量/堆叠/绑定/过期/锁定等业务点均保留结构。 - 写操作串行队列:同一玩家的 addItem / removeItem / splitItem / swapItem / moveItem / mergeItem / sortItems / clear / transferItems 按 ownerDBID 维度串行执行,避免 SQL 异步回调乱序导致数据错乱。
- BagManager :周期性扫描卡住的队列,防止某条回调丢失后队列永久阻塞。
- 客户端只读:客户端可调用 requestBagList / requestBagPage 查询背包,以及 splitItem / swapItem / moveItem / mergeItem / sortItems 等整理操作(服务端校验归属与规则),addItem / removeItem / clear 等高危写入口不暴露给客户端。
- 离线/后台操作:提供
getBagForEntityID(databaseID)API,支持离线发奖、商城补单、GM 工具等不持有 Avatar 实例的场景。 - 操作日志:三级可配日志(L1=增删清交易, L2=+拆分合并, L3=全量),支持数据库和文件双输出,文件日志支持日期+大小滚动分割。
[feat] 数据库压测插件 KBEngineNex-Plugin-DbStress
- 基于 executeRawDatabaseCommand 实现,覆盖增删改查全场景,支持 MySQL / PostgreSQL / MongoDB 三种数据库。
- 五阶段流程:SETUP(建表预填)→ WARMUP(预热不计指标)→ STRESS(正式施压)→ REPORT(输出报告到
scripts/logs/dbstress_*.log)→ CLEANUP(清理压测表)。 - 可配参数:duration(压测时长)、concurrency(并发数=threadID 数)、preloadRows(预填行数)、opWeights(INSERT/POINT_SELECT/RANGE_SELECT/UPDATE/DELETE 权重,默认 80:20 OLTP 读写比)。
- concurrency 与 numConnections 关系:concurrency 超过 dbmgr 线程池大小时请求在内部排队,报告中提供 TPS / P50 / P95 / P99 延迟分布和按操作类型分组的统计。
- 支持通过 dbInterface 参数指定 kbengine.xml 中配置的数据库接口名称,同一时间只允许一个压测实例运行。
[feat] KBEX 客户端实体创建快捷入口 Issue #181
- KBEX 新增一键创建 Client Entity 的快捷入口:选择客户端实体路径后,根据 hasClient 标记和挂载的组件自动生成客户端实体模板。
[feat] KBEX 快速热更入口:工具栏刷新按钮 + 自动热更(可配置检测目录与间隔) Issue #183
- 工具栏新增刷新按钮,一键触发热更。
- 支持配置自动检测目录和检测间隔,文件变更时自动执行热更,无需手动操作。
[feat] 为 cellapp teleport 接入 onTeleport 回调,支持脚本层拒绝传送 Issue #178
- cellapp Entity::onTeleport() 从预留的死方法改为实际生效,在 Entity::teleport() 所有前置检查通过后、分支执行前调用,只触发一次。
- onTeleport() 返回 bool,脚本层返回 True/None 允许传送(默认兼容旧工程),返回 False 则拒绝并触发 onTeleportFailure。entity 和所有 cell 组件都会被询问,任一返回 False 即中断传送。
[feat] createCellEntity 支持 CELL_VIA_BASE 类型(baseCall.cell) Issue #182
- 允许 createCellEntity 接收 baseEntityCall.cell 作为参数,不再强制要求直接 CellEntityCall。
- 使用方式:
avatar.createCellEntity(spaceBaseCall.cell)
[feat] PostgreSQL 支持 Issue #21
- 新增完整
db_postgresql后端库,实现 DBInterface、EntityTable、KBETable 全部接口,语义贴近 MySQL 实现。 - 黑名单支持:PostgreSQL 专属危险命令黑名单(drop, truncate, alter, rename, grant, revoke, copy, vacuum 等)。
- 新增完整
[feat] executeRawDatabaseCommand 命令黑名单 Issue #179
- 配置驱动:
kbengine_defaults.xml新增<rawDatabaseCommandBlacklist>配置段,支持全局<enable>开关和按数据库类型(mysql / mongodb / postgresql)分别配置危险命令列表。 - 匹配规则:多个词用英文逗号分隔,检查时不区分大小写,各数据库只读取自己类型的配置。
- 拦截点:在 DBInterface 层统一拦截,命中黑名单时打 WARNING 日志并拒绝执行。
- MySQL 默认拦截:delete, drop, truncate, alter, rename, replace, grant, revoke, flush, lock, unlock, shutdown 等。
- MongoDB 默认拦截:drop, dropDatabase, deleteMany, remove, findAndModify, renameCollection, eval, mapReduce 等。
- PostgreSQL 默认拦截:delete, drop, truncate, alter, rename, grant, revoke, copy, vacuum, reindex 等。
- 配置驱动:
[feat] 新增添加额外配置参数 @Smile010110 Pull request #176
- 在
kbengine.xml根节点下新增<customCfg>段,支持业务自定义键值配置(int / bool / float / string / dict / list 类型)。 - Python 层通过
KBEngine.getCustomCfg("key", default)读取,无需手动解析 XML。 - 示例:xml
<customCfg> <param name="battle.maxPlayers" type="int" desc="max players per battle">1000</param> <param name="battle.enableRank" type="bool" desc="enable battle rank">true</param> <param name="battle.speedScale" type="float" desc="battle speed scale">1.0</param> <param name="battle.welcome" type="string" desc="welcome text">hello</param> <param name="battle.dropRates" type="dict" desc="drop rate config">{"gold": 1.2, "item": 0.05}</param> <param name="battle.spawnPoints" type="list" desc="spawn point ids">[1, 2, 3]</param> </customCfg>
- 在
[feat] GitHub Actions 自动化构建发布 Issue #109
[feat] 重构 Python async 调度 Issue #166
- 移除 py 层独立线程:旧方案使用单独 Python 线程跑 asyncio loop,在新方案中完全移除,消除线程间 GIL 争抢。
- C++ 底层 dispatcher timer 驱动:EntityApp / PythonApp 类在主线程安装
AsyncioHelper::installTimer(),创建AsyncioTimerHandler周期性推进 asyncio 事件循环。 - 不受 gameUpdateHertz 量化:asyncio timer 基于
asyncioRepeatOffset配置独立调度(秒级精度转微秒级 dispatcher timer),不再与 game tick 频率耦合。 - 协程任务管理:
submitCoroutine()将 awaitable 包装为 asyncio Task,每次 timer 触发最多连续推进 64 轮,避免 ready 队列过长时占满主循环。
[feat] 提供当前 cellapp 下所有 space 的 py 层接口:KBEngine.spaces() Issue #170
- 返回当前 cellapp 上所有 Space 的 dict:
{spaceID: spaceEntity}。
- 返回当前 cellapp 上所有 Space 的 dict:
[feat] 增加方法获取指定 space 的所有实体:KBEngine.entitiesForSpace(spaceid) Issue #76
- 传入
spaceID,返回该 Space 内所有实体的 dict。
- 传入
[feat] 按需启动服务配置,方便分布式/k8s 启动配置管理 Issue #171
- 支持多套配置文件:
kbengine.xml/kbengine_dev.xml/kbengine_prod.xml。 - 启动时通过
--prop=prod/dev选择配置,或--location=/path/to/kbengine.xml直接指定配置文件路径。 - 方便在 k8s 等容器编排环境中按环境注入不同配置。
- 支持多套配置文件:
[feat] io_uring 与 kqueue completion adapter,底层完全 completion 化 Issue #173
- io_uring(Linux):新增
PollerIoUring实现,通过syscall(__NR_io_uring_setup)和io_uring_enter系统调用驱动异步 IO。 - kqueue(macOS / DragonFly BSD):新增
PollerKqueue实现,基于kqueue()+ EVFILT_READ/EVFILT_WRITE 事件。 - 统一 completion 模型:与已有 IOCP(Windows)一起,三大平台全部从 readiness 模型切换为 completion 模型。
- io_uring(Linux):新增
[feat] 【KBEX】app 启动失败后自动读取原始日志并输出 Issue #158
- 当 app 启动失败导致 logger 无法转发日志时,KBEX 自动回退到直接读取 app 的原始日志文件并输出到控制台,方便快速定位启动失败原因。
[feat] registerReadFileDescriptor 等接口废弃,新增 registerAcceptFileDescriptor 等 completion API Issue #172
- 废弃接口:
registerReadFileDescriptor / deregisterReadFileDescriptor调用时直接抛出RuntimeError,提示迁移到新 API。 - 新增 listener accept API:
registerAcceptFileDescriptor(fd, onAccept)— 注册 listener fd 的 accept completion。 - 新增 data read API:
registerReadDataFileDescriptor(fd, onRead)— 注册已连接 TCP fd 的读完成回调。 - 新增 write API:
writeFileDescriptor(fd, data, onWriteComplete)— 写操作完成后回调。 - 安全校验:注册时检查当前 poller 是否支持 completion 模型,不支持则拒绝并报错;同一 fd 的读侧禁止重复注册(防止 listener 被当成 TCP data fd 消费)。
- 废弃接口:
[feat] 增强 topSpeed 超速检测并通知脚本层 Issue #168
- 单包检测(原有):逐包比较移动距离与 topSpeed 阈值
- 同帧累积(新增):同一 game tick 内多次位置更新的移动量累加后检测,防止客户端将超速拆成多个小包绕过单包检查
- 滑动窗口(新增):统计 gameUpdateHertz 帧窗口内的总移动距离,若超出 topSpeed × 窗口帧数则触发回调,防御跨帧渐进式加速
- 新增 Python 回调 onMoveOverTopSpeed(clientX, clientY, clientZ, xzDist, yDist):
- 单包/同帧超速时,在重置客户端位置之前回调
- 滑动窗口超速时,在窗口满时回调
[fix] 修复 urlopen 传入 None 时可能崩溃的问题 Issue #167
[fix] log4cxx 初始化前自动创建日志目录
- 新增
ensureLog4cxxAppenderDirectories()函数,在 log4cxx 初始化前遍历log4j.appender.*.File配置项,自动创建目标目录。 - 解决 Linux 下首次启动时日志目录尚不存在导致 log4cxx 初始化失败的问题。
- 新增
[perf] openssl 彻底 vcpkg 引入
- 统一通过 vcpkg 管理 OpenSSL 依赖,不再依赖系统自带的 OpenSSL 或 VS 内置 OpenSSL。
[perf] Debug 下编译 Release Python Issue #175
- 解决 KBE 以 Debug 模式编译时链接 Python Debug ABI 导致第三方包无法使用的问题。
[perf] db_mongodb 功能优化 Issue #177
- Entity 表
- 补了
EntityTableMongodb::removeEntity():按id删除实体文档。 - 补了
entityShouldAutoLoad():更新sm_autoLoad。 - 补了
queryAutoLoadEntities():查询自动加载实体 DBID。 - 修了
writeTable():插入时sm_autoLoad默认写0,再统一走entityShouldAutoLoad();insert/update失败时返回0,避免调用方误判成功。
- 补了
- KBE 表
KBEEntityLogTableMongodb:补 entity log 写入、查询、按 entityType 删除、按 baseapp 删除。修了eraseEntityLog()成功返回值反了的问题。同步时不再粗暴清空全部日志,改为参考 MySQL 的过期/无效 serverGroup 清理逻辑。KBEServerLogTableMongodb:补 serverlog collection 创建、唯一索引。补 server 心跳 upsert。补查询当前 server、所有 server、超时 server、清理 server。补isShareDB()和所有 server 的共享 DB 状态检查。KBEAccountTableMongodb:补账号表索引(accountName、email、entityDBID)。查询账号支持 accountName 或 email。补完整账号信息查询。修setFlagsDeadline()没有$set的问题。修updatePassword()错用 entityDBID 匹配账号名的问题。补updateCount()(更新 lasttime 并递增 numlogin)。bindata 改为 BSON binary 存储和读取。KBEEmailVerificationTableMongodb:补验证码 collection 创建、code唯一索引。补过期验证码清理。补queryAccount()、logAccount()、delAccount()。补邮箱激活账号、绑定邮箱、重置密码流程。
- 辅助修正:增加 BSON 读取 helper(int32/int64/bool/utf8/binary、find_one()、账号名/邮箱 $or 查询等),避免重复写不稳定的 iterator 逻辑。修了几处 BSON iterator 复用可能导致字段漏读的问题。保持 MongoDB 实现尽量贴近 MySQL 语义。
- Entity 表
2.8.1
- [fix] 修复使用navigateToDetour时,结束移动后navigateToDetour不被同步导致entity乱跳跃的bug
- [fix] 修复C++ SDK ObjectPool的一处BUG
- [fix] 修复C++ SDK tcp下时序错乱的BUG
- [fix] 修复 MySQL 写入和删除实体时,收集子表 DBID 使用父表名查找的问题,避免多子表场景下子表记录同步异常。
- [fix] 修复 KBEngine.MemoryStream 销毁时没有减少 PyGC tracing 计数导致泄露的BUG。 Issue #131
- [feat] raycast完善,优化导航射线检测,支持斜、垂直射线 Issue #79
- [feat] 新增 completionBudget 配置,限制每 tick 处理的完成事件数量和耗时,避免网络完成事件过多占满主循环。
- [feat] rider支持,目前仅支持windows Issue #135
- [feat] cmake 编译器切换到ninja ,加速编译 Issue #142
- [feat] Apple Silicon支持 Issue #37
- [feat] macos io多路复用 kqueue Issue #139
- [feat] kbex macos支持 Issue #141
- [feat] windows select替换为IOCP Issue #136
- [feat] win server 异常退出时生成dump信息 Issue #155
- [feat] kbex 进程管理优化 Issue #122
- [feat] kbex 可视化功能添加 Issue #123
- [feat] 兔子世界案例迁移到Nex
- [perf] 升级TS SDK Event 区分out/in事件注册与触发 Issue #126
- [perf] 升级c++ SDK Event 区分out/in事件注册与触发 Issue #126
- [perf] 给 c++层的 Python Map 增加 clear, pop 成员函数 Issue #129
- [perf] c++升级到兼容17/20 Issue #132
- [perf] 优化掉所有的Warning Issue #133
- [perf] c++ sdk 移除libhv依赖
- [perf] python async调度迁移到c++底层 Issue #137
- [perf] 优化kcp 客户端断开连接后的重试ERROR日志,变更为WARNING并更友好的提示
- [perf] 优化kcp断连后的ERROR,ikcp_send外部客户端发送窗口满不再每次 ERROR_MSG
- [perf] KBEngine.urlopen 超时配置 ,支持timeout、connectTimeout、lowSpeedTime/lowSpeedLimit Issue #128
2.7.4
- [feat] NavMesh Generator 添加了一个坐标配置管理器:支持选点添加/更新配置、导入导出json/python、下载集合或单个地图配置、浏览器本地存储
- [fix] 修复navigation补帧触发导致脱离生命周期出现的bug
- [fix] c# sdk event中补全一些参数和注释 Issue #125
- [perf] KBEDebug.py升级,打印文件、行号,支持跳转 Issue #124
2.7.3
- [fix] entity添加isOnNavigate,使用navigateToDetour时,设置isOnGround为true的同时也能下发y轴
- [fix] 修复navigate不绕过障碍物的bug
- [fix] 修复navigate持续触发时卡顿的bug
- [fix] 修复bots不触发心跳导致被卸载的bug
- [fix] 【KBEX】 启动多个pycharm时,进程管理有问题 Issue #111
- [feat] bots接入logger进程,用于单元测试 #119
- [perf] vcpkg 依赖固定版本及安装脚本优化 #115
- [perf] 【KBEX】优化调用链不清晰时的补全逻辑
- [feat] 【KBEX】添加Bots快捷启动入口
2.7.2
- [fix] 修复EntityComponent里的方法回调,需要owner实现该方法后,EntityComponent的回调才会被调用的BUG Issue #107
- [fix] mysql9中md5内置方法被移除 Issue #108
- [update] mongodbc 升级到2.2.2 Issue #113
2.7.1
- [update] kbex 调试下,entity.xxx 不支持输出的问题 Issue #102
- [fix] 同时启动多个不同类型数据库,watcher冲突的bug Issue #103
- [update] mongodb authSource应该验证对应的数据库,而不是admin Issue #105
- [update] kbex 增加entity快捷操作功能 Issue #86
2.7.0
由于本次更新中,navmesh属于底层破坏性更新,所以直接调整为一个大版本更新
- [feat] 新增navigateToDetour方法,用于使用Detour导航,原navigate方法不变(points导航) Issue #96
- Detour导航可以在服务端贴合navmesh高度,在多层建筑中非常有用
- [feat] recastnavigation升级,并改为由vcpkg导入 Issue #74
- 重要:新版 NavMesh 使用 Recast Navigation 工具链重新生成,旧二进制文件不能直接复用
- NavMesh 升级不改变 Entity 协议的
(x, y, z)位置顺序;客户端按各引擎坐标定义适配,其中 Cocos Creator 3.x 和 Godot 4 的位置直接使用(x, y, z)
- [feat] navmesh 周边工具,web端navmesh生成工具(https://navmesh.kbelab.com/) Issue #58
- [feat] mongodb接入 Issue #59
- [feat] 原生c++ sdk Issue #60
- [feat] 原生cxx ue5 demo+原生cxx demo Issue #67
- [feat] WebConsole 全新重构 Issue #44
- [feat] csharp sdk / ts sdk WebSocket 端口和域名映射支持 Issue #50 Issue #51
- [feat] webconsole 新增用户时配置权限 Issue #62
- [feat] kbex 添加日志直连功能、更优的docker支持 Issue #61 Issue #55
- [feat] dockerfile 以及基础镜像 Issue #56
- [fix] webconsole 创建用户扩展数据报错、py控制台无法多行输入、kbex 调试模式异常输出等多项修复
- [fix] 修复ts sdk里event Fire没有立即触发导致的延迟
- [delete] 删除底层redis持久化实现 Issue #71
- [update] 基础demo 全面升级,适配服务端navmesh;移除历史spaces配置,统一空间加速启动
v2.6.3
- [feat] 系统回调支持asyncio Issue #1
- [feat] 新增 ts sdk Issue #6
- [feat] 添加原生C# SDK,支持unity和GODOT Issue #15
- [feat] 原生C# SDK支持unity websocket Issue #29
- [feat] vcpkg 支持,为未来支持arm处理器编译做准备 Issue #34
- [feat] makefile迁移到cmake Issue #13
- [feat] 升级三方依赖(fmt, log4cxx, zlib, hiredis, expat, apr, apr-util, curl) Issue #32
- [feat] ubuntu-24.x /25.x支持 Issue #33
- [feat] Linux/windows 一键编译脚本支持 Issue #25
- [feat] 数据库创建table时,给字段添加上注释 Issue #23
- [feat] linux arm支持 Issue #38
- [feat] linux下cmake编译,Hybrid默认启用ASan,Release/Evaluation默认启用FORTIFY_SOURCE
- [feat] base、cell、interfaces asyncioRepeatOffset配置支持
- [fix] 添加mysqlclient缺失的2个dll
- [fix] 修复sync_item_to_db时,utf8mb4中每次启动都重复同步一次UNICODE字段的BUG
