[워3 에디터 강좌] 반복문의 이해 by storm

타워 디펜스맵에서 적들이 계속 몰려오는 것처럼, 어떤 유닛을 일정한 시간 간격으로 계속 생성하고 싶다면 트리거를 어떻게 짜야 할까? 가장 간단한 방법은 아래 그림과 같은식으로 동일한 액션을 원하는 반복회수만큼 복사+붙여넣기 하면 된다. 하지만 반복되는 횟수가 수십, 수백번 이상된다면? 그리고 그 횟수가 변할 수 있다면 이런 '노가다' 방식으로 만들 경우 액션의 양도 너무 많아지고 관리하기도 불편해진다.


하지만 '반복문'이라는 것을 사용하면 이런 트리거를 아주 간단하게 설정할 수 있다. 프로그래밍에서 흔히 말하는 'for~ 제어문'과 같은 형식의 액션이 워3 트리거에도 있기 때문이다.

예제맵 다운로드: EditorSample_10.w3x



반복문을 이용한 트리거 설정하기
자 그러면 트리거를 하나 만들어보자(Ctrl + T). 몹을 생성시키는 트리거니까, 트리거 이름은 Mob Spawn 정도가 좋을 것이다. (앞선 강좌에서도 말했듯이 트리거의 이름은 무엇이든 상관없다. 다만 가급적 이름만 봐도 어떤 기능을 하는지 알아보기 쉬운 이름으로 짓는 편이 나중에 관리하기 좋다) 그다음 그 트리거에서 새로운 이벤트 만들기(Ctrl + E)를 해서 이벤트 종류 - 시간 카테고리를 선택한 다음, '특정 시간이 지나면 작동'을 지정한다. 그리고 시간을 5.00초로 설정한다. 그러면 이 트리거는 게임이시작된 다음 5초 후에 액션을 실행할 것이다.

이벤트를 만들었다면, 그 다음은 액션을 만들 차례다. 새로운 액션 만들기(Ctrl + R)을 한 다음, 액션 종류에서 일반 카테고리를 선택하고, 아래 그림과 같이 정수 A증가, 이하 액션 반복 (다중함수)라는 항목을 선택한다.

이와 같이 액션을 만들면 아래 그림처럼 '반복 - 액션'이라는 항목이 하나 생성된다. 그러면 반복할 액션들을 이 항목안에 순서대로 넣어주면 되는 것이다.

그렇다면, 반복할 액션들은 무엇인가? 유닛(몹)을 생성하는 액션과 2초 동안 대기하는 액션이다. 그래서 이 두 개의 액션만 '반복 - 액션' 항목에 만들어주면 된다. 아래 그림을 참고하라.

유닛을 생성하는 액션은 액션종류 유닛 카테고리에서 '유닛 - 특정 각도로 한다'를 선택한 다음 필요한 항목을 수정하면 된다. 위 스크린샷에서는 생성될 유닛 타입을 함수 항목에 있는 '무작위 크립의 유닛 타입'으로 했다. 그리고 레벨을 1로 지정했기 때문에 실제로 플레이 해보면 워크래프트3 상에서 '크립(몹)'으로 분류되어 있는 유닛 중 1레벨 범위 내에서 랜덤하게 생성될 것이다. 그리고 생성되는 위치는 예제맵 상에서 미리 만들어놓은 지역인 ZoneMobSpawn 이다.

반복문은 프로그래밍을 공부해본 사람이라면 기본중의 기본이란 걸 잘 알고 있을 것이다. 하지만 사전지식이 전혀 없는 사람을 위해서 반복문의 개념에 대해서 짚고 넘어가보자.

