Zh/Entity limit: Difference between revisions
m (Nesciuse moved page Entity limit/zh to Zh/Entity limit over redirect: Language prefixes) |
m (obsolete language category) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{ | {{LanguageBar|title = 实体限制}} | ||
{{:User:1416006136/Signature|time=Oct 3 2022}} | {{:User:1416006136/Signature|time=Oct 3 2022}} | ||
出于内存分配的原因,Source 可以一次管理的 | 出于内存分配的原因,Source 可以一次管理的{{L|entity|实体}}数量存在限制。 | ||
还应考虑地图实体数据的组合大小(以字节为单位),即使实体数量在安全限制范围内也是如此。大量 [[Source BSP File Format#Entity|entdata]] 可能需要相当长的时间才能从服务器传输到客户端,并可能导致崩溃。 | 还应考虑地图实体数据的组合大小(以字节为单位),即使实体数量在安全限制范围内也是如此。大量 [[Source BSP File Format#Entity|entdata]] 可能需要相当长的时间才能从服务器传输到客户端,并可能导致崩溃。 | ||
Line 13: | Line 14: | ||
{{Note|在 {{Gmod|2|suf=:zh-cn}} 中,限制高达 16384 个实体,分为两组,每组有 8192 个。在 {{portal2|4|suf=:zh-cn}},限制最高是 8192 个实体。{{todo|查看其他起源引擎游戏的限制。}}}} | {{Note|在 {{Gmod|2|suf=:zh-cn}} 中,限制高达 16384 个实体,分为两组,每组有 8192 个。在 {{portal2|4|suf=:zh-cn}},限制最高是 8192 个实体。{{todo|查看其他起源引擎游戏的限制。}}}} | ||
# 仅存在于客户端或服务器上的非网络实体(例如,客户端上的死亡布娃娃,服务器上的 | # 仅存在于客户端或服务器上的非网络实体(例如,客户端上的死亡布娃娃,服务器上的{{L|CLogicalEntity|逻辑}}规则)。 | ||
# 具有与 | # 具有与{{L|edict|实体字典}}相关联的实体,可以跨越客户端/服务器划分。 | ||
如果游戏尝试分配第 2049 个实体字典,它将退出并显示错误消息,但如果它尝试创建第 2049 个非网络实体,它只会拒绝并向控制台打印警告。这背后的逻辑可能是动态生成的实体(即不存在于地图中)但没有分配实体字典可能不太重要。 | 如果游戏尝试分配第 2049 个实体字典,它将退出并显示错误消息,但如果它尝试创建第 2049 个非网络实体,它只会拒绝并向控制台打印警告。这背后的逻辑可能是动态生成的实体(即不存在于地图中)但没有分配实体字典可能不太重要。 | ||
Line 20: | Line 21: | ||
这两个实体列表由 <code style="padding:0">CBaseEntityList::CBaseEntityList()</code> 使用 <code style="padding:0">NUM_ENT_ENTRIES</code> 和 <code style="padding:0">MAX_EDICTS</code> 创建。在不破坏与引擎的兼容性的情况下,这两个值都无法更改。 | 这两个实体列表由 <code style="padding:0">CBaseEntityList::CBaseEntityList()</code> 使用 <code style="padding:0">NUM_ENT_ENTRIES</code> 和 <code style="padding:0">MAX_EDICTS</code> 创建。在不破坏与引擎的兼容性的情况下,这两个值都无法更改。 | ||
{{Tip|1= | {{Tip|1={{L|Temporary Entity|临时实体}}和{{L|prop_static|静态道具}}、<code style="padding:0">{{L|Env_sprite_clientside|sprite_clientside}}</code>,或者{{L|prop_detail|细节}}道具不计入任一限制。}} | ||
{{Tip|如果一直创建大量单个对象,请考虑将它们全部滚动到单个管理器实体中。}} | {{Tip|如果一直创建大量单个对象,请考虑将它们全部滚动到单个管理器实体中。}} | ||
Line 26: | Line 27: | ||
{{Tip|1=在游戏中,使用 <code style="padding:0">report_entities</code> 和 <code style="padding:0">cl_showents</code> 等控制台命令来了解当前状态下存在多少实体。}} | {{Tip|1=在游戏中,使用 <code style="padding:0">report_entities</code> 和 <code style="padding:0">cl_showents</code> 等控制台命令来了解当前状态下存在多少实体。}} | ||
{{Tip|使用 {{ent|$collisionjoints}} 模型的道具实体将为其 | {{Tip|使用 {{ent|$collisionjoints}} 模型的道具实体将为其{{L|collision model|碰撞模型}}的每个凸块生成一个 {{ent|phys_bone_follower}}。这些可以迅速吃满实体字典计数!在道具上启用“Disable Bone Followers”键值将禁用''骨头跟随器''(Bone Followers),尽管道具将不再具有正常运行的碰撞模型,并且模型将无法变成{{L|ragdoll|布娃娃}}。}} | ||
== VMF 限制 == | == VMF 限制 == | ||
Hammer 本身没有实体限制,但 | Hammer 本身没有实体限制,但 {{L|VBSP}} 的限制是 8192 个 ({{as|2}} 中是 16384 个,{{csgo|2}} 中是 2048 个)。{{Note|这是一个软限制;一个修改后的 {{L|VBSP}} 可以在内存允许的情况下任意数量的实体。}} | ||
这是引擎能接受的总和的两倍,这可能是因为它最初将 | 这是引擎能接受的总和的两倍,这可能是因为它最初将{{L|internal entity|内部实体}}(例如{{ent|prop_static}}和{{ent|env_cubemap}})视为普通实体,或者可能是因为它生成了很多{{L|detail props|细节道具}}。 | ||
VBSP 还建议将 [[Source BSP File Format#Entity|entdata]] 大小限制为 384KB,但这绝不是强制执行的。 | VBSP 还建议将 [[Source BSP File Format#Entity|entdata]] 大小限制为 384KB,但这绝不是强制执行的。 | ||
{{ACategory|Level Design}} | |||
{{ACategory|Programming}} | |||
{{ACategory|Glossary}} | |||
Line 52: | Line 53: | ||
== 外部链接 == | == 外部链接 == | ||
* [https://rafuron.wordpress.com/category/mapping-tricks/ 绕过实体限制的地图技巧] | * [https://rafuron.wordpress.com/category/mapping-tricks/ 绕过实体限制的地图技巧] | ||
{{ACategory|GoldSrc}} | |||
{{ACategory|Source}} | |||
{{ACategory|Source 2}} | |||
{{ACategory|Level Design}} | |||
{{ACategory|Programming}} |
Latest revision as of 04:14, 22 August 2024
This page was translated by DaKang233 on October 3, 2022 (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
创建。在不破坏与引擎的兼容性的情况下,这两个值都无法更改。

sprite_clientside
,或者细节 道具不计入任一限制。

report_entities
和 cl_showents
等控制台命令来了解当前状态下存在多少实体。
VMF 限制
Hammer 本身没有实体限制,但 VBSP 的限制是 8192 个 ( 异形丛生 中是 16384 个,
反恐精英:全球攻势 中是 2048 个)。

这是引擎能接受的总和的两倍,这可能是因为它最初将内部实体 (例如prop_static和env_cubemap)视为普通实体,或者可能是因为它生成了很多细节道具 。
VBSP 还建议将 entdata 大小限制为 384KB,但这绝不是强制执行的。
起源2
在 起源2 中,尤其是
S&box,网络实体限制是 16384。
地图编译似乎没有限制,或者它与网络实体限制相关联。