비플레이어 캐릭터 만들기
영웅이 아닌 유닛을 "비플레이어 캐릭터(이하 NPC)로 칭합니다. NPC는 짐꾼, 소환한 유닛, 와드 등이 있습니다. 이러한 NPC에는 영웅을 위한 아이템과 다른 요건이 적용됩니다. 영웅 아이템은 이미 존재하는 관절, 부착물, 효과, 선택 부피, 애니메이션 계층에 따르면 됩니다. NPC는 위 사항 모두가 각각의 필요와 목표에 맞춰 조정되어야 합니다. 이미 출시된 여러 모델을 참고하여 아래 사항들을 어떻게 만들었는지 알아볼 수 있습니다.

NPC는 사실상 영웅 아이템보다 좀 더 기술적인 면이 있습니다. 아래 각 범주에 있는 링크를 클릭하면 소스 개발자 위키의 모델링 항목에서 더 많은 정보를 확인하실 수 있습니다.

당나귀 짐꾼 모델 (6.1mb) 다운로드

와드 모델 (675k) 다운로드


일반 NPC 요건

게임 안에는 경제 아이템으로 대체될 수 있는 소환 유닛이 많이 있으며, 이는 여러 가지로 다양하게 복잡합니다. 야수지배자의 멧돼지를 대체하는 물체는 가면무사의 치유 와드와 다르게 공격 애니메이션이 필요하지만, 그 외에는 요건의 기본 세트와 동일합니다. NPC가 제출 절차를 통과하려면 다음 요건을 충족해야 합니다.
  • NPC는 반드시 LoD 2개 보유
    LoD0은 초상화에 표시되며 폴리곤 3,500개로 제한
    LoD1은 다른 곳 어디나 사용되며 폴리곤 3,000개 이하로 제한
  • 재료의 크기는 512H x 512W로 제한되며, 구성 요소는 영웅 아이템과 같은 규칙 적용
  • NPC 뼈대는 52개로 제한
  • 적절한 효과와 선택 피격 범위가 있어야 함
  • NPC는 특정 "부착물" 지점이 필요함
  • NPC는 애니메이션을 보유해야 하며, 그 수와 유형은 NPC 유형에 따라 다름
    더 자세한 정보는 소스 개발자 위키의 모델링 항목에서 확인하실 수 있습니다.

해골n

모든 NPC는 바탕이 되는 뼈대가 한 개 이상 있어야 합니다. 이 뼈대는 지오메트리를 덧대는 대상일 뿐만 아니라, 부착물과 피격 범위의 닻 역할을 합니다. 어쨌거나 추가 뼈대가 필요하거나 더 사용하고 싶어 할 가능성이 높으니, 52개까지 허용된다는 점만 기억해 주세요.

부착 지점

부착은 해골의 뼈와 관련하여 고정 위치와 회전이 있는 지점입니다. 부착 지점을 사용하여 입자 효과에 어떻게 동작해야 하는지 정보를 전달합니다. 부착의 이름과 숫자는 NPC 행동에 따라 다릅니다. 본 목록은 필요한 부착 지점과 언제 사용하는지를 나타냅니다. 해당 이름은 특정하게 적용되며 대소문자를 구별합니다.
"attach_hitloc"
모든 NPC 아이템에 필요한 부착입니다. 'hitloc'은 '타격 위치'를 뜻하는데, 이는 투사체 효과가 날아가야 하는 곳을 지정하는 입자 시스템으로 사용됩니다. 생물체나, 다른 유기체 npc에는 'attach_hitloc'의 최적 위치가 가슴 부위의 뼈에 부착됩니다. 근간에 놓으면, 보통 가슴 부위에 놓이는데 그 결과 투사체가 지면을 향해 낮게 날아가며 효과가 그다지 좋게 보이지 않습니다. 무기체 모델은 가장 적당한 위치를 선택합니다. 'attach_hitloc'은 절대로 지면에 놓이지 않아야 합니다.

"attach_attack1"
공격하거나 주문을 시전할 수 있는 NPC에 필요한 부착 사항입니다. 이를 사용하여 투사체 효과가 만들어지거나 발사가 시작되는 위치를 결정하는데, 근접 유닛에게도 사용됩니다. 원거리 투사체 공격을 하는 유닛이라면, 효과가 시작되기를 원하는 위치에 부착을 놓습니다. 근접 유닛은 유닛이 공격하는 '손' 안에 놓습니다.