워3 트리거에서는 반복문에서 '정수 A 증가'라는 표현이 나온다. 그리고 위 그림에서 보다시피 반복 액션을 만들면, '정수 A의 값을 1부터 10까지 1씩 증가시키면서 액션을 실행합니다'라고 되어 있다. 즉 이런 식으로 반복 액션을 만들면 실제로 게임이 진행될 때에는 임의의 변수가 하나 생성되서 처음에는 그 수가 1이었다가, 반복해야 할 액션을 한번 다 실행하고 나면 그 변수가 2가 된다음 다시 또 반복해야 할 액션을 실행하고, 그다음엔 변수가 3이 된 다음 또 반복할 액션을 실행하고 나서 변수가 4가 되고... 이렇게 계속 증가해 나가다가 10이 된 다음 반복할 액션을 실행하고 나면 반복을 종료하게 된다. 그래서 만약 아래 그림과 같이 설정한다면 유닛이 500개가 생성될 때까지 액션이 계속 반복될 것이다.
물론 반복 액션에서 정수 A가 반드시 1부터 시작할 필요는 없다. 만약 10회 반복 액션이라면, 정수 A를 31부터 40까지로 놓아도 10번 실행되는 건 마찬가지다. 그리고 시작 숫자와 마지막 숫자는 다른 변수를 넣어도 되는데, 이런 방법은 다음 강좌에서 설명하도록 한다.

완성된 예제맵 다운로드: EditorSample_10_done.w3x




