한글 메시지 시스템

(Hangul Message System)



소개

RPG Maker는 전통적으로 메시지 창에서 \C[X]와 같은 텍스트 코드를 제공했습니다. 

이 플러그인은 \C[1]와 같은 텍스트 코드를 \색[빨강]과 같이 한글로 입력할 수 있게 해주는 MV 플러그인입니다.

텍스트 코드가 한글로 되어있기 때문에 기억하기 쉽습니다.

동적으로 텍스트 코드를 매번 바꿀 수 있기 때문에 원하는 한글 텍스트 코드로 쉽게 변경할 수 있습니다.

영어도 상관 없으며, 심지어 일본어, 한자까지도 사용할 수 있습니다.


RPG Maker MV v1.6.2 이상 버전에서만 동작합니다.


▽ English Translation


최신 버전

플러그인 다운로드 받은 후, 압축을 해제합니다. 

프로젝트 폴더를 열고, js/plugins 폴더에 플러그인을 위치 시킵니다. 

최종적으로 RPG Maker MV의 플러그인 관리자에서 플러그인을 불러오면 됩니다.


다운로드


버전 로그

이 플러그인은 개발자가 수시로 업데이트 하고 있지만 자동으로 업데이트를 하진 않으며 별도의 통지도 없습니다. 

되도록이면 최신 버전을 쓰는 것이 좋지만, 업데이트 인한 버그나 충돌 문제가 있을 수 있기 때문에, 

버전 별 다운로드도 제공하고 있습니다.


https://github.com/biud436/MV/blob/master/docs/RS_MessageSystem.md#%EB%B2%84%EC%A0%84-%EB%A1%9C%EA%B7%B8


말풍선 설정

메시지 창이 말풍선처럼 해당 이벤트의 위쪽으로 옮겨집니다. (말풍선의 폭과 높이는 텍스트의 길이에 맞게 자동으로 계산됩니다)

\말풍선[이벤트의 ID]

배틀러 스프라이트 위에 말풍선을 띄우려면 다음 텍스트 코드를 사용하세요. 전투의 경우, 번호는 1부터 시작합니다.

 \아군[번호]
 \아군[1]은 \말풍선[1]과 같습니다.
 \아군[2]는 \말풍선[2]와 같습니다.
 
 \적그룹[번호]
 \적그룹[1]은 \말풍선[-1]과 같습니다.
 \적그룹[2]는 \말풍선[-2]와 같습니다.

해당 배틀러가 전투 불능 상태일 경우 또는 존재하지 않을 경우 일반 메시지 창으로 나오게 됩니다.

전투 장면에서 \말풍선[배틀러의 ID]의 배틀러 ID 값에 마이너스(-) 값을 전달하면, 적 배틀러에 말풍선을 띄웁니다. 플러스(+) 값을 전달할 경우, 아군에게 띄웁니다.

\말풍선[1] // 파티원 1
\말풍선[2] // 파티원 2
\말풍선[3] // 파티원 3
\말풍선[4] // 파티원 4
\말풍선[5] // 파티원 5가 없으면 파티원 4 위에 설정됩니다.
\말풍선[-1] // 적 배틀러 1
\말풍선[-2] // 적 배틀러 2

전투 장면에선 음수 또는 양수를 전달해야 하므로 ID 값은 0이 될 수 없습니다. 0으로 설정하면 일반 메시지로 나오게 됩니다.

복잡하게 느껴진다면 \말풍선[인덱스] 대신 \아군[인덱스]\적그룹[인덱스]을 사용하세요.

이 이벤트 위에 말풍선 설정

일반 맵에서만 동작합니다. 전투 장면에서는 동작하지 않습니다.

\말풍선[0]

플레이어 위에 말풍선 자동 설정

일반 맵에서만 동작합니다. 전투 장면에서는 다음 명령을 사용하면 적 배틀러 위에 말풍선이 설정됩니다.

\말풍선[-1]

텍스트 출력 속도 변경

