别再瞎叫了!Rimworld Mod开发必懂的15个核心术语(从Thing到Gizmo)
2026/6/10 5:20:03 网站建设 项目流程

Rimworld Mod开发术语全解:从Thing到Gizmo的实战指南

当你第一次打开Rimworld的Mod开发文档时,满屏的Thing、Pawn、Verb、Gizmo等术语可能会让你感到困惑。这些看似简单的英文单词在游戏开发语境下有着特定的含义,理解它们是你成为合格Mod开发者的第一步。本文将带你深入解析15个核心术语,并通过实际代码示例展示它们在游戏中的具体应用。

1. 基础对象类术语

1.1 Thing:万物起源

在Rimworld的世界里,Thing是所有游戏对象的基类。你可以把它想象成一个"万能容器",游戏中的一切几乎都继承自它。从地上的石头到你的殖民者,从建筑物到空气中的子弹,都是Thing的派生类。

// 典型的Thing定义示例 public class Thing { public ThingDef def; // 对象定义 public IntVec3 Position; // 位置坐标 public Map Map; // 所在地图 // ...其他基础属性和方法 }

Thing的几个关键特性:

  • 都有明确的坐标位置
  • 都可以被渲染到游戏画面中
  • 都可以被保存和加载

1.2 Pawn:有生命的角色

Pawn代表游戏中所有有意识、能自主行动的实体。这包括你的殖民者、野生动物、敌对袭击者,甚至是机械族单位。Pawn是Thing的子类,但增加了许多复杂的行为系统。

注意:Pawn的健康系统(Hediff)、装备系统、技能系统(Skill)等都是Mod开发中经常需要修改的部分

// 获取当前地图上所有人类Pawn的简单示例 List<Pawn> humanPawns = Find.CurrentMap.mapPawns.AllPawns .Where(p => p.RaceProps.Humanlike) .ToList();

1.3 Item与Building:静态对象的区分

ItemBuilding都是Thing的子类,但它们代表了完全不同的游戏概念:

特性ItemBuilding
可移动性可被拾取、搬运固定位置,需拆除
交互方式装备、使用、消耗工作、居住、防御
典型例子武器、食物、原材料床铺、工作台、炮塔

2. 行为与交互术语

2.1 Verb:基础动作单元

Verb是Rimworld中最基础的行为单位。无论是殖民者挥动武器,还是炮塔发射子弹,背后都是一个Verb在执行。理解Verb的工作原理对创建自定义武器或能力至关重要。

// 自定义Verb的简单实现 public class Verb_ShootCustom : Verb_LaunchProjectile { protected override bool TryCastShot() { // 自定义射击逻辑 if (!base.TryCastShot()) return false; // 添加额外效果 MoteMaker.MakeStaticMote( this.currentTarget.Cell, this.caster.Map, ThingDefOf.Mote_ShotFlash, 1f); return true; } }

2.2 Job:任务系统核心

Job系统驱动着Pawn的所有行为。当你的殖民者去采矿、吃饭或战斗时,他们都在执行特定的Job。Mod开发中经常需要创建自定义Job来实现新的行为模式。

Job执行的基本流程:

  1. JobGiver决定Pawn应该做什么
  2. JobDriver包含具体的执行逻辑
  3. Toil定义Job中的各个步骤

2.3 Recipe:制作蓝图

Recipe定义了工作台上的制作配方。每个Recipe指定了所需的材料、工作时间、技能要求和产出结果。添加新的制作配方是Mod开发中最常见的需求之一。

<!-- 典型的RecipeDef XML定义 --> <RecipeDef ParentName="MakeBase"> <defName>MakeSteelKnife</defName> <label>制作钢制匕首</label> <workAmount>4000</workAmount> <workSkill>Smithing</workSkill> <ingredients> <li> <filter> <thingDefs> <li>Steel</li> </thingDefs> </filter> <count>30</count> </li> </ingredients> <products> <SteelKnife>1</SteelKnife> </products> </RecipeDef>

