创建NPC(非英雄角色)
“非玩家角色”(以下简称NPC)泛指所有游戏中除了英雄以外的单位。NPC的例子有信使、召唤单位和守卫。对于这些单位的规格要求与针对英雄进行设计的物品有所区别。英雄物品可以依托于现有的关节、附着点、选择体积还有动作等系统。而NPC就必须从头开始进行制作。我们建议您参照我们已经加入游戏的模型来了解NPC的制作方法。

由于NPC相比英雄物品的制作难度更高,每个类别在起源开发者维基的建模板块都有一个单独的链接,提供更加详细的信息。

下载小驴信使模型 (6.1MB)

下载守卫模型(675KB)


NPC综合规格要求

游戏中有多种召唤单位可以使用饰品进行替换,他们的复杂程度各有不同。像兽王的豪猪饰品就与主宰的治疗守卫不同,需要制作成套的动作。不过除此之外,他们的基础规格要求是相同的。想要成功在创意工坊内提交NPC就必须满足以下要求:
  • NPC必须有2个LoD文件
    LoD0用于肖像框内的展示,不得超过3500个多边形
    LoD1用于游戏内其他用途,不得超过3000个多边形
  • 材质尺寸不得超过512H x 512W,其他要求与英雄饰品相同
  • NPC的骨骼不得超过52根
  • 他们的特效和选择碰撞体积必须适中
  • NPC必须指定模型的“附着点”
  • NPC必须拥有动作,种类和数量由NPC的类别决定。
    起源开发者维基的建模版块中有更加详细的信息。

骨骼

每个NPC都需要至少一根根骨,不仅用于让模型进行包裹,还将用于附着点和碰撞体积的固定。不过很有可能还会需要使用更多的骨骼,不过要记住,上限数量为52根。

附着点

一个附着点是骨骼中一根骨骼静态位置和旋转的点。我们使用附着点来实现粒子特效的行为。附着点的命名和数量根据NPC类型的不同而不同。以下是需要的附着点列表,以及用到附着点的场合。这些名称是特定的,必须分清场合。
“attach_hitloc”
这是每种NPC物品都需要的附着点。“hitloc”表示“命中部位(Hit Location)”,粒子特效系统会通过它来决定弹道效果到达的位置。对于生物或其他有生命的NPC,“attach_hitloc”最佳的部位就是胸部的骨骼。将其放在一般位于腰部的根骨会导致弹道飞行过低,效果不佳。对于非生物的模型,可以选择最合理的位置。“attach_hitloc”绝对不能直接放在地面上。

“attach_attack1”
这是可以攻击或施法的NPC需要的附着点。用于决定弹道效果创造和发射的地点,不过近战单位同样需要。如果单位拥有远程攻击弹道,可以将附着点放在想要出现效果的地方。对于近战单位,将其放在单位发动攻击的“手”中。

“attach_eye_l”和“attach_eye_r”
这些附着点只有信使需要。用于决定“信使”眼睛的位置。“attach_eye_r”标记信使的右眼,“eye_l”标记左眼。一定要确保X轴的方向与眼睛面对的方向一致。
可以前往Source开发者维基的相关板块获得更多关于附着点的信息。

碰撞方块

碰撞方块是指定给骨骼的隐形方块。在Dota 2中用于粒子特效以及定义角色的选定区域。

用于特效的碰撞方块应围绕NPC的模型,并且拥有多余的空间作为备用。如果太小或者刚好重合,大部分特效会无法显示。特效的碰撞方块需要分解成不同的方块组,用于不同类型的游戏特效。不同的方块组并不是互不相干。比如头部模型应该有默认和头部方块这两个方块组围绕。方块组的名称不可修改,具体如下:
default (默认)
默认的方块组用于呈现英雄对单位施放时的大部分特效。基本上NPC的每根骨骼都要有“默认”方块组环绕着模型的相应骨骼。唯一不需要默认方块组的情况是将其包裹的模型可以被另一个关节的方块组覆盖。这样的例子有英雄的脊柱部分。这些骨骼非常小,而且距离很近,相互之间也不旋转。所以尽管可以为躯干制作4个,我们只需要2个方块组就可以呈现模型组合的形状。

head(头部)
头部方块组需覆盖整个头部。不过如果NPC的头部模型中有部件是从主要部分中延伸出来的,比如长角,那么头部的方块组也应相应地进行延伸。

hands(手部)
这些围绕着NPC的手部,主要用于攻击速度相关的特效。

feet(足部)
这些应覆盖足部,用于移动速度相关的特效。

weapon(武器)
如果NPC拥有武器,需有一组方块组围绕它。

select_low
这一方块组应与NPC的根骨关联。“select_low”是指用于低精度的选择。主要是用于在不与其他任何其他单位贴近的情况下决定玩家可以将其选择的区域。这个方块应包围整个模型。宽度比模型宽1/2左右。不过要注意高度,过高可能会导致与其他模型发生重叠。通常这个方块的顶部比模型的真实高度低是没问题的。

select_high
这一组内所有方块也应与NPC的根骨绑定。这次需要非常贴合模型,覆盖在主“躯干”区域上。这一方块(组)应与模型中心正下方一致,在2个“select_low”方块重叠时使用。这样2个或多个单位在近距离战斗时就算相互之间距离很近,玩家还是点击其中央,选定想要的单位。

