VNAP (비공식) 관리위원회

블로그 이미지
VNAP Unofficial Support Page.
by pilza2

ARTICLE CATEGORY

전체 (47)
보관 (18)
정보 (5)
강좌 (16)
작품 (6)
  • 52,765Total hit
  • 0Today hit
  • 0Yesterday hit

이번 강좌에서는 비주얼 노벨류에서 나타나는 여러 엔딩을 구현하는 방법에 대해 알아보도록 합시다.

[Lecture 10. 다중 시나리오 만들기.]

멀티 엔딩 만들기.

멀티 엔딩은 하나의 엔딩으로 끝이 나는 소설과는 달리 여러개의 엔딩을 제공하는 비주얼 노벨에서 자주 있습니다.
VNAP에서도 여러 엔딩을 만들어 있습니다.
일단 예시를 들어 멀티 엔딩을 만들어보도록 합시다   

케릭터 1,2,3 이야기가 있다고 합시다. 그렇다면 엔딩의 갯수는 최소 3개이겠군요.
엔딩의 내용을 준비하며, 파일의 구성은 아래와 같이 합니다   

케릭터 1 이야기, 엔딩.  - ch1.txt - ch1_end.txt
케릭터 2 이야기, 엔딩.  - ch2.txt - ch2_end.txt
케릭터 3 이야기, 엔딩.  - ch3.txt - ch3_end.txt 
   

각자의 케릭터의 이야기 파일과 엔딩 파일을 준비했으면 구조는 아래와 같습니다   

구조를 만든 뒤에 작품을 만드시면 보수와 수정이 용이합니다 :D
스크립트는 첨부한 파일에서 참조해 보세요   

케릭터를 선택하여 이야기 전개하기.    

간혹 처음부터 케릭터를 고를수 있어서, 케릭터의 시점으로 플레이하거나
케릭터의 이야기를 보여주는 메뉴를 지닌 작품을 있을 것입니다

VNAP에서도 이런 형태의 메뉴를 제공가능합니다   

 
                                     
<오픈마인드 월드의 Replay 4>   

scenario.txt 파일에서 타이틀을 불러옵시다
타이틀 파일을 title.txt 이라고 하면, 타이틀 화면에서 시작을 누르면 케릭터를 고르는 화면으로 넘어갈 있도록 하는데,
여기서
일종의 트릭(?) 이용합니다.

, 메뉴(Menu)명령어로 한번더 케릭터 선택에 대한 파일을 불러오는 입니다  

케릭터 선택에 관한 파일을 char_sel.txt 하겠습니다.
char_sel.txt파일에 아래와 같이 메뉴명령어를 사용합니다   

   

sel_menu.txt에는 케릭터 CG 메뉴의 버튼처럼 만든 것입니다.

메뉴 스크립트에서 메뉴 스크립트를 다시 한번 불러옴으로써 위와 같은 사용이 가능한 것입니다.
가장 아래의 스크립트는 다시 메뉴로 돌아갈 있도록 하는 메뉴입니다 :D   

첨부 파일을 뜯어 보시면서 익혀보세요  

처음 프롤로그를 있게 , 메뉴에서 다시 프롤로그를 있게 하기   

많은 작품들은 작품의 시작부(프롤로그) 제공하고 있는데요,
가장 먼저 프롤로그가 나타나고 메뉴가 나오는 구성은 이미 많은 작품이 채용하고 있습니다  

또한 다시 메뉴에서 프롤로그를 보는 것도 가능하지요.
VNAP
에서도 그런 것이 가능합니다.(가능한것만 이야기하고 있다는...-_-;;) 
   

