본문 바로가기

2018년 이전 글/네코노벨 시작하기

[강좌]네코노벨 시작하기 - 3. 네코노벨 기초이론

안녕하세요. 우선 '1주일에 하나'라는 약속을 벌써부터 지키지 못하는 것에 저 자신에게 유감을 표합니다.

이런저런 일이 있었다...고 해 봤자 어차피 변명이지요.

 

이번 강좌에서는 네코노벨이 어떻게 돌아가는지, 또 그 이전에 프로그래밍이 무엇인지 접해 보지 않으신 분들을 위해

간단하게나마 설명을 드리고자 합니다.

아마추어 입장인 제가 이해하는 선에서 설명하는 것이므로, 알아듣기 쉬울 수 있지만 정론은 아닐 수도 있다는 점 이해 바랍니다.

 

프로그래밍?

-간단히 말해서 컴퓨터에게 '너, 이거 해' 하고 던져 주는 일거리 목록을 만드는 일입니다. 목록은 바로 프로그램이겠죠.

음악이나 사진 파일 같은 '데이터'는 특정한 프로그램이 이용할 수 있는 형식으로 만들어진 것들입니다.

즉, 프로그램을 써서 '너, 이거 해' 하고 컴퓨터에 명령을 내리면, 프로그램 안에 있는 명령을 받아서 일하다가, 혹시 데이터가 필요하다면 이것들을 프로그램을 통해 읽어와서 모니터에 표시하거나, 음악을 재생하거나 하는 등의 일을 수행합니다.

이 '명령'들을 모아 놓은 목록이 프로그램이라고 했습니다만, 이 프로그램을 만드려면 일반적인 인간의 언어가 아니라

기계들이 알아들을 수 있는 '기계어'가 필요합니다. 하지만 기계어를 사용하면 기계의 부분부분을 하나하나 조종하는 것이기 때문에 배우기 힘들고 사용하는 것은 더욱 어렵습니다. 물론 이런 복잡함을 줄이기 위해, 사람들은 인간의 언어와 가까운 언어를 사용해서 기계어로 통역해주는 프로그램을 만들었습니다. 그것이 프로그래밍 언어입니다.

프로그래밍 언어는 종류가 여러 가지이고 중요한 것들이 몇 가지 있지만, 이 강좌는 네코노벨 강좌이므로 네코노벨에 대해서만 설명하겠습니다.

 

네코노벨은 일반적인 프로그래밍 언어와 다릅니다

-네코노벨이 비주얼 노벨 게임을 만드는 툴이기는 하지만, 일반적인 프로그래밍 언어와는 많이 다릅니다.

차이점 중 하나가 바로 기본적인 명령어가 단순화되고 통합되어 있다는 것인데,

한 마디로 하면 대사를 띄우는 명령어를 한 줄 입력하면, 네코노벨이 일반적인 프로그래밍 언어(C++같은)로 바꾸어서

대사 명령어에 맞는 일련의 프로그래밍 언어들을 대신 작성해주는 것입니다.

사용자는 C++언어에 대한 지식이 없어도, 네코노벨 명령어를 입력하는 것만으로도 네코노벨이 알아서 해 주는 것이죠.

 

네코노벨의 스크립트 진행 방식

-프로그래밍 언어 부분에 대해서는 여기서 더이상 적지 않겠습니다. 없는 밑천도 바닥이 드러나고 해서

우선 네코노벨의 명령어가 어떤 식으로 흘러가는지 살펴보겠습니다.

네코노벨은 기본적으로 타이틀.txt 파일을 제일 먼저 읽도록 되어 있습니다.(바꿀 수도 있는데, 그건 나중에 알려드리겠습니다)

즉 타이틀.txt파일은 언제나 가장 먼저 시작하는 파일입니다. 따라서 게임에서 기본적으로 필요한 배경색, 대사창의 크기나 색깔, 스킨, 대사의 폰트나 크기 등을 지정하려면 이 파일의 앞 부분에 적는 것이 좋습니다.

하나의 스크립트 파일 안에서는, 위에 적힌 명령어를 먼저 실행합니다. 예를 들면,

 

  

대사 안녕하세요.

대사 네코노벨입니다.

 

 

라고 적었다면, 위에서부터 실행해야 하기 때문에 대사 안녕하세요 가 먼저 실행됩니다.

그러면 이번엔 어떨까요?

 

 

점프

대사 안녕하세요.

대사 네코노벨입니다.

북마크

 

 

이 경우에, 점프 명령어가 가장 먼저 실행되어야 하기 때문에 '북마크 끝'으로 자동으로 이동하게 됩니다.

하지만 점프의 경우에는 정말로 점프해서 다시 되돌아오지 않기 때문에 중간의 대사 명령어 두 개는 실행하지 않습니다.

이번에는 어떻게 될까요?

 

 

북마크 시작

대사 안녕하세요.

대사 네코노벨입니다.

점프 시작

 

원래 북마크는 점프나 스크립트 등이 목적지를 찾을 때 목적지의 역할을 하는 명령어입니다. 북마크 자체로는 아무런 행동도 하지 않기 때문에, 북마크 명령어가 먼저 실행되었지만 실제로는 대사 안녕하세요. 부터 나타나게 됩니다.

하지만 마지막의 점프 시작 명령어가 있군요. 이 경우 점프 시작 명령어에 의해 북마크 시작 으로 다시 넘어가게 됩니다.

이 경우 북마크 시작 명령어 아래의 대사 안녕하세요.대사 네코노벨입니다. 역시 전부 한번 더 실행하게 되고, 다시 점프 시작 명령어도 실행하게 되고, 그러면 다시 북마크 시작 으로......

 

