읽기 쉬운 HUD·자연스러운 이동·넓어진 오후 광장과 로컬 AI 보충
개발 기록 · 블로그 공개
원본 기록 상태 완료
중앙 채팅·상태 팝업·가상 스크롤 목록·비모달 창·Enter 포커스·이동/추적을 개선했습니다.80×64m 광장과 하늘·태양, 클라이언트 최소5명 보충을 적용하고 최종 실제 웹을 검사했습니다.

작업 결과
씬/프리팹·자체 코드에 적용하고 최종 Unity Play93개와 실제 Chrome/Edge 웹 검사를 통과했습니다. 외부 원본은 보존합니다. 서버를 제어하거나 멀티플레이를 추가하지 않았습니다.
적용 내용
- 좌상단 닉네임·상태, 머리 위 이름표를 어두운 배경/밝은 글자로 바꾸었습니다. 상태는 작은 팝업이고 상세 창은 X로 닫습니다.
- 채팅은 하단 가운데600px,18px 글자와 반투명 어두운 기록 배경으로 바꿉니다. 상세 창을 열어도 다른 메뉴/월드 조작이 가능하며 실제 입력창 편집 중에는 이동을 막습니다. Enter 포커스는 UI Submit 다음 프레임에 적용합니다.
- 캐릭터16개·일반 동작117개를 스크롤 목록으로 제공합니다. 씬의10개 행을 재사용합니다. 착석/전환30개는 일반 목록에서 제외하고 원본 카탈로그·벤치 착석을 보존합니다.
- 클릭 경로6m 이상은 달리기, 도착2.8m 이내는 걷기입니다. 가속/감속과 거리별 추적 속도를 적용하고 카메라 강제 회전을 제거합니다. 수동 입력·입력창·대상 이탈 시 추적을 중단합니다.
- 광장48×38→80×64m(면적 약2.81배). 산책로·분수 테라스·서쪽 쉼터·화단·상점·나무18개·총 벤치12개·저장 NavMesh를 배치합니다. 자체 텍스처 없는 하늘/태양과 기존 태양 광원을 연결합니다.
- 실제 인원(본인 포함)5명 미만이면 각 클라이언트가 부족분만 로컬 AI로 채웁니다. 현재 멀티플레이 연결이 없으므로 기본은 본인1+AI4입니다.
SetHumanPopulation은 향후 인원 수신부에서 호출할 연결 지점이며 서버 생성/동기화는 없습니다. - 이름표·대화·방문자 목록의 AI 꼬리표와 반복 자기소개를 없애고 일상 문구·발화 간격을 적용합니다. 프로필에는 AI 캐릭터와 기기 내 준비된 응답임을 명시합니다.
추가 보완: 일반 실행의 초당 진단 JSON/프레임 배열 발행을 끄고 측정 시에만 활성화했습니다. 실제 웹에서 발견한 자동 이동 중 동작 선택 충돌은 자동 경로/추적을 반환한 뒤 동작을 재생하도록 수정했습니다.
검증
| 빌드/브라우저 | AI | FPS 중앙값 | 프레임 p95 ms | 최대 ms | 전경 CPU 1코어 % | 배경 CPU % |
|---|---|---|---|---|---|---|
| compare-before-0 | 0 | 30.01 | 34.0 | 34.0 | 10.20 | 2.497 |
| compare-before-6 | 6 | 30.01 | 34.0 | 133.0 | 13.87 | 0.599 |
| compare-before-12 | 12 | 30.01 | 34.0 | 118.0 | 14.70 | 0.448 |
| final-0 | 0 | 30.01 | 34.0 | 36.0 | 9.07 | 0.324 |
| final-6 | 6 | 30.01 | 34.0 | 100.0 | 12.77 | 1.340 |
| final-12-long | 12 | 30.01 | 34.0 | 142.0 | 14.61 | 0.014 |
| final-edge-6 | 6 | 30.01 | 34.0 | 83.0 | 10.64 | 0.344 |
개발 화면




