UDN
Search public documentation:

MOBAKitSpellsKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > UDK 젬 > MOBA 스타터 키트 > 스펠

MOBA 스타터 키트 - 스펠


문서 변경내역: James Tan 작성. 홍성진 번역. UDK 2012년 5월 버전으로 최종 테스팅.

개요


스펠이란 플레이어가 크립, 영웅, 타워, 월드와 상호작용하는 방편입니다. 종종 여러가지 일들이 벌어지며, 여러가지 다양한 방법으로 구성 가능합니다. 스펠의 종류는 조준형, 수동형, 단순형, 토글형, 총 네 가지로, 대부분 게임에서의 스펠 유형 대부분을 나타냅니다. 스펠이란 스킬이나 기술과 동의어라 보면 됩니다.

조준형 스펠


MOBAKitAimingSpell.jpg

조준형 스펠은 플레이어의 입력을 추가로 요하는 스펠입니다. 조준형 스펠은 종종 대상이나 범위를 지정해야 하는 스펠에 사용됩니다. 이를 통해 게임 디자이너는 크립, 영웅, 타워, 월드 일정 범위에만 영향을 끼치는 스펠을 만들 수 있습니다.

수동형 스펠


MOBAKitPassiveSpell.jpg

수동형 스펠이란 일정한 조건이 충족되면 항상 발동되는 스펠입니다. 종종 범위형 버프나 디버프를 만드는 데 사용됩니다.

단순형 스펠


단순형 스펠이란 플레이어가 발동시키면 어떤 일이 발생하는 스펠입니다. 예를 들면 일회용 무기같은 것에 사용할 수 있습니다.

토글형 스펠


토글형 스펠이란 플레이어가 껐다 켰다 할 수 있는 스펠을 말합니다. 스펠을 켤 때나 끌 때, 또는 켜진 상태에서 무언가를 발동시킬 수 있습니다. 예를 들면 스펠을 소지한 영웅에게는 디버프를, 다른 플레이어에게는 임시 버프를 생성할 수 있습니다.

UDKMOBASpell


UDKMOBASpell 은 쿨 다운(재사용 대기시간), 스펠 사용을 위한 범용 인터페이스, 스펠에 데한 데이터 저장과 같은 면을 다루는 유틸리티 클래스입니다. 참고로 스펠을 '활성화'(activate)시키면 애니메이션을 시작시킵니다. '활성화 시간'(activation time)이 지나면 스펠을 '시전'(cast)하여, 실제 피해를 입히거나 프로젝타일을 스폰시키거나 등의 작업을 합니다. 그런 다음 되감는 애니메이션이 있을 수 있습니다. '시전' 이후 다른 명령을 예약할 수 있기도 합니다.

  1. 플레이어가 스펠 사용을 결정합니다.
  2. 플레이어가 스펠을 조준할 수도 있습니다.
  3. 스펠이 활성화되고, 이펙트가 스폰되고, 애니메이션이 시작됩니다.
  4. 활성화 시간이 지납니다. 채널링(정신집중형) 스펠의 경우는 0 초입니다.
  5. 스펠이 시전되고, 피해를 입히고, 파티클이 스폰되고, 애니메이션을 되감습니다.
  6. 시전 시간이 지납니다. 채널링 스펠이라면 중단 가능합니다.

