수집물.한선 — 스카이 촛불/빛 수집 정본
개요
스카이(스타워크 유사) 스타일 촛불/빛 수집 시스템의 데이터+판정 정본. village.js가 소비할
수집물.json을 생성하고, 근접 수집 판정·진행률 표시·27칸 인벤토리 슬롯 매핑·레벨/보상 규칙을
순수 한선씨로 제공한다. blocker 해소 목적 작업.
무엇을 했는지
수집물.한선 신규 작성 (게임슬라이스/ — 장면3D.한선·이모트.한선과 동일한 시작()/항목()/끝() 산출 패턴 답습)
- 촛불 26개 (x,y,z,색) 스폰 좌표를 장면3D.한선 좌표계(ground 160x160 중심원점)에 맞춰 마을 곳곳
(분수 주변·마을 집들 사이·가로등 옆·숲 외곽)에 배치 — 흔한 색(#fff3c0/#ffd9a0/#ffb84d) 다수 +
희귀 색(#a0d8ff 파랑/#c9a9ff 보라/#98e6a0 초록) 3종으로 수집 다양성 부여
근접판정(px,pz,cx,cz,반경) — 수평 제곱거리 비교(루트/나눗셈 회피), 반경 이내=1/밖=0
수집카운트(수집수,총수) — HUD 진행률 문자열
슬롯인덱스(수집수) — 27칸 인벤토리(village.js 소지품 27큐브) 재사용 매핑, 0..25 직접 매핑
(촛불개수 26 < 27이라 모듈로 없이 매핑 → 균형나머지 함정 회피), 27번째 칸은 완주 트로피용
레벨계산(수집수)/보상설명(레벨) — 5단위 임계값 6단계 레벨-보상 테이블 (단순 함수)
보상룰생성() — 동일 로직을 셀코어 규칙(룰생성/룰조건추가/룰변경추가)으로도 실증(대안 경로)
컴파일/실행 검증
cd /Users/ef/CrownyOS/os-site/게임슬라이스
CROWNY_STRICT=1 hanseonc_high 수집물.한선 > 수집물.toau # exit=0, 1.26MB, STRICT 경고 0
crownyc run 수집물.toau
실행 결과:
data/수집물.json 생성 확인(26 candles, valid JSON), 근접판정/슬롯인덱스/레벨계산/
보상설명/셀코어룰 전부 stdout 자가검증 통과.
관련 파일
/Users/ef/CrownyOS/os-site/게임슬라이스/수집물.한선 (신규, 정본)
/Users/ef/CrownyOS/os-site/게임슬라이스/data/수집물.json (산출물, 26 candles)
- 참조:
/Users/ef/CrownyOS/스튜디오/장면3D.한선(씬 좌표계 정본), /Users/ef/CrownyOS/os-site/게임슬라이스/이모트.한선(동일 산출 패턴 sibling)
- village.js(라이브, 미접촉) — 배선 가이드는 수집물.한선 헤더 주석에 runbook으로 기술
village.js 연동 방법 (미배선 — runbook만)
fetch("게임슬라이스/data/수집물.json") → JSON.candles 로드, 장면3D 스케일 K 곱해 배치
buildFacesFrom()의 billboard 분기에 else if (o.t === "candle") billboard(o, "candle", out) 한 줄 추가
- 매 프레임
player.x,player.z vs 미수집 촛불에 근접판정 로직 JS 미러링(반경 2.2 권장)
- 히트 시
localStorage("crowny.수집촛불")에 id 추가 + 씬에서 제거
수집카운트()/레벨계산()/보상설명() 문구를 HUD/토스트에 미러링
- 27큐브 소지품(
loadShelf, village.js:338) 슬롯에 슬롯인덱스(수집수)로 매핑
잔여 이슈
- village.js 실배선 미완(라이브 무접촉 지시로 이번 세션에서는 신규 파일만 생성)
- 촛불 y(높이) bob 애니메이션은 JS 측 sin(T+id) 담당(정본은 정지 y값만 제공)
- 셀코어 보상룰은 구조 실증만, 실제 셀DB 등록/구동 경로는 확장 시 별도 배선 필요