# 본 개발 전 핵심 기능 검증

2026-10-02 합의: 반복적인 일반 성능 비교를 줄이고, 아래 순서로 실제 개발을 막을 수 있는 문제와 기능을 확인한다. 기존 측정은 보존하며 엔진 선택을 아직 확정하지 않는다.

## 1. 모바일 대형 장면 로딩

현재 iPhone 11에서 Three.js/Spark의 Sunnyvale 원본은 다운로드 후 해독 완료가 관찰되지 않았다. 메모리 부족은 아직 확정 원인이 아니다. PlayCanvas의 원본 로딩 성공 기록은 있다.

대조 시험에서 동일한 400만 점의 SH 제거본은 47.320초에 준비됐고, 90만 점 축소본도 준비됐다. 원본의 SH 처리·할당 부담과 연관될 가능성이 있으나 정확한 원인은 미확정이다. [상세 근거와 제한](MOBILE-DECODER-CONTROLS.md). 이 위험을 기록하고 2번 검증으로 진행한다.

- 원본 400만 점·SH 3단계, 동일 점의 SH 제거본, 90만 점·SH 제거본을 순차 비교한다.
- 원본과 SH 제거본의 기본 WebP 데이터가 동일함을 확인한다. 점 수 축소본은 다시 인코딩했으므로 점 수만 달라진 완벽한 대조군으로 취급하지 않는다.
- 다운로드 완료, worker 해독 결과, 앱 준비, 페이지 재시작과 오류를 따로 기록한다. 진단 릴레이와 계측 비용이 포함된 시간은 성능 순위에 사용하지 않는다.
- 통과 조건: 지원 대상으로 정한 자산이 실기기에서 준비되고 조작 가능하며, 실패 시 오류와 재시도로 복구된다. 한 번 성공한 크기를 모든 장면의 안전 한도로 일반화하지 않는다.

## 2. 현재·과거 전환

시대별 벽 시험 장면을 추가했다. BVH·Rapier·Ammo 모두 사라진 벽 통과, 새 벽 정지, 겹침 시 안전 이동, 전환 중 입력 차단, 대상 로딩 실패 후 복구·재시도를 통과했다. [결과와 제한](ERA-COLLISION-SWITCH.md). 합성 장면의 공통 바닥에서 확인한 결과이며 실제 역사 복원이나 시대별 바닥 교체까지 검증한 것은 아니다. 3번 공간 분할로 진행한다.

- 시각 자산과 해당 시대의 충돌·핫스팟을 함께 교체한다.
- 카메라와 발 위치를 보존한다. 새 건물 안에 위치가 겹치면 명시적인 안전 위치 정책을 적용한다.
- 전환 중 입력과 중복 요청을 막고, 대상 로딩 실패 때 이전 상태로 복구한다.
- 통과 조건: 사라진 벽이 이동을 막지 않고 새 벽은 통과하지 못하며, 해당 시대 정보와 화면이 일치한다.

## 3. 공간 분할과 필요한 자산 로딩

900,000점 마스터를 실제 좌표의 다섯 SOG로 분할했다. BVH·Rapier·Ammo에서 선택 로딩·해제·왕복을 확인했고 BVH·Ammo에서 지연·실패·늦은 결과 폐기까지 확인했다. [기초 결과](SPATIAL-STREAMING.md)의 최초 SOG 파일 크기 65.4% 절감은 원거리 생략 상태의 값이다. 2026-10-03에는 먼 구역을 저해상도로 유지하고 가까운 정밀 자산과 교체하는 기능을 추가했다. 저해상도 포함 최초 파일 크기는 기존보다 약 54.2% 작다. BVH·Ammo에서 지연·실패·재시도 중 구역 표현 유지와 왕복을 확인했지만 교체 순간 선명도 변화는 남는다. [결과와 제한](FAR-LOD.md). 이 Hall 시험은 공통 작은 충돌 메시를 유지한다. 후속 Sunnyvale 시험에서는 90만 점 SH0 축소본과 공식 충돌 메시를 여섯 구역으로 함께 분할했다. 세 구성 모두 데스크톱의 왕복·충돌 지연·실패·재시도와 iPhone의 왕복·시작점 복귀를 통과했다. 원본 충돌면 유지도 독립 검사했다. [화면·충돌 분할 결과](PAIRED-SPATIAL-STREAMING.md). 큰 SH3 원본의 모바일 해독 문제와 실제 메모리 검증은 남아 있다.

