[워3에디터 강좌] 트리거 기초훈련 by storm

지난 3편 강좌에서 우리는 워크래프트3에서 사용하는 트리거의 기초적인 개념에 대해서 알아보았다. 그리고 예제맵을 통해서 아주 간단한 트리거를 한 번 만들어보았다. 다시 상기하자면, 트리거는 이벤트, 조건, 액션의 세 가지로 구성되는 일련의 원인과 결과를 체계화한 것이다. 즉 이벤트와 조건이 원인이 되며 액션은 그에 따른 결과로서 일어날 현상들인 셈이다. 그러면 이번 강좌에서는 지난번에 만들었던 트리거를 좀 더 다듬어보면서 트리거라는 녀석에 대해서 좀 더 알아보도록 하자.
◆ 예제맵 다운로드: TriggerEX_02.w3x

지난 강좌에서 만들었던 예제 트리거에는 다음과 같은 두 가지의 문제점이 있었다.

  • 설정해 놓은 지역(보물 근처)에 플레이어 유닛이 들어서자마자 대뜸 몬스터가 생성되기 때문에 부자연스럽다.

  • 설정해 놓은 지역에 플레이어가 들락날락거리면 계속해서 몬스터가 생성된다.



문제점 1: 부자연스러운 연출


첫 번째 문제점은 플레이어가 보물 근처에 가자마자 갑자기 동굴에서 몬스터가 등장하기 때문에 보물과 몬스터의 연관성도 느껴지지 않고, 너무 막연한 느낌을 주는 것이다. 이런 문제를 해결하려면 어떻게 해야 할까? 플레이어가 보물에 다가갔을 때 동굴쪽에서 오우거의 목소리가 들린 다음에 동굴 밖으로 나오도록 하면 좋을 것이다.

맵에 별도의 사운드를 삽입하려면 우선 사운드 에디터를 사용해야 한다. 단축키 F5를 누르면 사운드 에디터가 열리는데, 여기서 왼쪽에 있는 파일들은 모두 워크래프트3의 정품 패키지에 포함되어 있는 것들이다. 이중에서 Dialogue 폴더의 OrcQuest16Ax 폴더에 가면 D16AOgre06.mp3 라는 파일이 있는데, 적당히 어울리는 오우거 음성이니까 이 파일을 맵에 삽입하도록 한다. 맵에 사운드를 넣으려면 원하는 파일을 우클릭한 다음 '소리로 사용'이라는 메뉴를 선택한다. 그러면 해당 파일이 오른쪽 창에 복사될 것이다. 각각의 사운드 파일을 미리 들어보려면 사운드 에디터 상에서 원하는 사운드 파일을 선택한 후 재생 아이콘을 클릭하거나 단축키 Ctrl + A를 누르면 된다.

그다음에는 오른쪽 창에 복사된 파일을 우클릭해보자. 그러면 사운드 속성창이 나타난다. 보통은 속성을 바꿀 필요 없이 그대로 둬도 되지만, 변수명 정도는 알아보기 좋게 수정해주자. 여기서는 DOgre_Spawn 이라고 바꾸었다. (맨 앞의 D는 Dialogue, 즉 캐릭터의 대사라는 표시로 넣은 것이다) 지금 같이 간단한 맵을 만들 때는 변수명을 어떻게 해도 별 상관이 없지만 스케일이 큰 맵을 만들어서 사운드가 수십개 이상이 되면 변수명을 알아보기 쉽게 만드는 것이 작업하는데 훨씬 효율적이라는 점을 명심해야 한다. 물론 실무 개발에 가서는 더욱 그렇다.
사운드를 변수로 만들었다면, 다음은 트리거 에디터에서 사운드가 출력되도록 설정해야 한다. 아래 그림과 같이 새로운 액션 만들기를 하고 사운드 항목에서 '지점에 높이에서 사운드 재생'을 선택하자. 이 트리거는 맵의 특정 지점을 중심으로 사운드를 출력하게 만드는 액션이다.

이 액션에서 3D Sound를 클릭하면 변수 항목에 좀 전에 만들어 놓은 DOgre_Spawn <생성>을 선택하고 [확인]을 누른다. 그리고 ((플레이 가능구역)의 중심)을 클릭한 다음 변수 항목에서 ZoneGuardSpawn <생성>을 선택한다. 이렇게 하면 사운드 에디터에서 골라놓은 오우거 음성이 오우거가 생성되는 위치에서 들리게 된다.
이렇게 해서 사운드를 넣는 것까지는 완료를 했다. 하지만 좀 더 자연스러운 연출이 되려면 플레이어가 보물에 접근한 시점에서 약간의 간격을 두고 오우거 음성이 출력되고, 또 오우거 대사가 끝나면서 모습을 드러내는 것이 좋다. 이렇게 하기 위해서는 각각의 액션 사이에 일정한 대기 시간을 줘야 한다. 단축키 Ctrl + R 을 눌러 새로운 액션 만들기를 한 다음, 액션 종류를 '일반'으로 고르면 '게임 시간으로 대기'라는 액션이 있을 것이다. 이것을 선택하도록 하자.
처음 대기 시간은 일단 1초 정도로 해두자. 참고로 대기 시간을 설정하는 액션은 이것과 같은 '게임 시간으로 대기'가 있고 또 '실제 시간으로 대기'가 있는데, 특별한 이유가 없는한 '게임 시간으로 대기'를 사용하는 것이 좋다. 시간의 길이는 두 가지다 똑같지만, 실제 시간으로 대기를 사용하는 경우 랙이나 프레임 저하 현상이 발생해서 화면이 멈추거나 버벅대도 그와는 상관없이 시간을 계산하기 때문에 원래 의도했던 타이밍대로 액션 실행이 진행되지 않을 가능성이 있기 때문이다.

