게임 개발 · 기술 동향미로의 개발노트
카테고리

Entity Forge

Entity Forge 0.3.2 자동 렌더링 병목 제거와 실제 플레이어 QA

개발 기록 · 블로그 공개

원본 기록 상태 완료

동일 10,000개 반복 부하의 실제 3쌍 비교에서 드론은 프레임 시간 2.68%, 경량 광석은 73.06% 감소했습니다. 개체·삼각형·화면을 유지했습니다.

드론 OFF: 10,000개 대상의 실제 플레이어 화면
드론 OFF: 10,000개 대상의 실제 플레이어 화면

작업 결과

자동 대상의 매 프레임 DOTS 프록시 동기화를 네이티브 Renderer 인스턴싱과 공유 재질 동기화로 교체했습니다. 명시적 Forge 이동·수명·스폰은 DOTS/Burst를 유지합니다. 성능 수정·실제 반복 측정·프리팹 수명 회귀·최종 패키지 설치/샘플 제거 컴파일을 통과했습니다. 제품 전체의 출시 QA와 판매 초안 저장은 별도입니다.

적용 내용

확인한 병목: 기존 자동 모드는 원래 Renderer를 남기면서도 10,000개 속성을 다시 조회했고, 구 프록시 진단에서 동기화가 평균 8.1414ms였습니다. 새 경로는 개체별 조회·프록시 엔티티를 만들지 않고 엔진의 컬링·변환·렌더러 변경 처리를 사용합니다. 같은 재질의 속성만 한 번씩 확인하며 새 드론 경로의 동기화는 평균 0.0026ms였습니다.

원본 에셋을 수정하지 않고 빌드/런타임 재질 복사본을 사용합니다. 재질 변경 전파, 사용자 교체 유지, 비활성·재활성·해제·원래 재질 복원을 검증했습니다. 프리팹도 같은 네이티브 경로를 공유합니다. 일반 MonoBehaviour 자동 번역 기능을 추가한 것은 아닙니다.

실제 측정 JSON에 드로우 콜·삼각형·메모리를 추가하고 엔티티/네이티브 렌더러 혼합 개체 수를 검증합니다. 다른 부하를 섞은 측정 및 누락된 네이티브 개체 수는 거부합니다. 9개 가이드를 현재 자동 경로와 GPU 부하 한계에 맞춰 수정했습니다.

검증

실제 프레임 시간 — 3회 평균, 낮을수록 좋음

부하 OFF ON 프레임 시간 감소
원본 드론 10,000개 14.9838ms 14.5818ms 2.68%
별도 경량 광석 10,000개 9.3457ms 2.5174ms 73.06%

Windows x64 / Unity 6000.0.83f1 / Entities 1.3.15 / Built-in / i5-12400F / GTX970 / 1280×720. 각 OFF/ON을 교차 순서로 3쌍, 매 실행 180 워밍업 후 포그라운드 600프레임을 수집했습니다. 최종 비교는 인접한 12회 실행만 사용하며, 장시간 도구 대기 전후의 초기 진단 실행은 평균에서 제외했습니다. 두 플레이어의 실제 Runtime DLL 해시도 동일합니다. 이 퍼센트는 FPS 증가율이 아닌 프레임 시간 감소율입니다.

드론 드로우 콜 10,002→24, 광석 101→24. 각 쌍의 삼각형 수는 23,480,004 / 1,000,004로 각각 동일합니다. 개체를 줄이거나 LOD·형상 단순화를 넣지 않았습니다. 광석은 별도의 부하 ID를 사용하며 그 결과를 드론 씬의 예측값으로 적용할 수 없습니다. 드론의 GPU 시간은 여전히 약 14.5ms이며, 별도 NVIDIA 진단 실행의 안정 구간 GPU 사용률은 98~99%였습니다. 이 진단용 추가 실행은 성능 평균에 포함하지 않았습니다.

txt).

개발 화면

드론 OFF: 10,000개 대상의 실제 플레이어 화면

드론 ON: 같은 개체와 형상을 유지한 실제 플레이어 화면

경량 광석 OFF: 별도 10,000개 부하

경량 광석 ON: 같은 부하에서 실제 프레임 시간 감소

출처

중앙 아카이브 원문

같은 카테고리의 글

개발 기록 아카이브 전체 보기 ↗