custom
自定义碰撞方块是用在创建自己的独特特效时指定在NPC上的区域。
可以前往Source开发者维基的相关板块获得更多关于碰撞方块的信息。

动作

NPC需要以下列出的动作,每种至少1个。列出的“动作”名称需要标到动作上。动作的命名不限;但是必须有相关的活动名称进行标记。所需动作有:
ACT_DOTA_SPAWN(出生)
出生动作是在NPC首次被创建时上演。这个动作应该较短,最多30帧。这是因为如果NPC在创建后马上收到指令,指令的动作会直接将其打断。所以NPC的出生动作若有3秒很容易出现中断。

ACT_DOTA_IDLE(原地)
这是NPC在原地待机时做出的任意动作。

ACT_DOTA_RUN(奔跑)
这是NPC在2个地点之间移动时使用的动作。这个动作应每30帧按照移动速度的比率前进一段距离。然后再沿着前进的轴“提取运动”。请查看开发者维基中关于提取运动的更多信息。

ACT_DOTA_DIE(死亡)
这是NPC阵亡时使用的动作

ACT_DOTA_CAPTURE(肖像)
这是在肖像框中上演的动作。我们起初都是使用原地动作,但是原地动作的幅度对于较小的肖像框来说往往过大,所以我们会将其弱化,再创建另外的动作,但是使用频率会比较低。这些较短的动作有助于消除肖像的感觉,使其不会太过静止。

根据制作的NPC种类,可能还需要以下类型的动作,标签如下:
ACT_DOTA_ATTACK(攻击)
如果NPC可以攻击其他单位,它就会需要至少一个动作。

ACT_DOTA_CAST_ABILITY_#(技能)
如果NPC拥有可以施放的主动技能,它就会需要这个动作。“#”应替换为关联技能对应的序数。这样在游戏内查看时,#就是从左往右第#个技能,最左边是1。

下列动作也可以选择性制作并添加,不过并非必需项:
ACT_DOTA_IDLE_RARE(罕见原地)
这个动作在NPC原地待机一段时间后随机上演。
可以前往Source开发者维基的相关板块获得更多关于动作的信息。

信使

上述内容在创建信使时同样有效,不过信使还有若干额外要求。

首先,提交时必须为步行和飞行两个模型。两个模型共用相同的512H x 512W贴图。步行信使的移动速度为每秒300单位。飞行版本的移速为350,但是使用飞行爆发后可以达到522。

步行信使的动作应非常直观,不过飞行版本除了死亡动作外应按照在地面上飞来构建动作。这一点是必要的,因为信使会在游戏内通过代码升高160单位。所以如果想让信使坠落到地面,死亡动作的结尾应使模型底部在原地动作开始的纵向轴处于-160单位。

飞行信使对于死亡时坠落至地面还有另一个要求 - 需要构建死亡的飞行信使沉入地面的动作。信使落地后会在地面上静止,在2秒内保持不动,然后在接下来的2秒内沉入地下。沉入地面的动作无法自动生成,因为信使死亡时也可以是往上空飞。

为了保证文件齐整,请不要弄乱我们的文件结构:
  • 模型源文件放在\\content\\dota\\models\\courier\\courier_name\\maya\\
  • 动作源文件放在\\content\\dota\\models\\courier\\courier_name\\maya\\animation\\
  • 导出模型文件放在\\content\\dota\\models\\courier\\courier_name\\smd\\
  • 导出动作文件放在\\content\\dota\\models\\courier\\courier_name\\smd\\animation\\
  • 编译后模型二进制文件位于\\game\\dota\\models\\courier\\courier_name\\
  • 材质源文件放在\\content\\dota\\materialsrc\\models\\courier_name\\
  • 编译后材质二进制文件和.vmt位于\\game\\dota\\materials\\models\\courier\\courier_name\\,并且文件名与模型保持一致

信使的压缩包文件中能找到.qc文件样本,可以用于着手制作。在.qc文件中有很多评注(以//为标记的文字),解释其中的内容,同时也可以查看Source开发者维基中.qc文件相关的文档。

守卫

守卫可以当作是非常简单的NPC。几何模型的预算为1500个三角形,需要若干动作,不过不需要最耗费时间的奔跑动作。

不过守卫需要多个贴图,一个用于侦察守卫,另一个用于岗哨守卫。.qc文件内可以找到相关的流程步骤。

为了保证文件齐整,请不要弄乱我们的文件结构:
  • 模型源文件放在\\content\\dota\\models\\items\\wards\\ward_name\\maya\\
  • 动作源文件放在\\content\\dota\\models\\items\\wards\\ward_name\\maya\\animation\\
  • 导出模型文件放在\\content\\dota\\models\\items\\wards\\ward_name\\smd\\
  • 导出动作文件放在\\content\\dota\\models\\items\\wards\\ward_name\\smd\\animation\\
  • 编译后模型二进制文件位于\\game\\dota\\models\\items\\wards\\ward_name\\
  • 材质源文件放在\\content\\dota\\materialsrc\\items\\wards\\ward_name\\
  • 编译后材质二进制文件和.vmt位于\\game\\dota\\materials\\models\\items\\wards\\ward_name\\,并且文件名与模型保持一致

守卫的压缩包文件中能找到.qc文件样本,可以用于着手制作。在.qc文件中有很多评注(以//为标记的文字),解释其中的内容,同时也可以查看Source开发者维基中.qc files相关的文档。