자 그러면, 이번에는 오우거의 음성이 재생되는 시간동안 대기하는 액션을 넣어보자. 간단하게 하는 방법은 방금 만든 대기 시간 액션을 Ctrl + C & Ctrl + V 신공으로 복사 & 붙여넣기 하는 것이다. 그 다음 시간 값만 바꾸면 된다. 여기서는 오우거 목소리의 길이가 약 5.2초 이므로, 4.5초를 대기하도록 했다. 그리고 각 액션들의 위치를 적절하게 배치해야 한다. 액션은 위에서부터 아래쪽으로 순서에 따라 실행되기 때문이다. 그래서 먼저 실행되어야 할 액션이 위쪽으로 가야만 원하는 연출이 이뤄질 수 있다. 액션의 위치를 이동하려면 원하는 액션을 클릭해서 누르고 있는 상태에서 위아래로 드래그하면 된다. 이게 불편하면 복사 & 붙여넣기 신공을 써도 된다. 아래 그림과 같이 액션이 순서대로 나오도록 하면 잘 된 것이다.




문제점2: 트리거의 무한 반복 실행

두 번째 문제점은 이 트리거가 아무 제약 없이 무한 반복될 수 있다는 점이다. 그래서 플레이어가 보물 근처(구역)에 들락날락거리면 그럴때마다 오우거가 생성된다. 오우거를 딱 한 번만 나오게 하려면 어떻게 해야 할까? 가장 쉬운 방법은 트리거 사용중지 액션을 삽입하는 것이다. 이를 위해서는 새로운 액션 만들기를 한 다음 액션 종류에서는 트리거를 선택하고 '트리거 사용 중지' 항목을 선택하면 된다. 그러면 (현재 트리거) (을)를 사용 중지합니다라는 액션 텍스트가 생성되는데, 그대로 [확인]을 눌러 액션 생성을 완료하자.
그러면 아래 그림과 같이 액션이 만들어질 것이다. 이렇게 트리거에 현재 트리거를 사용 중지하는 액션을 넣으면 그 트리거는 단 한 번만 실행되고 그 다음에는 이벤트가 발생해도 실행되지 않는다. 테스트 플레이를 통해서 제대로 적용되었는지 확인해보라.

참고로 트리거 사용 중지 액션은 액션 목록의 맨 위에 넣어주는 것이 좋다. 특히 지금 이 트리거와 같이 대기 시간이 들어가는 트리거의 경우에는 특히 그렇다. 트리거 사용 중지 액션을 중간 또는 아래쪽에 넣으면 트리거 사용 중지 액션이 실행되기 전에 플레이어가 보물 근처를 들락거릴때 오우거가 또 등장하는 일이 발생한다.


이번 강좌에서는 지난번 트리거를 좀 더 다듬어 그럴듯한 연출이 이뤄지도록 하는 요령을 간단히 알아보았다. 만약 이 강좌대로 따라했는데 제대로 나오지 않는다면 이번 강좌에서 설명한 트리거를 다 집어넣은 완성된 예제맵을 다운 받아서 열어보도록 하라.
◆ 완성된 예제맵 다운로드:TriggerEX_02_done.w3x


핑백

  • ★스톰의 게임기획 연구실 : [워3 에디터 강좌] 논리값 변수의 이해 2009-06-18 17:18:48 #

    ... 상에 미리 넣어두었으니까 단축키 F5를 눌러서 사운드 에디터를 열고 미리 들어보면 된다. 트리거에 사운드를 삽입하는 방법을 잊었다면 강좌 4편을 참고하라. http://sstorm.egloos.com/4944934자, 여기까지는 별로 어렵지 않다. 에디터 강좌를 1편부터 쭉 보고 따라해봤다면 충분히 이해할 수 있는 수준이다. 하지만 문제는 지금부터다. 레버를 당 ... more

덧글

  • ATree 2009/08/23 03:38 # 삭제 답글

    설명 중간에 폴더를 생략한게 있어서 해당파일 찾기 애매했지만 설명해주신데로 진행이 착착 잘 되가네요 :)
  • 저글 2010/01/11 11:46 # 삭제 답글

    자주 사용하는 액션의 용도를 알고싶어졌습니다.
  • zeroraden_ 2010/06/03 20:20 # 삭제 답글

    정말 많은 도움이되는군요 감사합니다
  • 초보 2010/09/02 21:25 # 삭제 답글

    감사합니다 잘되네요
  • 토노 2011/02/12 20:17 # 삭제 답글

    되는군요!...

    중간에 설명 작은것 하나라도 빠지면 어찌나 불안한지......-_-;; 도중에 포기해버리고 싶었어용 ㅋㅋ
  • 서랑 2011/03/10 13:55 # 삭제 답글

    지금 예제로 주신 트리거가 열리지 않아서 저 나름대로 만들면서

    하고 있는데 잘되고 있습니다.

    감사합니다.
  • 견해 2013/08/09 19:11 # 삭제 답글

    이번 강의도 클리어!! 감사합니다!!!
  • 감사합니다선배님 2013/12/29 07:27 # 삭제 답글

    저도 이번강의 클리어! 감사합니다!
  • 심심하다 2014/08/20 22:11 # 삭제 답글

    심심해서 워크 맵공부하는데 ㅋㅋ 감사합니다.
댓글 입력 영역



통계 위젯 (화이트)

2917
177
502137