[워3에디터 강좌] 트리거 에디터의 시작

워크래프트3 월드 에디터에서 반드시 알아야할 주요 기능은 지형(Terrain) 에디터, 트리거(Trigger) 에디터, 사운드 에디터, 오브젝트(Object) 에디터 등의 4가지이다. 물론 이밖에도 캠페인 에디터와 AI 에디터 등이 있지만 몰라도 별로 상관 없으며 실제로도 그리 사용하지 않는 기능이다.

이 네가지 에디터 가운데에서 지형 에디터와 사운드 에디터는 기능도 그리 많지 않고 인터페이스만 봐도 어떻게 사용할지 쉽게 알 수 있는 구성이기 때문에 특별히 설명할 것이 없다. 그래서 이 두 에디터는 차후에 다루도록 하고 우선 트리거 에디터에 대해서 살펴보도록 하자.



트리거란?

트리거(Trigger)는 영어로 총기의 방아쇠를 뜻한다. 그래서 오작동이 아닌 이상 총은 방아쇠를 당겨야만 발사된다. 즉 방아쇠를 당기는 것이 원인이고 총알이 발사되는 것은 그에 따른 결과인 셈이다. 같은 이치로, 게임에서 트리거란 원인과 결과를 설정하여 레벨(level: 이 문장에서는 게임플레이가 이뤄지는 공간이라는 의미로 쓰였다) 안에서 기획의도에 맞는 사건과 현상이 일어나도록 설정한 것이다. 트리거는 비단 워크래프트3에서만 사용하는 것이 아니라 거의 모든 게임에서도 사용하는 개념이므로 확실히 이해하고 넘어가야만 한다.

트리거는 다음과 같은 세 가지 구성요소로 이루어진다.

  • 이벤트 Event : Ctrl + E
    이벤트는 게임 시스템이 인식할 수 있는 일련의 사건이나 현상이다. 특정 트리거에서 설정한 이벤트에 해당하는 일이 벌어지면 그 트리거는 가지고 있는 조건을 따져본다.
    예) 게임이 시작된 시점부터 특정 시간이 지난 경우, 어떤 유닛이 특정 구역에 들어서거나 나간 경우, 어떤 유닛이 어떤 명령을 받은 경우, 어떤 유닛이 공격 받거나 죽거나, 특정 스킬의 대상이 된 경우, 어떤 장치(오브젝트)가 파괴된 경우 등

  • 조건 Condition : Ctrl + D
    특정 트리거에서 설정한 이벤트가 발생하면 그 트리거는 설정해놓은 조건을 따져본다. 그래서 그 조건에 맞으면 액션에 설정해 놓은 것들을 실행한다.
    예) 이벤트를 발생시킨 유닛의 종류/소유주/레벨/상태 비교, 특정 유닛이 획득한 아이템의 종류/레벨 비교, 랜덤하게 추출한 값이 조건에 맞는지 비교 등

  • 액션 Action : Ctrl + R
    액션은 이벤트-조건에 부합하는 어떤 일이 벌어지면 실행할 사항들이다.
    예) 유닛 또는 오브젝트의 사운드/애니메이션 출력, 특정 장소에 유닛 또는 오브젝트 생성, 유닛에게 특정 명령 하달 등
자, 그러면 이와 같은 기초 지식을 바탕으로 아주 단순한 트리거를 한 번 짜보자. 나무로 둘러싸인 숲이 있는데, 플레이어의 유닛이 숲의 한 지점에 놓여진 보물상자에 접근하면 상자 뒤편 동굴에서 갑자기 몬스터가 등장하는 식의 레벨 구성이 필요한 경우 어떤 식으로 트리거를 설정해야 할까? 이와 같은 트리거의 이벤트/조건/액션은 다음과 같다.

  • 이벤트
    유닛이 보물상자에 접근한다

  • 조건
    접근한 유닛은 플레이어 소유의 유닛이어야 한다

  • 액션
    동굴 입구 지점에 지정한 몬스터를 생성한다