"attach_eye_l" and "attach_eye_r"
짐꾼에게만 필요한 부착입니다. 짐꾼의 '눈'이 자리할 위치를 표시합니다. 'attach_eye_r'은 짐꾼의 오른쪽 눈을, 'eye_l'은 왼쪽 눈을 표시합니다. 반드시 X축이 눈이 향하는 방향을 가리키게 해야 합니다.
더 자세한 정보는 소스 개발자 위키의 부착 항목에서 확인하실 수 있습니다.

타격 상자

타격 상자는 보이지 않는 직육면체로 뼈에 지정됩니다. 도타 2에서는 입자 효과를 위해서는 물론 캐릭터의 선택 구역을 규정하는 데 사용됩니다.

효과에 사용된 타격 상자는 NPC의 지오메트리를 약간 넉넉하게 여유를 두고 둘러싸야 합니다. 범위상자가 너무 작거나 딱 맞아떨어지면, 효과가 거의 보이지 않게 가려집니다. 효과 타격 상자도 다른 게임플레이 효과 유형에 사용되는 별개의 타격상자 세트로 분할되어야 합니다. 별개의 타격상자 세트는 다른 세트를 배제하며 만들지 않습니다. 예를 들면 머리 지오메트리 주위에는 기본 및 머리 타격 상자 두 가지가 모두 있어야 합니다. 필요한 세트 이름은 변경할 수 없으며 다음과 같습니다.
기본
기본 타격 상자는 영웅이 유닛에게 시전할 수 있는 효과 대부분을 나타내는 데 사용됩니다. NPC에 있넌 거의 모든 뼈는 해당 뼈와 관련된 지오메트리 주위에 '기본' 타격 상자가 부착되어 있어야 합니다. 유일하게 뼈에 기본 타격 상자가 없는 경우는 해당 뼈의 거죽을 이루는 지오메트리가 다른 연결 부위의 타격 상자로 쉽게 덮일 수 있을 때뿐입니다. 이러한 예시로 영웅의 척추를 들 수 있습니다. 뼈가 작고 서로 가까이 붙어 있으며 각각 크게 회전하지 않습니다. 그래서 4개가 있더라도 어떤 방향의 지오메트리든 형성된 형태를 나타내는 타격 상자 2개만으로 영웅의 상반신을 처리할 수 있습니다.

머리
머리 타격 상자는 머리를 덮어야 합니다. 그러나 NPC의 머리 지오메트리에 주 요소를 많이 벗어나는 요소(예: 긴 뿔)가 있다면, 해당 요소가 타격 상자를 넘어가게 해도 됩니다.


NPC의 손 주위를 감싸며 공격 속도와 관련된 효과에 사용됩니다.


발을 감싸야 하며 이동 속도와 관련된 효과에 사용됩니다.

무기
NPC에 무기가 있다면, 그 주위를 본 세트 이름의 타격 상자로 둘러싸야 합니다.

select_low
본 타격 상자는 NPC의 근본 뼈와 결부되어야 합니다. 'select_low'는 낮은 품질의 선택 사항에 쓰이는 타격 상자를 말합니다. 이로써 플레이어가 다른 유닛과 가까이 있지 않은 유닛을 선택할 때 사용할 수 있는 범위를 규정합니다. 본 단일 상자는 전체 모델을 폭넓게 아울러야 합니다. 약 전체 모델 폭의 1/2가 더 넓습니다. 그래도 만드는 높이를 신중히 규정해야 합니다. 그렇지 않으면 다른 모델과 겹치면서 바람직하지 못한 결과가 생성됩니다. 보통 이 특정 상자의 윗부분을 지오메트리의 진짜 높이보다 약간 낮게 잡는 것이 안전합니다.

select_high
이 세트의 모든 타격 상자는 NPC의 근본 뼈와 결속되어야 합니다. 그러나 이번에는 모델에 아주 딱 맞춰 만들어야 하며 주 '상체' 영역 안에 들어가야 합니다. 이 상자는 모델의 중심 바로 아래에 맞아야 하며 2 유닛 'select_low' 상자가 겹칠 때 사용됩니다. 이렇게 해서 둘 이상의 유닛이 아주 가까이 붙어 근접 전투를 벌일 때 플레이어가 그 중심부를 클릭하면 반드시 원하는 유닛을 선택되도록 할 수 있습니다.

맞춤
맞춤 타격 상자는 고유 효과를 만들고 해당 효과를 NPC의 일정 영역에 부여하고자 할 때 사용합니다.
더 자세한 정보는 소스 개발자 위키의 타격 상자(Hitboxes) 항목에서 확인하실 수 있습니다.

