实体限制

来自Valve Developer Community
跳转至: 导航搜索
English (en)Esperanto (eo)中文 (zh)
编辑

本页面由大康翻译于2022年10月3日 (UTC+8)。欢迎任何人补充新内容或者修改其中的错误。


出于内存分配的原因,Source 可以一次管理的实体数量存在限制。

还应考虑地图实体数据的组合大小(以字节为单位),即使实体数量在安全限制范围内也是如此。大量 entdata 可能需要相当长的时间才能从服务器传输到客户端,并可能导致崩溃。

Tip.png提示:创建非常大或细节很多的地图时,请记住,运行时存在的实体数将多于编译时的实体数量。角色持有的武器、子弹和死亡布娃娃等物品也是实体。如果您看到“no free edicts”错误,那么您需要开始减少实体数量!

引擎限制

最多有 4096 个实体。总数分为两组,每组 2048 个。

Note.png注意:Garry's Mod Garry's Mod 中,限制高达 16384 个实体,分为两组,每组有 8192 个。在 传送门2 传送门2,限制最高是 8192 个实体。
Blank image.png待完善: 查看其他起源引擎游戏的限制。
  1. 仅存在于客户端或服务器上的非网络实体(例如,客户端上的死亡布娃娃,服务器上的逻辑规则)。
  2. 具有与实体字典相关联的实体,可以跨越客户端/服务器划分。

如果游戏尝试分配第 2049 个实体字典,它将退出并显示错误消息,但如果它尝试创建第 2049 个非网络实体,它只会拒绝并向控制台打印警告。这背后的逻辑可能是动态生成的实体(即不存在于地图中)但没有分配实体字典可能不太重要。

这两个实体列表由 CBaseEntityList::CBaseEntityList() 使用 NUM_ENT_ENTRIESMAX_EDICTS 创建。在不破坏与引擎的兼容性的情况下,这两个值都无法更改。

Tip.png提示:临时实体静态道具sprite_clientside,或者细节道具不计入任一限制。
Tip.png提示:如果一直创建大量单个对象,请考虑将它们全部滚动到单个管理器实体中。
Tip.png提示:在游戏中,使用 report_entitiescl_showents 等控制台命令来了解当前状态下存在多少实体。
Tip.png提示:使用 $collisionjoints 模型的道具实体将为其碰撞模型的每个凸块生成一个 phys_bone_follower。这些可以迅速吃满实体字典计数!在道具上启用“Disable Bone Followers”键值将禁用骨头跟随器(Bone Followers),尽管道具将不再具有正常运行的碰撞模型,并且模型将无法变成布娃娃

VMF 限制

Hammer 本身没有实体限制,但 VBSP 的限制是 8192 个 (异形丛生 异形丛生 中是 16384 个,反恐精英:全球攻势 反恐精英:全球攻势 中是 2048 个)。

Note.png注意:这是一个软限制;一个修改后的 VBSP 可以在内存允许的情况下任意数量的实体。

这是引擎能接受的总和的两倍,这可能是因为它最初将内部实体(例如prop_staticenv_cubemap)视为普通实体,或者可能是因为它生成了很多细节道具

VBSP 还建议将 entdata 大小限制为 384KB,但这绝不是强制执行的。


起源2 起源2

起源2 起源2 中,尤其是 S&box S&box,网络实体限制是 16384。

地图编译似乎没有限制,或者它与网络实体限制相关联。

另见

外部链接