모든 텍스트의 출력 속도를 조절할 수 있는 명령어입니다.

숫자의 단위는 프레임이며 값이 커질 수록 출력 속도가 느려집니다.

이 메시지는 대화창에서 한 번만 수행되며 다음 대화가 시작되면 플러그인 매개변수에 설정된 값으로 초기화됩니다.

\속도[숫자값]

텍스트 굵기 및 텍스트 기울임 설정

<B></B> 또는 <I></I> 태그를 사용하여 굵기 및 기울임을 설정할 수 있습니다.

말풍선, 이름 윈도우를 혼용하면 다음과 같습니다.

텍스트는 아래와 같고,

\말풍선[0]\이름<알리미><I>제단</I> 위에 <B>제물</B>을 바치십시오.

실제로 이렇게 입력해야 합니다.

1

이렇게 하면 다음과 같이 나오게 됩니다.

2

예)

<B>유령의 저택</B>에 함부로 들어가선 안돼.
<I>정신력</I> 문제는 아니야.

폰트 설정

대화창의 폰트는 일반적으로 컴퓨터에 설치된 시스템 폰트를 기본적으로 사용합니다. 일반적으로는 나눔고딕, Dotum, AppleGothic, sans-serif을 로드합니다.

게임을 플레이하는 유저분들의 컴퓨터에 나눔고딕이 설치되어있지 않은 경우, 폰트가 두 번째 폰트로 설정됩니다. 

이를 막으려면 다음 스크린샷처럼 커스텀 폰트를 로드해야 합니다.

font

폰트는 기본적으로 ./fonts 폴더에 있는 기본 폰트만 로드되지만 원한다면 추가 폰트 파일을 로드할 수 있습니다.

설정된 커스텀 폰트는 메시지 창에만 적용되므로, 전체적으로 적용시키고 싶다면 스크린샷과 같이 시스템 폰트로도 설정해야 합니다.

폰트 명에 공백이 포함되어있을 경우, 큰 따옴표로 묶어주시기 바랍니다(공백이 있으면 크롬에서 제대로 인식이 되지 않습니다)



[부록] 프로그램을 이용하여 컴퓨터에 설치되지 않은 폰트 설정하기

정석적인 방법은 커스텀 폰트를 설정하는 방법이지만 이 방법이 어렵다면 다음과 같이 추가 도구를 이용하는 방법이 있습니다. 

다음은 필자가 간단히 C# WPF로 만든 프로그램입니다. 

fonts 폴더에 설치할 폰트 파일과 프로그램을 두신 후, 실행 후 Save 버튼만 누르면 OK입니다.

추가가 끝나면 YEP_CoreEngine이나 RS_MesssageSystem 같은 플러그인에서 폰트 설정을 통하여 폰트를 설정할 수 있습니다.


만약 NeoDunggeunmo 폰트를 쓰고 싶다면 가장 먼저 적어야 합니다.


FontCSSGenerator.zip


위 프로그램은 Windows 10 이상의 OS에서 사용할 수 있으며 .Net Framework 4.5.2 이상이 컴퓨터에 설치되어있어야 동작합니다. 

거의 15분 만에 만든 뚝딱 만든 프로그램이므로, 경로를 체크하는 기능이 없기 때문에 프로그램은 fonts 폴더에 두어야 합니다.


텍스트 색상 변경

다양한 색상 코드를 사용할 수 있습니다. 미리 입력된 색을 사용할 수도 있고 웹 색상을 설정할 수도 있습니다. 이것은 최상위 클래스에 정의되므로 어느 창에서나 사용할 수 있습니다. 다만 텍스트 코드를 처리하는 창에서만 사용해야 합니다:

\색[색상명]
\테두리색[색상명]
\배경색[색상명]

사용 가능한 색상은 다음과 같습니다.