그러면 이 트리거를 트리거 에디터에서 직접 설정해 보자. 이 트리거의 예제맵을 다운 받은 다음 에디터로 맵을 열고 단축키 F4를 누르면 트리거 에디터창이 열린다. 그다음 트리거 에디터에서 단축키 Ctrl + T를 눌러 새로운 트리거를 생성시키자. 그러면 '이름없는 트리거 001'이라는 새로운 트리거가 생성될 것이다.
★ 예제맵 다운로드: TriggerEX_01.w3x

트리거 이름은 어떻게 하든 작동되는 것과 무관하지만 가급적 한눈에 어떤 트리거인지 알아보기 쉬운 이름으로 하는 것이 좋다. 참고로 트리거 이름을 지을때에는 프로그래밍 언어에서 일반적인 변수명 선언 규칙과 거의 같은 제약을 받는다. 그래서 알파벳 또는 숫자로만 가능하며 맨 앞글자는 반드시 알파벳 문자이어야만 한다. 트리거 이름은 띄어쓰기가 가능하니까 적절한 띄어쓰기와 대소문자 활용을 통해 가독성을 높여주는 버릇을 들이는 것이 좋다. (예) TreasureOpen MobSpawn
[팁] 이미 설정한 트리거 이름을 변경하고 싶다면 트리거 이름을 한 번 클릭한 다음 그대로 1-2초 정도 기다리면 된다.

트리거 이름을 지었다면 이제 본격적으로 트리거의 구성요소인 이벤트, 조건, 액션을 만들 차례다.





이벤트/조건/액션 설정

트리거를 생성했다면 트리거 에디터 우측 하단에 있는 '트리거 함수'창에  이벤트 조건 액션 목록이 만들어져 있을 것이다. 이 항목들을 우클릭해서 '새로운 이벤트/조건/액션 만들기'를 하거나 아니면 단축키를 눌러서 원하는 이벤트/조건/액션을 만들어 넣으면 된다.

우선 Ctrl + E를 눌러 새로운 이벤트를 만들자. 그다음 이벤트 종류 항목에서 '유닛'을 선택하고 세부 이벤트로는 '어떤 유닛이든 구역에 들어가면 작동'을 지정하자. 그러면 그 아래에 이벤트 텍스트로 '어떤 유닛이든 구역에 들어가면 작동합니다'라는 문장이 나타날 것이다. 그리고 이 상태에서는 [확인] 버튼이 비활성화되어 이벤트 만들기가 완료가 안되는데, 왜냐면 어떤 구역에 들어가면 이벤트가 발생하는 것인지 규정되지 않았기 때문이다.

그러면 여기서  구역이라는 링크를 클릭해보자. 그러면 구역(rect)를 지정하는 새로운 창이 나타날 것이다. 여기서 변수 항목을 체크하자. 이미 만들어져 있는 ZoneTreasure <생성>이 선택될 것이다. 이 구역은 예제맵 상에 이미 만들어져 있는 구역이다. 이 구역이 어딘지 보고 싶다면 월드 에디터 메인화면에서 도구 팔레트를 연 다음, 지역 팔레트를 선택하면 된다. 그러면 ZoneTreasure 라는 구역이 이미 생성되어 있음을 알 수 있을 것이다. 이 구역 명칭을 더블클릭하면 에디터 화면시점이 그 구역의 중심으로 이동한다.
[주의] 한글화가 불완전해서 맵 에디터 상에서는 지역이라고 나오고 트리거 에디터에서는 구역이라고 나오는데 둘 다 같은 말이다.
[팁] 만약 화면에 구역이 보이지 않는다면, 월드에디터 상단의 [보기] 메뉴에서 [지역]을 체크하라, 단축키는 Ctrl + R 이다.

 

이제 이벤트 생성은 끝났다. 다음은 조건을 만들 차례다. 트리거 에디터에서 Ctrl + D 를 누르면 새로운 조건을 설정하는 조건 설정창이 뜬다. 그러면 조건 종류 세부항목 가운데에서 [유닛 비교]를 선택하자. 그 다음 아래 그림과 같이 을 클릭한 다음, 새롭게 나타난 유닛 (unit)창에서 [변수]를 체크하고 그 오른쪽에 있는 [유닛 선택] 버튼을 누른 다음 맵 에디터 화면의 왼쪽 아래에 있는 아서스 유닛을 지정하자.

