Entity Forge 0.3.0 자동 렌더링 경로와 대량 생명주기 보강
개발 기록 · 블로그 공개
원본 기록 상태 검증 대기
자동 프록시의 불필요한 동작 처리와 프레임별 데이터 배열 복사를 분리하고 생성·해제·진단 경로를 추가했습니다.

작업 결과
첫 추가 개발 묶음을 0.3.0-preview에 반영했습니다. 자동 프록시는 ForgeMotion 없이 렌더 쿼리에만 참여하며, 동작 쿼리가 비어 있으면 동작 Job/명령 버퍼를 실행하지 않습니다. 렌더 데이터는 지속 버퍼에 모으고 프리팹 엔티티를 일괄 생성·제거합니다. 실제 성능 개선율과 네이티브 실행은 미확인입니다.
적용 내용
- 자동 렌더링과 ECS 동작 분리: 프록시 전용 아키타입과 별도 동작 쿼리. 비어 있는 백엔드는 조기 반환합니다. 기존 GameObject 스크립트·물리 동작은 유지합니다.
- 렌더 데이터 준비: 매 Tick의 ToComponentDataArray 두 개를 제거하고 지속 NativeList와 Burst 속성을 가진 청크 행렬 수집 작업으로 변경했습니다. 버퍼는 최대 수요에 맞춰 커지고 Dispose에서 해제합니다.
- 생성·해제: 아키타입별 일괄 생성, 일괄 삭제, Entity 조회와 밀집 swap-remove 저장소로 프리팹 자신의 항목을 직접 제거합니다. 삭제된 소스는 정리하고 원래 렌더러를 복원합니다. 재등록·중복 Dispose와 실패 경로도 보강했습니다.
- 중복 처리 억제/폴백: 정지한 소스의 변환값 쓰기를 생략하고 같은 머티리얼 복사를 Tick당 한 번으로 제한합니다. Transform.hasChanged는 변경하지 않습니다. 인스턴싱 불가 시 자동 대상은 원래 렌더러로, 명시적 엔티티는 개별 DrawMesh로 폴백합니다.
- 진단 추가: EntityForge.SyncSources / Simulation / RenderGather / Draw Profiler 구간, ForgeBatch.RuntimeStats의 마지막 Tick 처리 카운터, 선택 측정 JSON의 backendStatsAtCapture를 추가했습니다. 카운터는 성능 개선율이 아닙니다.
- 버전/문서/패키지: 9개 언어 가이드와 개발 아키텍처에 새 경로와 검증 경계를 반영했습니다. 패키지 생성기는 Version.json을 읽고 0.3.0을 별도 고정하며 이전 0.2.0 산출물을 보존합니다.
검증
검증 요약 · 실제 등록 저장소 테스트 · 컴파일 소스 해시.
- 7개 어셈블리 C# 컴파일과 현재 소스 해시 대조 통과. 본체 asmdef는 샘플 어셈블리를 참조하지 않습니다. NET에서 실행: 1만 개 추가, 임의 순서 제거, 재등록, 중복 제거, 100회 초기화/재사용 통과. 워밍업 후 10만 회 추가/제거에서 해당 저장소 단독 관리 메모리 할당은 0바이트였습니다. 전체 백엔드/엔진 무할당을 뜻하지 않습니다. txt)하고 검사기를 수정해 재검증했습니다. 제품 소스를 이 실패에 맞춰 변경하지 않았습니다. - 9개 가이드와 126개 링크 통과. 0 패키지 402개 에셋 원본/해시 대조 및 이전 산출물 해시 보존 통과.