@driftengine/实体
具有代际身份、组件存储、查询、申报读取和 写作,预发和场景连载.
它没有进口其他引擎包. 实体模型,知道什么是 Transform 这将是一个
实体模型知道它有一个场景—— 而宣布的读取和写作的论点是:
声明是一个组件 编号 而不是说组件的意思.
还有 宣告无组件类型一个消费者写出自己需要的东西,或者拿走 从拥有子系统的任何软件包中获取.
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位的预算,准确的说. 没有任何客厅,故意的, 一个测试说 顶端的手柄可以在这里发现,而不是在错误的比较中发现.
系统宣布它们碰到什么
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。 。 。 .
一个投球的系统被跳过,其他的仍然运行. 默认失败记录一次 每个系统/世界。 传一个记者作为第四个论点, 将每一次失败,每一滴,与 系统的名称, 勾选和错误, 没有任何记录; 从中扔出失败 开发过程中的致命性:
runSchedule(world, schedule, tick, ({ system, tick, error }) => overlay.add(system, tick, error));
命令是声明命令,仅按 after,在地形上排序为
宣布命令为打结。 周期 after 拒绝命名系统.
everyTicks 前进 固定步骤 并且从来不是一种速率,以秒计: 以时钟计
将定型合同 留在第一个落架.
系统内部的破坏被推迟 在它返回之后。 删除替换了最后的密度
进入空洞,所以去掉中行走移动光标已经传递到一个实体
它已经访问过的立场——这个实体从未被默默地看到过,也从未被看到过
碰巧是最后一个. create 财务报告和审定财务报表 add ,并可在
同样的通行证.
预告片和场景
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; 数字
碰巧持有一个是一个数字.
文档
包括模型拒绝的五件事 将每个反转.