核心定位
primitives-dsl 是一套极简的游戏架构领域特定语言,提取自 68K 汇编时代至现代 ECS 引擎的共性模式,用六个原语统一描述任何游戏/sim 系统的状态流转与计算调度。
六大原语详解
| 原语 | 本质 | 典型场景 |
|:---|:---|:---|
| **LOOP** | 显式分阶段的更新循环 | 主循环、子系统 tick、固定时间步 |
| **TILEGRID** | 稳定邻接规则的空间索引 | 2D/3D 网格、导航瓦片、区块地图 |
| **CONTROLBLOCK** | 紧凑的权威状态记录 | 标志位、计数器、句柄、计时器协调 |
| **POOL** | 有界快速分配器 | 实体、子弹、粒子、任务(禁止热路径 unbounded `new`)|
| **EVENT** | 结构化消息(发生的事)| 最小负载 + 显式路由元数据 |
| **DISPATCHER** | 工作与事件的路由器 | CPU 线程/SPU/GPU 内核/ECS 系统调度策略 |
输出契约(强制交付物)
每次调用必须产生四项产物:
1. Primitive Map — 系统组件与原语的对应关系
2. Dataflow Sketch — 状态/事件流动的文本图或表格
3. Worked Example — 完整示例或引用现有示例文件
4. Portability Notes — 向 68K/Cell/CUDA/ECS 的映射说明
显著优点
- 架构无关性:同一描述可落地为手写汇编、CUDA 内核或 Unity ECS
- AI 可解释性:消除"引擎宗教"辩论,用中性词汇与 LLM/AI Agent 沟通
- 约束友好:内置 POOL 边界、CONTROLBLOCK 显式字段等防混沌机制
- 可审计输出:强制表格/伪代码/图示,拒绝模糊 prose
潜在局限
- 非实现框架:只提供设计语言,不生成可编译代码
- 学习门槛:需理解底层内存与调度模型才能有效使用
- 生态封闭:禁止扩展新原语,可能抑制某些架构创新
- 验证负担:输出契约的四项产物对简单场景可能过重
适用人群
- 跨平台引擎开发者(主机/移动/边缘设备)
- 需要向 AI 解释遗留代码的维护工程师
- 设计"未来可移植"共享软件/独立游戏的系统架构师
- 教授游戏引擎课程的教育者(统一术语体系)
常规风险
| 风险 | 说明 |
|:---|:---|
| 原语误用 | 将任意数据结构塞进 POOL/CONTROLBLOCK 导致语义混淆 |
| 边界省略 | 未显式声明 POOL 容量或 DISPATCHER 策略,破坏可移植性 |
| 过度抽象 | 对简单原型强制完整输出契约,降低开发效率 |
| 架构偏见 | 六种原语源自特定历史谱系,可能不契合数据导向或函数式架构 |
与现有方案对比
相比 Unity DOTS、Bevy ECS 等具体实现,primitives-dsl 是元语言层——不承诺运行时性能,承诺认知可移植性:让开发者在切换技术栈时保持心智模型稳定。