diff --git a/README.md b/README.md index 8f0ba6b..cb5e990 100644 --- a/README.md +++ b/README.md @@ -25,18 +25,26 @@ ### 외부 모드 의존성 (서버/클라) -서버 측 검증이 들어가 있어 다음 두 모드가 반드시 깔려 있어야 `/start` 가 -진행된다. 미설치 시 `commands/start` 의 게이트가 사유와 함께 차단한다. +모드는 **필수 1 + 선택 1** 구성이다. -- **`mc_chat_answer_mod` v1.3.7+** — 서버 전용. 채팅으로 정답 입력을 - 받는다. presence 는 `#server mq_chat_mod` 점수로 매 tick 표시되며, - `SERVER_STARTED` / `END_DATA_PACK_RELOAD` / `PlayerJoin` / `ServerTick` - 네 지점에서 갱신된다. +- **`mc_chat_answer_mod` v1.3.7+ (필수)** — 서버 전용. 채팅으로 정답 입력을 + 받는다. 정답 판정의 핵심이라 없으면 `/start` 가 차단된다. presence 는 + `#server mq_chat_mod` 점수로 매 tick 표시되며, `SERVER_STARTED` / + `END_DATA_PACK_RELOAD` / `PlayerJoin` / `ServerTick` 네 지점에서 갱신된다. https://git.tkrmagid.kr/tkrmagid/mc_chat_answer_mod/releases/tag/v1.3.7 -- **`mc_video_player_mod`** — 클라이언트 + 서버 모두 필요. 서버 컴포넌트가 - `#server mq_video_mod` 를 1 로 갱신하고, 클라 join handshake 가 도착하면 - ` mq_video_mod` 를 1 로 set. `/start` 는 서버 부재 시 단일 차단, - 특정 플레이어 부재 시 본인에게 안내 + 게임 시작 차단. +- **`mc_video_player_mod` (선택)** — 정답 영상 재생용. **없어도 게임은 + 정상 진행되며 영상만 표시되지 않는다.** `/start` 는 차단하지 않고 노란 + 경고만 출력한다 (서버 부재 시 전체 안내, 특정 플레이어 클라 부재 시 본인 + 에게만 안내). presence 는 `#server mq_video_mod` (서버 컴포넌트가 매 tick + 1 로 갱신) + ` mq_video_mod` (클라 join handshake 수신 시 1 로 set) + 로 나눠 표시한다. 모드 측 연동 사양(presence handshake)은 + [docs/mc_video_player_mod_integration.md](docs/mc_video_player_mod_integration.md) 참고. + https://git.tkrmagid.kr/tkrmagid/mc_video_player_mod + +> 데이터팩은 모드 명령(`videoCache`/`videoPlace`/`videoDelete`)을 mcfunction +> 안에서 직접 실행하지 않고 **NBT 문자열 큐 → 커맨드블럭** 으로만 내보낸다. +> 덕분에 영상 모드가 없어도 데이터팩 로드 시 미등록 명령 파싱 에러가 나지 +> 않는다 (자세한 건 아래 "정답 영상" 절). ### 100% 바닐라 — 의존 플러그인 없음 (모드 외) @@ -51,10 +59,48 @@ 비프와 종료 클릭 같은 UI 사운드는 별도로 `weather` 채널을 사용한다. - 정답 이미지: `painting_variant musicquiz:cover_NN` 을 `/summon painting` 으로 벽에 띄우고, 다음 곡 직전 `kill @e[type=painting,tag=mq_cover]` 로 제거. +- gif 페인팅: `images/gif.mcfunction` 을 실행하면 실행한 플레이어에게 + `mq:gif` variant 페인팅 아이템을 지급한다. 벽에 설치하면 랜덤 선택 없이 + `mq:gif` 로 고정 배치되고, 리소스팩의 애니메이션 텍스처 + (`musicquiz:gif` `.png` + `.png.mcmeta`) 덕분에 gif 처럼 움직인다. + variant 정의는 `painting_variant/gif.json` (`asset_id: musicquiz:gif`). 리소스팩 트랙 번호와 `mq:init/songs` 리스트의 순서가 1:1로 일치해야 한다. 1번째 곡 → `track_01` / `cover_01`, … (2자리 zero-pad). +### 정답 영상 (선택) + +`mc_video_player_mod` 가 설치돼 있으면 정답 공개 시 곡별 영상을 벽면에 +띄운다. 모드가 없어도 게임은 정상 진행되며 영상만 표시되지 않는다. + +핵심은 **모드 명령을 mcfunction 안에서 직접 실행하지 않는다**는 점이다. +모드 명령(`videoCache add/remove/clear`, `videoPlace`, `videoDelete`)은 +미설치 시 데이터팩 로드 단계에서 미등록 명령 파싱 에러를 일으키므로, +NBT 문자열로만 만들어 큐에 적재하고 **커맨드블럭**으로 실행한다. + +- **큐 적재** — `mq:videos/macro/cmd` 가 명령을 문자열로 조립해 + `mq:main video.cmdq` 리스트(`{c:"<명령 문자열>"}`)에 push 한다. + 문자열은 mcfunction 파서를 거치지 않으므로 모드가 없어도 로드된다. +- **드레인** — `mq:videos/drain` (매 tick, `mq:tick` 에서 호출) 이 큐를 + 한 tick 에 한 개씩 꺼내 `cmd_x/cmd_y/cmd_z` 좌표에 커맨드블럭을 + setblock 하고 `auto` 를 켜 1회 실행한다. 커맨드블럭은 `auto:1b` 면 매 + tick 재실행되므로, `video.armed` 플래그로 실행한 다음 tick 에 + `mq:videos/macro/drain_off` 가 `auto:0b` 로 꺼 **정확히 1회만** 실행되게 + 한다 (모드의 `videoCache add` 가 중복 이름을 실패 처리해 스팸나는 것 방지). +- **캐시(preload / FIFO keep)** — 게임 시작 시 `videos/cache/preload` 가 + 1..`preload` 번 영상을 미리 받아두고, 라운드마다 `videos/cache/add` 가 + N개 앞까지 캐시를 채운다. 캐시 개수가 `keep` 을 넘으면 + `videos/cache/evict` 가 가장 먼저 받은 것부터 FIFO 로 축출한다 + (`keep<=0` 이면 무제한). 데이터팩이 `mq:main video.cached` + (`{i:N}` 리스트) 로 캐시 상태를 1:1 추적해 중복 등록을 막고 src 를 고른다. +- **동적 src** — 재생 시 해당 번호가 캐시에 있으면 등록 이름 `video_N` 으로, + 없으면 전체 URL `$(namespace)/N` 으로 `videoPlace` 한다. + `videos/normalize` 가 `namespace` 끝의 `/` 를 떼어 경로 중복 `//` 를 막는다. + +모드 측이 구현해야 하는 presence handshake(서버 tick + 클라 payload) 사양은 +[docs/mc_video_player_mod_integration.md](docs/mc_video_player_mod_integration.md) +참고. + ### 게임 흐름과 상태 (`init` 스코어보드) 게임 전체 상태는 `main` 스코어보드의 가상 플레이어 `init` 값으로 관리한다. @@ -155,7 +201,18 @@ music_quiz/ │ ├── images/ # 정답 페인팅 표시·제거 │ │ ├── show.mcfunction # cover painting 소환 │ │ ├── clear.mcfunction # cover painting 일괄 제거 + │ │ ├── gif.mcfunction # 실행 플레이어에게 mq:gif 페인팅 아이템 지급 │ │ └── macro/show.mcfunction # $summon painting 매크로 + │ ├── videos/ # 정답 영상 (선택 모드, 커맨드블럭 큐 경로) + │ │ ├── show.mcfunction # "play" 큐 적재 + │ │ ├── clear.mcfunction # "delete" 큐 적재 + │ │ ├── normalize.mcfunction # namespace 끝 / 제거 + 캐시 상태 초기화 + │ │ ├── drain.mcfunction # 매 tick 큐 1개씩 커맨드블럭 실행 (mq:tick) + │ │ ├── cache/{fill,add,preload,evict,clear}.mcfunction # preload/FIFO 캐시 관리 + │ │ └── macro/ # 매크로 진입점 + │ │ ├── cmd.mcfunction # 모드 명령 문자열 조립 → cmdq push + │ │ ├── drain.mcfunction # $setblock command_block + auto 1b + │ │ └── drain_off.mcfunction # $auto 0b (다음 tick 재실행 방지) │ ├── repeat/ # tick에서 호출되는 매 틱 처리 │ │ ├── players·check_answer·timer.mcfunction │ │ ├── timers/{init2,init6,init10}.mcfunction # init 단계별 timer 디스패치 분할 @@ -178,6 +235,10 @@ music_quiz/ - `func.temp` — 산술용 임시 상수 (`two=2` 등) - `leave_game` — `custom:leave_game` 통계 (재접속 감지) - `score` — 사이드바 표시용 점수 +- `mq_chat_mod` — `mc_chat_answer_mod` presence. `#server` 점수 1 이면 설치됨 + (없으면 `/start` 차단) +- `mq_video_mod` — `mc_video_player_mod` presence. `#server` = 서버 측 모드 + 존재, `` = 클라 측 모드 존재 (없으면 경고만, 차단 X) - `ready` / `cancel` / `stop` / `skip` / `hint` / `replay` — 플레이어 트리거 스토리지: @@ -186,6 +247,11 @@ music_quiz/ - `title`, `max_index`, `spawn` — 설정 - `audio` = `{namespace, source, volume, pitch}` — `/playsound` 파라미터 - `image` = `{namespace, x, y, z, facing}` — 정답 페인팅 좌표 + - `video` = `{namespace, cmd_x/y/z, x/y/z, facing, w, h, sound, preload, keep}` + — 정답 영상 설정 + 런타임 캐시 상태. `cmd_*` 는 큐 실행용 커맨드블럭 + 좌표, `x/y/z`·`facing`·`w/h` 는 영상 표시 위치/크기. 런타임에 + `cached`(`{i:N}` 리스트), `cmdq`(명령 큐), `armed`(커맨드블럭 1회 실행 + 플래그) 가 이 컴파운드에 추가된다 - `answer` = `{title, author, alias, track, cover}` — 현재 곡 정답 - `songs` — 곡 목록 (`mq:init/songs` 가 채움) - `button_defs` / `trigger_defs` — 버튼·트리거 정의 @@ -203,7 +269,11 @@ music_quiz/ `/reload` 후 반영된다. - **`init/config.mcfunction`** — 주제, 스폰 위치, 오디오 설정(`audio`), - 정답 페인팅 좌표(`image`). `title` 은 `[ … ]` 채팅 접두사로도 사용된다. + 정답 페인팅 좌표(`image`), 정답 영상 설정(`video`). `title` 은 `[ … ]` + 채팅 접두사로도 사용된다. `video` 의 `namespace` 는 영상 URL 베이스, + `cmd_x/y/z` 는 모드 명령 실행용 커맨드블럭 좌표, `x/y/z`·`facing`·`w/h` + 는 영상 표시 위치/크기, `sound` 는 음량(-1 음소거), `preload` 는 미리 + 받아둘 캐시 개수(0 이면 끔), `keep` 은 FIFO 유지 개수(0 이하 무제한). - **`init/songs.mcfunction`** — 곡 목록 (한 줄에 한 곡씩 append). `alias` 배열의 문자열은 정답 판정 시 동의어로 인정된다. **곡의 순서가 리소스팩 트랙 번호와 1:1 매칭** 되므로 순서 변경 시 리소스팩도 함께 재생성해야 @@ -222,13 +292,16 @@ JSON 텍스트 컴포넌트가 storage 참조를 일관되게 지원하지 않 ### 설치 1. 서버 월드 폴더 `datapacks/`에 `music_quiz/` 디렉터리째 복사. -2. 서버 mods 폴더에 `mc_chat_answer_mod` v1.3.7+ 와 `mc_video_player_mod` - jar 설치. `mc_video_player_mod` 는 클라이언트 측에도 설치 필요. +2. 서버 mods 폴더에 `mc_chat_answer_mod` v1.3.7+ (필수) 설치. + `mc_video_player_mod` (선택) 는 정답 영상을 쓸 때만 서버 + 클라이언트 + 양쪽에 설치한다. 없어도 게임은 정상 동작하며 영상만 표시되지 않는다. 3. minecraft_launcher 에서 생성한 `musicquiz` 리소스팩을 클라이언트에 적용 (런처가 자동 처리). 4. 서버 `/reload` — 리로드 성공 메시지가 채팅에 표시되면 정상. 5. `mq:init/buttons` 에 정의된 좌표 부근에 6개 버튼이 자동 배치된다. -6. `start` 버튼을 눌러 게임 시작 — 모드 미설치 시 사유와 함께 차단된다. +6. `start` 버튼을 눌러 게임 시작 — `mc_chat_answer_mod` (필수) 미설치 시 + 사유와 함께 차단된다. `mc_video_player_mod` (선택) 미설치 시에는 노란 + 경고만 출력하고 영상 없이 진행된다. ### 좌표 의존성 (주의) @@ -243,6 +316,28 @@ JSON 텍스트 컴포넌트가 storage 참조를 일관되게 지원하지 않 ## 변경 이력 +### 2026-06-05 — 정답 영상 시스템 + 영상 모드 선택화 + gif 페인팅 + +- **정답 영상 추가** — `mc_video_player_mod` 연동으로 정답 공개 시 곡별 + 영상을 벽면에 표시. `videos/` 트리 신설 (show/clear/normalize/drain + + cache/{fill,add,preload,evict,clear} + macro/{cmd,drain,drain_off}). +- **모드 명령 커맨드블럭 큐 경로** — 모드 명령(`videoCache`/`videoPlace`/ + `videoDelete`)을 mcfunction 에서 직접 실행하지 않고 NBT 문자열로 큐 + (`mq:main video.cmdq`) 에 적재 → `videos/drain` 이 매 tick 한 개씩 + 커맨드블럭으로 실행. 미설치 모드여도 데이터팩 로드 시 파싱 에러 없음. + `video.armed` 플래그 + `drain_off` (auto:0b) 로 정확히 1회 실행 보장. +- **영상 모드 선택화** — `mc_video_player_mod` 없어도 `/start` 차단 안 함 + (노란 경고만, 영상 없이 진행). 채팅 모드(`mc_chat_answer_mod`) 만 필수. +- **캐시 (preload / FIFO keep)** — `config.video` 의 `preload`/`keep` 으로 + 미리받기 개수와 FIFO 유지 개수 제어. `video.cached` 로 캐시 상태 자체 + 추적, 동적 src (`video_N` vs 전체 URL), `normalize` 가 namespace 끝 `/` + 제거. +- **gif 페인팅** — `images/gif.mcfunction`: 실행 플레이어에게 `mq:gif` + variant 페인팅 아이템 지급. 벽 설치 시 리소스팩 애니메이션 텍스처로 + 움직임. `painting_variant/gif.json` (`asset_id: musicquiz:gif`) 신설. +- `init/config.mcfunction` 에 `video` 컴파운드 추가, `load.mcfunction` 에 + `mq_chat_mod`/`mq_video_mod` objective 추가. + ### 2026-05-19 — v1.0.25: 버튼 hitbox/라벨 미세조정 + 곡목록·좌표 갱신 - `repeat/buttons/btn.mcfunction`: interaction hitbox 미세조정 (`width` diff --git a/docs/mc_video_player_mod_integration.md b/docs/mc_video_player_mod_integration.md index 694081f..e94f95e 100644 --- a/docs/mc_video_player_mod_integration.md +++ b/docs/mc_video_player_mod_integration.md @@ -10,12 +10,16 @@ | ` mq_video_mod` | 해당 플레이어 클라에 모드 존재 | 서버 컴포넌트가 client→server payload 수신 시 1 | 둘 다 같은 objective `mq_video_mod` (dummy) 를 쓰고 holder 이름으로 의미를 -구분한다. 데이터팩 `mq:commands/start` 가드는 두 단계로 검사: -서버 부재 → 전원 안내 후 차단 / 일부 플레이어 클라 부재 → 본인 안내 + 차단. +구분한다. **영상재생 모드는 선택 모드라 미설치여도 `/start` 를 차단하지 +않는다.** `mq:commands/start` 는 두 점수를 보고 **경고만** 출력한다: +서버 부재 → 전원에게 "영상 없이 진행됩니다" / 일부 플레이어 클라 부재 → +본인에게만 "본인 화면에는 영상이 표시되지 않습니다". 게임은 그대로 진행된다. > 참고: 자매 모드 `mc_chat_answer_mod` 는 채팅 가로채기가 본질적으로 서버 > 측 동작이라 `#server mq_chat_mod` 한 가지만 쓴다 (per-player handshake 무의미). -> 본 모드는 클라이언트가 직접 영상 렌더링하므로 per-player handshake 도 필요함. +> 그쪽은 정답 판정의 핵심이라 **없으면 `/start` 가 실제로 차단된다.** 본 +> 모드는 클라이언트가 직접 영상 렌더링하므로 per-player handshake 가 필요하고, +> 그 점수는 차단이 아니라 **플레이어별 경고**에만 쓰인다. ## 데이터팩 측이 이미 제공하는 것 @@ -32,25 +36,24 @@ scoreboard objectives add mq_video_mod dummy scoreboard players set @s mq_video_mod 0 ``` -`mq:commands/start.mcfunction` 가드: +`mq:commands/start.mcfunction` 경고 (차단 아님): ```mcfunction -# 서버 부재 우선 차단 -execute unless score #server mq_video_mod matches 1 run return run function mq:tellraw {"text":"영상재생 모드가 서버에 미설치 — 서버 관리자에게 문의해주세요.","color":"red","msg":""} # unset 매치 안 되므로 materialize scoreboard players add @a mq_video_mod 0 -# 본인 안내 (tellraw @s 직접 — mq:tellraw 는 @a broadcast 라 부적합) -execute as @a[scores={mq_video_mod=..0}] run tellraw @s ["",{"text":"영상재생 모드 미설치 — 모드 적용 후 다시 입장해주세요.","color":"red"}] -# 한 명이라도 누락이면 시작 차단 -execute if entity @a[scores={mq_video_mod=..0}] run return run function mq:tellraw {"text":"필수 모드 미설치 플레이어가 있어 시작할 수 없습니다.","color":"red","msg":""} +# 서버 부재 — 전원에게 경고만, 그대로 진행 +execute unless score #server mq_video_mod matches 1 run function mq:tellraw {"text":"영상재생 모드가 서버에 미설치 — 영상 없이 진행됩니다.","color":"yellow","msg":""} +# 서버는 있는데 본인 클라만 부재 — 본인에게만 경고 +execute if score #server mq_video_mod matches 1 as @a[scores={mq_video_mod=..0}] run tellraw @s ["",{"text":"영상재생 모드 미설치 — 본인 화면에는 영상이 표시되지 않습니다.","color":"yellow"}] ``` `load.mcfunction` 에서 `#server mq_video_mod = 0` 으로 미리 깔아둠 → 서버 -컴포넌트가 한 tick 도 안 돌면 0 유지 → 가드 차단. +컴포넌트가 한 tick 도 안 돌면 0 유지 → 서버 부재 경고 출력. 즉, **서버 컴포넌트가 (a) 매 tick `#server mq_video_mod=1` 갱신, (b) client payload 수신 시 송신 플레이어 점수=1 갱신**, 이 두 가지만 하면 -나머지는 데이터팩이 알아서 한다. +나머지는 데이터팩이 알아서 한다. (점수가 0 이어도 게임은 진행되며, 경고 +출력과 영상 표시 여부에만 영향을 준다.) ## 모드가 구현해야 하는 동작 @@ -135,12 +138,13 @@ ServerPlayNetworking.registerGlobalReceiver(HelloPayload.TYPE, (payload, context - 데이터팩 `mq:players/login` 이 spawn dialog 통과 시점에 점수를 0 으로 리셋하므로, **클라 payload 주기 재전송은 필수**. login 이후 다음 재전송 - 까지의 짧은 공백에 호스트가 start 를 누르면 가드가 차단되니, 재전송 - 간격은 5 초 이하 권장. + 까지의 짧은 공백에 호스트가 start 를 누르면 (차단은 아니지만) 설치된 + 플레이어에게도 잘못된 미설치 경고가 뜰 수 있으니, 재전송 간격은 5 초 + 이하 권장. - 서버가 set 한 점수는 다음 join 시 login 에서 다시 0 으로 리셋됨 → 모드를 빼고 재접속한 플레이어가 stale 1 을 가질 일 없음. -- payload 송신 → 서버 처리는 ms 단위 → 주기 재전송이 살아 있는 한 start - 타이밍 race 없음. +- payload 송신 → 서버 처리는 ms 단위 → 주기 재전송이 살아 있는 한 경고 + 오탐 race 없음. ### 대안: `/trigger` 방식 (별도 서버 컴포넌트 불필요) @@ -162,18 +166,21 @@ ServerPlayNetworking.registerGlobalReceiver(HelloPayload.TYPE, (payload, context 4. 플레이어 spawn dialog 통과 → `mq:players/login` 이 점수를 0 으로 리셋. 5. **클라 모드가 주기 재전송 (5 초 이하 권장, 필수)** → 늦어도 다음 주기에 서버 모드가 다시 `mq_video_mod = 1` 로 갱신. -6. 호스트 start → 가드가 `@a[scores={mq_video_mod=..0}]` 검사 → 클라 모드 - 미설치 플레이어 있으면 시작 차단. +6. 호스트 start → `@a[scores={mq_video_mod=..0}]` 검사 → 클라 모드 미설치 + 플레이어 본인에게만 경고. 차단 없이 게임 진행 (해당 플레이어 화면에만 + 영상 미표시). ## 테스트 1. **서버 미설치**: 서버에 모드 jar 가 없는 상태에서 데이터팩만 적용 → - 호스트 start → "영상재생 모드가 서버에 미설치 — 서버 관리자에게..." 한 - 줄 출력 후 차단. (`#server mq_video_mod` 가 갱신되지 않음.) + 호스트 start → "영상재생 모드가 서버에 미설치 — 영상 없이 진행됩니다." + 노란 경고 출력 후 **그대로 게임 진행** (영상만 안 나옴). + (`#server mq_video_mod` 가 갱신되지 않음.) 2. **서버 설치 + 일부 클라 미설치**: 모드를 클라에 설치한 플레이어와 안 - 한 플레이어 혼재 → 호스트 start → 클라 미설치 본인에게 "영상재생 모드 - 미설치" + 전원에게 "필수 모드 미설치 플레이어가 있어..." 후 차단. -3. **서버 + 모든 클라 설치**: 모두 정상 → start 정상 진행. + 한 플레이어 혼재 → 호스트 start → 클라 미설치 본인에게만 "영상재생 모드 + 미설치 — 본인 화면에는 영상이 표시되지 않습니다." 노란 경고. 차단 없이 + 게임 진행. +3. **서버 + 모든 클라 설치**: 모두 정상 → start 정상 진행 + 영상 표시. 4. `/scoreboard players list #server` 로 server presence 점수 확인, `/scoreboard players list ` 로 client presence 점수 확인. diff --git a/music_quiz/data/mq/function/images/gif.mcfunction b/music_quiz/data/mq/function/images/gif.mcfunction new file mode 100644 index 0000000..6dc46ee --- /dev/null +++ b/music_quiz/data/mq/function/images/gif.mcfunction @@ -0,0 +1,4 @@ +# 실행한 플레이어에게 gif 페인팅 아이템을 지급한다. +# 벽에 설치하면 mq:gif variant 로 고정 배치되고(랜덤 선택 X), 리소스팩의 +# musicquiz:gif 애니메이션 텍스처(.png + .png.mcmeta) 덕분에 gif 처럼 움직인다. +give @s minecraft:painting[minecraft:painting/variant="mq:gif"] diff --git a/music_quiz/data/mq/function/init/songs.mcfunction b/music_quiz/data/mq/function/init/songs.mcfunction index 8250636..2cddad4 100644 --- a/music_quiz/data/mq/function/init/songs.mcfunction +++ b/music_quiz/data/mq/function/init/songs.mcfunction @@ -3,58 +3,58 @@ # 선택 — volume (이 곡만의 /playsound 음량. 미지정시 init/config.mcfunction # 의 audio.volume 사용) # 곡 순서가 리소스팩의 track_NN / cover_NN 인덱스와 1:1 매칭된다. -# 예) {title:"Quiet Song", author:"...", alias:[...], description:"...", volume:1.0} +# 예) {volume:0.5, title:"Quiet Song", author:"...", alias:[...], description:"..."} data modify storage mq:main songs set value [] -data modify storage mq:main songs append value {title:"Cyberpunk 2077", author:"I Really Want to Stay at Your House", alias:["Cyberpunk","사이버펑크 2077","사이버펑크"], description:"사이버 펑크 2077의 OST이자 애니메이션 사이버펑크: 엣지러너의 엔딩곡인 이 곡은 게임 OST이긴 하나, 애니메이션에서 감성적인 마무리를 장식하며 전 세계적으로 폭발적인 인기를 끌게된 곡이다. 그와 자연스레 사이버펑크 2077의 정서를 대표하는 노래가 되었다. 죽음이란게 가볍게 여겨지는 차가운 사이버펑크 세상속에서 순수한 순애 분위기의 곡으로, 큰 여운이 남는 것이 특징.", volume:1.0} -data modify storage mq:main songs append value {title:"League of Legends", author:"Challengers", alias:["리그 오브 레전드"], description:"2015년에 라이엇 게임즈가 발매한 앨범 \"The Music of League of Legends Vol. 1\"의 수록곡이다. 라이엇 게임즈가 LoL의 세계관과 e스포츠 문화를 음악으로 표현하기 위해 모은 정식 게임 OST 컴필레이션 중 한 트랙이며, LoL의 본질을 담은 곡이다. 과거에는 인 게임에 재생되어 익숙한 곡이었으나, 현재는 재생되지 않는다.", volume:1.0} -data modify storage mq:main songs append value {title:"테일즈런너", author:"트레이닝 시리즈 BGM", alias:[], description:"이 곡은 테일즈런너의 트레이닝 시리즈 BGM으로, 가벼운 리듬감의 곡이 기본적인 맵인 트레이닝 시리즈의 분위기와 어울리며 많은 이들의 뇌리에 각인되었다.", volume:1.0} -data modify storage mq:main songs append value {title:"카트라이더", author:"상점 BGM", alias:["Kart Rider"], description:"넥슨의 국민 레이싱 게임이었던 카트라이더의 상점 BGM이다. 게임을 해봤던 게이머라면 모를 수가 없을 정도의 경쾌하고 친숙한 멜로디로 한국 게이머들에게 추억의 곡으로 자리 잡았다.", volume:1.0} -data modify storage mq:main songs append value {title:"크레이지 아케이드", author:"Camp BGM", alias:[], description:"크레이지 아케이드 맵 캠프 시리즈의 BGM이다. 빠른 템포와 단순한 반복 멜로디가 인상적이다.", volume:1.0} -data modify storage mq:main songs append value {title:"메이플스토리", author:"에레브 수련의 숲 BGM", alias:["Maplestory"], description:"메이플스토리 에레브 지역의 BGM이다. 시그너스 기사단의 시작 지역으로, 빗방울이 떨어지는 듯한 서정적이고 신비로운 분위기의 명곡으로 자리 잡았다.", volume:1.0} -data modify storage mq:main songs append value {title:"던전 앤 파이터", author:"Purgatorium", alias:[], description:"퍼가토리엄 지역을 통과하는 데 사용된 테마곡이며, 던전앤파이터 하면 이 곡이 떠오를 정도로 많은 던전앤파이터 유저들에게 추억의 곡으로 알려져 있다. 특히 타 게임 \"레바의 모험\"에서도 주로 사용되며 던전앤파이터를 해보지 않은 게이머들에게도 익숙하게 느껴질 수 있다.", volume:1.0} -data modify storage mq:main songs append value {title:"GTA V", author:"Welcome to Los Santos Intro/Theme", alias:["Grand Theft Auto","Grand Theft Auto 5","Grand Theft Auto V","GTA","GTA 5"], description:"GTA V의 인트로 테마곡이다. 로스 산토스에 입성하는 순간의 어두우면서도 힙한 분위기를 형성하는 시그니처 사운드트랙이다.", volume:1.0} -data modify storage mq:main songs append value {title:"Elden Ring", author:"Malenia, Blade of Miquella", alias:["엘든 링"], description:"엘든 링의 최강 보스 중 하나인 말레니아, 미켈라의 칼날 전투 BGM이다. 소프라노 보컬과 비장한 오케스트라가 어우러진 보스 BGM의 정점으로, 엘든 링을 클리어해본 유저라면 이 곡이 친숙하게 느껴질 수 있다.", volume:1.0} -data modify storage mq:main songs append value {title:"DJMAX RESPECT V", author:"Lobby Main Theme", alias:["DJMAX RESPECT 5","DJMAX RESPECT","디제이맥스 리스펙트 V","디제이맥스 리스펙트 5","디제이맥스 리스펙트"], description:"DJMAX RESPECT V의 메인 메뉴 BGM이다. 시리즈 특유의 세련된 일렉트로닉 사운드가 매력적이다.", volume:1.0} -data modify storage mq:main songs append value {title:"ARK : Survival Evolved", author:"Main Theme", alias:["ARK Survival Evolved","아크 서바이벌"], description:"작곡가 Gareth Coker가 작곡하고 Abbey Road 스튜디오에서 93인조 필하모니아 오케스트라로 녹음된 곡으로, 광활한 공룡 생존 세계의 웅장함과 신비로움을 담은 합창과 오케스트라가 인상적이다.", volume:1.0} -data modify storage mq:main songs append value {title:"Apex 레전드", author:"Main Theme", alias:["에이펙스 레전드","Apex Legends"], description:"에이펙스 레전드의 메인 테마곡. 박진감 넘치는 배틀로얄의 긴장감과 히어로물 같은 웅장함을 결합한 곡이다. 특히 곡 중간 부분의 특유의 멜로디가 인상적이다.", volume:1.0} -data modify storage mq:main songs append value {title:"디아블로 2", author:"트리스트럼 BGM", alias:["디아블로","DIABLO 2","DIABLO"], description:"디아블로 2의 트리스트럼 마을 BGM이다. 시리즈를 대표하는 기타 선율로, 디아블로 1로부터 이어진 황량하고 우울한 분위기의 명곡이다.", volume:1.0} -data modify storage mq:main songs append value {title:"포켓몬스터", author:"등화도시 BGM", alias:["포켓몬스터 오메가루비알파사파이어","포켓몬스터 ORAS"], description:"포켓몬스터 오메가루비/알파사파이어의 등화도시 BGM이다. 도시의 활기와 화려함을 담은 경쾌한 리메이크 버전이다. 쇼츠에도 많이 사용되며 포켓몬스터 BGM 중에 인기 있는 곡에 속한다.", volume:1.0} -data modify storage mq:main songs append value {title:"슈퍼 마리오 64", author:"Main Theme", alias:["슈퍼 마리오","Super Mario 64","Super Mario"], description:"닌텐도의 명작 슈퍼마리오 64의 메인 테마곡이다. 3D 마리오 시리즈의 역사적 시작을 알린 곡이다. 닌텐도 게임 음악사에서 빼놓을 수 없는 명곡 중 하나이다.", volume:1.0} -data modify storage mq:main songs append value {title:"별의 커비", author:"Green Greens", alias:["Kirby Super Star"], description:"커비 시리즈를 대표하는 Green Greens BGM. 첫 스테이지 BGM으로 시작해 시리즈 전반에 걸쳐 다양하게 편곡되는 커비의 시그니처 테마이다.", volume:1.0} -data modify storage mq:main songs append value {title:"소닉", author:"Green Hill Zone", alias:["Sonic"], description:"소닉 더 헤지혹의 상징과도 같은 BGM이다. 1991년 첫 작품부터 시작된 SEGA의 대표적인 BGM으로, 게임 음악 역사에 한 획을 그었다.", volume:1.0} -data modify storage mq:main songs append value {title:"원신", author:"Genshin Impact Main Theme", alias:["Genshin Impact"], description:"원신의 메인 테마곡이다. HOYO-Mix가 작곡한 웅장하고 환상적인 오케스트라 곡으로, 원신을 가장 잘 표현한 곡으로 평가받고 있다.", volume:1.0} -data modify storage mq:main songs append value {title:"The Legend of Zelda", author:"Main Theme", alias:["젤다의 전설"], description:"젤다의 전설: 신들의 트라이포스의 메인 테마. 콘도 코지가 작곡한 젤다 시리즈의 영원한 클래식 명곡이다.", volume:1.0} -data modify storage mq:main songs append value {title:"Slay The spire 2", author:"Main Menu Theme", alias:["슬레이 더 스파이어 2","슬레이 더 스파이어"], description:"인기를 끌고 있는 인디 덱빌딩 로그라이크 게임 슬레이 더 스파이어 2의 메인 메뉴 테마곡이다. 신비로운 탑을 오르는 여정의 분위기를 담았다.", volume:1.0} -data modify storage mq:main songs append value {title:"Arc Raiders", author:"Lobby Music - Track 01", alias:["아크 레이더스"], description:"익스트랙션 슈터 장르인 아크 레이더스의 로비 음악이다. 아크 레이더스는 출시 초기 참신한 컨셉과 완성도 높은 게임성으로 큰 인기를 끌었으며 현재도 꾸준한 인기를 유지하고 있다. 게임을 켜자마자 나오는 포스트 아포칼립스 분위기의 긴장감 있는 사운드가 특징이다.", volume:1.0} -data modify storage mq:main songs append value {title:"산나비", author:"끝났다는 것은 다시 시작된다는 것을", alias:["SANABI"], description:"한국 인디 게임인 산나비의 엔딩곡이다. 감동적인 스토리의 여운을 그대로 전달하는 명곡으로 평가받는다. 산나비를 플레이해본 유저라면 이 노래를 듣고 감동의 눈물을 흘릴 수밖에 없다.", volume:1.0} -data modify storage mq:main songs append value {title:"FIFA 2000", author:"It's Only Us", alias:["FIFA","피파 2000","피파"], description:"영국 가수 Robbie Williams의 곡 \"It's Only Us\". EA에서 FIFA 2000의 사운드트랙으로 라이선스해 인트로 곡으로 삽입한 노래이다. 피파가 큰 인기를 끌게 되며 게임에 삽입곡으로 분위기를 만드는 전통을 이어간 초기 사례.", volume:1.0} -data modify storage mq:main songs append value {title:"FIFA 온라인 3", author:"Yeah Yeah Yeah", alias:["FIFA 온라인","FC 온라인 3","FC 온라인","피파 온라인 3","피파 온라인"], description:"영국 DJ Jax Jones가 2015년 7월 발매한 댄스/하우스 싱글로, 게임 OST로 작곡된 곡은 아니지만 클럽/스포츠 게임 등에서 BGM이나 라이선스 음악으로 자주 활용된다. 경쾌한 비트와 멜로디가 인상적이다.", volume:1.0} -data modify storage mq:main songs append value {title:"Terraria", author:"Underground BGM", alias:["테라리아"], description:"샌드박스 게임인 테라리아의 지하 BGM이다. 지하 탐험의 신비로운 분위기를 담았다.", volume:1.0} -data modify storage mq:main songs append value {title:"Minecraft", author:"C418 - Mice on Venus", alias:["마인크래프트"], description:"마인크래프트 C418의 대표곡으로, 게임을 플레이하지 않은 사람도 알 정도로 유명한 명상적이고 서정적인 피아노 곡. 이 곡을 들으면 괜히 추억에 잠길 수도 있게 된다.", volume:1.0} -data modify storage mq:main songs append value {title:"Project Zomboid", author:"Main Menu Theme", alias:["프로젝트 좀보이드"], description:"좀비 생존 게임인 프로젝트 좀보이드의 메인 메뉴 BGM. 게임을 켜게 되면 이 곡이 재생되며 게임에 황량하고 외로운 분위기를 더해준다.", volume:1.0} -data modify storage mq:main songs append value {title:"Stardew Valley", author:"Stardew Valley Overture", alias:["스타듀 밸리"], description:"스타듀밸리의 오프닝 테마이다. 따뜻하고 향수 어린 멜로디로, 시골 농장 생활의 시작을 알린다.", volume:1.0} -data modify storage mq:main songs append value {title:"Undertale", author:"His Theme", alias:["언더테일"], description:"언더테일의 명곡 중 하나. 게임 후반부의 감동적인 순간을 책임지는 Toby Fox의 대표곡이다.", volume:1.0} -data modify storage mq:main songs append value {title:"Battlefield 4", author:"Main Theme", alias:["Battlefield","배틀필드 4","배틀필드"], description:"배틀필드 4의 공식 메인 테마곡이다. DICE의 시그니처 시리즈 사운드로, 전쟁 영화 같은 웅장함을 담았다. 노래의 웅장함 덕분에 게임 BGM뿐만 아니라 여러 웅장하고 전투적인 영상에 자주 쓰이는 곡이다.", volume:1.0} -data modify storage mq:main songs append value {title:"StarCraft", author:"Terran Theme 3", alias:["스타크래프트"], description:"대한민국 전통 민속놀이 스타크래프트의 테란 종족 3번째 트랙 곡이다. 우주적이고 전투적인 분위기를 잘 담은 곡으로 한국 e스포츠와 함께 자란 세대에게 정말 깊은 향수를 자극한다. 특히 테란 종족 1번째 트랙이 대표적이다.", volume:1.0} -data modify storage mq:main songs append value {title:"쿠키런", author:"에피소드 1 Main Theme", alias:[], description:"모바일 게임 쿠키런의 첫 에피소드 BGM이다. 경쾌하고 귀여운 분위기로 쿠키들의 오븐 탈출을 잘 표현한 곡이다.", volume:1.0} -data modify storage mq:main songs append value {title:"VALORANT", author:"WATCH", alias:["발로란트"], description:"라이엇 게임즈의 FPS 게임인 발로란트의 공식 음악이다. 챔피언스 투어 등 e스포츠 이벤트와 함께 공개된 곡이지만, 인 게임 스킨 테마곡으로 쓰이며 많은 게이머들에게 친숙하게 되었다.", volume:1.0} -data modify storage mq:main songs append value {title:"모두의 마블", author:"월드맵 BGM", alias:[], description:"넷마블의 모바일 게임 모두의 마블의 월드맵 BGM. 신나는 분위기로 여행 콘셉트를 표현한다.", volume:1.0} -data modify storage mq:main songs append value {title:"Blue Archive", author:"Constant Moderato", alias:["블루 아카이브"], description:"블루 아카이브의 메인 테마곡이다. 잔잔하고 청량하고 산뜻한 분위기로 인트로를 알리며 중반부 신나는 멜로디와 비트가 인상 깊다. 학원 도시 키보토스의 일상을 잘 표현하는 시리즈의 시그니처 곡이다.", volume:1.0} -data modify storage mq:main songs append value {title:"튀어나와요 동물의 숲", author:"In Kapp'n's Bus", alias:["동물의 숲"], description:"동물의 숲 시리즈의 캅파 보트 투어 BGM. 무인도 여행의 즐거움을 담은 곡이다.", volume:1.0} -data modify storage mq:main songs append value {title:"Civilization VI", author:"Sogno di Volare", alias:["Civilization 6","문명 VI","문명 6"], description:"문명 6의 메인 테마곡이다. 아카데미상 후보에 오른 작곡가 Christopher Tin이 작곡한 만큼, 이탈리아어 합창곡의 분위기가 문명 시리즈 음악의 정점을 알린다.", volume:1.0} -data modify storage mq:main songs append value {title:"Rainbow Six Siege", author:"영사관 지하 라디오", alias:["레인보우 식스 시즈"], description:"레인보우 식스 시즈의 영사관 맵 지하에서 재생되는 라디오 BGM이다. 이 게임을 플레이해본 게이머라면 영사관 맵 지하에 들어서는 순간 들리는 이 익숙한 라디오 BGM을 잊을 수 없을 것이다.", volume:1.0} -data modify storage mq:main songs append value {title:"배틀그라운드", author:"Old Main Theme", alias:[], description:"배틀그라운드의 구 메인 로비 BGM이다. 배틀그라운드가 막 출시한 시점 게임을 켜게 되면 항상 듣게 되는 곡이었으며, 배틀로얄 장르를 대중화시킨 작품의 긴장감 있는 테마가 인상 깊다.", volume:1.0} -data modify storage mq:main songs append value {title:"냥코 대전쟁", author:"전투 테마 1", alias:[], description:"모바일 게임 냥코 대전쟁의 전투 BGM이다. 귀엽지만 중독성 있는 멜로디가 특징이며, 게임을 플레이해봤다면 익숙할 것이다.", volume:1.0} -data modify storage mq:main songs append value {title:"OverWatch", author:"환상의 겨울나라 BGM", alias:["오버워치"], description:"오버워치 환상의 겨울나라 이벤트 BGM으로, 크리스마스 시즌 한정 이벤트의 따뜻한 분위기를 담았다. 그 시절 겨울에도 오버워치를 플레이해본 유저라면 추억이 떠오를 수밖에 없는 향수 같은 곡이다.", volume:1.0} -data modify storage mq:main songs append value {title:"TEKKEN 7", author:"Infinite Azure - Round 1", alias:["TEKKEN","철권 7","철권"], description:"철권 7의 인피니트 아주르 스테이지 BGM. 시리즈 전통의 일본풍 도시 야경 스테이지의 세련된 EDM 트랙으로, 주로 인 게임에서 콤보 연습을 할 때 자주 사용하는 맵이므로 플레이해본 게이머들에겐 익숙한 곡이다.", volume:1.0} -data modify storage mq:main songs append value {title:"엘소드", author:"Login Screen 1", alias:[], description:"넥슨 게임 엘소드의 로그인 화면 BGM. 중세 판타지 전투의 분위기를 가볍게 표현했다.", volume:1.0} -data modify storage mq:main songs append value {title:"레이튼 교수와 이상한 마을", author:"수수께끼", alias:[], description:"닌텐도 DS의 명작 추리/퍼즐 게임 레이튼 교수와 이상한 마을의 OST이다. 아코디언 선율의 특징적인 유럽풍 분위기의 곡.", volume:1.0} -data modify storage mq:main songs append value {title:"Clash Royale", author:"Menu A", alias:["클래시 로얄"], description:"슈퍼셀의 모바일 게임 클래시 로얄의 메뉴 BGM이다. 게임을 해봤다면 정말 정말 익숙한 곡이다.", volume:1.0} -data modify storage mq:main songs append value {title:"Geometry Dash", author:"Stay Inside Me", alias:["지오메트리 대쉬"], description:"지오메트리 대시의 사운드트랙이다. 지오메트리 대시는 모르는 맵을 클리어하기 위해서 연습 모드를 플레이할 수밖에 없는데, 이 곡이 연습 모드에서 반복 재생되며 많은 이들의 뇌리에 집어넣어졌다.", volume:1.0} -data modify storage mq:main songs append value {title:"끄투", author:"로비 BGM", alias:[], description:"한국 끝말잇기 게임 끄투의 구 로비 BGM이다. 한국 웹 게임 문화를 대표하는 곡 중 하나.", volume:1.0} -data modify storage mq:main songs append value {title:"SEPHIRIA", author:"토끼마을 BGM", alias:["세피리아"], description:"인디 RPG 세피리아의 토끼마을 BGM이다. 평화로운 마을의 분위기를 담은 곡.", volume:1.0} -data modify storage mq:main songs append value {title:"Bubble Bobble", author:"Main Theme", alias:["버블보블"], description:"추억의 클래식 아케이드 게임 버블보블의 메인 테마곡이다. 짧지만 강렬한 중독성으로 80~90년대 오락실 세대의 추억을 자극하는 명곡이다.", volume:1.0} -data modify storage mq:main songs append value {title:"버블파이터", author:"대기방 BGM", alias:["Bubble Fighter"], description:"넥슨의 캐주얼 슈팅 게임 버블파이터의 대기방 BGM이다. 친숙하고 귀여운 분위기의 곡이 인상적이다.", volume:1.0} +data modify storage mq:main songs append value {volume:1.0, title:"Cyberpunk 2077", author:"I Really Want to Stay at Your House", alias:["Cyberpunk","사이버펑크 2077","사이버펑크"], description:"사이버 펑크 2077의 OST이자 애니메이션 사이버펑크: 엣지러너의 엔딩곡인 이 곡은 게임 OST이긴 하나, 애니메이션에서 감성적인 마무리를 장식하며 전 세계적으로 폭발적인 인기를 끌게된 곡이다. 그와 자연스레 사이버펑크 2077의 정서를 대표하는 노래가 되었다. 죽음이란게 가볍게 여겨지는 차가운 사이버펑크 세상속에서 순수한 순애 분위기의 곡으로, 큰 여운이 남는 것이 특징."} +data modify storage mq:main songs append value {volume:1.0, title:"League of Legends", author:"Challengers", alias:["리그 오브 레전드"], description:"2015년에 라이엇 게임즈가 발매한 앨범 \"The Music of League of Legends Vol. 1\"의 수록곡이다. 라이엇 게임즈가 LoL의 세계관과 e스포츠 문화를 음악으로 표현하기 위해 모은 정식 게임 OST 컴필레이션 중 한 트랙이며, LoL의 본질을 담은 곡이다. 과거에는 인 게임에 재생되어 익숙한 곡이었으나, 현재는 재생되지 않는다."} +data modify storage mq:main songs append value {volume:1.0, title:"테일즈런너", author:"트레이닝 시리즈 BGM", alias:[], description:"이 곡은 테일즈런너의 트레이닝 시리즈 BGM으로, 가벼운 리듬감의 곡이 기본적인 맵인 트레이닝 시리즈의 분위기와 어울리며 많은 이들의 뇌리에 각인되었다."} +data modify storage mq:main songs append value {volume:1.0, title:"카트라이더", author:"상점 BGM", alias:["Kart Rider"], description:"넥슨의 국민 레이싱 게임이었던 카트라이더의 상점 BGM이다. 게임을 해봤던 게이머라면 모를 수가 없을 정도의 경쾌하고 친숙한 멜로디로 한국 게이머들에게 추억의 곡으로 자리 잡았다."} +data modify storage mq:main songs append value {volume:1.0, title:"크레이지 아케이드", author:"Camp BGM", alias:[], description:"크레이지 아케이드 맵 캠프 시리즈의 BGM이다. 빠른 템포와 단순한 반복 멜로디가 인상적이다."} +data modify storage mq:main songs append value {volume:1.0, title:"메이플스토리", author:"에레브 수련의 숲 BGM", alias:["Maplestory"], description:"메이플스토리 에레브 지역의 BGM이다. 시그너스 기사단의 시작 지역으로, 빗방울이 떨어지는 듯한 서정적이고 신비로운 분위기의 명곡으로 자리 잡았다."} +data modify storage mq:main songs append value {volume:1.0, title:"던전 앤 파이터", author:"Purgatorium", alias:[], description:"퍼가토리엄 지역을 통과하는 데 사용된 테마곡이며, 던전앤파이터 하면 이 곡이 떠오를 정도로 많은 던전앤파이터 유저들에게 추억의 곡으로 알려져 있다. 특히 타 게임 \"레바의 모험\"에서도 주로 사용되며 던전앤파이터를 해보지 않은 게이머들에게도 익숙하게 느껴질 수 있다."} +data modify storage mq:main songs append value {volume:1.0, title:"GTA V", author:"Welcome to Los Santos Intro/Theme", alias:["Grand Theft Auto","Grand Theft Auto 5","Grand Theft Auto V","GTA","GTA 5"], description:"GTA V의 인트로 테마곡이다. 로스 산토스에 입성하는 순간의 어두우면서도 힙한 분위기를 형성하는 시그니처 사운드트랙이다."} +data modify storage mq:main songs append value {volume:1.0, title:"Elden Ring", author:"Malenia, Blade of Miquella", alias:["엘든 링"], description:"엘든 링의 최강 보스 중 하나인 말레니아, 미켈라의 칼날 전투 BGM이다. 소프라노 보컬과 비장한 오케스트라가 어우러진 보스 BGM의 정점으로, 엘든 링을 클리어해본 유저라면 이 곡이 친숙하게 느껴질 수 있다."} +data modify storage mq:main songs append value {volume:1.0, title:"DJMAX RESPECT V", author:"Lobby Main Theme", alias:["DJMAX RESPECT 5","DJMAX RESPECT","디제이맥스 리스펙트 V","디제이맥스 리스펙트 5","디제이맥스 리스펙트"], description:"DJMAX RESPECT V의 메인 메뉴 BGM이다. 시리즈 특유의 세련된 일렉트로닉 사운드가 매력적이다."} +data modify storage mq:main songs append value {volume:1.0, title:"ARK : Survival Evolved", author:"Main Theme", alias:["ARK Survival Evolved","아크 서바이벌"], description:"작곡가 Gareth Coker가 작곡하고 Abbey Road 스튜디오에서 93인조 필하모니아 오케스트라로 녹음된 곡으로, 광활한 공룡 생존 세계의 웅장함과 신비로움을 담은 합창과 오케스트라가 인상적이다."} +data modify storage mq:main songs append value {volume:1.0, title:"Apex 레전드", author:"Main Theme", alias:["에이펙스 레전드","Apex Legends"], description:"에이펙스 레전드의 메인 테마곡. 박진감 넘치는 배틀로얄의 긴장감과 히어로물 같은 웅장함을 결합한 곡이다. 특히 곡 중간 부분의 특유의 멜로디가 인상적이다."} +data modify storage mq:main songs append value {volume:1.0, title:"디아블로 2", author:"트리스트럼 BGM", alias:["디아블로","DIABLO 2","DIABLO"], description:"디아블로 2의 트리스트럼 마을 BGM이다. 시리즈를 대표하는 기타 선율로, 디아블로 1로부터 이어진 황량하고 우울한 분위기의 명곡이다."} +data modify storage mq:main songs append value {volume:1.0, title:"포켓몬스터", author:"등화도시 BGM", alias:["포켓몬스터 오메가루비알파사파이어","포켓몬스터 ORAS"], description:"포켓몬스터 오메가루비/알파사파이어의 등화도시 BGM이다. 도시의 활기와 화려함을 담은 경쾌한 리메이크 버전이다. 쇼츠에도 많이 사용되며 포켓몬스터 BGM 중에 인기 있는 곡에 속한다."} +data modify storage mq:main songs append value {volume:1.0, title:"슈퍼 마리오 64", author:"Main Theme", alias:["슈퍼 마리오","Super Mario 64","Super Mario"], description:"닌텐도의 명작 슈퍼마리오 64의 메인 테마곡이다. 3D 마리오 시리즈의 역사적 시작을 알린 곡이다. 닌텐도 게임 음악사에서 빼놓을 수 없는 명곡 중 하나이다."} +data modify storage mq:main songs append value {volume:1.0, title:"별의 커비", author:"Green Greens", alias:["Kirby Super Star"], description:"커비 시리즈를 대표하는 Green Greens BGM. 첫 스테이지 BGM으로 시작해 시리즈 전반에 걸쳐 다양하게 편곡되는 커비의 시그니처 테마이다."} +data modify storage mq:main songs append value {volume:1.0, title:"소닉", author:"Green Hill Zone", alias:["Sonic"], description:"소닉 더 헤지혹의 상징과도 같은 BGM이다. 1991년 첫 작품부터 시작된 SEGA의 대표적인 BGM으로, 게임 음악 역사에 한 획을 그었다."} +data modify storage mq:main songs append value {volume:1.0, title:"원신", author:"Genshin Impact Main Theme", alias:["Genshin Impact"], description:"원신의 메인 테마곡이다. HOYO-Mix가 작곡한 웅장하고 환상적인 오케스트라 곡으로, 원신을 가장 잘 표현한 곡으로 평가받고 있다."} +data modify storage mq:main songs append value {volume:1.0, title:"The Legend of Zelda", author:"Main Theme", alias:["젤다의 전설"], description:"젤다의 전설: 신들의 트라이포스의 메인 테마. 콘도 코지가 작곡한 젤다 시리즈의 영원한 클래식 명곡이다."} +data modify storage mq:main songs append value {volume:1.0, title:"Slay The spire 2", author:"Main Menu Theme", alias:["슬레이 더 스파이어 2","슬레이 더 스파이어"], description:"인기를 끌고 있는 인디 덱빌딩 로그라이크 게임 슬레이 더 스파이어 2의 메인 메뉴 테마곡이다. 신비로운 탑을 오르는 여정의 분위기를 담았다."} +data modify storage mq:main songs append value {volume:1.0, title:"Arc Raiders", author:"Lobby Music - Track 01", alias:["아크 레이더스"], description:"익스트랙션 슈터 장르인 아크 레이더스의 로비 음악이다. 아크 레이더스는 출시 초기 참신한 컨셉과 완성도 높은 게임성으로 큰 인기를 끌었으며 현재도 꾸준한 인기를 유지하고 있다. 게임을 켜자마자 나오는 포스트 아포칼립스 분위기의 긴장감 있는 사운드가 특징이다."} +data modify storage mq:main songs append value {volume:1.0, title:"산나비", author:"끝났다는 것은 다시 시작된다는 것을", alias:["SANABI"], description:"한국 인디 게임인 산나비의 엔딩곡이다. 감동적인 스토리의 여운을 그대로 전달하는 명곡으로 평가받는다. 산나비를 플레이해본 유저라면 이 노래를 듣고 감동의 눈물을 흘릴 수밖에 없다."} +data modify storage mq:main songs append value {volume:1.0, title:"FIFA 2000", author:"It's Only Us", alias:["FIFA","피파 2000","피파"], description:"영국 가수 Robbie Williams의 곡 \"It's Only Us\". EA에서 FIFA 2000의 사운드트랙으로 라이선스해 인트로 곡으로 삽입한 노래이다. 피파가 큰 인기를 끌게 되며 게임에 삽입곡으로 분위기를 만드는 전통을 이어간 초기 사례."} +data modify storage mq:main songs append value {volume:1.0, title:"FIFA 온라인 3", author:"Yeah Yeah Yeah", alias:["FIFA 온라인","FC 온라인 3","FC 온라인","피파 온라인 3","피파 온라인"], description:"영국 DJ Jax Jones가 2015년 7월 발매한 댄스/하우스 싱글로, 게임 OST로 작곡된 곡은 아니지만 클럽/스포츠 게임 등에서 BGM이나 라이선스 음악으로 자주 활용된다. 경쾌한 비트와 멜로디가 인상적이다."} +data modify storage mq:main songs append value {volume:1.0, title:"Terraria", author:"Underground BGM", alias:["테라리아"], description:"샌드박스 게임인 테라리아의 지하 BGM이다. 지하 탐험의 신비로운 분위기를 담았다."} +data modify storage mq:main songs append value {volume:1.0, title:"Minecraft", author:"C418 - Mice on Venus", alias:["마인크래프트"], description:"마인크래프트 C418의 대표곡으로, 게임을 플레이하지 않은 사람도 알 정도로 유명한 명상적이고 서정적인 피아노 곡. 이 곡을 들으면 괜히 추억에 잠길 수도 있게 된다."} +data modify storage mq:main songs append value {volume:1.0, title:"Project Zomboid", author:"Main Menu Theme", alias:["프로젝트 좀보이드"], description:"좀비 생존 게임인 프로젝트 좀보이드의 메인 메뉴 BGM. 게임을 켜게 되면 이 곡이 재생되며 게임에 황량하고 외로운 분위기를 더해준다."} +data modify storage mq:main songs append value {volume:1.0, title:"Stardew Valley", author:"Stardew Valley Overture", alias:["스타듀 밸리"], description:"스타듀밸리의 오프닝 테마이다. 따뜻하고 향수 어린 멜로디로, 시골 농장 생활의 시작을 알린다."} +data modify storage mq:main songs append value {volume:1.0, title:"Undertale", author:"His Theme", alias:["언더테일"], description:"언더테일의 명곡 중 하나. 게임 후반부의 감동적인 순간을 책임지는 Toby Fox의 대표곡이다."} +data modify storage mq:main songs append value {volume:1.0, title:"Battlefield 4", author:"Main Theme", alias:["Battlefield","배틀필드 4","배틀필드"], description:"배틀필드 4의 공식 메인 테마곡이다. DICE의 시그니처 시리즈 사운드로, 전쟁 영화 같은 웅장함을 담았다. 노래의 웅장함 덕분에 게임 BGM뿐만 아니라 여러 웅장하고 전투적인 영상에 자주 쓰이는 곡이다."} +data modify storage mq:main songs append value {volume:1.0, title:"StarCraft", author:"Terran Theme 3", alias:["스타크래프트"], description:"대한민국 전통 민속놀이 스타크래프트의 테란 종족 3번째 트랙 곡이다. 우주적이고 전투적인 분위기를 잘 담은 곡으로 한국 e스포츠와 함께 자란 세대에게 정말 깊은 향수를 자극한다. 특히 테란 종족 1번째 트랙이 대표적이다."} +data modify storage mq:main songs append value {volume:1.0, title:"쿠키런", author:"에피소드 1 Main Theme", alias:[], description:"모바일 게임 쿠키런의 첫 에피소드 BGM이다. 경쾌하고 귀여운 분위기로 쿠키들의 오븐 탈출을 잘 표현한 곡이다."} +data modify storage mq:main songs append value {volume:1.0, title:"VALORANT", author:"WATCH", alias:["발로란트"], description:"라이엇 게임즈의 FPS 게임인 발로란트의 공식 음악이다. 챔피언스 투어 등 e스포츠 이벤트와 함께 공개된 곡이지만, 인 게임 스킨 테마곡으로 쓰이며 많은 게이머들에게 친숙하게 되었다."} +data modify storage mq:main songs append value {volume:1.0, title:"모두의 마블", author:"월드맵 BGM", alias:[], description:"넷마블의 모바일 게임 모두의 마블의 월드맵 BGM. 신나는 분위기로 여행 콘셉트를 표현한다."} +data modify storage mq:main songs append value {volume:1.0, title:"Blue Archive", author:"Constant Moderato", alias:["블루 아카이브"], description:"블루 아카이브의 메인 테마곡이다. 잔잔하고 청량하고 산뜻한 분위기로 인트로를 알리며 중반부 신나는 멜로디와 비트가 인상 깊다. 학원 도시 키보토스의 일상을 잘 표현하는 시리즈의 시그니처 곡이다."} +data modify storage mq:main songs append value {volume:1.0, title:"튀어나와요 동물의 숲", author:"In Kapp'n's Bus", alias:["동물의 숲"], description:"동물의 숲 시리즈의 캅파 보트 투어 BGM. 무인도 여행의 즐거움을 담은 곡이다."} +data modify storage mq:main songs append value {volume:1.0, title:"Civilization VI", author:"Sogno di Volare", alias:["Civilization 6","문명 VI","문명 6"], description:"문명 6의 메인 테마곡이다. 아카데미상 후보에 오른 작곡가 Christopher Tin이 작곡한 만큼, 이탈리아어 합창곡의 분위기가 문명 시리즈 음악의 정점을 알린다."} +data modify storage mq:main songs append value {volume:1.0, title:"Rainbow Six Siege", author:"영사관 지하 라디오", alias:["레인보우 식스 시즈"], description:"레인보우 식스 시즈의 영사관 맵 지하에서 재생되는 라디오 BGM이다. 이 게임을 플레이해본 게이머라면 영사관 맵 지하에 들어서는 순간 들리는 이 익숙한 라디오 BGM을 잊을 수 없을 것이다."} +data modify storage mq:main songs append value {volume:1.0, title:"배틀그라운드", author:"Old Main Theme", alias:[], description:"배틀그라운드의 구 메인 로비 BGM이다. 배틀그라운드가 막 출시한 시점 게임을 켜게 되면 항상 듣게 되는 곡이었으며, 배틀로얄 장르를 대중화시킨 작품의 긴장감 있는 테마가 인상 깊다."} +data modify storage mq:main songs append value {volume:1.0, title:"냥코 대전쟁", author:"전투 테마 1", alias:[], description:"모바일 게임 냥코 대전쟁의 전투 BGM이다. 귀엽지만 중독성 있는 멜로디가 특징이며, 게임을 플레이해봤다면 익숙할 것이다."} +data modify storage mq:main songs append value {volume:1.0, title:"OverWatch", author:"환상의 겨울나라 BGM", alias:["오버워치"], description:"오버워치 환상의 겨울나라 이벤트 BGM으로, 크리스마스 시즌 한정 이벤트의 따뜻한 분위기를 담았다. 그 시절 겨울에도 오버워치를 플레이해본 유저라면 추억이 떠오를 수밖에 없는 향수 같은 곡이다."} +data modify storage mq:main songs append value {volume:1.0, title:"TEKKEN 7", author:"Infinite Azure - Round 1", alias:["TEKKEN","철권 7","철권"], description:"철권 7의 인피니트 아주르 스테이지 BGM. 시리즈 전통의 일본풍 도시 야경 스테이지의 세련된 EDM 트랙으로, 주로 인 게임에서 콤보 연습을 할 때 자주 사용하는 맵이므로 플레이해본 게이머들에겐 익숙한 곡이다."} +data modify storage mq:main songs append value {volume:1.0, title:"엘소드", author:"Login Screen 1", alias:[], description:"넥슨 게임 엘소드의 로그인 화면 BGM. 중세 판타지 전투의 분위기를 가볍게 표현했다."} +data modify storage mq:main songs append value {volume:1.0, title:"레이튼 교수와 이상한 마을", author:"수수께끼", alias:[], description:"닌텐도 DS의 명작 추리/퍼즐 게임 레이튼 교수와 이상한 마을의 OST이다. 아코디언 선율의 특징적인 유럽풍 분위기의 곡."} +data modify storage mq:main songs append value {volume:1.0, title:"Clash Royale", author:"Menu A", alias:["클래시 로얄"], description:"슈퍼셀의 모바일 게임 클래시 로얄의 메뉴 BGM이다. 게임을 해봤다면 정말 정말 익숙한 곡이다."} +data modify storage mq:main songs append value {volume:1.0, title:"Geometry Dash", author:"Stay Inside Me", alias:["지오메트리 대쉬"], description:"지오메트리 대시의 사운드트랙이다. 지오메트리 대시는 모르는 맵을 클리어하기 위해서 연습 모드를 플레이할 수밖에 없는데, 이 곡이 연습 모드에서 반복 재생되며 많은 이들의 뇌리에 집어넣어졌다."} +data modify storage mq:main songs append value {volume:1.0, title:"끄투", author:"로비 BGM", alias:[], description:"한국 끝말잇기 게임 끄투의 구 로비 BGM이다. 한국 웹 게임 문화를 대표하는 곡 중 하나."} +data modify storage mq:main songs append value {volume:1.0, title:"SEPHIRIA", author:"토끼마을 BGM", alias:["세피리아"], description:"인디 RPG 세피리아의 토끼마을 BGM이다. 평화로운 마을의 분위기를 담은 곡."} +data modify storage mq:main songs append value {volume:1.0, title:"Bubble Bobble", author:"Main Theme", alias:["버블보블"], description:"추억의 클래식 아케이드 게임 버블보블의 메인 테마곡이다. 짧지만 강렬한 중독성으로 80~90년대 오락실 세대의 추억을 자극하는 명곡이다."} +data modify storage mq:main songs append value {volume:1.0, title:"버블파이터", author:"대기방 BGM", alias:["Bubble Fighter"], description:"넥슨의 캐주얼 슈팅 게임 버블파이터의 대기방 BGM이다. 친숙하고 귀여운 분위기의 곡이 인상적이다."} # 곡 개수는 songs 배열 길이에서 자동 계산됨 execute store result storage mq:main max_index int 1 run data get storage mq:main songs