TerrariaPyramidJudge 是一个独立的 Terraria 金字塔种子判断/查找工具。
根据一份上千世界样本集的实测,该程序找塔成功率约为 95%,每个种子平均耗时约 50 ms。
直接把 Terraria 世界 seed 写在命令后面即可:
dotnet run -- 540278984 1092653535默认文本输出示例:
540278984 Complete 金字塔数量=1 物品=沙暴 塔=1:mask=1(沙暴)@(2534,314) durationMs=677
字段含义:
- 第一列:输入的世界 seed。
Complete:模拟完成。否则即表示运行出错。金字塔数量:模拟中保留下来的有效金字塔数量。物品:本 seed 中所有金字塔出现过的目标物品汇总。塔:逐塔摘要,格式是序号:mask=物品mask(中文物品)@(箱子X,箱子Y)。durationMs:本 seed 的模拟耗时。
也可以从标准输入读取 seed:
Get-Content .\seeds.txt | dotnet run -- --stdinJSON 会包含每座塔的坐标、itemMask、中文物品摘要和完整 loot summary。
查找模式用于“从任意随机数种子开始,生成 Terraria 可见 seed 序列,然后筛出前
K 个满足条件的世界 seed”。
dotnet run -- search <rngSeed> <K> N=<N> <mask1> [mask2 ...]mask:
1 = 沙暴瓶
2 = 飞毯
4 = 法老套
3 = 沙暴瓶或飞毯
5 = 沙暴瓶或法老套
6 = 飞毯或法老套
7 = 沙暴瓶或飞毯或法老套
例子:
dotnet run -- search 12345 10 N=3 7 7 7含义:
12345是随机数发生器种子,不是 Terraria 世界 seed。10表示找前 10 个命中的世界 seed。N=3表示至少 3 个金字塔。7 7 7表示需要 3 座不同的塔分别命中 mask7,也就是每座塔含任意目标物品即可。
例如:
dotnet run -- search 12345 5 N=2 1 2这表示至少 2 个金字塔,并且需要一座沙暴塔和一座飞毯塔。
常用查找参数:
--rng-seed <number> 随机数发生器种子。
-k, --take <number> 找几个命中结果。
-n, --min-pyramids <number> 至少几个金字塔。
--masks <m1,m2,...> 每座塔的物品 mask 条件。
--max-check <number> 最多检查多少个生成出来的世界 seed。
--json 输出 JSON。
如果 N 大于 mask 数量,缺少的 mask 会自动补成 7。例如 N=3 1
等价于要求 1 7 7。
核心入口在:
WorldGeneration/PyramidSeedPreScreen.cs
WorldGeneration/Simulation/
使用复刻的 UnifiedRandom 和世界生成 pass,执行到官方 Pyramids pass。
- 目前只支持小世界、猩红、无特殊/秘密种子。
- 腐化世界适配尚未完成,
--evil corruption目前会返回UnsupportedScope。 - 中世界和大世界已有参数入口,但模拟范围尚未准备好。
- 马上完成腐化世界适配。
- 准备中世界和大世界的生成模拟范围。
本程序提供的查找选项是有限的。但是更复杂的筛选可以轻松通过 AI 或脚本围绕这个核心来定制。
你可以很轻松地做这些改造:
- 限制世界 seed 本身的范围或格式。
- 限制某座塔的
X/Y坐标。 - 限制 seed 对应的第一随机数、第二随机数或某段 RNG 序列。
- 只接受双塔都在某个区域内的 seed。
- 把搜索拆成多进程/多机器跑。
- 把 JSON 输出接到 PowerShell、Python、C# 或数据库里继续过滤。