2025-03-01 00:32+4
[群星]开发者日志#372-模组:人口组和岗位
写在前面的话
我超,天塌了,翻译完发现蠢驴发中文版了,之前印象中没这么慢吧
![[ac:喷]](https://img4.nga.cn/ngabbs/post/smile/ac18.png)
大家好!
本周将由Gruntsatwork为大家讲解脚本语言上关于人口组(Pop Group)人口组脚本的技术细节。这个话题可能最受Mod社区关注。
当前正在实现的系统只是触及了我们对此长远规划的冰山一角——我们期待在未来几年利用这些工具实现更多可能性,同时也期待看到各位的创意。
与所有开发日志一样,部分内容可能在实装和测试阶段有所调整。
人口组与岗位系统
大家好,我是Gruntsatwork!让我们聊聊4.0版本中脚本语言关于人口和岗位的变化...
正如Eladrin在开发者日志370中提到的,我们正通过将人口划分为人口组来改变对人口的处理方式。这些人口组根据其物种、特质、思潮和派系,而非岗位划分。同一人口组中的个体人口从事不同岗位是完全可能且普遍的情况。
我们的目标是让游戏中大部分功能都通过人口组而非个体人口进行调用,这将避免在每次需要重新计算修正时都要遍历帝国中的每个人口。
这使我们能够减少或移除过去使用的高性能消耗操作,转而采用对性能更加友好的处理方式。
例如,"random_owned_pop"和"any_owned_pop"现已被扫进了历史的垃圾堆,取而代之的是"random_owned_pop_group"和"any_owned_pop_group"。
类似的变化也适用于人口相关的效果,如create_pop、kill_pop或move_pop。未来我们将通过人口组进行创建、迁移和消灭操作,对象既可以是整个人口组也可以是一定百分比。眼尖的你可能已经发现了,没错,这意味着无需再通过遍历来对特定人口做某些难以言喻的事情——你现在可以优雅地直接定位人口组,让系统自动完成计算。
得益于程序员团队为trigger提供的像比较器(comparators)这样的新功能,num_pops这样的旧工具将作为trigger焕发新生(译注:这句话其实我没看懂)。我们期待模组制作者能充分挖掘其潜力,虽然也有点担心各位会玩出什么花样来。
如Eladrin所述,这意味着人口与岗位不再保持强关联关联。
取而代之的是,人口组仅在分配的那一瞬间短暂的了解它从事于哪个岗位并提供了多少劳动力。此后岗位只知道它的劳动力需求已被满足因而必须进行相关资源产出。只要分配关系成立,就无需再次检查人口。
这引出了一个最重要的改变:移除物种特质中所有的产量修正,取而代之的是劳动力加成。简而言之,由于在多数检查中无法追溯劳动力来源的物种,原物种生产加成(如灵能特质提供的"岗位+10%科研")无法生效。现在物种特质将提供"科研人员岗位+10%额外劳动力"这类的修正——这意味着100个灵能人口从事100个物理学家岗位时,将获得110个物理学家岗位的维护费与产出。换言之,我们只需支付100人口的维护费,却能获得110个研究员的产出!同时,物种特质提供的岗位产出修正现在将与其他修正进行乘法叠加。
例如,在3.14版本中,1个灵能人口(+10%岗位科研)在拥有精英政治民政(+10%专家岗位产出)的帝国中,于具有中央尖塔(+15%岗位科研)的遗迹世界担任科研人员时,总产出为:3 × (1 + 0.1 + 0.1 + 0.15) = 3 × 1.35 = 4.05各项科研点
在4.0版本中,100个灵能人口(科研人员岗位+10%加成劳动力)在同等环境下担任100个物理学家岗位时,总产出为:3 × (1 + 0.1) × (1 + 0.1 + 0.15) = 3 × 1.1 × 1.25 = 4.125物理科研点
这一改动带来了优雅的新脚本语言条目,例如灵能特质中的这段代码:
"本不必如此。但确实是可行的。Grunts他自己选的。" ——E
"这能完美地满足需求" ——G
"我希望在未来能重构这一部分" ——AS
作为补充说明,部分检查仍可查询人口的岗位,但仅能通过定位岗位并追溯是哪个人口组填充它的方式来间接查询。这确保了死亡教派等定向kill_pop的效果仍可正常运作。
相比之下,行星或帝国层面的生产修正仍然有效,因为它们平等地作用于所有人。
对于物种特质,我们推荐使用以下新修正:
pop_job_bonus_workforce_mult用于提升人口为指定岗位提供的额外劳动力
pop_job_workforce_mult用于提升人口为指定岗位提供基础劳动力,非额外劳动力
job_max_workforce_mult用于提升岗位可接受的最大劳动力
需要说明的是岗位劳动力会自动补充至最大值但不会溢出。若人口提供的基础劳动力增加,填满岗位所需人口会减少,但产出不会超过岗位上限。若存在额外劳动力,则可以突破岗位上限实现产出增益。
此外,我们拆分了许多依赖物种特质触发检查的经济类别,其中包括移除了大多数用于模仿经济类别继承关系的trigger,仅保留了最核心的部分。
对于继承关系,我们建议使用标准的经济类别父子结构,或通过`static_modifiers`实现经济类别任意组合的修正叠加。
这些改动中的大多数甚至所有的主要目的是优化性能:减少那些即使只是需要一个赤字检查也会触发全帝国行星和人口重新计算的调用、循环和修正级联。
展望未来,我们认为劳动力机制都有巨大潜力,无论是对开发组还是Mod社区。我们已经暗示过自动化——与人口解耦的劳动力——的可能性,某些玩家可能已设想过虚拟飞升的新应用。谁知道在帝国需求的人口类型和数量方面,未来还能出现怎样极端的变化呢?
简而言之,我们现在拥有足够的"劳动力"让《群星》续写多年的篇章。此处的双关完全是有意的。
之后有啥?
原定直播将稍作推迟,预计将与公开测试同步开展。当前我们主要专注于功能实现。
下周我们将带来更多开发进展的更新。
已编辑
![[ac:哭笑]](https://img4.nga.cn/ngabbs/post/smile/ac15.png)