\색[기본색] - 이 색은 기본 윈도우 스킨 하단 색상 테이블에 위치한 0번 색과 같습니다.
\색[청록]
\색[검은색]
\색[파란색]
\색[짙은회색]
\색[자홍색]
\색[회색]
\색[녹색]
\색[밝은녹색]
\색[밝은회색]
\색[밤색]
\색[감청색]
\색[황록색]
\색[주황색]
\색[보라색]
\색[빨간색]
\색[은색]
\색[민트색]
\색[흰색]
\색[노란색]
\색[기본]
\색[청록색]
\색[검정]
\색[파랑]
\색[c_dkgray]
\색[자홍]
\색[c_gray]
\색[c_green]
\색[라임]
\색[c_ltgray]
\색[마룬]
\색[네이비]
\색[올리브]
\색[주황]
\색[보라]
\색[빨강]
\색[은]
\색[c_teal]
\색[흰]
\색[노랑]
\색[오렌지]
\색[c_orange]
\색[c_aqua]
\색[c_black]
\색[c_blue]
\색[c_fuchsia]
\색[c_lime]
\색[c_maroon]
\색[c_navy]
\색[c_olive]
\색[c_purple]
\색[red]
\색[c_red]
\색[c_silver]
\색[white]
\색[c_white]
\색[c_yellow]
\색[c_normal]

미리 정의한 색상 말고도 다른 색상을 사용하려면 이렇게 하면 됩니다.

