비주얼노벨 강좌

#001

 2년 만에 다시 만진 피니엔진... 명령어같은 건 하나도 기억 안 나고 대충 작동원리만 기억나서 더듬더듬 거려가면서 대충 틀을 만들었다. 혹시나 또 나중에 피니엔진을 만질 일이 있을까 싶어, 그때를 위해 여기에 기록해둔다. 

 

#002

 우선 기본 작동방식.

캡처1.PNG

 ▲메인.lnx 스크립트 페이지. 맨 처음 엔진이 읽어들이는 스크립트 페이지다. 달리 설정하지 않는다면.. 

 

 피니엔진은 스크립트가 1000줄인가 2000줄 이상으로 넘어가버리면 엔진 자체가 아주 끔찍할 정도로 느릿느릿해지기 때문에 파트별로 나눠서 만드는 게 낫다. 또 기능별로 나눠만드는 게 관리하기도 좀 더 편하기도 하고. 그런데 엔진이 읽어들이는 파일이 메인.lnx 밖에 없기 때문에, 스크립트를 여러 개의 파일에 나눠서 작성한다면 엔진한테 다른 파일도 읽으라고 해야한다. 그게 '메인_시작'이라는 북마크와 '메인_불러오기후'라는 북마크 사이의 과정이다.

 

 다만 주의할 점이 있다. 이 과정은 스크립트 파일의 내용을 저 위치에 복사 붙여넣기를 했다고 생각해야한다. 그러니까 저기에 있는 파일의 북마크로 이동을 할 땐 세심한 주의를 기울여야한다. 

 

 그럼 이제 머릿속으로 컴파일을 해보자. 우선 상상의 화살표를 왼쪽 바의 숫자 왼편에 떠올린다. 따로 설정하지 않았다면 메인.lnx의 1번 줄부터 내려가면 된다. 주석은 그냥 무시하고 쭉 내리면 6번 줄에서 '메인_시작'이라는 위치를 기억해두고, 그 다음 줄에서 z001_타이틀.lnx의 내용을 저 위치에 붙여넣으면 된다. 

 

캡처2.PNG

 ▲z001_타이틀.lnx의 내용.

 

 그럼 이제 화살표는 z001_타이틀.lnx의 첫번째줄 옆에 있으리라. 다음 줄로 내려가면 '@매크로'라는 명령어를 만드는 명령어가 나온다. 이 매크로라는 존재가 피니엔진에서 가장 흥미로운 부분이다. @매크로는 포스트잍을 우주 저편에 만든다고 상상하면 편하다. 여기서는 '타이틀화면으로'라는 이름을 가진 포스트잍과 '시작버튼작동', '불러오기버튼작동', '불러오기버튼작동', '종료버튼작동'이라는 포스트잍을 만들었고 그 속에 각각의 내용을 채웠다고 생각하면 된다. 그러니까 상상의 화살표가 1번 줄에서 34번 줄을 내려가면서 총 다섯장의 메모를 작성한 것이다. 얼핏보면 '스크립트'라는 명령어와 비슷해보이지만, '@매크로' 속의 모든 것은 끝나고 나면 남아있는 게 아니라 사라지는 차이점이 있다. 즉 말 그대로 포스트잍을 잠시 붙였다 떼어놓는 개념으로 생각하면 된다.

 

