Zh/Entity limit: Difference between revisions
1416006136 (talk | contribs) m (Move Category to zh-cn) |
1416006136 (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
{{lang|Entity limit|title=实体限制}} | {{lang|Entity limit|title=实体限制}} | ||
{{:User:1416006136/Signature|time=2022年10月3日 | {{:User:1416006136/Signature|time=2022年10月3日}} | ||
出于内存分配的原因,Source 可以一次管理的[[entity|实体]]数量存在限制。 | 出于内存分配的原因,Source 可以一次管理的[[entity|实体]]数量存在限制。 | ||
Line 14: | Line 14: | ||
# 仅存在于客户端或服务器上的非网络实体(例如,客户端上的死亡布娃娃,服务器上的[[CLogicalEntity|逻辑]]规则)。 | # 仅存在于客户端或服务器上的非网络实体(例如,客户端上的死亡布娃娃,服务器上的[[CLogicalEntity|逻辑]]规则)。 | ||
# | # 具有与[[edict|实体字典]]相关联的实体,可以跨越客户端/服务器划分。 | ||
如果游戏尝试分配第 2049 个实体字典,它将退出并显示错误消息,但如果它尝试创建第 2049 个非网络实体,它只会拒绝并向控制台打印警告。这背后的逻辑可能是动态生成的实体(即不存在于地图中)但没有分配实体字典可能不太重要。 | |||
这两个实体列表由 <code style="padding:0">CBaseEntityList::CBaseEntityList()</code> 使用 <code style="padding:0">NUM_ENT_ENTRIES</code> 和 <code style="padding:0">MAX_EDICTS</code> 创建。在不破坏与引擎的兼容性的情况下,这两个值都无法更改。 | |||
{{tip|[[Temporary Entity| | {{tip:zh-cn|1=[[Temporary Entity|临时实体]]和[[prop_static|静态道具]]、<code style="padding:0">[[Env_sprite_clientside|sprite_clientside]]</code>,或者[[prop_detail|细节]]道具不计入任一限制。}} | ||
{{tip| | {{tip:zh-cn|如果一直创建大量单个对象,请考虑将它们全部滚动到单个管理器实体中。}} | ||
{{tip| | {{tip:zh-cn|1=在游戏中,使用 <code style="padding:0">report_entities</code> 和 <code style="padding:0">cl_showents</code> 等控制台命令来了解当前状态下存在多少实体。}} | ||
{{tip| | {{tip:zh-cn|使用 {{ent|$collisionjoints}} 模型的道具实体将为其[[collision model|碰撞模型]]的每个凸块生成一个 {{ent|phys_bone_follower}}。这些可以迅速吃满实体字典计数!在道具上启用“Disable Bone Followers”键值将禁用''骨头跟随器''(Bone Followers),尽管道具将不再具有正常运行的碰撞模型,并且模型将无法变成[[ragdoll|布娃娃]]。}} | ||
== VMF 限制 == | == VMF 限制 == | ||
Hammer | Hammer 本身没有实体限制,但 [[VBSP:zh-cn|VBSP]] 的限制是 8192 个 ({{as|2}} 中是 16384 个,{{csgo|2}} 中是 2048 个)。{{note:zh-cn|这是一个软限制;一个修改后的 [[VBSP]] 可以在内存允许的情况下任意数量的实体。}} | ||
这是引擎能接受的总和的两倍,这可能是因为它最初将[[internal entity|内部实体]](例如{{ent|prop_static}}和{{ent|env_cubemap}})视为普通实体,或者可能是因为它生成了很多[[detail props|细节道具]]。 | |||
VBSP | VBSP 还建议将 [[Source BSP File Format#Entity|entdata]] 大小限制为 384KB,但这绝不是强制执行的。 | ||
[[Category:Level Design:zh-cn]] | [[Category:Level Design:zh-cn]] | ||
Line 40: | Line 40: | ||
== | == {{source2|4|nt=0|suf=:zh-cn}} == | ||
在 {{source2|4|suf=:zh-cn}} 中,尤其是 {{S&box|4|suf=:zh-cn}},网络实体限制是 16384。 | |||
地图编译似乎没有限制,或者它与网络实体限制相关联。 | |||
== 另见 == | == 另见 == | ||
Line 50: | Line 50: | ||
* {{ent|edict_t}} | * {{ent|edict_t}} | ||
== | == 外部链接 == | ||
* [https://rafuron.wordpress.com/category/mapping-tricks/ | * [https://rafuron.wordpress.com/category/mapping-tricks/ 绕过实体限制的地图技巧] |
Revision as of 21:33, 4 March 2023
This page was translated by DaKang233 on Error: Invalid time. (UTC+8). Anyone is welcome to add new content or fix errors.
出于内存分配的原因,Source 可以一次管理的实体数量存在限制。
还应考虑地图实体数据的组合大小(以字节为单位),即使实体数量在安全限制范围内也是如此。大量 entdata 可能需要相当长的时间才能从服务器传输到客户端,并可能导致崩溃。
引擎限制
最多有 4096 个实体。总数分为两组,每组 2048 个。
如果游戏尝试分配第 2049 个实体字典,它将退出并显示错误消息,但如果它尝试创建第 2049 个非网络实体,它只会拒绝并向控制台打印警告。这背后的逻辑可能是动态生成的实体(即不存在于地图中)但没有分配实体字典可能不太重要。
这两个实体列表由 CBaseEntityList::CBaseEntityList()
使用 NUM_ENT_ENTRIES
和 MAX_EDICTS
创建。在不破坏与引擎的兼容性的情况下,这两个值都无法更改。
VMF 限制
Hammer 本身没有实体限制,但 VBSP 的限制是 8192 个 ( 异形丛生 中是 16384 个,
反恐精英:全球攻势 中是 2048 个)。Template:Note:zh-cn
这是引擎能接受的总和的两倍,这可能是因为它最初将内部实体(例如prop_static和env_cubemap)视为普通实体,或者可能是因为它生成了很多细节道具。
VBSP 还建议将 entdata 大小限制为 384KB,但这绝不是强制执行的。
起源2
在 起源2 中,尤其是
S&box,网络实体限制是 16384。
地图编译似乎没有限制,或者它与网络实体限制相关联。