# @driftengine/entities 中文文档

规范地址：https://npmcn.com/package/%40driftengine/entities/

版本：4\.14\.3
npm 元数据更新时间：2026-11-03T16:30:15.606Z
中文译文更新时间：2026-11-13T06:30:19.738Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40driftengine/entities
原文对照：https://npmcn.com/package/%40driftengine/entities/?lang=original
项目主页：https://github.com/drftrun/driftengine#readme
源码仓库：https://github.com/drftrun/driftengine

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：226 kB，34 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.12\.0
- 运行依赖：1 个
- 首次发布：2026-09-13T02:15:10.103Z
- 最新版本发布：2026-11-03T16:30:15.414Z
- 近 30 天下载量：2147（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：52（近 12 个月 52 个）

## 中文简介

有世代身份、组件存储、系统和场景的实体

## 安装

```sh
npm install @driftengine/entities
```

也可以使用：`pnpm add @driftengine/entities`、`yarn add @driftengine/entities`、`bun add @driftengine/entities`

## README

# @driftengine/实体

具有代际身份、组件存储、查询、申报读取和 写作,预发和场景连载.

**它没有进口其他引擎包.** 实体模型,知道什么是 `Transform` 这将是一个 实体模型知道它有一个场景—— 而宣布的读取和写作的论点是: 声明是一个组件 _编号_ 而不是说组件的意思.

还有 **宣告无组件类型**一个消费者写出自己需要的东西,或者拿走 从拥有子系统的任何软件包中获取.

```ts
import { EntityAllocator } from '@driftengine/entities';

const entities = new EntityAllocator();
const player = entities.create();
entities.destroy(player);
entities.alive(player); // false — and the entity that takes the slot is a different handle
```

## 把手

一个实体是一个数字:一个26位指数和一个27位的生成,在计算上结合. **这个 生成是停止一个针对活实体的 stale 手柄** - 释放和再利用的指数使 每个旧的参考都无声无息地有效,指向一个在任何地方都没有出错的不同事物.

传统的包装 `Uint32` 分成24和8,所以一个插槽的第257回用手一个手柄 和第一次一样 这种分割使6 700万实体和1.34亿再利用 每个存储实体的成本为4个字节,因为一个手柄存在于 `Float64Array`。 。 。 .

26+27是整个53位的预算,准确的说. 没有任何客厅,故意的, 一个测试说 顶端的手柄可以在这里发现,而不是在错误的比较中发现.

## 系统宣布它们碰到什么

```ts
const schedule = buildSchedule([
  { name: 'hunger', writes: [Hunger], everyTicks: 60, run(view) { … } },
  { name: 'decay', reads: [Hunger], writes: [Health], after: ['hunger'], run(view) { … } },
]);
runSchedule(world, schedule, tick);
```

**宣言得到实施.** 一个没有声明的系统被拒绝 命名两者——一个从谎言中衍生出来的调度比没有调度更糟糕. `writes` 隐含 `reads`。 。 。 .

**一个投球的系统被跳过,其他的仍然运行.** 默认失败记录一次 每个系统/世界。 传一个记者作为第四个论点, 将每一次失败,每一滴,与 系统的名称, 勾选和错误, 没有任何记录; 从中扔出失败 开发过程中的致命性:

```ts
runSchedule(world, schedule, tick, ({ system, tick, error }) => overlay.add(system, tick, error));
```

命令是声明命令,仅按 `after`,在地形上排序为 宣布命令为打结。 周期 `after` 拒绝命名系统.

`everyTicks` 前进 **固定步骤** 并且从来不是一种速率,以秒计: 以时钟计 将定型合同 留在第一个落架.

**系统内部的破坏被推迟** 在它返回之后。 删除替换了最后的密度 进入空洞,所以去掉中行走移动光标已经传递到一个实体 它已经访问过的立场——这个实体从未被默默地看到过,也从未被看到过 碰巧是最后一个. `create` 财务报告和审定财务报表 `add` ,并可在 同样的通行证.

## 预告片和场景

```ts
const guard = definePrefab('guard', [
  [Health, { current: 100 }],
  [Perception, { sightRange: 40 }],
]);
const spawned = instantiate(world, guard, { Perception: { sightRange: 60 } });

const scene = serializeWorld(world, [Health, Perception]);
const result = deserializeWorld(fresh, scene, [Health, Perception]);
```

**预置值是一个值,与其实例没有任何联系.** 现场连线是编辑想要的, 并且每个实例都花费它所覆盖的字段的记录; Track K可以添加该记录 不改变什么是预想.

**场景用稳定字段 ID 处理每个值**从来没有一个名字也没有一个位置。 一个字段 在中间插入后,会重新编号,然后保存在右上方 名称有错误的值——比失败更糟糕,因为它看起来是有效的.

跨越变化的加载通过 `driftscript`迁移,不变:自 其缺省而来,一去已去,一去已去,一去已去 **类型** 更改后拒绝命名 这个 在每一个实体迁移之前,任何文字都不能写入世界,所以在第五天就拒绝了 不留下四个.

实体参考文献为 **重新映射** 而不是保存, 因为保存的手柄的插槽可能 活在被载入的世界里 这只适合申报的田地 `Entity`; 数字 碰巧持有一个是一个数字.

## 文档

包括模型拒绝的五件事 将每个反转.

## 常见问题

### @driftengine/entities 是什么？

有世代身份、组件存储、系统和场景的实体

### 如何安装 @driftengine/entities？

在项目目录运行 npm install @driftengine/entities，或使用 pnpm add / yarn add / bun add。

### @driftengine/entities 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @driftengine/entities 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @driftengine/entities 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22\.12\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @driftengine/entities 可以商用吗？

@driftengine/entities 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @driftengine/entities 的下载量有多少？

根据 npm 官方下载统计，@driftengine/entities 在 2026/10/13 – 2026/11/11 这 30 天内被下载 2,147 次，日均约 72 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @driftengine/entities 还在维护吗？

最新版本 4\.14\.3 发布于 2026/11/04（9 天前）；至今共发布 52 个版本，其中过去 12 个月发布了 52 个；首次发布于 2026/09/13。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