*참고로 @매크로 명령어 밑에는 바로 북마크를 만들 수 없기 때문에 pass라는 빈 값을 넣은 것이다. pass 자체는 별 다른 의미가 없음

 

 z001_타이틀.lnx의 끝에 다다른 화살표는 어디로 갈까? 아까 말했던 것처럼 메인,lnx에 z001_타이틀.lnx를 붙여넣은 거니까 메인.lnx의 8번 줄로 가면 된다. 메인_불러오기후라는 위치를 기억하고 쭉 내려가면 '@조건'이라는 명령어가 나온다.  만약 현재 상태에 따라서 진행방향을 이리저리 비틀 수 있게 해주는 게임 제작(사실 대부분의 프로그램)의 뼈대라고 할 수 있는 명령어다. 그냥 쭉 흘러갈 뿐인 걸 만드는 게 아니라면.

 

 여기선 '타이틀온오프'라는 변수가 0이란 숫자값을 가지고 있다면 '타이틀화면으로'라는 명령어를 실행한다. 만약 0이외의 값을 가지고 있다면 그 사이 과정을 뛰어넘고 다음 과정으로 간다. 여기선 @그외가 '@조건'뭉치의 다음 과정이므로 화살표가 거기로 갔다가 '멈춤'이라는 명령을 받고 화살표가 거기서 정지하게 된다.

 

 개인적으로는 '멈춤'이라는 명령어가 상당히 중요하다고 생각한다. 왜냐하면 이 명령어가 없다면 화살표가 그대로 쭉 흘러가 마지막까지 가버리는데, 북마크이동으로 여러 파일을 왔다갔다하는 상태가 되면 나중에는 화살표가 어디로 가버렸는지 떠올리기 어렵기 때문이다. 그러므로 플레이어가 뭔가를 하기 위해 선택하는 시간이 필요한 지점에는 습관적으로 이 명령어를 쓰는 게 좋다.

 

 일단 지금은 타이틀온오프란 변수에 0의 숫자값이 있기 때문에 '타이틀화면으로'라는 포스트잍을 임시로 그 줄에 붙여보자. '화면초기화' 명령어를 통해 지금까지 남아있는 모든 이미지와 텍스트가 사라지고 텅빈 상태가 된다. 그리고 타이틀온오프 변수에 1의 숫자값을 대입한다. 그 뒤 각종 이미지를 만들고 화살표가 메인.lnx의 14번 줄로 가서 정지하는 동시에 포스트잇이 우주 저편의 대기열로 간다. 모든 과정이 정상적으로 처리된다면 아래와 같은 화면이 등장할 것이다.

 

캡처3.PNG

 ▲완성된 타이틀 화면! 물론 사용한 이미지에 따라서 모양은 다르겠지만.

 

 여기까지 따라왔다면 타이틀화면은 완성이다!

 

 타이틀 화면 하나를 만드는데 왜 이렇게 복잡한 과정을 거쳐야하는 지 의문이 들 수 있다. 타이틀 화면이란 거 사실 별거 없고 그냥 바탕 이미지에 버튼 이미지 몇 개 있으면 되는 건데. 다른 이유는 없고 게임 플레이 도중에 타이틀 화면으로 가는 상황이 생기는 등 여러 상황에 유연하게 쓸 수 있게 하기 위해서다. 또 크레디트 페이지를 만들어서 버튼을 없앴다가 다시 만드는 등 미세하고 유연하게 대처하기 위해서는 이 방식이 유리할 것이란 생각이 문득 들었기 때문이다. 다른 좋은 방법이 있다면 소개좀... 

 

#003

 사실 버튼이 작동하는 것까지 설명해야 타이틀 화면을 진정으로 구현했다고 할 수 있겠지만 그건 다음에 시간이 나면 하겠다. 오늘은 너무 지쳤거든! 그럼 안녕~

Who's 하늘바라KSND

profile

하늘바라KSND

하늘

하늘이

늘바

바라

하바

하바케이

하바케이엔

하느님 

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

현재 하는 일 :



허걱님과 함꼐하는 하늘섬 환상세계 시나리오 작성 중.

자세한 경과는 이야기 연재란에서.

 

Lighna형과 함께하는 프로젝트, D.A 시나리오 작성 중.

프로젝트 D.A 많은 관심 부탁드려요~

http://projetda.tistory.com/

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

 

ㅎㅎ. 안녕하세요 하늘바라 KSND 입니다. 

(96년생)

성별 : 남

사용툴 : VX

주요 활동 : 소설쓰기, 댓글, 뻘글, 글소글

 

블로그 주소 : http://hb_tjdtn.blog.me/                 

 

이전 준비 중

http://habakn.tistory.com/         

 

 

Atachment
첨부 '3'