Build 326 · 2026-09-06 · FIX(EDITOR): RESOLVE MODAL CONFLICT AND INPUT COLLISION BETWEEN LIVEASSETPICKER AND LIVEENTITYEDITOR

Zero — 지금 이 레포 (인간용)

에이전트는 AGENTS.md를 읽는다. 사람은 이 파일만 먼저 연다.
구조·이름·역할이 바뀌면 에이전트는 같은 턴에 이 표를 고친다 (GATES.md G8).

아이템/적/방/참 목록은 여기에 없다. 그건 아래 §4 파일을 연다.


1. 지금 플레이

URL/games/zero/ (하드 리프레시)
현황 페이지/games/zero/status.html (허브 Zero 카드 현황)
빌드 번호타이틀의 Build N. 숫자의 SSOT는 scripts/catalog/GameInfo.gd
Godot GUI없음. 맵은 게임 안 F1, 아트 F2, 엔티티 F3/F4
엔진Godot 4.7.2, 화면 640×360, 2.5D (CharacterBody3D)

화면에 보이는 방·적·이름·아트는 플레이스홀더. 본편이 아니다.


2. 한 줄로

엔진 + 인게임 에디터 + 플레이 가능한 메트로바니아.
최종 상용 타깃은 PC, 콘솔, 모바일 출시를 지향하며, 웹 빌드(/games/zero/)는 개발 편의성과 즉각적인 플레이 검증을 위한 개발용 런타임이다. 모든 인게임 에디터(F1~F4)는 웹 개발 환경에서만 고려·동작한다.
룸 테이블(MegaWorldBuilder)은 과거 74개 더미 룸을 정리하고 0에서 시작하는 7개 프롤로그 룸(시작의 숲 1막)으로 재구성되었다.

폴더는 셋이다. 합치지 않는다.

폴더하는 일
framework/게임 이름 없는 엔진 조각 (Fw*). 씬 트리 금지
game/물리 액터, 서비스, 모터, HUD
scripts/카탈로그, 룸 테이블, F1 에디터, 오토로드 파사드

도구는 각자 자기 일만

에디터는 만들고, 트리는 갖고, 파이프라인은 굽고, NAS는 보여 준다.

누가하는 일
이 레포게임 + 에셋 문 (tools/asset_put.py). 설치·프로토콜·삭제
인게임 F1/F2/F3돌아가는 빌드 위 오버레이
ZeroEditor시트/픽셀/SDF. 이 레포 PUT에 접속만 (또는 데스크톱으로 이 트리에 씀)
git 작업 트리빌드에 들어갈 유일한 원본
turn_pipeline.py테스트·pck·/games/zero/ 출판. PUT 서버를 켜지 않음
DiskStation마지막 익스포트 정적 호스팅
Firebat이 레포가 사는 PC. Windows가 Zero 대신 PUT을 상주

