如何使用 AI 制作类似《RimWorld》的游戏

使用两名工人和三项任务,看看为什么一项已完成的修理工作仍可能错过截止日期。

Seele Editorial Team更新于 2026年11月11日

围绕工作队列和一个截止日期,构建一个原创的殖民地模拟游戏。在虚构的 Tern Ridge Relay 站,两名船员需要修理风暴百叶窗、更换空气滤芯并将一个货箱搬运至储藏室。只有一名船员能够修理百叶窗。如果一名船员先执行了风险较低的任务,即使所有任务最终都能完成,该站点仍可能错过截止日期。

使用三个固定的时间步长来揭示这一选择。一份清晰可读的日程表会告诉你每名船员做了什么、哪项任务不得不等待,以及修理工作是否按时完成。

从单一共享瓶颈开始

一座虚构的山脊中继站配有风暴百叶窗,其装卸平台旁放着一个货箱
建造一个小型站点,并列出简短的可见任务清单。共享工人会让任务顺序变得至关重要。

Ludeon Studios 将 RimWorld 描述为一款科幻殖民地模拟游戏,玩家在其中管理殖民者及其需求。该工作室自己的教程资料也提到了可配置的工作优先级。对于原创原型,可以借鉴竞争工作的广泛概念,并精确定义你的船员如何领取任务。

在 Tern Ridge Relay,Mira 和 Sol 初始状态为空闲。只有 Mira 可以执行 Repair 或 Filter。两者都可以执行 Haul。当 tick one 开始时,所有任务均可用。Shutter 必须在 tick two 结束前修复完毕。站点初始拥有 5 Air(一个抽象的游戏计数器),并在每个 tick 结束时消耗 1 Air。

让调度规则可见

任务符合条件的船员持续时间完成效果
修复舱门米拉2 回合百叶窗已关闭。截止时间为第 2 个 tick 结束。
更换过滤器米拉1 个 tick添加 2 空气。
搬运板条箱Mira 或 Sol1 个 tick标记板条箱已送达。
一个虚构的工作台展示了百叶窗、过滤器和板条箱各自独立的任务标记
在文本中保持任务优先级、资格条件和当前分配的可读性。该工作台用于说明这三个相互竞争的任务。

在每个 tick,保留带有已分配人员的有效任务。将待处理任务按数值优先级升序排序,若优先级相同,则按任务 ID 字母顺序排序。按 Mira、Sol 的顺序选取第一个空闲且符合条件的工人。如果某个任务没有空闲且符合条件的工人,记录原因并继续扫描。一个等待中的任务永远不应阻止符合条件的工人去执行另一个任务。

在一个 tick 结束时,将所有有效任务推进一步。应用完成效果,扣除空气成本,然后检查任何截止日期。在第 2 个 tick 完成的任务视为准时。在第 3 个 tick 完成的任务无法消除第 2 个 tick 已错过的截止日期。

从重置状态重放两个时间表

从等级修复 1、过滤 2 和搬运 3 开始。然后重置,并将过滤的等级更改为 0。此小型调度器接受 0 作为高于 1 的等级。在两次运行中保持相同的工人资格、任务时长和初始空气量。

帧基线分配基线空气优先过滤变体空气
1Mira 修复,Sol 搬运4Mira 过滤,Sol 搬运6
2Mira 按时完成修复。Sol 空闲。3Mira 开始修复。Sol 空闲。错过截止日期。5
3Mira 完成过滤。Sol 空闲。4Mira 延迟完成修复。Sol 空闲。4
一扇关闭的芥末色百叶窗,上面有一盏小绿灯,位于虚构的中继站
完成的百叶窗是一个视觉提示。由于关闭的百叶窗也可能表示逾期,因此请单独显示截止日期结果。

两个时间表都在 4 空气时结束。基线方案保护了截止日期,而变体方案则错过了它。要诊断错过原因,请查看任务开始刻度和对 Mira 的首次分配。将截止日期结果与当前任务状态分开,以便逾期完成仍然可见。

向 AI 提供调度器和验收跟踪记录

首先要求单步控制。每次推进一个刻度,便于将日志与测试数据匹配。

构建一个名为 Tern Ridge Relay 的原创浏览器殖民地模拟游戏。
按顺序使用两名船员:Mira 和 Sol。开始时两人均空闲,空气值为 5。
在刻度 1 时,提供三个任务:维修(等级 1,仅限 Mira,2 个刻度,截止于刻度 2 结束)、过滤(等级 2,仅限 Mira,1 个刻度,增加 2 空气)和搬运(等级 3,任一船员均可,1 个刻度,标记箱子已送达)。
保持活动任务状态,每个任务占用一名工人直至完成。每名工人最多持有一个任务。
待处理任务按等级升序排序,然后按任务 ID 字母顺序排序。选择第一个空闲且符合条件的工人。跳过不可用的任务并继续扫描。
在刻度结束时推进工作,应用完成效果,减去 1 空气,然后检查截止日期。
分别跟踪完成刻度和截止日期结果。当任务逾期完成时,保留错过的截止日期状态。
显示步骤按钮、任务等级、船员分配、资格条件和按时间顺序排列的日志。允许在运行前将过滤等级设为 0。
在 3 个刻度后停止。重置将恢复基础等级、空气值、两名船员和所有待处理任务。
基线方案每个刻度后的空气值:4, 3, 4。维修在刻度 2 完成。
仅将过滤等级更改为 0 时:空气值 6, 5, 4。维修错过刻度 2 并在刻度 3 完成。
使用原创的中继站视觉效果和可通过键盘访问的控制项。

仔细检查第一个基准 tick。尽管 Filter 之前已被扫描,Sol 仍必须执行 Haul。如果 Sol 保持空闲,请检查处理不合格任务的规则。如果基准在第二个 tick 完成 Repair 后仍错过截止日期,请检查完成效果是否在截止日期检查之前应用。

使用首次构建指南将测试用例适配到其他场景。在 SEELE AI Game Maker 中构建 Tern Ridge Relay 调度器,并在添加事件或新任务之前重放这两个调度方案。

常见问题

我应该从多少名工人和多少个任务开始?

从两名工人和三个任务开始,其中包括两个需要同一名工人的任务。这样可以测试真正的瓶颈和并行分配。在这个例子中,Sol 可以搬运箱子,而 Mira 处理排名最高的专家任务。

如果一名工人无法接受排名最高的任务怎么办?

评估是否有空闲人员具备该任务的资格。如果没有,继续扫描并记录跳过原因。灵活的团队成员仍可以接手其他符合条件的任务,这可以防止待办列表导致整个站点空闲。

为什么要分别记录完成状态和截止日期状态?

任务可能在到期 tick 之后完成。其完成状态可能为 true,而截止日期结果仍为未达成。保留这两个值及其 tick 编号,以便玩家理解迟到的维修,即使完成的站点看起来完全相同。

我应该如何测试任务优先级的变化?

重置站点,仅更改一个排名,并重复确切的 tick 序列。比较谁开始每个任务、何时完成以及哪些截止日期发生变化。还要检查最终的 Air 值,但使用完整调度方案来解释以相同数量结束的情况。

SEELE AI

将这份指南变成可玩的作品。

先明确创作需求,再在 Seele AI 工作区中迭代。

开始创作