이벤트 및 데이터 베이스의 신기능으로 텔레포트 기능을 만들어보자



※본 포스팅에서 소개하는 팁은 RPG 쯔구르 MV 공식 홈페이지(이하 공홈)의 신기능 활용 강좌 [#3 이벤트 명령]의 내용의 일부를 작성자가 직접 응용/적용한 강좌입니다. 원본 강좌를 보시려면 [RPG 쯔꾸르 MV 공식홈페이지] 링크의 강좌를 확인해 주십시오. (원본 강좌는 일본어로 작성되어 있으므로, 사용하는 브라우저의 페이지 번역 기능을 활용하시길 권합니다.)


이번 강좌의 목표 : 아이템 선택처리를 이용한 텔레포트 시스템을 만들어보자


텔레포트는 제작자가 만든 맵상의 도시/마을을 한 번에 이동할 수 있는 시스템입니다. 보통 아이템이나 스킬을, 빠른이동 포인트 등에 활용됩니다. 대표적인 예로는 드래곤 퀘스트 시리즈의 순간이동마법 '루라'나, 어새신크리드/니어오토마타 등의 액세스포인트를 통한 빠른 이동이 대표적입니다. 


 
(좌)측은 드래곤퀘스트의 순간이동 마법 루라. (우)측은 어새신크리드 시리즈의 빠른이동 시스템


이번 강좌에서는 작성자가 직접 따라해보면서 만들었던 이벤트 예제를 바탕으로 텔레포트 이벤트를 만들어 보겠습니다.



핵심이 되는 기능


이 이벤트는 공통이벤트와 데이터베이스의 아이템을 주 기능으로 하고있습니다. MV가 발매되면서, 아이템 리스트에 표시되지 않는 숨겨진 아이템을 별도로 지정할 수 있게 되었고 이를 활용한 순간이동 기능이 되겠습니다.



Let's Making


◇ 만들고자 하는 이벤트의 내용

이번에 만들고자 하는 이벤트는 세이브포인트를 겸한 마을 내 빠른이동 시스템이 되겠습니다. 마을 내 특정 세이브 포인트에서 OK버튼을 누르면 이동지를 선택할 수 있습니다. 또한 "이벤트를 통해 해당 시스템이 사용가능"해 지도록 스위치를 부여하여 Off상태에서는 순간이동 선택지가 나오지 않도록 하는 방식으로 만들어보겠습니다. 


◇ 이동하고자 하는 맵을 준비

순간이동을 하기 위해서는 당연히 이동할 지역들에 대한 맵이 필요합니다. 샘플에서는 사전에 만들어진 9개의 맵을 대상으로 이동하는 이벤트를 작성합니다.



◇ 순간이동 항목 전용 아이템 준비

데이터베이스에서 순간이동 시 표시되는 아이템 항목을 아래와 같이 작성합니다.

아이템의 속성은 숨겨진 아이템A로 잡아줍니다.




◇ 스위치의 설정

순간이동을 사용할 수 있을 때와 없을때를 조정하기 위해 스위치를 하나 달아줍시다.

해당 이벤트의 스위치는 7번에 작성했습니다.



◇ 커먼이벤트 작성

1. 순간이동 커먼이벤트 작성

먼저 이동가능을 판정해 주는 조건분기 아이템을 아래와 같이 설정합니다.

순간이동이 가능해 져 스위치가 ON으로 전환되면 아이템 사용 목록창에 아이템이 추가됩니다.



※ 원문 강좌에서는 아래의 그림처럼 이동가능한 지역마다 스위치를 부여하여, 지역이 개방될때마다 이동지가 하나씩 늘어나는 구조를 취하고 있습니다.

 

3. 아이템 선택의 처리 이벤트

다음으로는 아이템선택의 처리로 이동지를 선택할 수 있게 만들어 줍니다.

아이템 선택의 처리를 아래와 같이 작성해 줍니다.


조건분기문으로 취소를 선택하면 지역이동을 하지 않는 것으로 설정합니다.


4. 이동지 처리를 만들어보자

이동지의 처리를 위해 각 이동지마다 변수값을 지정해 줍니다. 저는 헷갈리지 않게 이동하지 않았을때의 값을 0, 각 이동지(9개소)를 2~10까지 지정해 줍니다. 이동이 끝나면 아이템 사용창에 수량이 0이 되면서 윈도우가 닫히도록 설정해 줍니다. 
(작성자는 테스트 플레이 시 카도카와 공식 플러그인인 KeyItemNumber.js를 설치/적용하였기 때문에 수량을 지울 수 있었습니다. 자세한 사항은 원본강좌를 참조해 주십시오)




2. 세이브 포인트 커먼이벤트 작성

이동 커먼이벤트 작성이 끝났다면 세이브 포인트 커먼이벤트를 아래와 같이 만들어 봅시다.


그리고 맵 이벤트에서 공통이벤트를 설정해 줍시다.




완성된 이벤트


지금까지 작성한 이벤트를 제대로 따라왔다면 아래와 같이 이벤트가 진행될 것입니다.







해롤드의 낚시 삼매 골든위크

금요일 유급휴가를 신청하여 긴 휴가를 확보한 해롤드는 낚시를 가기로 했습니다.

산을 넘어 낚시 장소에 도착한 해롤드는 "왠지 물고기가 낚일 것 같은 수면"을 발견합니다.


수면의 색상을 바꾸면 낚시 명소를 알기 쉽습니다.


그래서 오늘은 <MV>에 [동●의 숲] 같은 낚시 시스템을 구현하려고 합니다.


▶ 플레이어는 특정 장소에서 낚시를 시작

▶ 임의의 시간을 기다리면 물고기가 미끼를 먹습니다.(소리로 확인할 수 있습니다)

▶ 타이밍에 맞춰 결정버튼을 누르면 낚아올림


버튼을 누르는 타이밍이 늦거나 빨라도 낚시에 실페합니다. 모험 중 미니게임 요소로 좋습니다.


낚시 시스템에 필요한 것은?

플레이어가 몇 마리의 물고기를 잡았는지 여부를 추적하고 항목으로 추가하는 방법이 필요합니다.

그리고 Count 변수를 사용하여 플레이어가 결정 버튼을 누르는 타이밍을 측정합니다.

최근에는 변수관리도 간단합니다. (역주 : 한글판에 맞추어 이미지 수정)


그러면 이 이벤트의 구성과 프로세스를 문장으로 정리해보겠습니다. 


1. 1~6초간 무작위로 대기 

 1-1. 플레이어의 결정버튼을 이 대기 시간 내에 입력했는가?

           ☞ O : "너무 빨랐다"의 메시지와 함께 이벤트를 종료

2. 물보라의 SE 이벤트 재생 (역주 : 물고기가 미끼를 물었을때 효과음을 지정)

3. 0.5초 대기

    3-1. 플레이어가 결정버튼을 이 시간 내에 눌렀는가?

             ☞ O : 플레이어가 물고기를 입수하고 이벤트를 종료

    3-2. 플레이어가 결정버튼을 이 시간 내에 눌렀는가?

             ☞ X : 실패 메시지를 표시하여 이벤트를 종료


우선 30 프레임(0.5초)의 대기사간을 추가합니다. 이 이벤트의 추가로 이벤트 시작과 낚시 결정버튼 입력시간을 식별합니다. 이 이벤트를 추가하지 않으면  시작과 동시에  "플레이어가 물고기를 입수하고 이벤트를 종료"해버리기 떄문에 주의해 주십시오.


다음은 30~270의 임의의 프레임을 추가하여 1~6초초동안의 대기시간을 만들 수 있습니다.


그리고 아래에서 설명할 루프 판정을  사용해야 합니다.


루프 및 조건판정을 사용해 보자


우선 30~270의 프레임 변수를 설정합시다. 여기서는 아래와 같은 요령으로 루프를 사용해야 합니다.

* 1 프레임의 대기

 * OK 버튼을 눌렀는지 확인.

       너무 빠른 경우  메시지를 출력하고 루프를 종료

* 카운트 변수에서 1을 뺄 것

* 카운트 변수가 0인지 확인

       0인 경우 루프를 종료

* 0이 아닌 경우는 루프

아주 간단한 루프 구성입니다만, 유사한 퍼즐을 만들 때 매우 유용합니다.

이것을 실제 MV에서 입력하면 아래와 같이 될 것입니다.



우선 0.5초 후에 0.5~5.5초 구간 동안 대기하는 작업을 수행합니다.
그리고 루프를 시작한 뒤, 플레이어가 버튼을 누르거나 카운트가 0이 되면 루프를 중단시킵니다.

그러면 마지막으로 "조건분기  Count = 0"의 내용을 만들갑시다.
전체 과정은 생략합니다만, 앞에서처럼 아래의 내용을 참조하여 입력해 보십시오.



자, 어떻습니까? 잘 만들어 졌나요?
영어로 된 부분도 있습니다만, 여기 (역주: 공식스토어 블로그의 해당 기사 페이지) 에서 데모도 받을 수 있으니 체크해 주세요 ♪



-----------------------------------------------------------------------


알만툴이 나온지 햇수로는 3년째긴 합니다만 이전보다 반응이 뜨겁진 않습니다.
최근 라노베 메이커 출시로 공식스토어 페이지도 좀 개편중인걸 봐서 조만간 블로그게시물도 사라지진 않을까 걱정입니다.

(현재 일문 공식스토어 페에지에서는 블로그 메뉴탭이 사라진 상태입니다.)



+ Recent posts

티스토리 툴바