크라우니월드 명세서 v1 (SSOT) — 4상균형3진 기계어 기반
사장님 지시(2026-07-23) 조항화. 수치 검증 정본 =os-site/게임슬라이스/크라우니월드명세분석.한선(13/13 PASS) +크라우니월드용량.한선(12/12 PASS).
§1 원칙 — 4상균형3진 크라우니기계어 중심
- 모든 월드 데이터 포맷은 트릿 네이티브(T/O/A/U)로 설계한다. 높이 델타의 부호(±)는 균형3진의 T(+)/A(−)가 자연 표현 — 별도 부호비트 없음.
- 판정(입주 동의·가시성·요금)은 4상(티/옴/타/음) 셀코어 룰로 토큰0 처리.
§2 공간 모델 — 평지 + 높이 벡터델타 (레이어 없음)
- 기준면 = 평지(현행 village.js 지면). 건물/토목은 평지 기준 ± 지점 벡터로만 기술: 셀(10m 격자)마다 "플러스 몇 지점 / 마이너스 몇 지점" 델타.
- 굴곡은 있어도 레이어는 없다: 높이맵은 셀당 단일값(single-valued) — 오버행/다층 금지로 시작. 전체 3D 공간(복셀 6.4TB 금지선)을 절대 차지하지 않는다.
- 인코딩: 셀 델타 = 6트릿 균형3진(±364 지점, 지점=1m). 청크(270m=27×27셀=27큐브 정렬)별 기준고도 오프셋 별도 보관 — 한라산(1,950m)도 커버.
- 용량(검증값): 전셀 밀집 6트릿=1,205MB vs 스파스(건물·토목 비영셀 ~3천만 개만, 셀좌표10트릿+델타6트릿=16트릿) = 96MB → 스파스 채택. 자연 굴곡은 DEM 30m 기준면(223MB)이 담당.
- 모듈식 레이어 확장: 벡터 방식이므로 이후 지정 지역(청크 단위)에 레이어 테이블을 모듈로 추가 가능(예: 지하상가·고가) — 기본 포맷 무변경, 해당 청크에만 레이어 색인 1개 부착.
§3 저장 분담 — 내 마을은 내 것
- 내 마을(콘텐츠) = 소유자 로컬/클라우드 보관: 씬 오브젝트·높이델타·인테리어(~50KB/마을). 서버는 마을 원본을 저장하지 않는다.
- 크라우니월드 서버 = 좌표와 움직임만: ①청크 색인(11MB) ②전국 기본지형(DEM 223+건물 438+도로 300MB) ③높이델타 스파스(96MB) ④이동기록. 서버 상주 합계 1,068MB(≈1GB).
- 마을 방문 = 방문자가 소유자 노드(로컬/클라우드)에서 청크 델타를 직접 스트리밍(서버는 좌표 중개만). 오프라인 소유자는 클라우드 미러가 응답.
§4 프레즌스 — 동시 9명 규칙
- 풀디테일 = 나 포함 9명(나+8): 전용 착장 의상·라이온 외형이 그대로 보이고, 동시 소통(대화·이모트·악기) 가능. 3×3=9, 27큐브 정합.
- 그 외 인원 = 반투명 랜덤 의상/라이온: 서버가 좌표만 중계(착장 데이터 미전송) — 클라이언트가 좌표 해시로 랜덤 외형 로컬 생성(추가 패킷 0). 군중은 보이되 익명·경량.
- 9명 선택 = 근접순 기본 + 친구/마을 고정 슬롯(옴 상태에서 교체 가능).
§5 지각 필터 — "빨간색을 보기로 하면 빨간색만 더 잘 보임"
- 클라이언트 로컬 렌더 필터: 선택 채널(색·태그)을 강조(채도·글로우 상향)하고 그 외는 감쇠. 데이터는 불변 — 순수 렌더 레이어라 패킷·저장 영향 0. 촛불 수집(빛 채널)과 동일 엔진 재사용.
§6 이동 체계 — 4종만
- 좌표 이동 = 걷기/뛰기/날기/빠른날기 4종만. 속도는 3진 배수: 걷 1.5 · 뛰 4.5 · 날 13.5 · 빠른날 40.5 m/s (1.5×3ⁿ). 서울↔부산 빠른날기 ≈ 2시간 — 세계가 넓게 느껴지는 스케일 유지.
- 이동상태 인코딩 = 4상 1문자: 걷=T, 뛰=O, 날=A, 빠른날=U.
- 순간이동(맘 포인트 소각, 이전 지시)은 "이동"이 아닌 별도 유료 행위로 존치 — 4종 물리 이동은 전부 무료. ※존치 여부 사장님 재확인 1건.
§7 이동기록 포맷 (서버 저장/공유)
- 레코드 = x12 + z12 + y6 + 이동상태(4상1) + 시각12 = 43트릿 ≈ 9B (바이너리 18B 대비 2배 절감). x/z 12트릿=531km 커버(전국 1m 정밀).
- 보관: 최근 원본 링버퍼 + 장기 1/20 폴리라인 요약.
§8 패킷/대역 예상 (검증값)
| 항목 | 수치 | 판정 |
|---|---|---|
| 클라 업링크 (40B×10Hz 이동 중) | 400 B/s | 모바일 여유 |
| 클라 다운링크 (풀8명@10Hz + 간이30명@2Hz) | 4,400 B/s ≈ 35kbps | 모바일 여유 |
| 서버 다운 총량 1만 CCU | 44 MB/s (352Mbps) | 단일 서버 가능 경계 |
| 서버 다운 총량 10만 CCU | 440 MB/s | 청크 룸 샤딩 필수(§9 P3) |
| 이동기록 1만 CCU | 원본 4 GB/일 | 요약 후 200MB/일 |
| 이동기록 10만 CCU | 요약 2 GB/일 | 수용 가능 |
§9 작업 로드맵 (예상 규모)
- P0 포맷 정본: 높이델타 6트릿 인코더/디코더 + 이동레코드 43트릿 코덱 (.한선, RPN 동반) — 1세션.
- P1 높이 렌더: village.js 지형 y 반영(청크 기준고도+델타), 이동/비행 충돌 — 1~2세션.
- P2 프레즌스9: presence 서버 room=청크 샤딩 + 풀8/반투명 이원 중계 + 랜덤 외형 로컬 생성 — 2세션.
- P3 저장 분담: 마을 로컬/클라우드 보관 프로토콜 + 방문 스트리밍 + 서버 좌표 중개 — 2~3세션.
- P4 이동기록: 링버퍼+요약 파이프 — 1세션.
- P1 이후 상시: 지각 필터·속도 4종 튜닝(손맛 = 사장님 판정).
잔여 확인(admin)
- 순간이동(맘 소각) 존치 여부 — §6.
- 높이 "지점" 단위(1m 가정) 및 델타 상한 ±364 승인.
- 풀디테일 9명 선정 규칙(근접순 vs 고정 슬롯 비율).