함수

  • ReplicatedEvent() - RepNotify 플랙이 붙은 변수가 클라이언트에 리플리케이트되면 호출됩니다. 언제 클라이언트가 스펠을 초기화시키고 이펙트를 재생해야 할지, 언제 스펠이 활성화되고 시전되는지를 잡아내는 데 사용됩니다.
  • ClientSetOwner() - 서버에서 Owner 를 전달하는 클라이언트로의 리모트 프로시저 콜입니다.
  • Initialize() - 스펠을 초기화시켜야 할 때 호출됩니다. 이 함수는 이 스펠을 소유하는 폰을 캐시하며, 서브클래스에서는 다른 것도 캐시할 수 있도록 합니다.
  • SendPlayerMessage() - 스펠이 로컬 플레이어에게 일종의 메시지를 전해야 할 때 호출됩니다. 플레이어에게 마나가 충분치 않다고 한다던가 스펠 준비가 안됐다던가 등입니다.
  • CanCast() - 스펠을 시전할 수 있으면 참을 반환합니다.
  • GetManaCost() - 스펠의 현재 마나 비용을 반환합니다.
  • GetActivationTime() - 스펠의 현재 활성화 시간을 반환합니다.
  • GetCooldownTime() - 스펠의 현재 쿨 다운 시간을 반환합니다.
  • Activate() - 스펠을 활성화시킵니다.
  • SetTargetsFromAim() - 입력 조준 위치와 방향, 스펠 타겟 방식에 따라 대상을 설정합니다.
  • ActivateEffects() - 스펠이 활성화되면 호출됩니다.
  • Cast() - 스펠을 시전합니다.
  • PerformCast() - 스펠의 상호작용 로직을 처리합니다. 스펠은 이 클래스를 확장하여 자신의 내용을 구현합니다.
  • CastEffects() - 스펠이 시전되었을 때 호출됩니다.
  • CooldownTimer() - 쿨 다운 타이머가 트리거되었을 때 호출됩니다.
  • AdjustDamage() - 폰 오너에게 적용하기 전 피해량을 조정합니다. 모든 스펠과 아이템에 대한 반복처리를 통해 피해량을 조정합니다.

변수

  • Spell
    • IconName - UI 의 스펠 아이콘에 사용할 텍스처 이름입니다. 아이콘 GFx 무비 클립 내 프레임 이름에 일치해야 합니다.
    • MaxLevel - 스펠 업그레이드 가능 최대 레벨입니다.
    • ManaCost - 이 스펠의 활성화 능력을 사용하는 데 드는 마나 비용입니다. 이 배열 인덱스에는 스펠 레벨이 사용됩니다.
    • HasActive - 이 스펠에 활성화 능력이 있는지 입니다. 보통 수동형 스펠에 대해서는 거짓으로 설정됩니다.
    • AimingType - 사용자가 발사 위치를 선택해야 하는 스펠인지 입니다.
  • Aim
    • DecalMaterial - PC 에서만 사용되는 데칼 머티리얼입니다. 현재 플레이어가 이 스펠을 조준중인 곳을 나타내는 데 사용됩니다.
    • DecalSize - 데칼이 시각적인 타게팅 마커로 사용될 때의 크기입니다.
  • Active
    • ActivatingSoundCue - 스펠을 활성화시킬 때 재생할 소리입니다.
    • ActivatingParticleTemplate - 스펠을 활성화시킬 떄 인스턴싱할 파티클 이펙트입니다.
    • CastingSoundCue - 스펠을 시전할 때 재생할 소리입니다.
    • CastingParticleTemplate - 스펠을 시전할 때 인스턴싱할 파티클 이펙트입니다.
    • CooldownTime - 쿨다운 시간입니다. 이 스펠을 시전한 이후 다시 사용할 수 있게 되기까지 걸리는 시간입니다. 이 배열의 인덱스로는 스펠 레벨이 사용됩니다.
    • ActivationTime - 기술이 발동되고서 피해 등의 효과가 실제로 발휘되기까지 걸리는 (초 단위) 기간입니다. 이 배열 인덱스로는 스펠 레벨이 사용됩니다.
    • AttackType - 주어진 프로젝타일이나 데미지에 사용할 공격 유형입니다.

새로운 스펠 만드는 방법


새로운 스펠은 먼저 UDKMOBASpell 에서 파생되는 클래스를 새로 만드는 것으로 시작합니다. 여기에서 일반적인 도입점은 PerformCast() 를 사용하는 것입니다. 전혀 다른 유형의 스펠이라서 추가적인 변경이 필요하다면 Cathode 나 DemoGuy 예제를 살펴보는 것도 좋습니다.

MOBAKitSpellCreateArchetype.jpg

새로운 스펠 클래스를 생성한 이후, 언리얼 에디터를 사용하여 그에 대한 아키타입을 생성합니다.

MOBAKitSpellSetupArchetype.jpg

생성하고 나면, 에디터에 노출된 변수를 조정할 수 있습니다.

MOBAKitSpellAssignSpell.jpg

마지막으로 영웅이 그 스펠을 가지고 시작할 수 있도록 UDKMOBAHero 아키타입에 스펠 아키타입을 할당합니다.