Make 3.0 · 오브젝트 네이밍 규칙
네이밍 규칙 릴리스노트
현재 전체 규칙(누적)을 먼저 보고, 아래에서 버전별 변경 이력을 따라갈 수 있는 문서입니다. 규칙 전문은 SSOT doc/MAKE_FORMAT.md 를 따릅니다.
현재 전체 규칙 (누적 요약)
v1.0 부터 v1.2 까지 누적된 지금 유효한 전체 규칙의 요약입니다. 실무에선 이 절만 보면 됩니다. (버전별 변경 이력은 아래 「버전 변경사항 요약」)
이름 문법
인스턴스 이름은 아래 순서로 조립합니다. 필요한 토큰만 쓰고 나머지는 생략합니다.
패밀리 트리 구조
이름은 트리 안에서 소속이 드러나게 짓습니다. 노드 종류는 색으로 구분됩니다.
내비게이션 (Gnb · Lnb · Bnb)
- Screen1 / World1씬내비는 Screen·World 어디든
- GnbFamily전역 내비 · 1뎁스
- Gnb_Body그룹"차체" 메뉴
- Gnb_Body_Img역할버튼면
- Gnb_Body_Txt역할라벨
- Btn_Gnb_Body마커히트영역
- Gnb_Body_Img역할버튼면
- Gnb_Body그룹"차체" 메뉴
- LnbFamily지역 내비 · 2뎁스 (Gnb 하위)
- Lnb_Hood그룹"후드" 하위메뉴
- Lnb_Hood_Img역할버튼면
- Lnb_Hood_Txt역할라벨
- Btn_Lnb_Hood마커히트영역
- Lnb_Hood_Img역할버튼면
- Lnb_Hood그룹"후드" 하위메뉴
- BnbFamily하단바 · Screen 기본
- Bnb_Next그룹이전/다음(선택)
- Bnb_Next_Img역할
- Btn_Bnb_Next마커히트영역
- Bnb_Subtitle_Txt역할자막(Nar_ 오디오와 별개)
- Pagination그룹페이지 카운터
- Pagination_Txt역할"1 / 12"
- Bnb_Next그룹이전/다음(선택)
- GnbFamily전역 내비 · 1뎁스
단독 텍스트 블록 (Header · Guide)
- Screen1 / World1씬
- Header그룹상단 블록(래퍼)
- Header_Title_Txt역할
- Header_Subtitle_Txt역할있을 때만
- Header_Caption_Txt역할있을 때만
- Guide그룹중앙 안내
- Guide_Title_Txt역할
- Guide_Caption_Txt역할
- Header그룹상단 블록(래퍼)
어휘 — 앞마커 · Family · 역할 · 상태 · 방향
앞마커 (행동, 닫힌 집합)
| 마커 | 의미 | 예시 |
|---|---|---|
Ani_ | 애니메이션 있음 | Ani_Cupcake, Ani_Poi_Pump_01_Img |
Btn_ | 탭/누름 이벤트(Tap·DoubleTap·PressStart·PressEnd) = 히트영역 | Btn_Save, Btn_Gnb_Home_Off |
Col_ | 콜리전 이벤트(CollisionEnter/Exit) — 끌 객체 등 | Col_Card |
Tts_ | 텍스트 읽어주기(TTS) | Tts_StartHeadline |
VR_ | 360 비디오 객체 (일반 비디오와 구분) | VR_Sky, VR_Tour |
| (자동계열) | OnEnable/OnDisable/PlaybackEnd | — |
Ani_— 유일하게 다른 마커와 겹침·항상 맨 앞Btn_— 모든 상호작용 요소가 반드시 가짐Col_— 상대는TriggerTarget참조Tts_— ※현행 빌드 미탑재·예약.Nar_(음성 파일)와 구분VR_— 엄밀히 행동은 아니나 앞마커로 분류- (자동계열) — 마커 없음 = 자동
UI Family
| Family | 의미 | 예시 |
|---|---|---|
Gnb | Global Navigation Bar — 1뎁스(전역·1차) 내비 | Gnb_Body |
Lnb | Local Navigation Bar — 2뎁스(지역·하위) 내비 (선택된 Gnb 하위 메뉴) | Lnb_Hood |
Bnb | Bottom Bar — 이전/다음·자막·페이지 (내비 뎁스와 별개) | Bnb_Next, Bnb_Subtitle_Txt |
Modal | 화면 차단 팝업 (딤 O·중앙) | Modal_Exit |
Popup | 일반 팝업 (딤 X·비차단) | Popup_Guide |
Pnl | Panel (패널·컨테이너 판) | Pnl_Rotation |
Logo | 로고·브랜드 마크 | Logo_Img, Btn_Logo |
Toast | 가이드·알림 (화면 고정·자동소멸) | Toast_Save |
Poi | Point of Interest (공간 주목 마커) | Poi_Pump_01 |
Tag | Name Tag (이름표, Poi 의 선택적 자식) | Tag_Pump_01 |
Gnb— 위치 무관(상단/측면). 메뉴명 그룹 우선Lnb— 위치 무관 — 뎁스로 정의. 구 측면(Side Nav) 개념 대체Bnb—Gnb와 동일 구조. Screen 기본, World 는 Popup 자막(기본 미사용). 구Nav흡수Popup— v1.1 신설Pnl— 배경 역할은_BgLogo— 싱글턴 — Name 생략 가능Toast— 구Tip대체Poi— 탭하면Btn_Poi_*
역할 슬러그
| 역할 슬러그 | 의미 |
|---|---|
_Img | 시각 이미지 — 버튼면/배경. 컴포넌트 내 구분용 |
_Ic_Img | 아이콘 이미지 — 한 컴포넌트에 이미지가 여럿(버튼면+아이콘)일 때 Ic 한정어로 구분 |
_Mdl | 3D 모델/메시 (_Img 의 3D판) |
_Txt | 텍스트 라벨 (구 _Label→_Text, v1.1 _Txt) |
_Bg | 배경 — 영역(패밀리) 배경 1개, 영역명 붙임 |
Btn_ (앞마커) | 투명 히트영역 + 이벤트 — 뒤 _Btn 아닌 앞 Btn_ |
_Img— 단독·패턴B(이미지=히트)는 생략. 직접 탭하면 →Btn__Ic_Img— v1.1 — 구_Ico폐지, 아이콘도 이미지로 흡수_Mdl— 3D 직접 탭하면 →Btn__Txt— 컴포넌트(TextMeshPro Text)와 일치. 단독 텍스트=Header/Guide 블록의_Txt(예:Header_Title_Txt)_Bg—Gnb_Bg,Lnb_Bg.Screen1/World1은 분류 컨테이너라 배경 대상 아님. 메뉴 비주얼엔_ImgBtn_(앞마커) — 이벤트·콜라이더는 전부 여기에
상태 (State)
| Suffix | 상태 | 의미 |
|---|---|---|
| (없음) | Default | 기본 상태 (접미사 생략) |
_Pressed | Pressed | 눌린 상태 |
_On | On | 켜짐 / 활성 (토글) |
_Off | Off | 꺼짐 / 비활성 (토글 · 상호작용 가능) |
_Disabled | Disabled | 사용 불가 (상호작용 막힘 · 흐리게) |
방향 (Direction)
| Suffix | 의미 |
|---|---|
_Left | Left |
_Right | Right |
_Up | Up |
_Down | Down |
_Clockwise | Clockwise (회전 전용) |
_AntiClockwise | Anti-clockwise (회전 전용) |
씬 계층
최상위 컨테이너는 엔진식 Screen1(2D UI)·World1(3D). 장면 추가 시 Screen2/World2 — 같은 번호 = 한 장면. 형제 변형번호 _01(밑줄+두 자리)과는 별개. 방향은 항상 부모경로 포함(Btn_Pnl_Rotation_Left).
타이포그래피
크기는 fontSize 가 아니라 scale 로 제어. World·Screen 객체가 같은 값을 씁니다.
| 역할 | 굵기 | px | scale |
|---|---|---|---|
| 씬 타이틀 (H1) | Bold | 52 | 0.38 |
| 모달·Guide 타이틀 | Bold | 44 | 0.32 |
| 섹션 헤더 (H2) | Bold | 38 | 0.28 |
| 메뉴·정보값·부제 | Medium | 34 | 0.25 |
| 본문·자막·캡션 | Medium | 31 | 0.23 |
World ↔ Screen
엔진 배율(스크린 ×1000)과 1px=1mm 가 상쇄돼, 같은 scale 값이면 같은 크기로 보입니다.
Screen 객체
World 객체
미디어 · 한글 정책
미디어
한글 · 이름
샘플 — Screen · World 객체판
v1.2 규칙을 적용해 라이브 Make 에 생성. 같은 scale 값, 배치 좌표계만 다름(Screen=픽셀 앵커 / World=미터). 영문+한글 혼합.
버전 변경사항 요약
각 버전에서 무엇이·왜 바뀌었는지의 이력입니다.
Header(상단 식별 제목)·Guide(중앙 안내)·Bnb(하단 자막)·Pagination._Txt), <컨테이너>_<역할>_Txt 접두 상속.Caption = ‘부가설명’ 의미로 고정(하단 자막과 혼동 방지).fontSize=1 고정, 크기는 scale = 디자인px ÷ 137.Gnb(1뎁스·전역) / Lnb(2뎁스·지역, 구 Snb 대체). 측면에 놓여도 최상위면 Gnb. 배치 방향은 Direction 속성으로 분리(웹 IA Global/Local 정합).Bnb(하단바)를 Gnb와 동일 컴포넌트 구조로 정형화 — Bnb_Next_Img + Btn_Bnb_Next, Bnb_Subtitle_Txt. Screen 기본, World 는 Popup 자막·기본 미사용.name = 에디터 표시명 일치. 한글 별칭(DisplayTitle) 이원화 폐지(사용자가 표시명만 보고 지목 어려움 해소). 한글은 콘텐츠 텍스트 내용에만(이름·표시명엔 0건), i18n 은 콘텐츠 레이어에서.- Screen1씬
- Gnb_Home그룹(v1.1 컴포넌트 모델 그대로)
- Header그룹변경상단 텍스트 블록
- Header_Title_Txt역할변경
- Header_Caption_Txt역할변경부가설명
- Guide그룹변경중앙 안내
- Guide_Title_Txt역할변경
크기 제어를 fontSize→scale 로 전환(scale = px ÷ 137), World·Screen 동일 scale, 램프 상향.
| 역할 | 굵기 | px | scale |
|---|---|---|---|
| 씬 타이틀 (H1) | Bold | 52 | 0.38 |
| 모달·Guide 타이틀 | Bold | 44 | 0.32 |
| 섹션 헤더 (H2) | Bold | 38 | 0.28 |
| 메뉴·정보값·부제 | Medium | 34 | 0.25 |
| 본문·자막·캡션 | Medium | 31 | 0.23 |
Ani_/Btn_/Col_/Tts_/VR_. 이름만 봐도 그 노드가 무슨 행동을 갖는지 즉시 판별.Btn_ 로 일원화(뒤 _Btn 폐지). 모든 상호작용 요소가 투명 Btn_ 노드를 갖게 해 “이벤트 찾기 = Btn_ 찾기”로 AI·린트가 예측 가능._Ico 폐지→_Img(아이콘도 이미지로 흡수, 다중 이미지 구분 시 _Ic_Img), _Text→_Txt(컴포넌트명 길이 정합), 3D 모델용 _Mdl 신설.Popup(비차단 팝업)·Toast(구 Tip)·Poi·Tag 추가, Nav→Bnb 통합. Ico·Bg 는 Family 에서 역할로 이동.Screen1/World1 로 변경(구 World_01/Screen_01). 장면 추가 시 Screen2/World2 — 같은 번호 = 한 장면. 방향은 부모경로 포함(단독 Left 금지).Info/Bgv) 폐지 — 내용 이름만 사용, 360 비디오는 VR_. (오디오 Bgm/Sfx/Nar 는 유지.)Tbd_ + 사람 확인.- Screen1씬변경엔진식 번호
- Gnb_Home그룹메뉴 그룹
- Gnb_Home_Img역할버튼면 이미지
- Gnb_Home_Ic_Img역할변경아이콘 이미지(_Ico→_Ic_Img)
- Gnb_Home_Txt역할변경라벨(_Text→_Txt)
- Btn_Gnb_Home마커변경히트영역(앞마커 Btn_)
- Gnb_Home_Img역할버튼면 이미지
- Gnb_Home그룹메뉴 그룹
타이포그래피는 v1.0 램프(40·34·30·26·24) 유지 — 이번 버전은 명명 체계 위주, 크기 변경 없음.
MAJOR.MINOR(SemVer) 사용, 버전 SSOT = 문서 front-matter naming_version.Gnb_Home), 자식은 부모 상속 접두(<부모>_<역할>). 역할 슬러그 _Img/_Txt/_Ico/_Btn/_Bg 신설._Btn leaf 에 부착하고 최전방 Z에 배치 — 잘림·z-fighting 방지, 이벤트 위치 예측 가능.name 은 영문 PascalCase 고정, 사용자 대면 한글은 DisplayTitle 필드로 분리 — 인코딩·토큰비용·C# 비호환 부담 제거._ 만(하이픈·이중밑줄 금지), 숫자 경로 최대 3자리(Contents_3_1_1)로 정리.- Screen_01씬구 씬 표기(밑줄+두 자리)
- Gnb_Home그룹메뉴명 그룹(번호 대신 이름)
- Gnb_Home_Img역할버튼면 이미지
- Gnb_Home_Ico역할변경아이콘
- Gnb_Home_Text역할변경라벨(구 _Text)
- Gnb_Home_Btn마커변경히트영역(뒤 _Btn 접미)
- Gnb_Home_Img역할버튼면 이미지
- Gnb_Home그룹메뉴명 그룹(번호 대신 이름)
텍스트 타입 스케일(램프) 신설 — 전체 Pretendard 단일 폰트로 고정.
| 역할 | 굵기 | px |
|---|---|---|
| 씬 타이틀 (H1) | Bold | 40 |
| 모달 타이틀 | Bold | 34 |
| 섹션 헤더 (H2) | Bold | 30 |
| 메뉴·정보값 | Medium | 26 |
| 본문·라벨·자막 | Medium | 24 |
이전 리비전 상세 (v1 → v8, 정식 버전 이전)
v7 은 인스턴스 개별 이름은 정리했으나, 버튼처럼 이미지·텍스트·인터랙션이 한 덩어리인 UI 의 내부 구성·이벤트 위치·정렬이 미규정. MCP 로 실제 제작·수정할 때 "어느 객체가 어디에 연결됐는지" 찾기 어렵다는 피드백 반영.
Gnb_Home) 우선, 번호는 fallbackGnb_01)뿐 — 이름만으로 무슨 메뉴인지 모름<부모>_<역할> (Gnb_Home_Txt) — grep 한 번에 서브트리Text 1)_Img/_Txt/_Ico/_Btn/_Bg 신설*_Btn leaf** (투명 사각형) — 예측 가능_Btn 에 여유 마진 + 최전방 Z(−0.02)로 주변 영역까지 선택_Img 0 / _Txt −0.01 / _Btn −0.02), 전역 통일 부호v6 의 3-Tier·약자 체계가 실제 운영에서 과하다는 피드백 반영. 핵심: 사용자가 안 만지는 것은 규칙에서 빼고, 사람이 쓰는 것은 약자 대신 풀어쓴다.
ResourceID 기반 시스템 관리ALB/NRM/...)·tex_ 채널 — 사용자가 다루지 않음Pressed/On/Off/Disabled, Left/Right/...)_Def/_Prs, _L/_R, Rot/Scl) 학습 비용·모호성Off(토글 꺼짐) 와 Disabled(사용 불가) 분리_On/_Off 가 토글·가용성 두 의미 통합 → 디버깅 모호Selected 제거_Sel(Selected) 가 _On 과 기능 중복Info(정보 전달) / Bgv(배경 영상)CUT/TUT/LOOP/INTRO/OUTRO) 과세분Bounce/Spin/ZoomIn/...), 대상 이름 제외, 속성 4종(Position/Rotation/Scale/Color)<Target>_<Act>_<Dir> — 대상 이름 의존·약어 난해Gnb/Bgm), 2글자(UI)만 대문자GNB/BGM)_, 숫자 경로 최대 3자리, __ 제거Ani_(애니메이션 모델), TTS_(음성 변환 텍스트), Modal 패밀리 추가v5 까지는 .make 내부 식별자 전체에 단일 형식 (lower_snake_case + kind prefix) 강제. 실측 (Make Templete_20260512.make, 513 노드 분석) 결과 다음 갭 노출:
_ 통일, 트리 컨텍스트 활용__ 이중 언더스코어가 이름 길이 증가, 부모-자식 트리가 이미 위계 표현_ 만Contents 3-1-1-2) 과 _ 혼용 — 구분자 정책 불명_Def/_Prs/_On/_Off/_Sel)_default/_pressed/...) 길이·일관성 부족_hover·_focused·_highlight 가 VR/터치 환경에 부재_ 삽입 (BGM_Tutorial)BGMTutorial) — GNB_Active 패턴과 불일치<Target>_<Act>_<Dir>anm_ prefix — animations[] 배열 위치가 이미 타입 선언Rot→Scl→Mov→Clr→Op)GNB/LNB) ad-hoc — 인계 직관성 부족_v<NN> marker 필수 — 임포트 후 모든 인스턴스에서 무의미v4 까지는 .make 내부 식별자(L2) 만 규정. 외부 소스 파일(FBX/PNG/WAV/MP4) 이 어떤 형식으로 납품되어야 임포트 파이프라인이 깨끗하게 L2 로 변환할 수 있는지 미정의. 모델러·아티스트가 임의 명명 → 임포트 시 정규화 실패 또는 메타데이터 손실 위험.
__<state> 로 매핑mdl_*__* 가 권위 표기v3 는 자가설명을 강제하면서 명명 비용 을 고려 못 했음. 사용자 지적 2개로 노출:
v2 의 "Kind prefix 선택화" 가 실무 목적과 충돌. v3 보강 매핑:
mdl_, mat_, tex_, img_, aud_ 등)<asset>__<component> namespace — mat_laptop__screentex_ vs img_ prefix 분리_albedo, _normal, _roughness ..._default, _hover, _pressed ...doc/GLOSSARY.md) 정책v1 규칙의 8가지 허점과 보강 매핑 (역사적 기록):
M = Model? Material?) 모호order: 10 (10단위)<NN> 2자리 — 실측 142개 vs 최대 100order 필드_inst<idx>nodes[], meshes[]"Logox4.png", "btn_start.png" 가 노드명VNT_ExternalResourcesLogo_ImgLogo_Img.pngBtn_Gnb_Home_OffGnb_Home_BtnGnb_Settings_Ic_Img (또는 _Img)Gnb_Settings_IcoGnb_Home_TxtGnb_Home_TextBtn_Pnl_Rotation_LeftLeft / RightTts_StartHeadlineTts_Start_HeadlineCupcake (마커만 차이)Cupcake_01, Cupcake_02 (다른 씬)Tour, VR_SkyInfo_Tour, Bgv_SkyVR_TourTour (360인데)Tour/VR_Tour, Bgm_WorkshopTour_vid, Bgm_audBtn_Gnb_Start / _Txt / _Ic_Img / _Img 분리Gnb_Start (이미지+글자+히트 통짜)Tbd_Excavator + 사람 확인scripts/build_naming_release_notes.py · 소스 doc/MAKE_FORMAT.md · 새 버전은 스크립트의 CHANGES 에 항목 추가 후 재실행