Object Pooling 트러블 슈팅
문제 상황
오브젝트 풀링 시스템 적용 과정에서 액터 재사용 시 Overlap Event가 정상적으로 발생하지 않는 문제가 발생하였다.
기존 방식은 비활성화 시 Collision을 제거하고, 재사용 시 다시 활성화하는 구조였다.
- Collision 비활성화 → 풀 반환
- Collision 활성화 → 재배치 및 재사용
그러나 Collision을 다시 활성화한 이후에도 Overlap 이벤트가 간헐적으로 동작하지 않는 현상이 발생하였다.
테스트 결과 약 40% 수준에서 이벤트 누락이 확인되었다.
원인
Collision 상태를 반복적으로 On/Off 하는 과정에서 내부 Collision 상태와 Overlap 판정 타이밍이 일치하지 않아
이벤트가 정상 등록되지 않는 문제가 발생한 것으로 판단하였다.
특히 다음 상황에서 문제가 빈번하게 발생하였다.
- Collision 재활성화 직후
- Generate Overlap Events 재설정 시점
- 액터 재배치 직후 물리 상태 갱신 이전
해결 시도
문제 해결을 위해 다음과 같은 방법을 적용하였다.
- Collision Channel 재설정
- Component 상태 초기화
- Generate Overlap Events 재활성화
- Collision Enable 순서 변경
- Tick 이후 지연 활성화 처리
하지만 상황에 따라 Overlap 이벤트 누락 현상이 지속적으로 발생하였다.
개선 방법
Collision 상태를 변경하지 않고 유지하는 방식으로 구조를 수정하였다.
변경 전
- 비활성화 시 Collision OFF
- 재사용 시 Collision ON
변경 후
- Collision 상태 유지
- 비활성화 시 맵 외부의 먼 좌표로 이동
- 재사용 시 목표 위치로 재배치
적용 결과
- Overlap Event 누락 현상 제거
- Collision 상태 관리 로직 단순화
- 오브젝트 재사용 안정성 향상
- 풀링 시스템의 일관된 동작 확보
기술적 인사이트
언리얼 엔진 환경에서 Collision 상태를 빈번하게 변경하는 방식보다,
Collision을 유지한 채 위치만 제어하는 방식이 이벤트 안정성과 시스템 신뢰성 측면에서 더욱 효과적임을 확인하였다.
https://zzageuli.tistory.com/123
[TIL] 2026-04-13 | [멀티플레이 게임] 오브젝트 풀링
Unreal Engine 멀티플레이어 게임 개발 팀프로젝트https://www.youtube.com/watch?v=f797l7YTcgc&t=896s 해당 강의의 BP구현을 C++로 옮기고, 버그를 해결하기 위해 로직을 수정했다. Pooled 엑터, Pooled 컴포넌트, 실제
zzageuli.tistory.com
'팀프로젝트 > DooDoong' 카테고리의 다른 글
| [멀티플레이 게임] 'DooDoong' 프로젝트 회고 (2) | 2026.04.27 |
|---|---|
| [멀티플레이 게임] 아이템 (0) | 2026.04.27 |
| [TIL] 2026-04-15 | 레벨 시퀀서 재생, 어빌리티 몽타주 재생 (0) | 2026.04.15 |
| [TIL] 2026-04-14 | 레벨 타일 배치, 인트로 시퀀서, 캐릭터 타일 위치 백업 및 복귀, 데미지 타일, 로비 맵 (0) | 2026.04.14 |
| [TIL] 2026-04-13 | [멀티플레이 게임] 오브젝트 풀링 (0) | 2026.04.13 |