← 목록
기타 2026-07-23 5KB 읽기 5분

크라우니월드 명세서 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만 CCU44 MB/s (352Mbps)단일 서버 가능 경계
서버 다운 총량 10만 CCU440 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)

  1. 순간이동(맘 소각) 존치 여부 — §6.
  2. 높이 "지점" 단위(1m 가정) 및 델타 상한 ±364 승인.
  3. 풀디테일 9명 선정 규칙(근접순 vs 고정 슬롯 비율).