大炮
频道主
群星开发日志#372 - 模组:人口组与岗位
> by Eladrin
各位玩家们你们好!
本周,Gruntsatwork将会讨论人口组(Pop Group)方案的技术细节,这个主题主要是为模组开发者们提供信息。
目前我们正在实现的系统仅仅是我们未来规划的一个开始——我们很期待未来几年里能够用这些工具所实现的功能,也期待看到大家将会如何使用它们。
和以往的开发日志一样,其中的一些内容在实现和 Beta 版本测试期间可能会有所调整。
人口组与岗位
大家好,Gruntsatwork在此!今天让我们来谈谈4.0版本中关于人口与岗位的一些方案改动……
正如Eladrin在开发日志#370中所提到的我们正在调整对人口的管理方式,将它们按一定标准分组为“人口组”(Pop Groups)。这些组按照物种(species)、特质(traits)、思潮(ethics)和派系(factions)来划分,但不会根据岗位(jobs)进行分类。因此,一个人口组中的个体们可能会从事着不同的岗位。
我们的目标是,在游戏的多数情况下,你将引用人口组而不是单个人口,希望这样可以避免在需要重新计算修正值时遍历帝国内的每一个人口。
同时,这也使得我们可以减少或消除某些过去计算量极大的操作,并用更高效的替代方案取而代之。
例如,过去用于随机选取人口的random_owned_pop或any_owned_pop现在将被淘汰,取而代之的是random_owned_pop_group与any_owned_pop_group。
同样,许多原本针对单个人口的效果(如create_pop、kill_pop或move_pop)也进行了相应调整。今后,我们将创建、移动和消灭人口组,而不是单个个体——要么是整个组,要么是按百分比操作。此外,眼尖的玩家可能已经注意到,你不再需要循环遍历每一个人口来对它们做一些不可描述的事情,现在你可以直接对准人口组,让系统来完成计算。
得益于我们程序员的不懈努力,他们为我们提供了一些新的脚本触发器功能,如比较运算符等。一些旧工具,比如num_pops也会作为脚本触发器重新回归。我们预计模组制作者们会对此有很多新的用途,尽管我们有点害怕你们会想出什么花样。
还是正如Eladrin所提到的,新的系统使得人口与其岗位之间不再保持持续的联系。
相反,在分配岗位的那一刻,人口组将会短暂地知道它为哪个岗位提供了多少劳动力。从那时起,岗位只知道它得到了多少劳动力,因此必须产生相应的资源。只要分配仍然有效,我们就无需再检查该人口。
这一改动带来了一个我们最重大的变化之一:去除所有基于物种特质的岗位产出修正,并用“额外劳动力”取而代之。简单来说,由于岗位在大多数情况下无法直接知道劳动力的来源种族,因此像“灵能特质(Psionic trait)提供+10%科研产出”这样的修正将不再适用。相反,物种特质现在会提供“+10%研究员岗位的额外劳动力”这样的修正值。这意味着100名灵能人口从事100个物理学家岗位时,它们的岗位维护费和产出将相当于110个物理学家——也就是说,我们只需支付100个人口的维护费,但能获得相当于110名研究员的产出! 此外,来自物种特质的岗位产出修正现在与其他修正值是乘法叠加的。
例如,在3.14版本中,如果1名灵能人口(+10%研究产出)从事研究员岗位,并且该帝国拥有精英治国国民理念(+10%专家人口岗位产出),并且位于遗落星球上,有中央尖塔建筑(+15% 研究产出),那么总产出计算如下:
3 ×(1 + 10% + 10% + 15%)= 3 × 1.35 = 4.05物理研究
(旧修正之间都为纯加法)
而在4.0版本中,如果 100 名灵能人口(+10% 研究员岗位额外劳动力)从事 100 个物理学家岗位,在相同条件下,计算方式如下:
3 ×(1 + 10%)×(1 + 10% + 15%)= 3 × 1.1 × 1.25 = 4.125物理研究
(人口特质修正值乘以其他修正值之和,也就是人口特质修正被独立出来了)
这带来了以下的新脚本内容,例如灵能特质的代码:
> 不一定要这样。但可以这样。Grunts 做出了他的选择。 - E
> 这完全没问题 – G
> 我希望能重构这个 - AS
“pop_physicist_bonus_workforce_mult 物理学家 +10% 额外劳动力
pop_biologist_bonus_workforce_mult 生物学家 +10% 额外劳动力
pop_engineer_bonus_workforce_mult 工程学家 +10% 额外劳动力
pop_brain_drone_physicist_bonus_workforce_mult 科研子个体(物理学家) +10% 额外劳动力
pop_brain_drone_biologist_bonus_workforce_mult 科研子个体(生物学家) +10% 额外劳动力
pop_brain_drone_engineer_bonus_workforce_mult 科研子个体(工程学家) +10% 额外劳动力
pop_calculator_physicist_bonus_workforce_mult 演算者(物理学家) +10% 额外劳动力
pop_calculator_biologist_bonus_workforce_mult 演算者(生物学家) +10% 额外劳动力
pop_calculator_engineer_bonus_workforce_mult 演算者(工程学家) +10% 额外劳动力
pop_bureaucrat_bonus_workforce_mult 官僚 +10% 额外劳动力
pop_coordinator_bonus_workforce_mult 协调者 +10% 额外劳动力
pop_synapse_drone_bonus_workforce_mult 突触子个体 +10% 额外劳动力”
此外,一些检查仍然可以间接查询人口的岗位,例如通过作用于岗位并确定哪个人口组在填充它。这意味着我们仍然可以确保像死亡教派(Death Cults)和其他针对性kill_pop效果的功能正常运行。
相比之下,行星或帝国层面的生产加成仍然适用,因为它们本身影响的就是所有人口。
因此,在物种特质中,我们鼓励大家使用以下新的修正值:
pop_job_bonus_workforce_mult
用于增加某个岗位的额外劳动力。
pop_job_workforce_mult
用于增加某个岗位的基础劳动力(不是额外劳动力)。
job_max_workforce_mult
用于增加某个岗位可以接受的最大劳动力。
请注意,岗位的劳动力会填充到其最大值,但不会超过。如果某个人口提供的劳动力比正常情况多,填满这个岗位所需的人口就会减少,但不会超过最大值。如果一个人口提供额外劳动力,那么它可以超出岗位的最大劳动力,并且扩大生产规模。
此外,我们还拆分了一些依赖于物种特质的经济类别触发检查。这也包括通过触发器模拟经济类别继承的机制,我们已在许多情况下移除它,仅在最依赖该机制的地方保留。
对于继承,我们推荐使用正常的经济类别父子结构,或使用static_modifiers赋予组合经济类别的修正值。
我们做出这些改动的主要目的是提升性能:减少调用、循环和修正值级联触发,这些操作可能会影响整个星球和帝国中的所有人口,以防某个时刻需要进行赤字检查。
展望未来,我们看到劳动力机制具有极大的潜力,无论是对我们还是模组制作社区而言。我们曾暗示过劳动力与人口的解耦自动化,一些玩家可能已经想到可以如何利用它来扩展“虚拟(Virtuality)”机制。谁知道呢,也许现在可以实现更极端的玩法,比如让帝国的劳动力需求发生巨变?
简而言之,现在我们有了足够的劳动力来支撑《群星》未来数年的发展。(是的,这个双关梗是故意的)
下一步是?
我们的直播计划会稍作延迟,可能会与公开测试版同步进行。目前,我们的主要重点仍然是实施这些改动。
下周,我们会带来更多进展更新。
- 下载图片
- 复制图片
2025-02-28
浏览2401
📄开发日志
登录后评论
13
7
6