이야기로 한다면 매우 복잡할거 같아서 아예 전체적인 구조를 만들었습니다(힘들었어요 .   

일단 senario.txt 파일부터 설명하겠습니다  

1행의 init readplog = 0 부분은 변수입니다.
변수를 이용하였나 하면 나중에 나올 프롤로그를 볼것인가 스킵할것인가 때문에 만들어 것입니다.
일단 선언을 해야겠지요.  
  

3행의 ifflag intro_read 7 5 에서는 플레그가 발생했는지 체크하는 것입니다.
당연히
처음 실행했을때는 플레그가 없지요, 그래서 5행으로 넘어가서 intro.txt 파일, 프롤로그 파일을 불러옵니다
   

7행의 loadsnr intro.txt 부분은 두번째 실행부터(intro.txt에서 플레그가 체크 되면프롤로그를 넘기고
바로 title.txt 파일, 타이틀 화면을 불러옵니다
  

다음, 프롤로그 파일인 intro.txt 설명하겠습니다  

5행의 setflag intro_read 플레그를 설정하는 것입니다. 프롤로그 읽었어요~ 하고 체크하는 것입니다. :D    

7행의 if (readplog = 1) 9 11 변수를 체크하는 것인데요,
앞에서 변수를 설정하고 값이 변하지 않았으므로( 변수 readplog 값은 여전히 0이므로) 11행으로 가게 만드는 것입니다
  

9행의 loadsnr snr01.txt 시나리오 파일(snr01.txt) 불러오게 하는 것인데, 이는  변수 readplog값이 1일때만 불러옵니다.

프롤로그를 볼것인가 물을때( 파일의 내용은 p_log_check.txt 있어요.) 프롤로그를 보여주고나서,
시나리오 파일(snr01.txt) 보여주는 것입니다.  
   

11행의 menu title.txt 처음 실행했을때 여전히 변수 값이 0 그대로이므로 7행의 if에서 연결되어, 타이틀 화면을 불러오게 하는 것입니다   

title.txt 파일에서는 타이틀 화면을 불러오는 것이라 메뉴만들기 강좌를 참고해 주시구요 ^^;
시작 버튼을 눌렀을때 p_log_check.txt 파일을 읽는다는 점을 알고 가시면 됩니다  

p_log_check.txt 파일의 내용은 프롤로그를 읽을 것인지 넘길 것인지 선택해야 하는 선택지가 있습니다.
프롤로그를 읽는다고 하면 read_p_log.txt 파일로 넘어가서 senario.txt 파일에 선언되었던 변수 readplog 값이 1 되면서,
intro.txt 불러오게 하는데요, 이때 변수 값이 1이므로 intro.txt 파일의 7행에서 9행으로 넘어가게 됩니다.

그렇게 하면 프롤로그를 후에 시나리오(snr01.txt) 연결됩니다.
물론 프롤로그를 읽지 않는다고 하면 시나리오 파일(snr01.txt) 불러오게 됩니다 ^^       

엄청나게 복잡해 보이지만, 플레그와 변수를 이용하는 예시라고 있습니다.
첨부파일을 뜯어보며 공부하시길 바랍니다 ^^;;;    

엔딩 바뀌는 타이들 만들기.

KEY사의 Air 플레이해본 분이라면 처음의 이야기인 Dream편을 클리어하고 나면
타이틀이 바뀌면서 Summer편으로 넘어가는 것을 아실 것입니다
                                        


                                                   < GIF파일로 만들어봤어요 >_< ! >

VNAP 공식 홈페이지에서 제공하고 있는 작품, 햇님 달님에서도 채용되어 있는 기능인데요,
쉬운 이해를 위해 준비해 보았습니다.
일단 메뉴는 3개를 준비했습니다. 바꾸고 싶은 만큼 메뉴를 추가하셔도 좋습니다.


처음 타이틀 파일을 first_title.txt 두번째 타이틀 파일을 second_title.txt 세번째 타이틀 파일을 third_title.txt 라고 합시다.
각각의 타이틀 파일에서 나올 이야기들의 엔딩 파일 (여기서는 ch1_end.txt ch2_end.txt ch3_end.txt 라고 하겠습니다.) 플레그를 설정해둡니다   

여기서는
ch1_end.txt
마지막에는 read_first 라는 플레그
ch2_end.txt
마지막에는 read_second 라는 플레그
ch3_end.txt 마지막에는 read_third 라는 플레그를 설정합니다.
scenario.txt파일에는 플레그를 체크하는 명령어를 써둡니다.
(flag 체크하는 것은 가장 나중에 나올 플레그 기준으로 합니다.)     

, 플레그가 기록된 역순으로 체크합니다.    

첫번째 실행때는 아무 플레그가 없기 때문에
1
행의 ifflag read_third 13 3 에서 당연히 3행으로 넘어갑니다
3행에서의 ifflag read_second 11 5 에서 역시 플레그가 없기 때문에 5행으로 넘어갑니다
5행에서의 ifflag read_first 9 7 에서 역시나 플레그가 없기 때문에 7행의 menu title.txt 타이틀을 불러오게 됩니다.
7행은 menu title.txt 첫번째 타이틀을 불러옵니다.

9행은 두번째 실행부터 작동하는데요,
첫번째 이야기의 엔딩을 보고 후면, read_first 플레그가 체크되어 있어서  5행에서 9행으로 넘어오게 되어
menu second_title.txt
명령어가 실행되어 두번째 타이틀을 불러오게 됩니다
   

11 역시 마찬가지로, 두번째 이야기를 보고 후면, read_second 플레그가 체크되어 있어서3행에서 11행으로 바로 넘어오게 되어
 menu third_title.txt
명령어가 실행되어 세번째 타이틀을 불러오게 됩니다
   

13행은 뒤에 나올 부분인데 같은 파일로 다루겠습니다.
세번째 이야기를 보고 후면(그리고 모든 엔딩을 ), 1행에서 바로 13행으로 넘어오게 되어
menu special_title.txt 명령어가 실행되면서 특별 타이틀을 불러오게 됩니다
   

모든 엔딩을 후에 스페셜 엔딩 나오게 하기.

지금까지 멀티 엔딩에 대해 알아보았는데요, 작품들 중에서는 기존의 엔딩(배드엔딩 포함) 모두 보았을때
새로운
엔딩이나 진엔딩이 나오는 경우도 있지요.

그러면, 각기 엔딩을 보게 되었을때 플레그들이 하나씩 활성화되게 됩니다.
그렇지만, 순서에 관계없이 모두 볼수 있게 하려면 플레그를 체크할수 있도록 해야겠죠.

그래서 항목과 같이 senario.txt파일을 구성했습니다.
( 항목만 이해하신다면 과정은 껌입니다 ^^;;)   

그리고 새로운 메뉴 파일과 엔딩파일을 준비했지요.
항목에서 다른 이야기와 엔딩, 타이틀을 준비했다고 생각하는 것이 가장 쉽습니다 ^^;
특별한 내용이 있는 것도 아니구요 ^^   

   

강좌 파일은 기준으로 준비해 두었습니다. 항목 역시 포함이 되므로 그렇게 했답니다.

강좌 파일을 테스트 하실때 초기화하려면 아래의 cfg 파일을 지우시면 됩니다.
(정확히는 제목없음.cfg 파일입니다. 나중에 제목을 붙이게 되면 게임제목.cfg 파일이 되겠습니다.)  

     

강좌 파일 

   

Copyright 2005-2009. 아우름이. All rights Reserved.
미디어 연구소(http://mediastudio.tistory.com/) 

TRACKBACK 0 AND COMMENT 0