YHH
1f297ac769
feat(ecs): ECS 网络状态同步系统 | add ECS network state synchronization ( #390 )
...
## @esengine/ecs-framework
新增 @sync 装饰器和二进制编解码器,支持基于 Component 的网络状态同步:
- `sync` 装饰器标记需要同步的字段
- `ChangeTracker` 组件变更追踪
- 二进制编解码器 (BinaryWriter/BinaryReader)
- `encodeSnapshot`/`decodeSnapshot` 批量编解码
- `encodeSpawn`/`decodeSpawn` 实体生成编解码
- `encodeDespawn`/`processDespawn` 实体销毁编解码
将以下方法标记为 @internal,用户应通过 Core.update() 驱动更新:
- Scene.update()
- SceneManager.update()
- WorldManager.updateAll()
## @esengine/network
- 新增 ComponentSyncSystem 基于 @sync 自动同步组件状态
- 将 ecs-framework 从 devDependencies 移到 peerDependencies
## @esengine/server
新增 ECSRoom,带有 ECS World 支持的房间基类:
- 每个 ECSRoom 在 Core.worldManager 中创建独立的 World
- Core.update() 统一更新 Time 和所有 World
- onTick() 只处理状态同步逻辑
- 自动创建/销毁玩家实体
- 增量状态广播
2025-12-29 21:08:34 +08:00
github-actions[bot]
4cf868a769
chore: release packages ( #389 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-29 17:14:53 +08:00
YHH
afdeb00b4d
feat(server): 添加可插拔速率限制系统 | add pluggable rate limiting system ( #388 )
...
* feat(server): 添加可插拔速率限制系统 | add pluggable rate limiting system
- 新增令牌桶策略 (TokenBucketStrategy) - 推荐用于一般场景
- 新增滑动窗口策略 (SlidingWindowStrategy) - 精确跟踪
- 新增固定窗口策略 (FixedWindowStrategy) - 简单高效
- 新增房间速率限制 mixin (withRateLimit)
- 新增速率限制装饰器 (@rateLimit, @noRateLimit)
- 新增按消息类型限流装饰器 (@rateLimitMessage, @noRateLimitMessage)
- 支持与认证系统组合使用
- 添加中英文文档
- 导出路径: @esengine/server/ratelimit
* docs: 更新 README 添加新模块 | update README with new modules
- 添加程序化生成 (procgen) 模块
- 添加 RPC 框架模块
- 添加游戏服务器 (server) 模块
- 添加事务系统 (transaction) 模块
- 添加世界流送 (world-streaming) 模块
- 更新网络模块描述
- 更新项目结构目录
2025-12-29 17:12:54 +08:00
github-actions[bot]
764ce67742
chore: release packages ( #387 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-29 16:12:03 +08:00
YHH
61a13baca2
feat(server): 添加可插拔认证系统 | add pluggable authentication system ( #386 )
...
* feat(server): 添加可插拔认证系统 | add pluggable authentication system
- 新增 JWT 认证提供者 (createJwtAuthProvider)
- 新增 Session 认证提供者 (createSessionAuthProvider)
- 新增服务器认证 mixin (withAuth)
- 新增房间认证 mixin (withRoomAuth)
- 新增认证装饰器 (@requireAuth, @requireRole)
- 新增测试工具 (MockAuthProvider)
- 新增中英文文档
- 导出路径: @esengine/server/auth, @esengine/server/auth/testing
* fix(server): 使用加密安全的随机数生成 session ID | use crypto-secure random for session ID
2025-12-29 16:10:09 +08:00
github-actions[bot]
1cfa64aa0f
chore: release packages ( #385 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-29 15:04:07 +08:00
YHH
3b978384c7
feat(framework): server testing utils, transaction storage simplify, pathfinding tests ( #384 )
...
## Server Testing Utils
- Add TestServer, TestClient, MockRoom for unit testing
- Export testing utilities from @esengine/server/testing
## Transaction Storage (BREAKING)
- Simplify RedisStorage/MongoStorage to factory pattern only
- Remove DI client injection option
- Add lazy connection and Symbol.asyncDispose support
- Add 161 unit tests with full coverage
## Pathfinding Tests
- Add 150 unit tests covering all components
- BinaryHeap, Heuristics, AStarPathfinder, GridMap, NavMesh, PathSmoother
## Docs
- Update storage.md for new factory pattern API
2025-12-29 15:02:13 +08:00
github-actions[bot]
18af48a0fc
chore: release packages ( #382 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-29 11:08:46 +08:00
YHH
d4cef828e1
feat(transaction): 添加游戏事务系统 | add game transaction system ( #381 )
...
- TransactionManager/TransactionContext 事务管理
- MemoryStorage/RedisStorage/MongoStorage 存储实现
- CurrencyOperation/InventoryOperation/TradeOperation 内置操作
- SagaOrchestrator 分布式 Saga 编排
- withTransactions() Room 集成
- 完整中英文文档
2025-12-29 10:54:00 +08:00
github-actions[bot]
2d46ccf896
chore: release packages ( #380 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-29 10:44:48 +08:00
YHH
fb8bde6485
feat(network): 网络模块增强 - 预测、AOI、增量压缩 ( #379 )
...
- 添加 NetworkPredictionSystem 客户端预测系统
- 添加 NetworkAOISystem 兴趣区域管理
- 添加 StateDeltaCompressor 状态增量压缩
- 添加断线重连和状态恢复
- 增强协议支持时间戳、序列号、速度
- 添加中英文文档
2025-12-29 10:42:48 +08:00
YHH
9f84c2f870
chore: bump pathfinding and world-streaming to 1.1.0 ( #378 )
2025-12-28 19:36:34 +08:00
github-actions[bot]
e9ea52d9b3
chore: release packages ( #377 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-28 19:26:41 +08:00
YHH
0662b07445
chore: update pathfinding, add rpc/world-streaming docs, refactor world-streaming location ( #376 )
2025-12-28 19:18:28 +08:00
github-actions[bot]
838cda91aa
chore: release packages ( #375 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-28 14:11:27 +08:00
YHH
a000cc07d7
feat(rpc): export RpcClient from main entry point ( #374 )
2025-12-28 14:09:16 +08:00
github-actions[bot]
1316d7de49
chore: release packages ( #373 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-28 13:49:34 +08:00
YHH
9c41181875
fix(server): expose id property on ServerConnection type ( #372 )
2025-12-28 13:47:27 +08:00
github-actions[bot]
9f3f9a547a
chore: release packages ( #371 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-28 13:32:44 +08:00
YHH
18df9d1cda
fix(server): allow define() to be called before start() ( #370 )
2025-12-28 13:29:17 +08:00
github-actions[bot]
9a4b3388e0
chore: release packages ( #369 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-28 12:51:20 +08:00
YHH
66d5dc27f7
fix(server): 修复发布缺少 dist | fix missing dist ( #368 )
...
* fix(server): 修复发布缺少 dist | fix missing dist in publish
* ci: 添加 server 和 create-esengine-server 构建 | add server packages to build
* fix: 添加 create-esengine-server 到 changeset
2025-12-28 12:46:50 +08:00
github-actions[bot]
8a3e54cb45
chore: release packages ( #367 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-28 12:25:51 +08:00
YHH
b6f1235239
feat(server): 添加游戏服务器框架 | add game server framework ( #366 )
...
**@esengine/server** - 游戏服务器框架 | Game server framework
- 文件路由系统 | File-based routing
- Room 生命周期 (onCreate, onJoin, onLeave, onTick, onDispose)
- @onMessage 装饰器 | Message handler decorator
- 玩家管理与断线处理 | Player management with auto-disconnect
- 内置 JoinRoom/LeaveRoom API | Built-in room APIs
- defineApi/defineMsg 类型安全辅助函数 | Type-safe helpers
**create-esengine-server** - CLI 脚手架工具 | CLI scaffolding
- 生成 shared/server/client 项目结构 | Project structure
- 类型安全的协议定义 | Type-safe protocol definitions
- 包含 GameRoom 示例 | Example implementation
**其他 | Other**
- 删除旧的 network-server 包 | Remove old network-server
- 更新服务器文档 | Update server documentation
2025-12-28 12:23:55 +08:00
github-actions[bot]
41529f6fbb
chore: release packages ( #365 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-28 11:00:37 +08:00
YHH
7940f581a6
feat(rpc,network): 新增 RPC 库并迁移网络模块 ( #364 )
...
* feat(rpc,network): 新增 RPC 库并迁移网络模块
## @esengine/rpc (新增)
- 新增类型安全的 RPC 库,支持 WebSocket 通信
- 新增 RpcClient 类:connect/disconnect, call/send/on/off/once 方法
- 新增 RpcServer 类:Node.js WebSocket 服务端
- 新增编解码系统:支持 JSON 和 MessagePack
- 新增 TextEncoder/TextDecoder polyfill,兼容微信小游戏平台
- 新增 WebSocketAdapter 接口,支持跨平台 WebSocket 抽象
## @esengine/network (重构)
- 重构 NetworkService:拆分为 RpcService 基类和 GameNetworkService
- 新增 gameProtocol:类型安全的 API 和消息定义
- 新增类型安全便捷方法:sendInput(), onSync(), onSpawn(), onDespawn()
- 更新 NetworkPlugin 使用新的服务架构
- 移除 TSRPC 依赖,改用 @esengine/rpc
## 文档
- 新增 RPC 模块文档(中英文)
- 更新 Network 模块文档(中英文)
- 更新侧边栏导航
* fix(network,cli): 修复 CI 构建和更新 CLI 适配器
## 修复
- 在 tsconfig.build.json 添加 rpc 引用,修复类型声明生成
## CLI 更新
- 更新 nodejs 适配器使用新的 @esengine/rpc
- 生成的服务器代码使用 RpcServer 替代旧的 GameServer
- 添加 ws 和 @types/ws 依赖
- 更新 README 模板中的客户端连接示例
* chore: 添加 CLI changeset
* fix(ci): add @esengine/rpc to build and check scripts
- Add rpc package to CI build step (must build before network)
- Add rpc to type-check:framework, lint:framework, test:ci:framework
* fix(rpc,network): fix tsconfig for declaration generation
- Remove composite mode from rpc (not needed, causes CI issues)
- Remove rpc from network project references (resolves via node_modules)
- Remove unused references from network tsconfig.build.json
2025-12-28 10:54:51 +08:00
github-actions[bot]
fac4bc19c5
chore: release packages ( #360 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-27 10:57:16 +08:00
YHH
aed91dbe45
feat(cli): add update command for ESEngine packages ( #359 )
...
* feat(cli): add update command for ESEngine packages
- Add 'update' command to check and update @esengine/* packages
- Support --check flag to only show available updates without installing
- Support --yes flag to skip confirmation prompt
- Display package update status with current vs latest version comparison
- Preserve version prefix (^ or ~) when updating
- Bump version to 1.4.0
* chore: add changeset for CLI update command
* fix(cli): handle 'latest' tag in update command
- Treat 'latest' and '*' version tags as needing update
- Pin to specific version (^x.x.x) when updating from 'latest'
- Show '(pin version)' hint in update status output
* fix(cli): minimize file system race condition in update command
Re-read package.json immediately before writing to reduce the window
for potential race conditions between reading and writing.
* fix(cli): use atomic file write to avoid race condition
Write to temp file first, then rename for atomic update.
2025-12-27 10:54:04 +08:00
github-actions[bot]
c7f8208b6f
chore: release packages ( #358 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-27 10:31:43 +08:00
yhh
7d74623710
fix(core): 配置 publishConfig.directory 确保从 dist 目录发布
2025-12-27 10:27:00 +08:00
github-actions[bot]
044463dd5f
chore: release packages ( #357 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-27 09:55:30 +08:00
YHH
ce2db4e48a
fix(core): 修复 World cleanup 在打包环境下的兼容性问题 ( #356 )
...
- 使用 forEach 替代 spread + for...of 解构模式,避免某些打包工具转换后的兼容性问题
- 重构 World 和 WorldManager 类,提升代码质量
- 提取默认配置为常量
- 统一双语注释格式
2025-12-27 09:51:04 +08:00
github-actions[bot]
0a88c6f2fc
chore: release packages ( #355 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-27 00:20:04 +08:00
yhh
b0b95c60b4
fix: 从 ignore 列表移除 network-server 以支持版本发布
2025-12-27 00:17:44 +08:00
YHH
1e240e86f2
feat(cli): 增强 Node.js 服务端适配器 ( #354 )
...
* docs(network): 添加网络模块文档和 CLI 支持
- 添加中英文网络模块文档
- 将 network、network-protocols、network-server 加入 CLI 模块列表
* feat(cli): 增强 Node.js 服务端适配器
- 添加 @esengine/network-server 依赖支持
- 生成完整的 ECS 游戏服务器项目结构
- 修复 network-server 包支持 ESM/CJS 双格式
- 添加 ws@8.18 .0 解决 Node.js 24 兼容性问题
- 组件使用 @ECSComponent 装饰器注册
- tsconfig 启用 experimentalDecorators
2025-12-27 00:13:58 +08:00
github-actions[bot]
67c06720c5
chore: release packages ( #353 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-26 23:17:14 +08:00
YHH
33e98b9a75
fix(cli): 修复 Cocos Creator 3.x 项目检测逻辑 ( #352 )
...
* docs(network): 添加网络模块文档和 CLI 支持
- 添加中英文网络模块文档
- 将 network、network-protocols、network-server 加入 CLI 模块列表
* fix(cli): 修复 Cocos Creator 3.x 项目检测逻辑
- 重构检测代码,提取通用辅助函数
- 优先检查 package.json 中的 creator.version 字段
- 添加 .creator 和 settings 目录检测
- 使用 getMajorVersion 统一版本号解析
* chore: add changeset
2025-12-26 23:14:23 +08:00
github-actions[bot]
1e31e9101b
chore: release packages ( #351 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-26 22:32:12 +08:00
yhh
d66c18041e
fix(spatial): 修复 GridAOI 可见性更新问题
...
- 修复 addObserver 时现有观察者无法检测到新实体的问题
- 修复实体远距离移动时观察者可见性未正确更新的问题
- 重构 demos 抽取公共测试工具
2025-12-26 22:23:03 +08:00
github-actions[bot]
27b9e174eb
chore: release packages ( #348 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-26 18:16:57 +08:00
YHH
ede440d277
chore: changeset for framework package configs ( #347 )
...
* chore: add changeset for framework package configs
* fix(docs): 修复 VitePress 配置中的包路径
2025-12-26 18:13:12 +08:00
github-actions[bot]
ec72df7af5
chore: release packages ( #343 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: YHH <359807859@qq.com >
2025-12-26 17:18:01 +08:00
YHH
da5bf2116a
fix(changesets): remove network-protocols and build-config from ignore ( #342 )
...
* fix(changesets): remove network-protocols and build-config from ignore
These packages are dependencies of non-ignored packages:
- @esengine/network depends on @esengine/network-protocols
- Multiple packages depend on @esengine/build-config (private, won't publish)
* fix(ci): add .changeset to CI trigger paths
2025-12-26 17:05:41 +08:00
YHH
c4f7a13b74
feat(cli): add CLI tool for adding ECS framework to existing projects ( #339 )
...
* feat(cli): add CLI tool for adding ECS framework to existing projects
- Support Cocos Creator 2.x/3.x, LayaAir 3.x, and Node.js platforms
- Auto-detect project type based on directory structure
- Generate ECSManager with full configuration (debug, remote debug, WebSocket URL)
- Auto-install dependencies with npm/yarn/pnpm detection
- Platform-specific decorators and lifecycle methods
* chore: add changeset for @esengine/cli
* fix(ci): fix YAML syntax error in ai-issue-helper workflow
* fix(cli): resolve file system race conditions (CodeQL)
* chore(ci): remove unused and broken workflows
* fix(ci): fix YAML encoding in release.yml
2025-12-26 16:18:59 +08:00
YHH
155411e743
refactor: reorganize package structure and decouple framework packages ( #338 )
...
* refactor: reorganize package structure and decouple framework packages
## Package Structure Reorganization
- Reorganized 55 packages into categorized subdirectories:
- packages/framework/ - Generic framework (Laya/Cocos compatible)
- packages/engine/ - ESEngine core modules
- packages/rendering/ - Rendering modules (WASM dependent)
- packages/physics/ - Physics modules
- packages/streaming/ - World streaming
- packages/network-ext/ - Network extensions
- packages/editor/ - Editor framework and plugins
- packages/rust/ - Rust WASM engine
- packages/tools/ - Build tools and SDK
## Framework Package Decoupling
- Decoupled behavior-tree and blueprint packages from ESEngine dependencies
- Created abstracted interfaces (IBTAssetManager, IBehaviorTreeAssetContent)
- ESEngine-specific code moved to esengine/ subpath exports
- Framework packages now usable with Cocos/Laya without ESEngine
## CI Configuration
- Updated CI to only type-check and lint framework packages
- Added type-check:framework and lint:framework scripts
## Breaking Changes
- Package import paths changed due to directory reorganization
- ESEngine integrations now use subpath imports (e.g., '@esengine/behavior-tree/esengine')
* fix: update es-engine file path after directory reorganization
* docs: update README to focus on framework over engine
* ci: only build framework packages, remove Rust/WASM dependencies
* fix: remove esengine subpath from behavior-tree and blueprint builds
ESEngine integration code will only be available in full engine builds.
Framework packages are now purely engine-agnostic.
* fix: move network-protocols to framework, build both in CI
* fix: update workflow paths from packages/core to packages/framework/core
* fix: exclude esengine folder from type-check in behavior-tree and blueprint
* fix: update network tsconfig references to new paths
* fix: add test:ci:framework to only test framework packages in CI
* fix: only build core and math npm packages in CI
* fix: exclude test files from CodeQL and fix string escaping security issue
2025-12-26 14:50:35 +08:00
YHH
a84ff902e4
fix: 修复 changesets 验证错误 ( #337 )
...
- 简化 ignore 配置,只保留 editor-app
- 设置内部包为 private: true
- build-config, engine, ecs-engine-bindgen
- editor-core, editor-runtime
- 所有 *-editor 插件包
这样 changesets 可以正常工作,private 包不会被发布
2025-12-26 09:06:52 +08:00
YHH
54038e3250
feat: 配置 changesets 版本管理和自动发布 ( #336 )
...
- 安装 @changesets/cli 和 @changesets/changelog-github
- 配置 .changeset/config.json
- 添加 npm scripts
- 创建 release-changesets.yml GitHub Action
2025-12-25 23:07:44 +08:00