MVZ 플러그인) DarkPlasma_AutoLineBreak.js + MPP_MessageEX_AutoLineBreak_Patch.js + VisuMZ_1_MessageCore.js
DarkPlasma_AutoLineBreak.js (ver 1.4.1) 완전 분석
이 플러그인은 쯔꾸르 MV/MZ에서 메시지창 폭을 넘는 텍스트를 자동으로 줄바꿈해주는 매우 유명하고 안정적인 플러그인입니다. 특히 한국어·일본어 같은 다바이트 언어의 금칙 처리(행두·행미 금지 문자)를 상당히 잘 구현한 플러그인으로, 창작마당에서 "자동 줄바꿈 플러그인 중 최고"로 평가받는 작품 중 하나예요.
핵심 기능 요약 (한눈에)
기능 | 설명 | 일본어/한국어 지원 수준 | 영어 지원 수준 | 난이도 |
|---|---|---|---|---|
자동 줄바꿈 | 메시지창 폭 초과 시 자동 개행 | ★★★★★ | ★★★★☆ | ★☆☆ |
행두·행미 금칙 처리 | , . ) 」 등 행두 금지 문자, ( 「 등 행미 금지 문자 처리 | ★★★★★ | ★★★☆☆ | ★☆☆ |
단어 기반 개행 (Word Wrap) | 반각 스페이스로 구분된 영단어 단위로 끊음 (설정 ON 시) | ★★★☆☆ | ★★★★★ | ★☆☆ |
일시적 자동 개행 무시 | \IGNOREAUTOLINEBREAK[START] ~ [FINISH] 제어 문자로 특정 구간 무시 | ★★★★★ | ★★★★★ | ★★☆ |
이름창·선택지 제외 | Window_NameBox, Window_ChoiceList 등은 자동 개행 안 함 | - | - | 자동 |
전투 로그(Battle Log) 지원 | 전투 메시지(데미지 표시 등)도 자동 개행 | ★★★★☆ | ★★★★☆ | 자동 |
플러그인 매개변수 상세 설명
매개변수 이름 | 기본값 | 설명 | 추천 설정 (한국어 기준) |
|---|---|---|---|
prohibitLineBreakBefore | ,)]}、〕〉》」』】… 등 60여 개 | 행두에 오면 안 되는 문자 목록 (행두 금칙 문자) | 그대로 두기 (완벽) |
prohibitLineBreakAfter | ([{〔〈《「『【… 등 20여 개 | 행미에 오면 안 되는 문자 목록 (행미 금칙 문자) | 그대로 두기 |
ignoreAutoLineBreakWindows | [] (빈 배열) | 자동 개행을 하지 않을 창 클래스 이름 목록 (예: ["Window_NameBox"]) | 필요 시 Window_NameBox 추가 |
lineWidthMargin | 4 | 금칙 문자 처리 시 여유 폭 (픽셀) – 너무 크면 개행이 과도하게 일찍 됨 | 4~8 사이 추천 |
wordBaseLineBreak | false | 영어 단어 단위 개행 ON/OFF (반각 스페이스로 구분) | 영어 대사 많으면 true |
제어 문자 (Control Character) 사용법
이 플러그인만의 특별한 제어 문자 하나만 있습니다.
\IGNOREAUTOLINEBREAK[START] → 이 위치부터 자동 줄바꿈 임시 무시 (강제로 한 줄로 이어짐)
\IGNOREAUTOLINEBREAK[FINISH] → 무시 상태 해제 (다시 자동 줄바꿈 복귀)
사용 예시 (메시지창에서)
text
이 문장은 아주 길어서 자동으로 줄바꿈이 되는데
\IGNOREAUTOLINEBREAK[START]
이 부분은 강제로 한 줄로 이어집니다
\IGNOREAUTOLINEBREAK[FINISH]
이제 다시 자동 줄바꿈이 됩니다.→ 특정 대사(예: 시 구절, 코드, 긴 이름 등)를 강제로 한 줄로 유지하고 싶을 때 유용
실제 동작 원리 (간단 요약)
processCharacter에서 매 글자마다 현재 줄의 폭 + 다음 글자 폭을 계산
폭이 contentsWidth() - lineWidthMargin을 넘으면 → 행두 금칙 문자인지 확인 → 아니면 개행
행미 금칙 문자가 다음에 오면 미리 개행
연속 2개 이상 금칙 문자는 일부만 처리 (완벽하지 않음)
wordBaseLineBreak ON 시 → 다음 공백까지 미리 폭 계산 → 단어 단위 개행
장점 vs 단점 (현실적인 평가)
장점
한국어·일본어 금칙 문자 처리 수준이 창작마당 무료 플러그인 중 최상위
YEP_MessageCore, MPP_ChoiceEX, MOG_PictureEffects 등과 충돌 거의 없음
가볍고 (약 10KB) 업데이트도 꾸준함 (2023년까지 활발)
제어 문자로 임시 무시 가능 → 유연성 최고
단점
행말 금칙 문자 연속 3개 이상은 완벽 처리 못 함 (예: ))) 같은 경우)
영어 단어 개행은 wordBaseLineBreak 켜야 제대로 됨 (기본 OFF)
이름창·선택지는 기본적으로 제외 → 선택지 길면 별도 대책 필요
실제 추천 설정 (한국어 게임 기준)
text
prohibitLineBreakBefore : 그대로 두기 (기본값 최고)
prohibitLineBreakAfter : 그대로 두기
ignoreAutoLineBreakWindows : ["Window_NameBox", "Window_ChoiceList"] ← 이름창·선택지 제외
lineWidthMargin : 6~8 (한국어 글꼴에 따라 조금 여유 주는 게 예쁨)
wordBaseLineBreak : false (한국어 위주면 OFF, 영어 섞이면 ON)결론 (2026년 기준 평가)
점수: ★★★★☆ (5점 만점에 4.5점)구독 가치: 무료로도 최고 수준, 꼭 깔아야 할 자동 줄바꿈 플러그인 중 1~2위
MessageAutoWrap.js와 비교하면
DarkPlasma 버전: 금칙 처리 + 제어 문자 더 세밀
Triacontane 버전: 호환성 + 영어 단어 개행이 조금 더 강력
한국어 위주 게임이라면 DarkPlasma_AutoLineBreak가 조금 더 자연스럽게 보입니다.
필요하면 이 플러그인 설치 후 긴 대사 + 선택지 예쁘게 나오는 이벤트 예시 만들어드릴게요! 궁금한 점 있으시면 언제든 말씀해주세요~ 😊
//
MPP_MessageEX_AutoLineBreak_Patch.js 분석
이 플러그인은 목성펭귄(木星ペンギン)이 2022년에 만든 패치 플러그인으로, MPP_MessageEX.js (목성펭귄의 메시지창 확장 플러그인)와 DarkPlasma_AutoLineBreak.js (DarkPlasma의 자동 줄바꿈 플러그인)를 함께 사용할 때 자동 줄바꿈이 제대로 작동하도록 연결해주는 호환 패치입니다.
핵심 목적 (한 문장 요약)
MPP_MessageEX.js의 확장된 메시지 처리(루비, 그룹 문자, 아이콘 등)와 DarkPlasma_AutoLineBreak.js의 자동 줄바꿈 기능을 서로 충돌 없이 동작하게 만드는 패치 플러그인
→ 두 플러그인을 단독으로 쓰면 잘 되지만, 같이 쓰면 자동 개행이 깨지거나 루비·아이콘이 잘리는 문제가 생기는데, 이 패치가 그 부분을 수정해줍니다.
주요 동작 원리
이 플러그인은 Window_Message.prototype의 기존 메서드를 오버라이드(재정의)해서 DarkPlasma_AutoLineBreak의 자동 개행 로직을 MPP_MessageEX의 특수 문자 처리에도 적용합니다.
오버라이드된 주요 메서드 4개
processNormalCharacter (일반 문자 처리)
DarkPlasma의 mustLineBreak 체크를 먼저 수행
개행이 필요하면 processNewLine 호출 후 문자 처리
processDrawIcon (아이콘 표시 \I[n])
아이콘 폭(pw + 4)을 고려해서 개행 필요 여부 판단
개행 필요 시 새 줄로 이동 후 아이콘 그림
processGroupCharacter (그룹 문자 – MPP_MessageEX의 특수 문자 묶음)
그룹 첫 글자 폭만 체크해서 개행 여부 판단
개행 후 그룹 문자 전체 처리
processRubyCharacter (루비 문자 – MPP_MessageEX의 루비 기능)
루비 + 본문 글자 중 더 넓은 쪽 폭을 기준으로 개행 판단
개행 시 루비 높이만큼 y축 이동 (루비가 잘리지 않게)
특징 & 제한사항 (도움말 그대로)
금칙 문자(행두·행미 금지 문자)는 지원 안 함 → DarkPlasma_AutoLineBreak의 금칙 처리를 그대로 가져오지 않고 단순 폭 체크만 함 → , . ) 」 같은 문자가 행두에 오는 경우가 생길 수 있음
루비 높이 반영이 완벽하지 않음 → 일부 상황에서 루비가 잘리거나 위치가 어긋날 수 있음 (도움말에도 명시)
페이지 송리 포즈(자동 개행 후 기다림) 미지원 → 일부 제어 문자에서는 자동 개행 후 자동으로 페이지 넘김 대기(!)가 안 걸림
설치 순서 엄격 → MPP_MessageEX.js와 DarkPlasma_AutoLineBreak.js보다 아래에 설치해야 함 (플러그인 관리자에서 가장 아래쪽으로)
실제로 필요한 사람
MPP_MessageEX.js를 이미 쓰고 있는 사람
DarkPlasma_AutoLineBreak.js로 자동 줄바꿈을 하고 싶은 사람
특히 루비(후리가나)나 그룹 문자, 아이콘 포함 긴 대사를 자주 쓰는 사람
이 두 플러그인 중 하나만 쓰고 있다면 이 패치는 필요 없습니다.
호환성 & 추천 순서 (2026년 기준)
text
(위 → 아래 순서로 설치)
1. YEP_MessageCore (있으면)
2. MPP_MessageEX.js
3. DarkPlasma_AutoLineBreak.js
4. MPP_MessageEX_AutoLineBreak_Patch.js ← 이 패치 가장 아래결론 평가
필요성: ★★★★☆ (두 플러그인을 같이 쓸 때만 필수) 완성도: ★★★☆☆ (금칙 처리 미지원, 루비 미세 어긋남 있음) 대안:
금칙 처리가 꼭 필요하면 DarkPlasma_AutoLineBreak 단독 + MPP_MessageEX 포기
아니면 VisuMZ Message Core (MZ 전용)로 넘어가면 자동 줄바꿈 + 루비 + 금칙 모두 기본 지원
이 패치 덕분에 MPP + DarkPlasma 조합을 쓰는 한국 유저들이 꽤 많아요. 루비나 아이콘 때문에 대사가 잘리는 게 고민이었다면 이 패치 하나로 해결되는 경우가 많습니다.
필요하면 이 패치 적용 후 루비 + 긴 대사 예쁘게 나오는 이벤트 예시 만들어드릴게요! 궁금한 거 있으시면 말씀해주세요~ 😊
//
VisuMZ_1_MessageCore.js 플러그인 분석
VisuMZ_1_MessageCore.js는 RPG Maker MZ(RMMZ)용 플러그인으로, VisuStella 팀(주로 Yanfly로 알려짐)이 개발한 Tier 1 코어 플러그인입니다. 이 플러그인은 RMMZ의 기본 메시지 시스템을 확장하고 강화하여, 게임 개발자가 메시지 창의 워크플로우를 더 유연하게 커스터마이징할 수 있게 합니다. 기본적으로 메시지 표시, 텍스트 효과, 자동 처리 등을 개선하며, 다른 VisuStella 플러그인(예: Battle Core, Options Core)과 연동되어 추가 기능을 제공합니다. 플러그인 버전은 1.54로, 코드가 난독화(obfuscated)되어 있어 상세한 내부 구현 분석이 어렵지만, 공식 문서와 업데이트 로그를 기반으로 주요 기능을 요약하겠습니다. 이 플러그인은 RMMZ의 소스 코드 버그를 수정하고, 메시지 관련 QoL(Quality of Life) 기능을 추가하는 데 초점을 맞춥니다.
플러그인 목적과 소개
주요 목적: RMMZ의 메시지 창(대화 상자)을 더 세밀하게 제어할 수 있게 합니다. 기본 메시지 기능의 한계를 넘어, 텍스트 코드 확장, 자동 색상 적용, 매크로 시스템 등을 통해 개발 효율성을 높입니다. 예를 들어, 대화 텍스트에 아이콘, 색상, 애니메이션 등을 쉽게 추가할 수 있습니다.
필수 요구사항: VisuMZ_0_CoreEngine 플러그인 이후에 로드되어야 합니다(@orderAfter 지시자 참조). 다른 VisuStella 플러그인과 함께 사용하면 옵션 메뉴에 통합 옵션이 추가됩니다.
대상: RMMZ 사용자, 특히 메시지 중심의 스토리텔링 게임 개발자.
주요 기능(Features)
이 플러그인은 다음과 같은 기능을 제공합니다. 이는 공식 위키와 업데이트 로그에서 추출된 내용입니다.
일반 메시지 설정 제어: 메시지 창의 크기, 위치, 행 수, 배경 등을 플러그인 파라미터로 조정 가능. 예: 행 수를 4에서 6으로 늘리거나, 창 투명도 설정.
자동 색상(Auto-Color): 키워드나 데이터베이스 항목(아이템, 스킬 이름 등)에 자동으로 색상을 적용. 특수 문자(예: !, ?, [, ])가 포함된 이름은 무시하여 오류 방지.
텍스트 코드 확장: 기본 RMMZ 텍스트 코드(\c[n] 색상 등) 외에 새로운 코드 추가. 예: \ActorFace[x] (액터 얼굴 표시), \WordWrap (단어 줄바꿈), 정렬 태그(<LEFT>, <CENTER>, <RIGHT>).
커스텀 텍스트 코드: 개발자가 사용자 정의 텍스트 코드를 구현 가능. 예: 문자열 대체(JS: Text)나 액션(JS: Action) 추가.
매크로 시스템: 반복되는 텍스트 패턴을 매크로로 등록하여 개발 속도 향상. 예: \macro[name]으로 호출.
워드 랩(Word Wrap) 및 줄 바꿈: 텍스트가 창을 넘치지 않게 자동 줄 바꿈. 왼쪽/가운데/오른쪽 정렬 지원. 줄 바꿈 간격 버그 수정됨.
이름 창(Name Window): 대화자 이름 표시 창 추가. 위치, 스타일 커스터마이징.
사운드 효과: 텍스트 표시 시 SE(Sound Effect) 재생, 타이핑 사운드 등.
기타 QoL: 메시지 로그 통합(별도 플러그인 필요), 옵션 메뉴 연동(예: 마스터 볼륨, 윈도우 톤), 버그 픽스(예: 빈 이름 액터 하이라이트 오류).
기능 카테고리 | 세부 설명 | 예시 사용 |
메시지 창 커스터마이징 | 창 크기, 위치, 행 수 조정 | 플러그인 파라미터 > General > Row Count: 6 |
자동 색상 | 데이터베이스 항목 자동 강조 | 아이템 이름에 색상 적용 |
텍스트 코드 | 새로운 효과 추가 | \ActorFace[1]으로 액터 1의 얼굴 표시 |
매크로 | 반복 텍스트 간소화 | \macro[hello] = "안녕하세요!" |
워드 랩 | 텍스트 오버플로 방지 | <WordWrap> 긴 문장 </WordWrap> |
플러그인 파라미터(Plugin Parameters)
플러그인 관리자에서 설정 가능한 옵션입니다. @help 섹션(문서 시작 부분)에 상세히 나와 있지만, truncated된 부분을 기반으로 주요 카테고리를 요약:
General Settings: 메시지 행 수(기본 4), 창 너비/높이, 배경 타입(윈도우/투명/어두움).
Auto Color Settings: 자동 색상 적용 대상(키워드, 액터 이름, 아이템 등), 색상 코드 지정.
Text Code Replacements: 기존 텍스트 코드 대체(예: \ActorFace JS 코드 수정).
Macro Settings: 매크로 목록 등록(이름-값 쌍).
Name Window Settings: 이름 창 위치(왼쪽/가운데/오른쪽), 스타일, 폰트 등.
Sound Settings: 텍스트 타이핑 SE, 볼륨/피치/팬 설정.
노트 태그(Notetags)나 이벤트 명령어와 연동되어 데이터베이스(액터, 아이템 등)에 적용 가능. 예: 액터 노트에 <Message Name Color: #RRGGBB>로 색상 지정.
텍스트 코드(Text Codes) 기본 RMMZ 코드 외에 추가된 하드코딩된 코드 목록(위키에서 발췌): \AutoColorOn / \AutoColorOff: 자동 색상 토글. \Name[x]: 이름 창에 x 표시. \Icon[x]: 아이콘 x 삽입. \OutlineColor[x]: 아웃라인 색상 변경. \FontSize[x]: 폰트 크기 변경. <WordWrap> / </WordWrap>: 단어 줄 바꿈 활성화. <Align: type>: 텍스트 정렬(left, center, right). 기타: \ActorFace[actorId], \PartyMember[pos] 등. 커스텀 코드 추가 가능(플러그인 파라미터 > Custom Text Codes).
플러그인 명령어(Plugin Commands)
메시지 관련 명령어로 이벤트에서 호출:
Show Message: 확장된 옵션(위치, 배경 등).
Message Settings: 런타임 중 설정 변경(예: 행 수 동적 변경).
Name Window: 이름 창 표시/숨김.
코드 구조 분석
제공된 파일은 다음과 같은 구조입니다:
헤더(Header): //============================================================================= 로 시작, Imported와 VisuMZ 네임스페이스 설정. 버전 1.54.
@help 섹션: 플러그인 설명, 파라미터, 텍스트 코드 등. 하지만 문서에서 345583자 truncated되어 전체가 보이지 않음.
본체 코드: 난독화된 JavaScript. 예: "this['y']=0x0"처럼 변수/함수가 16진수와 문자열로 obfuscated. 이는 상업 플러그인의 표준으로, 역공학 방지 목적. 주요 부분은 Window_Message 클래스 확장, drawTextEx 오버라이드, 새로운 메서드 추가(예: processEscapeCharacter 확장).
끝부분: 정렬/위치 관련 함수(예: <TOP>, <MIDDLE>, <BOTTOM> 태그 처리). RegExp로 태그 매칭 후 x/y 좌표 조정.
난독화로 인해 상세 디버깅은 어렵지만, 기능적으로는 Window_Base와 Scene_Message를 수정하여 동작합니다. 버그 픽스 예: 버전 1.01에서 \ActorFace[x] 수정("$gameActors.actor(1)" → "$gameActors.actor(actorId)"), WordWrap 지원 추가.
추가 팁과 주의사항
업데이트 로그(Changelog): 초기 버전(1.00)에서 WordWrap 버그, 빈 이름 오류 등이 수정됨. 최신 버전에서 left/center/right 정렬 지원 추가.
호환성: 다른 VisuStella 플러그인과 잘 연동(예: Message Log 플러그인으로 로그 기능 확장). RMMZ 기본 플러그인과 충돌 가능성 있으니 플러그인 매니저 순서 주의.
사용 예시: 샘플 프로젝트(VisuStella MZ Sample Game)에서 이 플러그인이 사용됨. 대화 이벤트에서 텍스트 코드 테스트 추천.
문제 해결: 만약 코드 실행 오류가 발생하면, 플러그인을 재설치하거나 JS: Text 파라미터 확인.
이 플러그인은 RMMZ 메시지 시스템의 필수 확장으로, 스토리 중심 게임에 특히 유용합니다. 더 구체적인 코드 부분 분석이 필요하시면 추가 쿼리를 부탁드려요!
//
aHR0cHM6Ly9raW8uYWMvYy9iY2VTS19tWW9EUTJIWkpHMUVjeldi
자동 줄바꿈 관련 플러그인 찾아서 올림