본 개발 전 핵심 기능 검증
2026-10-02 합의: 반복적인 일반 성능 비교를 줄이고, 아래 순서로 실제 개발을 막을 수 있는 문제와 기능을 확인한다. 기존 측정은 보존하며 엔진 선택을 아직 확정하지 않는다.
1. 모바일 대형 장면 로딩
현재 iPhone 11에서 Three.js/Spark의 Sunnyvale 원본은 다운로드 후 해독 완료가 관찰되지 않았다. 메모리 부족은 아직 확정 원인이 아니다. PlayCanvas의 원본 로딩 성공 기록은 있다.
대조 시험에서 동일한 400만 점의 SH 제거본은 47.320초에 준비됐고, 90만 점 축소본도 준비됐다. 원본의 SH 처리·할당 부담과 연관될 가능성이 있으나 정확한 원인은 미확정이다. 상세 근거와 제한. 이 위험을 기록하고 2번 검증으로 진행한다.
- 원본 400만 점·SH 3단계, 동일 점의 SH 제거본, 90만 점·SH 제거본을 순차 비교한다.
- 원본과 SH 제거본의 기본 WebP 데이터가 동일함을 확인한다. 점 수 축소본은 다시 인코딩했으므로 점 수만 달라진 완벽한 대조군으로 취급하지 않는다.
- 다운로드 완료, worker 해독 결과, 앱 준비, 페이지 재시작과 오류를 따로 기록한다. 진단 릴레이와 계측 비용이 포함된 시간은 성능 순위에 사용하지 않는다.
- 통과 조건: 지원 대상으로 정한 자산이 실기기에서 준비되고 조작 가능하며, 실패 시 오류와 재시도로 복구된다. 한 번 성공한 크기를 모든 장면의 안전 한도로 일반화하지 않는다.
2. 현재·과거 전환
시대별 벽 시험 장면을 추가했다. BVH·Rapier·Ammo 모두 사라진 벽 통과, 새 벽 정지, 겹침 시 안전 이동, 전환 중 입력 차단, 대상 로딩 실패 후 복구·재시도를 통과했다. 결과와 제한. 합성 장면의 공통 바닥에서 확인한 결과이며 실제 역사 복원이나 시대별 바닥 교체까지 검증한 것은 아니다. 3번 공간 분할로 진행한다.
- 시각 자산과 해당 시대의 충돌·핫스팟을 함께 교체한다.
- 카메라와 발 위치를 보존한다. 새 건물 안에 위치가 겹치면 명시적인 안전 위치 정책을 적용한다.
- 전환 중 입력과 중복 요청을 막고, 대상 로딩 실패 때 이전 상태로 복구한다.
- 통과 조건: 사라진 벽이 이동을 막지 않고 새 벽은 통과하지 못하며, 해당 시대 정보와 화면이 일치한다.
3. 공간 분할과 필요한 자산 로딩
900,000점 마스터를 실제 좌표의 다섯 SOG로 분할했다. BVH·Rapier·Ammo에서 선택 로딩·해제·왕복을 확인했고 BVH·Ammo에서 지연·실패·늦은 결과 폐기까지 확인했다. 기초 결과의 최초 SOG 파일 크기 65.4% 절감은 원거리 생략 상태의 값이다. 2026-10-03에는 먼 구역을 저해상도로 유지하고 가까운 정밀 자산과 교체하는 기능을 추가했다. 저해상도 포함 최초 파일 크기는 기존보다 약 54.2% 작다. BVH·Ammo에서 지연·실패·재시도 중 구역 표현 유지와 왕복을 확인했지만 교체 순간 선명도 변화는 남는다. 결과와 제한. 이 Hall 시험은 공통 작은 충돌 메시를 유지한다. 후속 Sunnyvale 시험에서는 90만 점 SH0 축소본과 공식 충돌 메시를 여섯 구역으로 함께 분할했다. 세 구성 모두 데스크톱의 왕복·충돌 지연·실패·재시도와 iPhone의 왕복·시작점 복귀를 통과했다. 원본 충돌면 유지도 독립 검사했다. 화면·충돌 분할 결과. 큰 SH3 원본의 모바일 해독 문제와 실제 메모리 검증은 남아 있다.
- 분할 경계, 좌표, 시대, 자산 크기·해시를 공통 데이터로 관리한다. 두 엔진에 동일 분할본과 경로를 사용한다.
- 가까운 구역과 다음 구역을 제한된 예산으로 로드한다. 해제 거리는 로드 거리보다 넓혀 경계 왕복 때 반복 요청을 줄인다.
- 요청 중 구역 이탈, 실패·재시도, 늦게 도착한 결과의 정리, 동시에 허용할 다운로드·해독 수를 검증한다.
- 바닥과 벽의 충돌은 필요한 구역이 준비된 뒤 이동을 허용한다. 로딩 중 바닥을 해제해 추락시키지 않는다.
- 원본 대비 최초 전송량, 최대 상주 점 수·자산 수, 반복 경로의 재요청과 자원 해제, 구역 경계의 누락·겹침을 기록한다.
- 통과 조건: 처음부터 원본 전체를 요청하지 않으며, 이동에 맞춰 실제 로드·해제가 발생하고, 경계에서 장면과 충돌이 끊기지 않는다. GPU 메모리 해제를 직접 측정하지 않았다면 총 메모리 절감으로 표현하지 않는다.
- 기본 구역 로딩과 엔진별 LOD·스트리밍 기능은 별도 시험으로 기록한다. 품질·상주 예산을 맞추지 않은 결과로 우열을 판정하지 않는다.
4. 장소 정보와 콘텐츠
BVH·Rapier·Ammo에서 구역 소유권, 가림·거리·시대 조건, 패널 중 이동 차단·닫은 뒤 이동 복귀, 장면·시대 변경의 패널 정리, 이미지 실패 후 설명 유지·복구를 확인했다. 결과와 범위. 실제 역사 콘텐츠 검수와 모바일 터치 사용성은 별도 과제다.
- 핫스팟 가림·거리·시대 조건, 패널 중 이동 차단, 닫기 후 입력 복귀를 확인한다.
- 사진으로 관찰한 현재와 근거가 있는 복원·추정·시험용 표현을 구분한다.
- 구역 해제 후 패널·핫스팟이 오래된 객체를 참조하지 않는지 확인한다.
5. 제작·변경 비용
실제 자산·구역·과거 건물·콘텐츠 변경 경로와 공통 데이터/엔진 결합 범위를 제작·변경 작업에 정리했다. Sunnyvale 화면·충돌 분할 생성기 실행은 80.325초로 기록했다. 사람의 제작·검수 시간과 호스팅 비용 견적은 아직 측정하지 않았다. Hall·Sunnyvale 전용 생성기와 수동 충돌 제작을 범용 제작 파이프라인으로 간주하지 않는다.
- 자산 한 개 교체, 구역 추가, 과거 건물·충돌·핫스팟 추가에 필요한 작업과 도구를 기록한다.
- 런타임, 변환 도구, 에디터·호스팅 의존성과 데이터 이식 범위를 구분한다.
- 최종 선택은 기능별 통과 여부, 실기기 한계와 변경 작업량을 함께 보고 결정한다.
다음 핵심 확인
공간 분할과 시대 교체의 결합은 BVH·Rapier·Ammo에서 구역 이동·반복 전환·충돌·설명 교체와 지연·실패 복구를 통과했다. PlayCanvas의 GSplat 해제 순서 오류도 수정했다. 결과와 제한.
iPhone 11에서도 세 구성의 분할 준비·구역 왕복·시대 교체·벽 충돌·설명·합성 터치 회전을 통과했다. 실기기 결과와 제한. 물리적 손가락 사용성·모바일 메모리·장시간 유지는 남아 있다.
Sunnyvale의 실제 시각·충돌 분할도 세 구성의 데스크톱·iPhone에서 확인했다. 결과·교체 비용·제한. 이어 현재 촬영 배경에 시대별 가상 벽·설명을 결합하고 세 구성의 데스크톱에서 안전 이동·실패 복구까지 확인했다. Three.js는 구역 충돌을 재사용해 추가·제거 비용을 줄였다. 결합·재사용 결과. 실제 과거 자료 제작과 이번 변경의 iPhone 검증은 남아 있다.
보행 메시 조사와 작성·검수 절차를 추가했다. 계단·정지는 확인했고 벤치 뒤 복귀는 세 구성 모두 실패한다. 작성 원본과 생성 결과를 분리했다. 다음은 실제 표면을 확인한 보행 메시 보정과 실제 역사 자료 한 구역 제작이다. LOD 선명도 변화, 모바일 메모리 예산과 사람의 제작·검수 작업량도 확인해야 한다. 큰 장소에서 전체 저해상도 상주 비용을 검토해야 하며 현재 결과로 엔진을 확정하지 않는다.