조회 수 641 추천 수 5 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


딤딤과 만삐의 VNAP 강의 1. 비주얼 노벨을 만들자!


 


** 딤딤과 만삐의 VNAP 강의는 "딤딤과 만삐의 게임 공방"에서
시나리오와 CG를 담당하고 있는 딤딤(천어랑)과
음악과 스크립트를 담당하고 있는 만삐가 함께 만들고 있습니다.
수정 및 무단도용, 무단전제는 금지.
출처와 제작자를 공지하고서 퍼 가는 건 괜찮습니다. **


 


2강. 스크립트의 종류를 알아보자!


 


안녕하세요? 만삐입니다.
오늘은 타이틀 만들기에 들어가기 전에,
VNAP에서 사용하는 스크립트 파일들의 종류에 대해 배울 시간이로군요.


 


잠깐, 오늘 강의로 들어가기 전에 확인할 것이 있습니다.
지금까지 강의한 것, 다 직접 해 보고 계신지요?
그냥 보면 다 알 것 같은 내용도
정작 해 보면 마음대로 안 되고 오류가 나는 일도 많고 하니까
꼭 직접 입력해 보세요~
스크립트 등을 다 캡쳐해서 올리고
텍스트파일을 바로 첨부하지 않는 이유도 이것 때문이거든요.


 


그러면, 꼭 직접 만들어 보시길 당부하면서
강의 시작합니다.


 


1) VNAP의 스크립트 종류를 알아보자!
VNAP 스크립트는 전부 텍스트 파일로 되어 있어요.
그러나! 그렇다고 이들 파일이 모두 같은 종류인 건 아닙니다.
VNAP 스크립트에는 세 가지 종류가 있어요.


스크립트의 종류가 어떻게 나뉘는지,
왜 그런 걸 알아야 하는지,
이 세 종류의 스크립트를 어떻게 사용하는지 알아 봅시다.


 


비주얼 노벨 하나를 실행하는 걸 떠올려봅시다.
먼저... 로고와 오프닝이 뜨겠지요?
그 다음은 타이틀화면이 뜨겠네요.
게임시작을 선택하면 이제 프롤로그로 들어가고, 게임이 시작되겠지요.


그런데 이 로고, 오프닝 / 타이틀 / 프롤로그에서 필요한 기능은 다 달라요.


 


로고, 오프닝에서는
-> 그림을 음악과 싱크로 해서 띄우는 기능이 필요.
때에 따라 동영상을 띄워야 할 수도 있음.
캐릭터 CG나 대사는 거의 필요 없음.


 


타이틀에서는
-> 캐릭터 CG나 대사는 거의 필요 없음.
메뉴버튼을 만들어서 선택지에 따라 다른 것을 실행시켜야 함.


 


프롤로그 & 이후 게임 진행
-> 캐릭터 CG가 필요. 대사창 필수.


 


이렇게 각기 필요한 기능과 필요없는 기능이 다르지요.
VNAP은 이에 따라 스크립트 파일을 세 가지로 나눠 놨습니다.
쇼우(show) 스크립트, 메뉴 스크립트, 시나리오 스크립트로요.
이걸 알아두는 게 중요한 이유는,



1) 각 스크립트마다 쓸 수 있는 명령어가 다르고
2) 각 스크립트는 다른 명령으로 불러와야 하기 때문입니다.
(둘 다 아래 실습에서 보게 될 겁니다^^)


 


i) 쇼우 스크립트
로고, 오프닝, 엔딩스텝롤 등을 만들 때 쓸 수 있습니다.
CG와 관련된 대부분의 기능은 사용할 수 있습니다.
가장 중요한 기능은 음악과 CG의 싱크로를 맞추는 기능입니다. ( 9강에서 다룰 거에요)
버튼 명령어나 대사창 관련 명령어(대표적으로 text) 등은 쓸 수 없습니다.


show 명령을 통해 불러와야 합니다.


 


ii) 메뉴 스크립트
타이틀 화면이나 기타 버튼을 통한 선택지를 만들 때 사용합니다.
CG와 관련된 대부분의 기능은 사용할 수 있습니다.
가장 중요한 기능은 메뉴버튼을 띄우는 것입니다. (다음 강의에서 다룰 거에요~)
대사창 관련 명령어는 쓸 수 없습니다.


menu 명령을 통해 불러와야 합니다.


 


iii) 시나리오 스크립트
캐릭터 CG와 대사창을 사용할 수 있습니다.
비주얼노벨의 대부분은 시나리오 스크립트로 이뤄져 있겠지요.


loadsnr 명령을 통해 불러와야 합니다.
(funcsnr이라는 명령도 있는데...
이 명령은 기능이 좀 독특하니 나중에 살펴보지요.
8강 보조강의에서..)


 