3. 界面与效果术语

3.1 Gizmo:交互入口

Gizmo是游戏中最直接的交互界面元素。当你选中一个Pawn或建筑时,底部出现的那些按钮就是Gizmo。创建自定义Gizmo可以让玩家与你的Mod内容互动。

// 创建自定义Gizmo的示例 public override IEnumerable<Gizmo> GetGizmos() { foreach (Gizmo gizmo in base.GetGizmos()) { yield return gizmo; } yield return new Command_Action { defaultLabel = "特殊能力", icon = ContentFinder<Texture2D>.Get("UI/Commands/Ability"), action = delegate { // 执行自定义逻辑 Messages.Message("能力已激活!", MessageTypeDefOf.PositiveEvent); } }; }

3.2 Fleck:视觉特效

Fleck系统负责处理游戏中的临时视觉特效,如火花、烟雾、血迹等。与Thing不同,Fleck纯粹是视觉效果,不会影响游戏逻辑。

常见Fleck类型:

  • 粒子效果(火花、烟雾)
  • 临时贴图(血迹、弹痕)
  • 屏幕特效(闪光、冲击波)

3.3 Hediff:健康状态

Hediff系统管理所有与健康相关的状态,包括伤口、疾病、植入物和药物效果等。创建自定义Hediff是实现新医疗机制或特殊能力的基础。

// 自定义Hediff的简单示例 public class Hediff_CustomRegeneration : HediffWithComps { public override void Tick() { base.Tick(); if (pawn.IsHashIntervalTick(60)) { // 每60ticks执行一次 HealthUtility.AdjustSeverity(pawn, HediffDefOf.Healing, 0.01f); } } }

4. 高级系统术语

4.1 Stat:属性系统

Stat系统负责计算游戏中的各种数值属性。从移动速度到武器伤害,从工作速度到交易价格,几乎所有的数值计算都通过Stat系统完成。

修改Stat的几种方式:

  1. 通过Hediff影响特定Stat
  2. 使用StatModifier在装备上
  3. 直接覆盖StatWorker的计算逻辑
// 自定义StatWorker示例 public class StatWorker_Custom : StatWorker { public override float GetValueUnfinalized(StatRequest req, bool applyPostProcess = true) { float baseValue = base.GetValueUnfinalized(req, applyPostProcess); if (req.Thing is Pawn pawn) { return baseValue * pawn.health.capacities.GetLevel(PawnCapacityDefOf.Moving); } return baseValue; } }

4.2 Ability:能力系统

Ability代表Pawn可以主动使用的特殊能力,如灵能或文化能力。与Verb不同,Ability通常有冷却时间、资源消耗等更复杂的机制。

创建自定义Ability的关键步骤:

  1. 定义AbilityDef
  2. 实现Ability的逻辑
  3. 添加对应的Gizmo
  4. 处理冷却和资源消耗

4.3 Projectile:弹道系统

Projectile处理所有抛射物的飞行逻辑和命中效果。从简单的子弹到复杂的导弹,都是通过扩展Projectile类实现的。

// 自定义Projectile示例 public class Projectile_Custom : Projectile { protected override void Impact(Thing hitThing) { base.Impact(hitThing); if (hitThing != null) { // 对命中目标施加特殊效果 hitThing.TryAttachFire(0.3f); } // 创建爆炸效果 GenExplosion.DoExplosion( this.Position, this.Map, 1.9f, DamageDefOf.Bomb, this.launcher); } }

理解这些核心术语只是Rimworld Mod开发的第一步。在实际开发中,你会发现这些系统之间有着复杂的交互关系。比如一个自定义武器可能涉及ThingDef定义、Verb实现、Projectile飞行逻辑、Stat计算和Gizmo交互等多个方面。最好的学习方式是在理解这些概念的基础上,动手创建简单的Mod,逐步探索各个系统之间的关联。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询