124 lines
6.6 KiB
Markdown
124 lines
6.6 KiB
Markdown
# My Novel — 나만의 비주얼 노벨의 출발점
|
|
|
|
My Novel은 프로젝트에서 가장 작은 완성된 비주얼 노벨입니다. 저녁의 마을, 바, 집이 선택지로 이어져 있습니다. 캐릭터도 아이템도 전투도 없고, 장면과 짧은 시나리오 파일, 그 번역만 있을 뿐입니다. 이 모드는 복제하기 위해 만들어졌습니다. 이름을 바꾸고, 이 세 장소에서 나만의 이야기를 키우세요.
|
|
|
|
**플레이 → My Novel → 새 게임**에서 시작합니다. **My Novel** 게임(컬렉션 `novel_template`)의 콘텐츠입니다.
|
|
|
|

|
|
|
|
## 들어 있는 것
|
|
|
|
```filestree
|
|
my_novel_game/
|
|
├── manifest.json
|
|
├── scenes/
|
|
│ ├── my_novel_town.json 마을 입구, 게임이 여기서 시작됨
|
|
│ ├── my_novel_bar.json 자체 환경음이 있는 바
|
|
│ └── my_novel_home.json 집 현관
|
|
├── scenarios/
|
|
│ ├── my_novel_town.scenario
|
|
│ ├── my_novel_bar.scenario
|
|
│ └── my_novel_home.scenario
|
|
└── locale/
|
|
├── en.properties 모드 이름과 설명
|
|
└── scenarios_<lang>.properties 시나리오 줄의 번역
|
|
```
|
|
|
|
그림과 바 소리는 이 모드에 없습니다. **Town Pack**에서 오기 때문에, 템플릿은 작게 유지되면서 게임이 공유 콘텐츠를 재사용하는 방식을 보여 줍니다. 음악은 **Music Pack**에서 옵니다. 엔진 모드는 2D 셸, 대화 엔진, 오디오 엔진입니다.
|
|
|
|
## 이야기가 흐르는 방식
|
|
|
|
마을이 중심입니다. 방문할 때마다 같은 선택지가 나타나고, 바와 집은 언제나 돌아가는 길로 이어집니다.
|
|
|
|
```text
|
|
┌────────────────────┐
|
|
│ my_novel_town │ (시작)
|
|
│ “어디로 갈까?” │
|
|
└──┬──────────────┬──┘
|
|
바에 들어간다 집으로 돌아간다
|
|
▼ ▼
|
|
┌──────────────┐ ┌──────────────┐
|
|
│ my_novel_bar │ │ my_novel_home│
|
|
└──────┬───────┘ └──────┬───────┘
|
|
└─ 마을로 돌아간다 ─┘
|
|
```
|
|
|
|

|
|
|
|
장면 파일은 배경과 환경음을 지정합니다:
|
|
|
|
```json
|
|
{
|
|
"name": "my_novel_bar",
|
|
"defaultBackground": "bar/bar",
|
|
"defaultAmbient": "bar/bar_ambient"
|
|
}
|
|
```
|
|
|
|
장면과 같은 이름의 시나리오는 그 장면에 들어설 때 실행됩니다:
|
|
|
|
```scenario
|
|
scene: my_novel_town
|
|
priority: 10
|
|
---
|
|
# The town is the hub: every visit shows the same choice.
|
|
text "Evening town. The street lamps are already lit and a cool draught runs along the cobbles." key=my_novel/town/intro
|
|
select "Where to go?" key=my_novel/town/prompt
|
|
option "Go into the bar" key=my_novel/town/opt_bar -> :bar
|
|
option "Go back home" key=my_novel/town/opt_home -> :home
|
|
|
|
:bar
|
|
switch_scene my_novel_bar
|
|
end
|
|
|
|
:home
|
|
switch_scene my_novel_home
|
|
end
|
|
```
|
|
|
|
영어 텍스트는 시나리오에 직접 쓰여 있습니다. 각 `key=`는 그 줄의 번역을 `locale/scenarios_<lang>.properties`에서 가리킵니다. 예를 들어 스페인어는:
|
|
|
|
```properties
|
|
my_novel/town/intro = La ciudad al anochecer. Las farolas ya están encendidas y una corriente fresca recorre los adoquines.
|
|
```
|
|
|
|
## 내 것으로 만들기
|
|
|
|
1. **모드를 복제하고 이름을 바꾸십시오.** 게임 이름에 `_game` 접미사를 붙여 지으세요. 예: `harbor_game`. 폴더 이름과 `manifest.json`의 `id`를 같은 값으로 바꾸고, `locale/*.properties`의 키 `mod_my_novel_game_name` / `_desc`를 `mod_harbor_game_name` / `_desc`로 바꾸십시오.
|
|
2. **게임을 만드십시오.** **Mods & Collections → 컬렉션**에서 My Novel의 구성을 열고 **복제**를 누른 뒤, **스토리** 블록의 `my_novel_game`을 내 모드로 바꾸십시오. 시작 장면은 컬렉션에서 정합니다(`"entry": { "scene": "my_novel_town" }`).
|
|
3. **장면 이름을 바꾸십시오(선택).** 장면의 `name`, 그 파일, 시나리오의 `scene:` 헤더, 그곳으로 이어지는 모든 `switch_scene`이 일치해야 합니다.
|
|
4. **아트를 유지하거나 교체하십시오.** 마을을 그대로 두려면 `depends`에 `town_pack`을 남기세요. 아니면 자신의 `backgrounds/`와 `sounds/`를 추가하고 `defaultBackground` / `defaultAmbient`가 그쪽을 가리키게 하세요.
|
|
|
|
## 첫 번째 변경: 장소 추가하기
|
|
|
|
이것은 편집기에서의 실제 세션입니다. My Novel에 Editor Tools 모드를 추가한 상태에서 진행했습니다. 장면 편집기가 `my_novel_park` 장면을 만들고, 마을 시나리오에 선택지 하나와 라벨 하나를 입력했습니다:
|
|
|
|

|
|
|
|
```scenario
|
|
option "Go to the park" -> :park
|
|
|
|
:park
|
|
switch_scene my_novel_park
|
|
end
|
|
```
|
|
|
|
저장하면 마을이 곧바로 새 길을 내놓고, 그것을 고르면 새 장면이 열립니다:
|
|
|
|

|
|
|
|
자신의 게임에서 편집기를 쓰려면 구성에서 **Editor Tools** 모드를 추가하거나, 한 세션 동안 그것들과 함께 게임을 실행하세요:
|
|
|
|
```text
|
|
godot --path . -- --game=novel_template --new --with-mods=editor_tools
|
|
```
|
|
|
|
`key=` 없는 새 줄은 모든 언어에서 글자 그대로의 텍스트를 보여 줍니다. 이야기를 번역할 준비가 되면 키와 번역을 추가하세요.
|
|
|
|
## 잘 안 될 때
|
|
|
|
1. **어떤 선택지가 아무 데도 가지 않습니다.** `switch_scene`의 이름은 대소문자까지 대상 장면의 `name`과 같아야 합니다.
|
|
2. **장면에 텍스트가 없습니다.** 그 시나리오의 `scene:` 헤더가 바로 그 장면의 이름을 가리켜야 합니다.
|
|
3. **다른 언어에서 텍스트가 영어입니다.** 줄에 `key=`가 없거나, 그 언어의 `scenarios_<lang>.properties`에 키가 없습니다.
|
|
4. **검은 배경.** 배경 이름의 철자가 틀렸거나, 그림을 가진 모드가 `depends`에 없습니다.
|