- 분할 경계, 좌표, 시대, 자산 크기·해시를 공통 데이터로 관리한다. 두 엔진에 동일 분할본과 경로를 사용한다.
- 가까운 구역과 다음 구역을 제한된 예산으로 로드한다. 해제 거리는 로드 거리보다 넓혀 경계 왕복 때 반복 요청을 줄인다.
- 요청 중 구역 이탈, 실패·재시도, 늦게 도착한 결과의 정리, 동시에 허용할 다운로드·해독 수를 검증한다.
- 바닥과 벽의 충돌은 필요한 구역이 준비된 뒤 이동을 허용한다. 로딩 중 바닥을 해제해 추락시키지 않는다.
- 원본 대비 최초 전송량, 최대 상주 점 수·자산 수, 반복 경로의 재요청과 자원 해제, 구역 경계의 누락·겹침을 기록한다.
- 통과 조건: 처음부터 원본 전체를 요청하지 않으며, 이동에 맞춰 실제 로드·해제가 발생하고, 경계에서 장면과 충돌이 끊기지 않는다. GPU 메모리 해제를 직접 측정하지 않았다면 총 메모리 절감으로 표현하지 않는다.
- 기본 구역 로딩과 엔진별 LOD·스트리밍 기능은 별도 시험으로 기록한다. 품질·상주 예산을 맞추지 않은 결과로 우열을 판정하지 않는다.

## 4. 장소 정보와 콘텐츠

BVH·Rapier·Ammo에서 구역 소유권, 가림·거리·시대 조건, 패널 중 이동 차단·닫은 뒤 이동 복귀, 장면·시대 변경의 패널 정리, 이미지 실패 후 설명 유지·복구를 확인했다. [결과와 범위](CONTENT-LIFECYCLE.md). 실제 역사 콘텐츠 검수와 모바일 터치 사용성은 별도 과제다.

- 핫스팟 가림·거리·시대 조건, 패널 중 이동 차단, 닫기 후 입력 복귀를 확인한다.
- 사진으로 관찰한 현재와 근거가 있는 복원·추정·시험용 표현을 구분한다.
- 구역 해제 후 패널·핫스팟이 오래된 객체를 참조하지 않는지 확인한다.

## 5. 제작·변경 비용

실제 자산·구역·과거 건물·콘텐츠 변경 경로와 공통 데이터/엔진 결합 범위를 [제작·변경 작업](AUTHORING-COST.md)에 정리했다. Sunnyvale 화면·충돌 분할 생성기 실행은 80.325초로 기록했다. 사람의 제작·검수 시간과 호스팅 비용 견적은 아직 측정하지 않았다. Hall·Sunnyvale 전용 생성기와 수동 충돌 제작을 범용 제작 파이프라인으로 간주하지 않는다.

- 자산 한 개 교체, 구역 추가, 과거 건물·충돌·핫스팟 추가에 필요한 작업과 도구를 기록한다.
- 런타임, 변환 도구, 에디터·호스팅 의존성과 데이터 이식 범위를 구분한다.
- 최종 선택은 기능별 통과 여부, 실기기 한계와 변경 작업량을 함께 보고 결정한다.

## 다음 핵심 확인

공간 분할과 시대 교체의 결합은 BVH·Rapier·Ammo에서 구역 이동·반복 전환·충돌·설명 교체와 지연·실패 복구를 통과했다. PlayCanvas의 GSplat 해제 순서 오류도 수정했다. [결과와 제한](STREAMING-ERA.md).

iPhone 11에서도 세 구성의 분할 준비·구역 왕복·시대 교체·벽 충돌·설명·합성 터치 회전을 통과했다. [실기기 결과와 제한](MOBILE-STREAMING-ERA.md). 물리적 손가락 사용성·모바일 메모리·장시간 유지는 남아 있다.

Sunnyvale의 **실제 시각·충돌 분할**도 세 구성의 데스크톱·iPhone에서 확인했다. [결과·교체 비용·제한](PAIRED-SPATIAL-STREAMING.md). 이어 현재 촬영 배경에 시대별 가상 벽·설명을 결합하고 세 구성의 데스크톱에서 안전 이동·실패 복구까지 확인했다. Three.js는 구역 충돌을 재사용해 추가·제거 비용을 줄였다. [결합·재사용 결과](SUNNYVALE-ERA-INTEGRATION.md). 실제 과거 자료 제작과 이번 변경의 iPhone 검증은 남아 있다.

[보행 메시 조사와 작성·검수 절차](WALKMESH-AUTHORING.md)를 추가했다. 계단·정지는 확인했고 벤치 뒤 복귀는 세 구성 모두 실패한다. 작성 원본과 생성 결과를 분리했다. 다음은 실제 표면을 확인한 보행 메시 보정과 실제 역사 자료 한 구역 제작이다. LOD 선명도 변화, 모바일 메모리 예산과 사람의 제작·검수 작업량도 확인해야 한다. 큰 장소에서 전체 저해상도 상주 비용을 검토해야 하며 현재 결과로 엔진을 확정하지 않는다.

## 근거 문서

- [보행 메시 조사와 작성·검수 절차](WALKMESH-AUTHORING.md)
- [Sunnyvale 시대·설명 결합과 충돌 재사용](SUNNYVALE-ERA-INTEGRATION.md)
- [실제 화면·충돌 분할](PAIRED-SPATIAL-STREAMING.md)
- [모바일 비교](MOBILE-COMPARISON.md)
- [iPhone 분할과 시대 전환](MOBILE-STREAMING-ERA.md)
- [초기 로딩·전환·메모리](LOADING-MEMORY-COMPARISON.md)
- [실행 안정성](STABILITY-COMPARISON.md)
- [시대 전환 결정](../spike/adr/ADR-005-era-switch.md)