\색[#ffffff] 과 \색[white]는 흰색입니다.
\색[rgb(255, 0, 0)]과 \색[red] 그리고 \색[#ff0000]은 빨강색입니다.
\색[aqua], \색[lime] 등 브라우저에 기본 정의된 색상 테이블에서도 가져올 수 있습니다.
\배경색[검정]배경색\배경색[없음]을 지정할 수도 있습니다.

웹 색상의 경우, #RRGGBBAA 포맷을 사용하며, 각각 빨강, 녹색, 파랑, 알파(Alpha)를 뜻합니다. 16진수 값이며 FF는 완전 불투명을 의미하고 88은 반투명이며 00은 완전히 투명한 색상입니다. 알파값을 생략하면 기본 FF로 설정됩니다. 웹 색상 값은 포토샵이나 색상 표를 검색하면 쉽게 알아낼 수 있습니다.

hms_highlight_text_color

텍스트에 그레디언트 적용


그레디언트 효과를 텍스트에 적용할 수 있습니다.


\그레디언트<텍스트>

그레디언트 색상값은 3가지 색상값으로 조합이 가능하며 플러그인 매개변수나 플러그인 커맨드를 통해 색상값을 바꿀 수 있습니다. 

플러그인 커맨드 사용법은 아래와 같습니다.

메시지 그레디언트 주황 흰색 빨강

텍스트 들여쓰기

텍스트 에디터에서 흔히 볼 수 있는 오른쪽 들여쓰기 기능으로 숫자값은 픽셀 단위입니다. 들여쓰기 기능은 특정 텍스트를 특정 위치로 옮기고자 할 때 사용하면 좋은 기능입니다.

\들여쓰기[숫자값]

선택지 스타일의 변경

선택지 스타일을 RPG Maker XP 스타일로 설정할 수가 있습니다.

XP 스타일로 설정할 경우, 다음과 같이 선택지 창이 안으로 나오게 됩니다.

선택지 확장이나 라인 수가 4보다 클 경우 호환되지 않으니 주의하세요.

텍스트 정렬

정렬자는 텍스트의 정렬을 할 수 있는 명령어로 가운데 정렬과 오른쪽 정렬을 지원합니다.

가운데 정렬은 \정렬자[1] 오른쪽 정렬은 \정렬자[2] 입니다

왼쪽 정렬은 \정렬자[0] 입니다.

태그처럼 사용할 수도 있습니다.

<CENTER>가운데</CENTER>
<right>오른쪽</right>
<left> 태그는 메시지 시작 전에 정렬자 텍스트 코드로 정확히 자동 변환됩니다.</left> 

example image example image2 example image2


큰 페이스칩의 설정

큰 페이스칩을 설정하려면 소재를 img/faces 폴더에 넣어주시기 바랍니다. 큰 페이스칩은 Big_ 이라는 머릿말이 붙어있어야 합니다.

큰 페이스칩은 페이스칩의 인덱스값을 읽어 정렬 위치를 정하게 됩니다.

이때, 페이스칩의 인덱스가 0 일 경우(흰 선택 칸이 가장 왼쪽 위에 위치하면) 왼쪽에 표시되고, 다른 번호면 오른쪽에 표시됩니다.

즉, 위 스크린샷과 같이 페이스칩의 인덱스를 1 로 설정할 경우 오른쪽에 표시됩니다.

얼굴 이미지의 좌표는 다음과 같습니다.

얼굴 이미지의 좌표는 개별 설정을 가지고 있지 않습니다. 만약에 얼굴 이미지의 상당 부분이 공백이라면 플러그인에서 공백을 자동으로 감지해주지 않으므로 공백을 고려한 오프셋을 직접 추가해주셔야 합니다. 즉, 개별 설정으로 변경하려면 번거롭지만 다음과 같이 자바스크립트 파일을 하나 만들고 새로 추가해야 합니다.

예를 들면, 아래와 같이 ES6 기준으로 faceUtils 객체를 만들고 매번 설정을 바꾸는 것을 고려해야 합니다.

// faceUtils.js
window.messageFaces = {
    "Big_Package2_7": {
        x: 10,
        y: 37,
    },
};

let faceUtils = {

    saveFaceSettings() {
        RS.MessageSystem.Params.tempFaceOX = RS.MessageSystem.Params.faceOX;
        RS.MessageSystem.Params.tempFaceOY = RS.MessageSystem.Params.faceOY;
    },    

    change(faceName) {
        var faceName = $gameMessage.faceName();
        var target = window.messageFaces[faceName];
        if(target) {
            RS.MessageSystem.Params.faceOX = target.x;
            RS.MessageSystem.Params.faceOY = target.y;
        }   
    },

    restoreFaceSettings() {
        RS.MessageSystem.Params.faceOX = RS.MessageSystem.Params.tempFaceOX;
        RS.MessageSystem.Params.faceOY = RS.MessageSystem.Params.tempFaceOY;    
    } 

};

이런 식으로 코딩을 했다면 메시지 창을 띄우기 전에 다음과 같이 스크립트 명령을 호출해야 합니다. 

faceUtils.saveFaceSettings();
faceUtils.change("Big_Package2_7");

메시지 윈도우가 끝나면 다음과 같은 스크립트 명령을 호출하면 원래 설정으로 되돌아옵니다.

faceUtils.restoreFaceSettings();


얼굴 이미지는 \얼굴<이미지명, 이미지 인덱스> 텍스트 코드를 사용해서 중간에 변경할 수도 있습니다. 


RPG Maker MV 1.5.0 이상이라면,

텍스트를 읽어들이기 전에 얼굴 이미지를 바꾸는 텍스트 코드가 있는 지를 확인하여 사전에 이미지를 자동으로 로드합니다. 

하지만 RMMV 최신 버전이 아니라면, 그 기능이 적용되지 않기 때문에 별도로 프리로드를 해야 합니다.


일반 페이스칩의 표시 위치 설정

얼굴 이미지의 위치라는 플러그인 매개변수 값 조절을 통해 표시 위치를 왼쪽 또는 오른쪽으로 바꿀 수 있습니다.

플러그인 명령 메시지 페이스칩위치 2을 통해 표시 위치를 오른쪽으로 바꿀 수 있으며, 

플러그인 명령 메시지 페이스칩위치 0을 통해 표시 위치를 다시 왼쪽으로 바꿀 수 있습니다.


또는 텍스트 코드 \FD[2] 또는 \FD[0]으로 바꿀 수 있습니다.

오른쪽 정렬 시 얼굴 이미지와 겹쳐지는 텍스트는 자동으로 줄바꿈 처리됩니다.


라인 갯수 변경

대화창의 기본 라인 수를 변경하고 싶을 경우 아래와 같이 메시지 라인이라는 플러그인 커맨드를 사용하여 라인 수를 변경할 수 있습니다.

통화 서식 지정

숫자에 통화 서식을 지정하여 세 자릿수 마다 콤마를 자동으로 찍어 출력합니다.

\숫자[값]

텍스트 코드 변경 기능

텍스트 코드를 원하는 텍스트 코드로 변경할 수 있습니다. 끝에 느낌표가 붙어있는 경우, 느낌표는 변경하지 말고 그대로 둬야 합니다.

노트 태그 기능

문장의 표시가 시작되기 전에 메시지 설정을 노트 태그로 바꾸는 기능입니다. 문장의 표시 바로 위에 있는 노트 커맨드 2개만 읽어옵니다.

RPG Maker MV는 이전 시리즈와 달리 동기 방식이 아니라 비동기 방식으로 이미지를 로드합니다. 따라서 윈도우 스킨 변경 명령의 경우, 이미지를 사전에 미리 로드해두어야 합니다.

플러그인 매개변수에 있는 프리로드 기능을 사용하세요. 면밀히 테스트 해본 결과, 사전에 로드하는 것이 제일 잘 동작합니다. 미리 로드하지 않으면, 윈도우 스킨의 픽셀 값을 읽지 못해 폰트가 검정색으로 나오는 등의 문제가 생깁니다. 그런 경우를 대비하여 이전에 미리 설정해놓은 윈도우스킨의 기본색으로 채우게 해놨지만, 윈도우 스킨에서 텍스트 색상을 가져오는 텍스트 색상 변경 명령의 경우, 제대로 동작하지 않게 됩니다.

<윈도우 스킨:Window>
<이름 윈도우 스킨:Window>
<라인 높이:36>
<폰트 크기:28>
<텍스트 시작 X:256>
<큰 페이스칩 OX:0>
<큰 페이스칩 OY:0>
<대화창 뒤에 얼굴 표시:true>
<대화창 투명도:255>
<텍스트 효과음 재생 여부:true>
<기본 텍스트 출력 속도:0>

노트 태그의 경우, 전부 한국어입니다. 한국어로 설정을 해두면 가독성이 좋아집니다. 해외 유저가 한국어로 된 게임을 영어로 번역을 하는 경우는 흔치 않고 대부분 개발자가 직접 영어로 번역하므로 문제가 없을 것으로 보여집니다.

영어, 일본어, 중국어 텍스트 코드까지 지원하는 플러그인이지만, 실제로 이 언어들을 사용하는 국가에서 이 플러그인을 쓰고 있진 않습니다. 그래서 그냥 한국어로만 작성하였습니다. (영어, 일본어, 중국어 텍스트 코드를 사용하고 있다는 분이 한 분이라도 있다면 필자에게 연락을 하십시오.)

3

0을 입력하면 기본 값이 나오는 게 아니라 0이 입력되니 주의하시기 바랍니다. 이는 값을 잘못 입력했을 때 기본 값이 나오게 하는 기능이었지만 정작 0을 입력할 수가 없어서 이 기능을 제외했으며 모든 값을 입력할 수 있게 해놨습니다. 다만 잘못 입력하면 오류가 생길 수도 있다는 점을 잊지 마십시오.

전체 텍스트 코드

언어 코드를 ko로 설정을 해두셔야 한국어 텍스트 코드를 인식합니다.

나중에 게임을 영어나 일본어로 번역할 때에도 이 부분은 텍스트 코드 그 자체이니 그대로 둬야 합니다.

텍스트 코드는 코드 내에 하드 코딩되어 있지 않고 동적으로 인식하므로 플러그인 매개변수에서 원하는 다른 텍스트 코드로 변경할 수 있습니다. 

 \색[색상명]
 \속도[값]
 \테두리색[색상명]
 \테두리크기[값]
 \들여쓰기[값]
 \굵게!
 \이탤릭!
 \이름<이벤트명>
 \그레디언트<텍스트>
 \파티원[번호]
 \주인공[번호]
 \변수[번호]
 \아이콘[번호]
 \확대!
 \축소!
 \골드
 \말풍선[이벤트의 ID]
 \말풍선[0]
 \말풍선[-1]
 \정렬자[1]
 \정렬자[2]
 \숫자[숫자]
 \크기[숫자]
 \탭!
 \캐리지리턴!
 \효과음<효과음명>
 \그림표시<그림번호, 그림이름, 원점번호, X좌표, Y좌표>
 \그림제거[그림번호]
 \아이템[번호]
 \무기구[번호]
 \방어구[번호]
 \직업[번호]
 \적군[번호]
 \상태[번호]
 \스킬[번호]
 \얼굴<얼굴_이미지_이름,얼굴_이미지_인덱스>
 \아군[번호] * 전투에서만 사용 가능
 \적그룹[번호] * 전투에서만 사용 가능
 <B></B>
 <I></I>
 <LEFT></LEFT>
 <CENTER></CENTER>
 <RIGHT></RIGHT>
 \배경색[색상명]
 \FD[얼굴_위치]  * Face Direction의 약자

플러그인 커맨드

텍스트의 속도는 0에서 가장 빠르고, 프레임 단위로 지정할 수 있습니다.

 메시지 텍스트속도 number

 메시지 폰트크기 number
 메시지 폰트최소크기 number
 메시지 폰트최대크기 number

그레디언트 텍스트로 색상을 변경할 수 있습니다.

 메시지 그레디언트 color1 color2 color3

라인 수를 바꿀 수 있는 플러그인 명령입니다.

 메시지 라인 number

라인 수 변경을 했다면 반드시 마지막에 기본값 4로 바꿔놓으십시오.

 메시지 시작위치 number
 메시지 이름윈도우 x number
 메시지 이름윈도우 y number
 메시지 이름윈도우 padding number
 메시지 이름윈도우 윈도우스킨 skin_name
 메시지 큰페이스칩X number
 메시지 큰페이스칩Y number

number가 -1이면 메시지 창이 페이스칩을 가리고, 다른 값이면 가리지 않습니다:

 메시지 큰페이스칩Z number

255로 설정하면 완전히 불투명해야 하지만 기본 이미지의 알파 채널 자체가 반투명하여 완전 불투명하게 표시되지 않습니다. 완전 불투명하게 표시하려면 이미지의 알파 채널도 불투명해야 합니다.

 메시지 탭크기 number
 메시지 배경투명도 number
 메시지 컨텐츠투명도 number
 메시지 윈도우스킨 skin_name

윈도우 스킨 명령어 사용 시 이미지 파일을 미리 로드 해두어야 합니다. (플러그인 매개변수에 있는 프리 로드 기능을 사용하세요)

텍스트가 대화창보다 더 길게 넘어가면 자동으로 줄바꿈 처리를 합니다. 또한 불필요한 개행 문자를 없애고 문단을 최대한 최소화하여 한 메시지 창에서 보이게 만듭니다.

메시지 문단최소화 true

개행 문자를 그대로 두고, 자동으로 줄바꿈 처리를 하지 않습니다.

메시지 문단최소화 false

문단 최소화가 true(ON)인 상태에서 정렬자를 사용하면 정렬자가 제대로 동작하지 않을 수 있으니 주의 하시기 바랍니다.

말풍선 모드나 일반 메시지 창의 오프셋을 조정할 수 있습니다.

메시지 오프셋X number
메시지 오프셋Y number

얼굴 이미지의 정렬 위치를 바꾸려면 다음과 같은 플러그인 명령을 호출하세요. 왼쪽 정렬은 0을, 오른쪽 정렬은 2를 인자 값으로 전달하세요.

메시지 페이스칩위치 0
메시지 페이스칩위치 2


Addon


얼굴 애니메이션 - https://biud436.tistory.com/111

한글 비트맵 텍스트 - https://biud436.tistory.com/78