애니메이션

NPC는 다음 각각의 애니메이션을 1개 이상 포함해야 합니다. 본 범주에서는 몇 가지로든 변형할 수 있습니다. 다음은 애니메이션 시퀀스에 '액티비티(activity)' 이름으로 태그를 지정해야 하는 사항의 목록입니다. 작성한 시퀀스의 이름은 원하는 대로 지정할 수 있지만, 관련된 액티비티 이름이 연결되어 있어야 합니다. 해당 애니메이션은 다음과 같습니다.
ACT_DOTA_SPAWN
생성 애니메이션은 NPC가 처음 생성될 때 재생됩니다. 해당 애니메이션은 길이가 짧아야 하며, 최대 30프레임까지 허용됩니다. 이러한 사항이 요구되는 이유는, 이후 NPC에게 명령을 내리면 해당 동작의 애니메이션으로 생성이 무시될 수 있기 때문입니다. 따라서, 3초 정도의 땅에서 일어나는 NPC 애니메이션은 즉시 중단됩니다.

ACT_DOTA_IDLE
NPC가 무언가를 하려고 기다리는 대기 상태일 때 재생되는 액티비티입니다.

ACT_DOTA_RUN
이 액티비티는 NPC가 2 위치 사이를 이동할 때 사용하는 애니메이션에 쓰입니다. 애니메이션은 30프레임마다 이동 속도에 해당하는 속도로 전방을 향해 이동합니다. 그다음 전방 이동 축을 따라 '모션 추출'되어야 합니다. 모션 추출에 관해 더 자세한 사항은 개발자 Wiki를 참조하시기 바랍니다.

ACT_DOTA_DIE
NPC가 죽을 때 사용되는 애니메이션입니다.

ACT_DOTA_CAPTURE
초상화 프레임에서 재생되는 애니메이션입니다. Valve에서는 보통 대기 애니메이션으로 시작하지만, 작은 초상화 프레임에는 대기 애니메이션 움직임이 너무 과할 수 있습니다. 그래서 대기 애니메이션을 부드럽게 한 다음 액티비티 가중치를 적게 둔 대체 애니메이션을 만들어 더 낮은 빈도로 재생되게 합니다. 이렇게 짧아진 대체 애니메이션은 초상화 느낌을 막고 덜 정적으로 보이도록 하는 데 도움이 됩니다.

대체하는 NPC에 따라, 다음 해당 유형의 다음과 같은 레이블이 붙은 애니메이션이 필요할 수도 있습니다.
ACT_DOTA_ATTACK
NPC가 다른 유닛을 공격한다면, 다음 사항이 한 가지 이상 필요합니다.

ACT_DOTA_CAST_ABILITY_#
NPC에 시전할 수 있는 활성 능력이 있다면, 이 액티비티로 레이블을 붙여야 합니다. '#'은 관련 능력의 정수로 대체해야 합니다. 따라서, 게임 안에서 유닛을 보면, #는 해당 능력을 의미하며, 왼쪽부터 1에서 시작합니다.

다음 애니메이션도 추가할 수 있는데, 필수 사항은 아닙니다.
ACT_DOTA_IDLE_RARE
NPC가 한동안 명령 없이 대기 상태로 앉아 있을 때 무작위로 재생되는 애니메이션입니다.
소스 개발자 위키(Source Developer Wiki)의 $sequence 항목에서 더 자세한 사항을 참조하시기 바랍니다.

짐꾼

상기 사항도 모두 짐꾼 제작에 적용되지만, 짐꾼에는 추가 요건이 몇 가지 있습니다.

먼저 짐꾼은 보행 및 비행 모델 두 가지를 모두 제출해야 합니다. 두 모델은 동일한 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\에 속하며 모델과 똑같은 이름이어야 함

짐꾼 zip 파일 안에는 작업을 시작할 때 도움이 될 .qc 파일 예시가 담겨 있습니다. .qc 파일 안에는 담긴 내용을 설명하는 주석(시작 부분에 // 표시가 된 줄)이 많이 달려 있으며, .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\에 속하며 모델과 똑같은 이름이어야 함

와드 zip 파일 안에는 작업을 시작할 때 도움이 될 .qc 파일 예시가 담겨 있습니다. .qc 파일 안에는 담긴 내용을 설명하는 주석(시작 부분에 // 표시가 된 줄)이 많이 달려 있으며, .qc 파일에 관한 소스 개발자 위키 문서를 확인하여 더 자세한 정보를 알아볼 수도 있습니다.