덧글

  • 오생 2010/01/18 15:33 # 삭제 답글

    월드맵 에디터좀 배울려고 하는데 유틸좀 보내주세요 메일skyoh3611@paran.com
  • 오생 2010/01/19 12:17 # 삭제

    잘 받았습니다. ㄳ합니다
  • 박진운 2010/04/02 16:56 # 삭제 답글

    저기 궁금한게요 프로즌쓰론 지도를 열어서 영웅 능력 하나 바꾸고 걍 저장 햇거든요? 근데 왜 맵 자체가 다 바뀌는거 같애요 아이템 나오는것도 틀려지고 상점에서 파는 물건가격도 바뀌고 ... 왜그런건가요?
  • 박진운 2010/04/02 21:39 # 삭제

    그러니까 프로즌쓰론으로 맵을 저장하고 싶은데 자꾸 오리지날맵으로 저장이되요
  • storm 2010/04/03 19:12 #

    프로즌쓰론 맵 (확장자 w3x)으로 저장하는 가장 쉬운 방법은 맵 아무곳이나 태번(선술집 또는 중립영웅상점) 하나를 집어넣은 다음에 맵을 저장하는 것입니다. 일단 저장하고 나서 태번을 삭제하시면 됩니다. 태번이 프로즌쓰론 전용 건물이기 때문에 이방법을 쓰면 자동으로 w3x 파일로 저장됩니다.
  • storm 2010/04/03 02:22 # 답글

    그래도 안되시면, 맵을 에디터에서 로딩한 다음, 에디터 상단메뉴의 [시나리오] -> [지도속성] -> [옵션] 에서 맨 아래 있는 '게임 데이터 설정'에서 '기본 (based on map melee status' 대신에 '밀리 (최근패치)'를 지정한 다음 맵을 저장해보세요.
  • 박진운 2010/04/05 13:20 # 삭제

    정말 감사합니다 친절하시고요 ^^
  • 눈팅맨 2010/04/03 17:06 # 삭제 답글

    생성한 유닛을 어디 지점으로 쭉 가게 할려면 어떻게해야하는건가요 ? 아무리봐도그게잘이해가 안되내요..
  • storm 2010/04/03 18:47 #

    변수를 하나 잡아주세요.(트리거 에디터에서 Ctrl + B) 변수타입은 유닛 으로 해주시고 변수명은 적당히 정하시면 됩니다. 그다음 유닛을 생성한 액션 아래에 '유닛 명령 지점에 수행' 액션을 하나 만드시고, 유닛을 방금 만든 변수로 정해주시면 됩니다.
  • 스톰의 학생 2010/09/02 18:20 # 삭제 답글

    안녕하세요? 요즘 스톰님의 강의를 참고로 워3을 즐기고 있습니다. 계속해서 하다보니 실력도 어느정도 쌓였고 해서 이번에는 게임에 영상이나 대화를 추가하고 싶은데요. 이 부분에 대해서 강의 좀 올려주시면 안될까요? 물론 스톰님이 한가하시고 하고 싶으실때 말입니다.
  • storm 2010/09/02 18:35 #

    대화는 아마도 사운드 파일을 말하는 것 같은데 영상이란 건 정확하게 어떤 걸 말하는거죠?
  • 스톰의 학생 2010/09/02 19:04 # 삭제

    워3 해보시면 아시겠지만 스토리모드에서 각 영웅들이 행동하거나 대화하는 장면 있잖습니까? 그 부분을 말하는 겁니다.
  • GKI 2010/09/30 10:43 # 삭제

    시네마 효과를 말씀하시는 거군요..
    트리거 에디터에 보시면 시네마와 관련된 내용이 있습니다.
    확인해보시길 ^^
  • 저..... 2010/10/10 12:39 # 삭제 답글

    다음 강좌는 없는건가요?
  • 매니아 2010/10/17 11:37 # 삭제 답글

    헑 저 월드에디터 한글판좀.......
  • storm 2010/10/18 21:25 #

    http://sstorm.egloos.com/4933950 에 따라 게임과 필요 유틸 설치하시면 됩니다. 에디터가 따로 한글판이 있지는 않습니다.
  • ShinYung 2010/11/10 16:20 # 삭제 답글

    동일한 유닛을 각 플레이어가 사용할 수 없다는데.. 그럴땐, 같은 속도의 유닛들을 사용하는 방법이 뭐가 있나요..??
  • storm 2010/11/10 22:31 #

    음 좀 더 구체적으로 상황이나 구현하고자 하는 내용을 알려주시면 좋겠습니다.
  • ShinYung 2010/11/12 22:11 # 삭제 답글

    그.. 스톰님 글을 보고 직접 유즈맵을 하나 만들어보려고 햇는데요..

    형태가 어떤 형태나면 유저들이 캐릭터를 하나씩 가지고, 한 대만 맞으면 죽는 상황에서 서로가 서로를 찾아가며.. 스킬로 위습 같은 것을 맵에 배치하여 적을 찾아내고 잡는 식의 게임을 생각해 봤는데요..

    워크3를 안해봐서 모르겠지만, 모든 유저의 속도가 같아야 하는데 그럼 캐릭터도 같아야 할꺼 같고..;; 유닛의 속도를 하나씩 조정해주자니 어케할지 모르겠고..

    이정도면 되는 것일까요..??
  • storm 2010/11/13 01:20 #

    오브젝트 에디터에서 이동속도를 조절할 유닛을 선택한 다음 속도를 임의로 지정할 수 있습니다. 그 수치를 동일하게 맞추면 이동속도가 모두 같아지죠.
  • 스톰님 2010/11/30 19:36 # 삭제 답글

    생성한 유닛을 특정 지점으로 쭉 가게 할려면 어떻게해야하는건가요 ?
    변수는 만들긴헀는데 아무리해도 안움직여요.
  • 2011/04/25 14:03 # 답글 비공개

    비공개 덧글입니다.
  • storm 2011/05/12 18:00 #

    제가 스타2 에디터까지 만질 시간이 없어서요... ㅡ. ㅜ
  • 길고양이 2011/05/12 19:58 # 답글

    강의가 쉽고 이해도 잘되네요-감사합니다.
    근데...(졸면서들었던..) C언어가 벌써 도움이되다니 !
    열심히 했으니까 칭찬받고싶어요 그릉~*
  • storm 2011/05/12 20:07 #

    하루만에 마스터하다니 놀랍군요 ' -')/ 노력한만큼 보람이 있을거에요. がんばってね〜
  • 제발... 2011/11/27 17:49 # 삭제 답글

    hashtable에 관한 강의도 올려주심 안될까요...??
  • machine 2011/11/28 22:31 # 답글

    이 강좌를 통해서 배운 내용들을 토대로 여러가지 응용을 하여 맵을 만들고 있는 사람입니다.

    만드는 도중 문제가 생겼는데, 어떤 이벤트가 발생할 때 (주로 유닛이 스킬을 사용할 때) 특정 영역에 데미지를 주는 트리거를 만들어 봤습니다. 그런데 문제점이 그 영역에서는 아군과 적군을 구분하지 않고 무차별적으로 데미지를 준다는 것입니다. 이 문제를 해결하여 원하는 위치에 적군에게만 데미지를 줄 수 있게 할 수는 없을까요? 혹시 맵 파일을 원하신다면 말씀해 주세요!!
  • storm 2011/11/28 23:16 #

    데미지를 가하는 '영역'을 뭘로 설정하는 거죠?
    맵 에디터의 특정 지역(rect)인가요?
  • 강좌요청 2011/12/09 21:12 # 삭제 답글

    스토님 시간되시면 워3 월드에디터 스킬로 인한 영웅부활 강좌좀 올려주세요 너무어려워요

    ex)프리스트가 리저렉션 스킬을 사용하면 죽어있던 영웅들이 시전시간 끝나니까 프리스트 주위에서
    이펙트 보이면서 동시에살아나는트리거

    파티아레나 맵에 있는 스킬인데요 정말따라해보고싶은데 역량부족인지 시체생성해도 안되고 미치겠어요 부탁드려요
  • storm 2011/12/12 23:07 #

    으... 워3 에디터 만진지도 오래됐고 무엇보다도 지금은 컴에 깔려있지가 않네요. 워3 유즈맵 카페 같은데 가셔서 질문하시는게 더 빠르고 정확할거에요
  • superang 2012/09/03 22:27 # 삭제

    그거여 트리거에 보시면 영웅부활트리거있어여 이벤트를 그 스킬(능력)이 발동될때하는걸루 해보시고여 조건은 트리거를 발동시킨 어빌리티=리저렉션 뭐 이정도...
    액션에서 (물론 주위에서 영웅 부활되는것은 스킬에서 이미설정했다는가정에서)-그이펙트가 뭔진 모르겠지만..... 어쨋든 그 어빌리티 작동시킨유닛을 설정(그 유닛이 뭔지몰르기에..)하고 그지점에 효과 (님이 원하시는효과(이펙트) 선택)를 어느 부위에다 발동할지 정하시면 될꺼예여 아마...
    EX)트리거를 발동시킨 유닛 의 head에 cloud를 생성합니다? 쯤될꺼예여 직접 해보시면 제가 한말이 다르더라도 조금은 감잡으실거예여^^
  • dntjd926 2011/12/18 05:51 # 삭제 답글

    War3 Editor 강좌더 해주세요 카페보다 여기가 더 이해 잘되요 ㅠ,,,ㅠ
  • 금나라 2012/01/16 09:27 # 삭제 답글

    갑자기 필이 꽂혀서 어제부터 열심히 이것저것 뒤져가며 따라해보고 있는데요 ㅠ.,ㅜ
    기존맵을 언프로텍터 해서 수정한후 저장하면 에디터창만 꺼지고 저장이 되지 않는데 이건 무슨이유인가요? 해결방법은 어떻게되요? ㅠ.,ㅜ
  • 광역딜 2012/01/19 12:31 # 삭제 답글

    답변 부탁드려요

    지금 토너먼트방식의 맵을 만드는중인데요

    맵안에 지형이 같은 4개의 맵을 만들어놓앗는데

    아무래도 토너식이다보니 자기화면만보이고 미니맵도 자기껏만 보이게 하려는데

    도통 만들어지질 않네요

    카메라 범위 설정에서 바꾸는건 미니맵이 안바껴서 아닌것같은데

    조언좀 부탁드려요
  • storm 2012/01/19 12:35 #

    4명이 서로 동맹관계로 시작하나요?

    플레이어 설정에서 4명의 포스를 서로 구분하고 시야 공유 안되게 하면 될 것 같은데요.
  • 광역딜 2012/01/19 13:39 # 삭제 답글

    빠른답변 감사합니다

    제가 초짜라 포스를 서로 구분한다는게 어떤 뜻 인지 잘모르겟네요

    맵은큰데 4개로 나누다보니 미니맵보기가 힘든것같아서

    자기화면만 미니맵에 가득차게 하는법을 알고싶어요
  • storm 2012/01/19 13:58 #

    음 맵은 넓은데 미니맵 특정 범위의 지역으로만 가득 채워보이게 하는 건 게임소스 자체를 뜯어고쳐야 가능할 것 같네요. 즉 에디터에서는 불가능한 사항입니다.

  • superang 2012/09/03 22:31 # 삭제

    음 그건 제가 어디선가 많이봤습니다. 나루토워즈인가?에서 봤어여 아마 주위에 경계쳐놓고(작은경기장에)거기에 카메라놓고(트리거-고정) 특정플래이어가 이길때까지 하는걸로 해보세여 그리고 나갈려면 그 문자 입력하면 카메라고정취소되고 화면이동하는걸로...(물론 유닛도)
  • 광역딜 2012/01/20 05:10 # 삭제 답글

    안된다니 많이 고민해봣는데요

    몇몇 유즈맵 보면 미니맵대신 그림이나 검은화면으로 대체되잇던데 그건 어떻게 하는거죠

    맵을 숨긴후에 맵중앙에 가짜맵을 그려놓은후 카메라 설정해서 자기화면만 보이게하면

    대충 모양은 나올것같아서요
  • 광역딜 2012/01/23 08:40 # 삭제 답글

    미니맵을 다른그림으로 덮는건 에디터로는 안되나요
  • storm 2012/01/23 22:55 #

    그건 에디터 자체 기능은 아니지만 가능하긴 할거에요. 다만 플레이어마다 다르게 덮는 건 불가능할 것 같군요.
  • 광역딜 2012/01/26 21:32 # 삭제 답글

    무엇으로 덮는거죠

    어떤 프로그렘사용해야 가능한가요
  • storm 2012/01/26 23:12 #

    오래되서 기억이 잘 안나는데 W3M Utility 였나 손스월드 에디터였나 그런 외부 툴을 쓰셔야 할 겁니다. 사실 원리는 간단해요. 기본 UI 이미지를 바꿔치기해서 가리는 방법이죠. 자세하게 알고싶으시면 워3 유즈맵이나 에디터 카페에서 정보를 찾으시는게 좋습니다.
  • 광역딜 2012/01/27 02:33 # 삭제 답글

    손스월드에디터는 설치되어잇지만 잘모르겟네요
    에디터카페도 많이 찾아보았지만
    작은 등급으로 제가 원하는 강좌을 찾을수있는 카페가 없어
    여기까지왔는데 조금 아쉽네요
    여태 시간내주셔서 갑사드립니다
  • 광역딜 2012/02/02 14:43 # 삭제 답글

    W3M Utility로 이미지를 바꾸는 방법은 알게되었습니다

    그런데 스톰님이 올려주신 W3M Utility는 런타임오류라면서 실행되지않고

    다른곳에서 받은 베타버전 W3M Utility는 열기 백업본으로 되돌리기 그리고 게임실행하기 밖에없고

    저장하기는 찾을수가없네요 원래 추출밖에 할수없는 유틸인가요?
  • superang 2012/09/03 22:33 # 삭제

    자동저장입니다..................(저장할 필요가 없다 이거져)
  • superang 2012/09/03 22:36 # 삭제 답글

    뭐 되게 오래전껀데 늦게 대답했지만말이져............(대답하고나서 시간대확인해보니 훨씬오래전것들이네여)
  • superang 2012/09/03 22:38 # 삭제 답글

    역시..무한반복은 무리인가여?(그럼 모델에디터 강좌도여......-뭐 끊으신지 오래라곤하지만..)-잇빠이 무리닌가?(역시 무리인가?)
  • superang 2012/09/03 23:16 # 삭제 답글

    여러분~ 제가 앞으로 스톰님의 블로그에 찾아오시는 분들을위해~(스톰님의 워크 모델강좌를위해~)모델하나올림니다.
    http://blog.naver.com/jay05201
  • ㅠㅠㅠ 2015/04/10 21:23 # 삭제 답글

    으아아 더 안해주시나요? ㅠㅠ
  • 데브리 2016/02/25 11:23 # 삭제 답글

    기획자 지망생인데요...
    VBA강좌에 이어 잘 배웠습니다^^
    좋은 강의 감사합니다.
  • storm 2016/03/02 13:26 #

    열심히 하셔서 좋은 기획자가 되세요.
댓글 입력 영역



통계 위젯 (화이트)

333
206
501319