웹 ZeroEditor는 도구 미리보기. Zero 트리에 넣으려면 이 레포가 연 PUT(http://firebat:8787)에 파일을 보낸다. AtlasLab / PixelArtLab 은 옛 이름.

씬 파일(scenes/)은 껍데기. 방과 엔티티는 코드가 스폰한다.


3. 지금 유통되는 코드 이름

콘텐츠 id가 아니다. 클래스·오토로드·그룹·레거시 경로만.

오토로드 (project.godot)

이름역할파일
GameState세션 창구 (세이브, 인벤, 플래그, 입력, 씬). 만능 신 아님scripts/GameState.gd
Combat공격 쿨다운·히트박스scripts/Combat.gd
Audio음악/효과음. 룸 → 존game/presentation/audio/Audio.gd
Fx타격 연출game/presentation/vfx/Fx.gd
GameUi대화, 일시정지, 상점. 입력을 막을 때 is_blocking()game/presentation/ui/GameUi.gd
HUD오토로드 아님. 체력·재화·툴바game/presentation/ui/HUD.gd

월드에 나오는 종류

이름역할파일
Being움직이는 주체 (플레이어, 적)game/adapters/actors/Being.gd
Thing조사·픽업 대상game/adapters/actors/Thing.gd
Surface바닥·벽game/adapters/world/Surface.gd
SpatialVolume물·가시 같은 공간game/adapters/world/SpatialVolume.gd
Character플레이어 조작game/adapters/actors/Character.gd
World지금 방 돌리기scripts/World.gd
MegaWorldBuilder방 목록 (더미)scripts/world/MegaWorldBuilder.gd
LiveMapEditorF1 맵scripts/LiveMapEditor.gd
LiveArtEditorF2 그림scripts/LiveArtEditor.gd
LiveEntityEditorF3 엔티티 튜닝scripts/editor/LiveEntityEditor.gd
LiveAssetPicker리소스 선택기 (비주얼 텍스처/에셋 브라우저)scripts/editor/LiveAssetPicker.gd
UiFonts글꼴. Fonts.gd를 이 이름으로 불러옴game/presentation/ui/Fonts.gd
FwPhysicsLayers충돌 레이어 이름framework/FwPhysicsLayers.gd
FwWebStore브라우저 저장framework/FwWebStore.gd
InputConfig키 배치. project.godot 입력맵은 비움game/application/input/InputConfig.gd
AppNodes오토로드 찾기game/adapters/runtime/AppNodes.gd
Plat칸 크기·점프 높이 숫자. 파일명이 애매함 → 나중에 LayoutGridgame/domain/world/Plat.gd

그룹 (코드가 서로를 찾을 때)

그룹누구
"entities" / "entity"기둥+볼륨 전부 (둘 다 붙음)
"being" / "beings" / "actors"Being
"things" / "interactable"Thing
"surface"Surface
"spatial_volume"볼륨
"player"플레이어
"enemies" / "boss"적 / 보스
"ui_modal"열린 메뉴 (이동 막힘)
"world_host"World

쓰지 말 것: "pawn", "metro_modal", "interact" (지금은 "things").

예전 이름 (metro) — 저장 경로만

문자열역할
assets/ui/metro_theme.tresUI 테마 파일
user://metro_save.json세이브 파일 (옛 경로, 그대로 읽음)
metro_rooms_v*맵 JSON 키 (옛 키, 그대로 읽음)
user://metro_settings.cfg설정 파일. 웹 키는 zero_settings_v1

새 코드에 metro_ 이름을 만들지 않는다.


4. 콘텐츠 이름은 여기 없음

방 id, 아이템, 적, 참, 키 배치는 파일을 연다. 이 문서에 목록을 베끼지 않는다.

알고 싶은 것파일
지금 빌드 문구scripts/catalog/GameInfo.gd
키/패드game/application/input/InputConfig.gd
방 id·시작점scripts/world/RoomCatalog.gd
방 배치 (더미)scripts/world/MegaWorldBuilder.gd
아이템scripts/catalog/Items.gd
scripts/catalog/Enemies.gd
월드 오브젝트scripts/catalog/Objects.gd
scripts/catalog/Charms.gd
재화 아이콘scripts/catalog/Currencies.gd
존/BGMscripts/catalog/Zones.gd
화면 글localization/translations.csv

전체 색인: AGENTS.md §3.


5. 더 읽고 싶을 때

파일누구용
이 파일 STATUS.md사람. 지금 상태
TASKS.md단기 개선 과제·백로그·설계 고민
AGENTS.md에이전트 작업 규칙
ARCHITECTURE.md시스템 상세 (영어, 김)
UI.mdHUD·모달·폰트
GATES.md턴이 끝났는지
README.md플레이어용 조작 안내

6. 이 표를 고치는 때

클래스, 오토로드, 그룹, F-키 에디터, 레거시 저장 경로를 추가·개명·폐기하면 이 파일을 같은 턴에 고친다.
콘텐츠 한 줄(아이템 스탯 등)만 바꾸면 이 파일이 아니라 §4 카탈로그만 고친다.