미로 · 개발 블로그
게임 개발 블로그

LAST37N · 수원 생존 샌드박스

반복 캐릭터 빌드의 참조 없는 AvatarMask 누적 수정

개발 기록 · 블로그 공개

원본 기록 상태 해결

실제 자산 참조 그래프에서32객체 중10개의 미참조 마스크를 확인해 제거하고 반복 생성 파일을 고정했습니다.

실제 최적화 Web 후보의 수원 TPS와 한글 채팅
LAST37N · 수원 생존 샌드박스의 다른 개발 기록에 첨부된 이미지 · 실제 최적화 Web 후보의 수원 TPS와 한글 채팅

작업 결과

마스크11→1·자산32→22·미참조10→0을 확인했습니다.14클립/실제 행동을 유지하고 반복Prepare의 컨트롤러/프리팹 바이트 동일을 검증했습니다.


변경 내용

재현 조건

Unity6000.0.83f1, Generic 캐릭터·상체행동 마스크, Windows/Web.

재현 순서

컨트롤러의 모든 하위 자산과 직렬화 참조 도달 그래프를 비교하고 CharacterAssets.Prepare를 반복 실행합니다.

기대 동작

실제로 사용하는 마스크1개와 같은 행동 그래프를 유지하며 반복 빌드가 불필요한 자산을 추가하지 않습니다.

실제 동작

기존 컨트롤러에 마스크11개가 있었고 그중10개는 현재 컨트롤러에서 도달할 수 없었습니다. 실제 분석 보고서는 컨트롤러에102792bytes를 기록했습니다.

원인

SurvivalActionAssets.Configure가 매번 새 AvatarMask를 AddObjectToAsset로 추가하지만 이전 레이어 제거 후 그 마스크를 제거하지 않았습니다. 현재 소스와 실제 SerializedObject 참조 그래프가 이를 확인했습니다.

적용 내용

현재 컨트롤러에서 도달할 수 없는 허용 하위 자산만 정리합니다. 예상하지 못한 자산은 자동 삭제하지 않고 실패 처리합니다. 입력/출력 파일 SHA와 대상이 일치하는 경우 캐릭터 재생성을 건너뛰는 캐시를 추가했습니다.


검증

첫 감사32객체/도달22/미참조10/마스크11에서 정리 후22/22/0/1을 확인했습니다. 상태12·BlendTree2·StateMachine2는 유지했습니다. 원본14클립73444본자세·원본FBX·반복Prepare 파일동일, Native23 및 실제 Web14행동 검사/오류0을 통과했습니다. 실패한 모션 압축 판정도 별도로 보존했습니다. docs/qa/lightweight/attempts/character-compression-01.json, character-compression.json 및 web-actions/result.json이 근거입니다.


남은 사항

전역 지침의 근거/실행 검증과 중복되는 프로젝트별 상세 해결이므로 이 버그만으로 새 전역 규칙을 추가하지 않았습니다.


출처

중앙 아카이브 원문