## 실습해 봅시다!
언제나 가장 중요한 것은 실습!
다음처럼 시나리오파일을 만지작거려 봅시다.
(지난 시간까지 뚝딱거리고 만든 스크립트 가지고 계시겠지요?


그걸 토대로 진행할 것입니다.)


다음과 같이 입력하고 ex1.txt 라고 저장합시다.
(button 명령은 다음 강의에서 배울 테니 일단은 그냥 입력해 주세요)


 



 


그리고 scenario.txt는 이렇게 만들어 주세요.
이건 ex1.txt라는 쇼우 스크립트를 불러 오라는 뜻입니다.


 



 


자, 이제 vnap.exe를 실행해 봅시다.


 


...얼레? 배경만 떴다가 금세 종료되네요? (<-그래서 캡쳐 불가;)
char, button, text 등을 써 놨는데
캐릭터도, 버튼도, 글도 안 뜨는 군요.


 


이번엔 scenario.txt를 이렇게 만들어 봅시다.


이건 ex1.txt라는 메뉴 스크립트를 불러오라는 거죠.


 



 


이러고서 vnap.exe를 실행하면,
어라, 여전히 배경만 뜨네요.


 



 


하지만 저기 커서가 있는 곳 근처를 클릭해 보면...


 



 


이런 에러메시지가 나오면서 종료됩니다.
사실 저 명령은 no.txt라는 파일을 불러 오는 버튼을 만드는 명령이었거든요.
그래픽상으로 보이지는 않지만, 어쨌든 버튼은 만들어져 있는 것입니다.
(자세한 사용법은 다음 강의에서~)
그런데 no.txt가 없으니 에러를 내고 만 것이지요.



이것으로 menu로 불러오면 button 명령이 실행된다는 것과
char와 text는 실행되지 않는다는 것이 확인되었습니다!


마지막으로 이렇게 고쳐 봅시다.


이건 ex1.txt를 시나리오 스크립트로 불러오라는 거지요.


 



 


이제 vnap.exe를 실행해 보면-


 



 


이번엔 button이라는 명령은 쓸 수 없다고 확실하게 말해주는군요.


이 다음으로는 배경과 캐릭터가 나오고 종료되어버려요.
(text가 실행되지 않는 건 text 앞 줄인 button 줄에서


에러로 종료되어 버리기 때문입니다)


 


자, 이것으로 스크립트에는 세 종류가 있으며,
각각 그에 맞는 명령어로 불러오지 않으면 명령이 실행되지 않거나
에러가 난다는 게 확인되었지요?


쇼우 스크립트의 자세한 사용법은 9강에서 배우도록 하고,
메뉴 스크립트에 대해서는 다음 강의에서 배우도록 하지요.
그리고 나머지 강의 거의 전부는 시나리오 스크립트에 대한 것입니다~


이것으로 스크립트의 종류는 끝!



그럼 이제 우리 게임의 scenario.txt 파일을 만들어 봅시다.


 


2) scenario.txt 파일을 만들어보자!


scenario.txt 파일에서 해야할 일이 뭘까요?
우선 로고와 오프닝을 띄우고, 타이틀을 불러오는 거겠지요.


그럼 이렇게 하면 되겠네요.


 



 


...끝.
썰렁한가요? ^^;
원래 scenario.txt에선 별로 할 일이 없어요; 쿨럭쿨럭;


 


사실은 이대로 두면 안 되고, 좀 더 건드려 줘야 해요. :)


 


우선,
지금 logo.txt와 opening.txt가 없지 않습니까?
만들어 줘야 겠네요.


logo.txt는... 로고를 띄워주면 되겠지요.
그러니 이렇게 쓰고 logo.txt로 저장합시다.
(logo.png는 첨부파일에서 받아 주세요)


 



 


그리고 opening.txt는 음악과 CG를 맞춰야 되겠지요?
이건 9강에서나 배울 테니까, 그때까지 이렇게 처리해 둡시다.


 



 


## 주석(//)에 대해 알아보자!
"//" 라는 것은 주석(comment)을 뜻하는 거에요.
//가 쓰인 줄 뒤로 적은 것은 VNAP이 전부 무시해 버립니다!
읽지도 않고, 당연히 에러를 내지도 않지요.
스크립트에 도움말이나 코멘트가 필요한 경우 저 // 뒤에 써 두면 되고,
나중에 만들어야 할 것은 안 까먹게 저렇게 주석으로 처리해 두면 좋지요.


 


## show 명령에 대해 더 자세히 알아보자!
i) show 명령을 쓰면 VNAP은 호출된 스크립트를 실행하고 나서는
원래 스크립트로 돌아와서 다음 줄을 실행합니다.
그림으로 그려 보면 이렇게 되지요.


 



 