이처럼 기본적으로는 위에서 아래로 내려오는 형태를 취하지만, 경우에 따라서는 위로 올라가서 지금까지 실행했던 명령어들을 또다시 실행하게 할 수도 있습니다.

이외에도 다른 파일로 통하는 점프 명령어나 다른 파일의 내용을 베껴쓰는 스크립트, 함수 명령어 등이 있지만, 이 부분은 실전에서 작성하면서 설명할 수 있기 때문에 넘어가도록 하겠습니다.

 

이 아래부터는 개인적인 경험이 포함된 몇 가지의 조언입니다. 조언에 따라서는 매우 중요한 것도 있고 아닌 것도 있습니다만,

알아서 손해날 것들은 없다고 생각합니다.

 

알아두면 멘붕에 덜 걸릴 수 있는 것들


- 아실 것이라고는 생각하지만, 반드시 저장을 생활화합니다. 뭔가 기능을 시험해 보실 때나, 새로운 시도를 해 보실 때에는 되돌리기 위해서라도 꼭 저장할 필요야 없지만, 단 한 줄이라도 쓰고 나서 잠시 막히면 그 순간 저장하는 것이 좋습니다.

특히, 단축키를 쓰면 저장하는 것이 번거롭다고 여겨지지 않을 겁니다. 단축키는 Ctrl+S 인데, 손에 익으면 한 문장 쓰고

잠시 멈추는 동안 왼손으로 쓱 누르면 금방 저장됩니다.


- 경우에 따라 다릅니다만, 네코노벨을 만들 때, 스크립트의 이름은 게임별로 각각 다르게 정하는 것이 좋습니다. 이는 물론 처음 네코노벨을 시작하시는 분들께서 안 지킨다고 해서 위험이 있는 것은 아닙니다. 하지만, 게임을 두 번째 이상 개발하려고 하시는 분이나, 이미 압축을 푼 네코노벨 폴더가 있는데 새로 하려고 다른 네코노벨 폴더를 만들었을 때 문제가 생길 수 있습니다.

프로그램이 멈추거나 하지는 않습니다만, 때때로 불러오기 경로가 원하지 않는 곳으로 설정되어 있을 수도 있습니다.

이게 무슨 말이냐 하면,

 


네코노벨 압축 파일을 푼 폴더가 2개 있다면, A폴더의 네코미미를 사용한 적이 있다면, B폴더의 네코미미를 사용할 때

불러오기에서 A의 스크립트 폴더가 보일 수 있다는 겁니다. 이 경우, 일부러든 실수로든 닫았던 파일을 잠시 불러올 때 B의 파일이 아니라 A의 파일을 불러오게 될 수 있다는 겁니다. 만약 50%정도 수정한 타이틀 파일을 실수로 닫았는데 다른 폴더에서 또다른 타이틀 파일을 불러와, 수정내용을 확인하지 않고 나머지 부분을 수정했다면?

A폴더와 B폴더의 타이틀 파일이 각자 50%씩의 수정도를 가지고 있게 되는 것이며 그것도 어디가 수정된 것인지 바로 확인하기 어렵습니다. 한 마디로 주옥꼬이는 겁니다.

따라서 저 같은 경우에는 스크립트 파일에는 프로젝트별로 뒤에 이름을 따로 붙입니다.

타이틀_게임이름.txt

같은 식으로요. 각각 다른 게임이름이 있다면 모두 그렇게 쓰면 됩니다. 그러면 혹시 폴더가 혼동되는 경우가 있더라도

파일명을 보고 확인할 수 있으므로 여러분의 스크립트를 보호할 수 있습니다.

 

-한 스크립트에 전부 몰아넣지 맙시다. 사실 간단한 노벨이라면 네코노벨의 기본 파일인 타이틀.txt만으로도 100% 한 개의 파일만 써서 실행이 가능하긴 합니다. 하지만 이 경우 그 파일 하나의 용량이 엄청나게 늘어나고, 파일 안에 쓰는 명령어들이 뒤죽박죽이 되며, 심하면 오류가 났는데도 어디서 났는지 애매해지는 일이 발생할 수 있습니다. 따라서, 많아도 두 가지 기능 정도씩 파일을 나누어서, 필요한 기능이 있을 때 그 파일을 불러들일 수 있도록 하는 것이 좋습니다. 필요하다면 함수 파일을 만드는 것도 좋지만, 이 부분은 어려워하실 부분이 있기 때문에 우선은 보류하겠습니다.

 

-무슨 명령어든, 궁금하면 테스트를 해 봅시다. 제 경우에는 폴더를 두 개를 두고 하나는 개발용, 하나는 테스트용으로 쓰고 있으며 테스트용 파일을 열어보면 혼자서 이것저것 시도한 흔적이 가득한 '난장판' 스크립트입니다.

한 마디로 언제 고장나도 이상이 없는 스크립트긴 하지만, 그렇기 때문에 오히려 자유롭게 작성하고 고칠 수 있습니다.

개발하는 버전에서 혹시 오류가 나서 모두 지워버렸다...는 말이 나온다면 정말로 슬프겠죠.

궁금증을 참는 것도 하나의 방법이 되겠지만, 명령어 역시 몇 번만 테스트해도 금방 알 수 있는데다가 그 지식은 개발 버전에 그대로 적용시킬 수도 있습니다. 그러니 어떤 명령어가 무슨 기능을 하는지 궁금하다면 테스트를 해서 확인해 보는 습관을 들입시다.

 

다음 강좌부터는 기본 예제 파일을 이용한 실제 제작에 들어가보고자 합니다.

따라하게 될 것들이 많다고 생각되니 반드시 네코미미를 미리 준비합시다<

 

도움이 되는 강좌이기를, 쓰면서도 빌고 있습니다.