确定性优先
带状态随机数、固定时间步和稳定命令顺序,使问题可复现、比赛可回放。
01 / DEFINITION
KineticGrid 来自持续运行的《炸弹人大作战》生产项目。它把地图、实体、移动、碰撞、炸弹、爆炸、伤害、拾取、时间和同步重新组织为独立的纯逻辑内核。
核心不访问 DOM、不创建 Canvas、不加载图片,也不规定 WebSocket 协议。表现层、输入、网络和账号系统通过事件与快照接入,因此同一规则能在客户端、服务器、测试和 AI 训练环境中运行。
02 / LIVE CORE
下方棋盘是基于公开行为契约制作的网站可视化:展示固定步长、移动、炸弹、火焰、砖块破坏和事件流。核心实现只保存在独立本地工程中。
初始化规则可视化…
03 / ARCHITECTURE
命令向内流动,事件与快照向外流动。渲染器永远不拥有规则状态。
带状态随机数、固定时间步和稳定命令顺序,使问题可复现、比赛可回放。
实体采用数据组合,完整世界可写入版本化 JSON 快照并确定性恢复。
穿砖、穿内墙等规则通过 traits 表达,外边界始终保持不可穿越。
爆炸、伤害、拾取等事件驱动声音、计分和特效,不反向污染核心。
04 / CAPABILITIES
05 / PUBLIC API
核心采用标准 ESM。浏览器和 Node.js 使用同一个构建产物,运行时依赖为零。
world.step() 是唯一时间推进边界world.events 连接表现和业务系统world.snapshot() 输出完整版本化状态import {
FixedStepRunner,
createBomberBattleWorld
} from "@open-game-ai/kinetic-grid";
const { world, player } =
createBomberBattleWorld({
seed: "lesson-01",
level: 4
});
world.events.on("bombExploded",
({ cells }) => renderBlast(cells));
world.queueCommand({
type: "bomb",
entityId: player.id
});
new FixedStepRunner(world)
.advance(1 / 60);
06 / ADOPTION
新项目可以立即使用独立包;现有《炸弹人大作战》通过影子运行和回放对比逐层接入,避免一次性重写。
覆盖确定性随机、出生安全区、边界锁定、穿墙特性、砖块传播、连锁爆炸、固定时间步和快照恢复续跑。
07 / ROADMAP