그러면 [설정 조건]창에서 조건 텍스트가 (트리거를 작동시킨 유닛) ==(서로 같다) 아서스(프로스트모어 사용중) 0001 <생성>으로 완성된 문장이 될 것이다. 여기서 '트리거를 작동시킨 유닛'이란 트리거가 설정한 이벤트를 발생시킨 유닛을 의미한다. 그렇다면 이 트리거에서 이벤트는 무엇인가? 어떤 유닛이 ZoneTreasure라는 지역에 들어온 것이 이벤트이다. 즉 이 트리거는 어떤 유닛이 ZoneTreasure라는 지역에 들어오면 그 유닛이 아서스(프로스트모어 사용중) 0001 유닛인지 체크한 다음, 맞으면 설정된 액션을 실행하고, 아니면 아무 일도 일어나지 않도록 하는 것이다.

그러면 트리거를 완성시키기 위해서 마지막으로 액션을 만들어보자. 트리거 에디터에서 Ctrl + R 을 누르면 새로운 액션을 만드는 [설정 액션] 창이 뜬다. 액션 종류 중에서 맨 아래쪽에 있는 [유닛] 항목을 선택하고 세부 액션으로는 '유닛 특정 각도로 한다'를 선택하자. 한글화가 좀 즈질이라 무슨 뜻인지 좀 불명확한데, 이 액션이 어떤 유닛을 특정 지점에 생성하는 액션이다.

이 액션에서는 총 6가지 옵션을 지정할 수 있다. 우선 맨 처음 몇 기를 생성시킬 것인지를 정하자. 일정 범위 안에서 랜덤하게 결정되도록 할 수도 있지만 그건 나중에 해보기로 하고 일단은 2마리가 나오도록 하자. '1명의~'에서 1을 클릭 한 다음 값을 2로 바꾸고 [확인]을 누른다. 그 다음에는 어떤 유닛이 생성되게 할 것인지 유닛 타입을 지정한다. 기본값은 풋맨으로 되어 있는데, 풋맨을 클릭한 다음 '값' 항목에서 '중립'을 선택하고 '아쉔베일'을 클릭해서 타일셋을 '로데론 여름'으로 바꾸자. 그러면 유닛 목록이 달라질 것이다. 이 가운데에서 일단 '오우거 워리어 - 레벨 3'을 지정하자.

그 다음은 생성될 유닛의 소유주(소속)을 정해야 한다. 기본값은 플레이어 1 (빨간색)으로 되어 있는데, 현재 이 맵의 기본 설정상 플레이어 1은 실제 게임 플레이를 진행하는 유저의 소속이므로 그대로 놔두면 이 트리거로 생성되는 오우거 2마리가 아군이 되어버린다. 여기서는 일단 '플레이어 그룹 - 중립 적대'로 지정하도록 하자. 그리고 일단 [확인] 버튼을 누르자.

이제는 유닛이 생성될 위치를 정해야 한다. 그러기 위해서는 맵 에디터에서 유닛이 생성될 지역(구역)을 설정해야 하는데, 잠시 맵 에디터로 가서 [도구 팔레트]에서 [지역 팔레트]를 선택한 다음 아래 그림과 같이 동굴안쪽에 새로운 지역을 그린다.

그러면 [지역 팔레트]'지역 001'이라는 새로운 지역이 생성될 것이다. 이것을 마우스 우클릭해서 [지역 속성 편집]을 선택하면 지역 명칭과 기타 세부 옵션을 설정할 수 있다. 지역 명칭은 편의상 ZoneGuardSpawn 정도로 해두자. 그리고 속성 편집에서 지역의 색상도 변경할 수 있는데, 이 색상은 어디까지나 에디터 상에서만 보여지는 것일뿐, 게임을 실행하면 지역은 플레이어에게 보여지지 않는다. 다만 내부적으로 작동할 뿐이다.