하지만 menu나 loadsnr로 불러오면
호출된 스크립트를 실행하고 나서 원래 스크립트로 돌아오지 않아요.
그림으로 그려 보면 이렇게 되지요.


 



 


ii) show 명령으로 호출된 스크립트는 기본적으로 스킵이 가능하게 되어 있습니다.
즉, 위 그림의 예 같은 경우, 예제2.txt가 실행되는 도중에
마우스나 키를 누르면 예제2.txt 실행을 바로 끝내 버리고
원래 스크립트로 돌아간다는 거지요.


 


뭐, 우리의 logo.txt의 경우에는 너무 짧아서 별로 표가 안 나겠지만 -_-a
보통 게임 로고는 스킵이 안 되게 하지 않습니까?
그러니 이렇게 고쳐 줍시다.


 



 


show 명령 뒤에 DISABLE_SKIP을 써 주면 스킵이 불가능하게 됩니다.


그럼 이제 vnap.exe를 실행해 봅시다!


 



 


자, logo.txt는 실행되었는데, 에러가 나 버렸네요.
어쩔 수 없지요; title.txt가 없으니까.
그럼 타이틀은 다음 강의에서 만들어 보기로 하고요,
이번 강의는 끝입니다~


(로고가 좀 썰렁한가요? 로고를 꾸미는 건


5강에서 각종 화면효과를 배운 후에 하기로 해요~)


 


요점 정리를 해 봅시다~
1) VNAP에는 쇼우, 메뉴, 시나리오의 세 가지 스크립트가 있다.
2) 각각 기능과 쓸 수 있는 명령이 다르다.
3) 쇼우는 show로, 메뉴는 menu로, 시나리오는 loadsnr로 불러와야 한다.
4) 주석은 // 후에 달면 된다.
5) show로 불러오면 실행 후 원래 스크립트로 다시 돌아온다.
6) 쇼우 스크립트 스킵을 못하게 하려면 DISABLE_SKIP을 쓰면 된다.


 


그럼 2강은 종료!


다음 강의에서는 타이틀을 만들어 봅시다~


 


**


...개강을 했습니다. 딤딤도, 저도 말이지요.
방학 끝날 때 쯤에야 강의 쓸 생각을 하여
개강을 며칠 앞두고 강의를 열심히 써 올렸습니다만...
더 이상 그러기는 힘들겠네요 ;ㅅ;



게다가 앞으로 하는 강의는 CG 작업도 많이 필요하기 때문에
강의 업뎃이 더뎌질 것입니다.
1주일에 하나 정도 올리는 걸 목표로 하고 있어요.
부디 이해해 주시고, 많은 성원 부탁드려요~
**

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
704 언어/기타 스타 맵을 만들어 볼까? -기초 2- file 다크세이버™ 2006.09.24 394
» 언어/기타 [연재] 2강. 스크립트의 종류를 알아보자! 만삐 2006.09.24 641
702 언어/기타 확인 dnajs 2006.09.24 423
701 언어/기타 스타 맵을 만들어 볼까? -기초 1- file 다크세이버™ 2006.09.24 542
700 언어/기타 그냥 심심해서 생각해낸 플레이어 낚기 이벤트인데요... 네모상자 2006.09.24 1194
699 언어/기타 변수를 절약하자!! 1 길모나 2006.09.22 615
698 언어/기타 그래픽 제작 도구들 dnajs 2006.09.21 540
697 언어/기타 원의 방정식 알고리즘 file Spegel 2006.09.17 1271
696 언어/기타 왜 C언어를 해야하나요? -2 웁피 2006.09.17 1487
695 언어/기타 인터넷 프로그래밍 강의 시간에 실습했던 것. 아란 2006.09.17 951
694 언어/기타 왜 C언어를 해야하나요? -1 웁피 2006.09.16 1426
693 언어/기타 자바 기초 로직 ˙ dnajs 2006.09.16 1290
692 언어/기타 VNAP 배경음 예제 dnajs 2006.09.14 395
691 언어/기타 [소스첨부] 인자값 변경. 청연 2006.09.14 317
690 언어/기타 MSN 주소를 알려주세요. MrGeek 2006.09.13 2677
689 언어/기타 게시판 이용 및 라이센스 공지 J.Clifford 2006.09.13 2190
688 언어/기타 ★C언어 처음 하시는분들 보세요.. 청연 2006.09.13 501
687 언어/기타 주석제거 프로그램 (수정) 청연 2006.09.13 597
686 언어/기타 MFC 색상표 file 피군 2006.09.12 1770
685 언어/기타 미디를 하려면.. dnajs 2006.09.11 529
Board Pagination Prev 1 ... 11 12 13 14 15 16 17 18 19 20 ... 51 Next
/ 51






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)