实体限制

From Valve Developer Community
< Zh
Revision as of 13:57, 4 July 2024 by Nesciuse (talk | contribs) (- changed links to :lang suffix redirect pages to the redirected link)
Jump to navigation Jump to search
English (en)Esperanto (eo)Русский (ru)中文 (zh)Translate (Translate)

This page was translated by DaKang233 on October 3, 2022 (UTC+8). Anyone is welcome to add new content or fix errors.


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

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

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

引擎限制

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

Note.png注意:Garry's Mod Garry's Mod 中,限制高达 16384 个实体,分为两组,每组有 8192 个。在 传送门2 传送门2,限制最高是 8192 个实体。
待完善: 查看其他起源引擎游戏的限制。
  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。

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

另见

外部链接