이제 다시 트리거 에디터로 돌아와서 아까 설정하다가 만 액션을 다시 더블클릭해서 열어보자. 그다음((플레이 가능 구역)의 중심)을 클릭하고 아래 그림과 같이 지역을 지정하자.

이렇게 ZoneGuardSpawn이라고 지역까지 지정해주면 거의 모든 준비는 끝났다. 마지막으로 설정 액션에 있는 기본 건물 방향 항목은 생성된 유닛이 처음에 어느 방향을 바라보게 할 것인가를 지정하는 것인데, 사실 큰 의미는 없다. 여기서 말하는 기본 건물 방향이란 소위 말하는 5시 방향을 뜻하며, 워크래프트3에서는 3시 방향이 0과 360도, 12시 방향이 90도, 9시 방향이 180도 6시 방향이 270도로 설정되어 있다. 여기서는 동굴의 입구가 대략 7시 방향으로 뚫려 있으므로 값을 245 정도로 해주면 자연스러워 보일 것이다.

자 여기까지 액션 설정이 끝났다면 이제 맵을 테스트 플레이해보자. Ctrl + F9 를 누르거나 맵 에디터 상단 메뉴 아이콘 중에 제일 오른쪽에 있는 버튼을 누르면 바로 맵을 플레이해볼 수 있다. 이 강좌에서 설명한대로 트리거를 잘 설정했다면 아서스가 동굴 앞 보물 근처에 가자마자 동굴에서 오우거 2기가 나타나 공격해올 것이다. 만약 제대로 나오지 않는다면 이벤트/조건/액션 중에 무언가가 잘못 설정된 것이니 찬찬히 다시 살펴보라. 정 안되겠다 싶으면 위 트리거까지 다 완성된 맵을 받아서 열어보도록 하라. TriggerEX_01_done.w3x

그런데 막상 플레이를 해보면, 무언가 연출이 부자연스럽게 느껴질 것이다. 그리고 또 보물 근처를 들락거리면 오우거가 계속 반복해서 생성되기도 한다. 이런 문제점들은 다음 강좌에서 고쳐나가도록 하자.

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by storm | 2009/05/04 00:44 | ▶ War3 Editor 강좌 | 트랙백 | 핑백(1) | 덧글(8)

트랙백 주소 : http://sstorm.egloos.com/tb/4934370
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Linked at Storm's Game Des.. at 2009/05/14 15:05

... 지난 3편 강좌에서 우리는 워크래프트3에서 사용하는 트리거의 기초적인 개념에 대해서 알아보았다. 그리고 예제맵을 통해서 아주 간단한 트리거를 한 번 만들어보았다. 다 ... more

Commented by 기역 at 2009/05/07 21:53
우왕, 저 게임 만들고 싶은 게 있었는데.. ㅋㅋ 감사합니다.ㅎ
Commented by storm at 2009/05/07 23:33
기역// 재밌는 게임 만드세요 :)
Commented by Happy_2D at 2009/08/13 00:39
으음 이해가안되고 이상하겤ㅋ 전안되네요
Commented by 와~ at 2009/08/22 12:31
님때문애 쪼금 늘었음 감사해요!
Commented by ATree at 2009/08/23 03:06
이해가 잘되도록 설명도 잘해주시고 너무 감사합니다! 정말 많은 공부가 되었어요 ^^ 이제 강좌 4로 넘어가서 또 공부!!
Commented by 좌절금지 at 2009/10/21 16:34
감사드려요! 유용한 정보입니다.
Commented by 블루토노 at 2009/12/05 06:50
좋은글 감사합니다~ 안그래도 워크래프트 맵 에디터 정도라면 내가 생각하는 최소한은 구현할텐데.........라고 늘 생각하던차에... ^^;; 이런글을 보게 되었네요~
Commented by 오오옹 at 2009/12/14 11:15
아 실수로 풋맨으로 했네요 ㅋㅋㅋㅋㅋ
오우거가 아닌 풋맨 나와서 놀랐음 ㅋㅋ

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