주로 무기/탄환/색칠 담당자였으므로 제가 한 부분부터 최적화를 시작했습니다.
1. 유도탄
1발에서 4발씩 발사하게 하는 매커니즘 변경으로 인한 최적화 필요
(1) 기존
1) 동기화를 위한 포톤뷰 컴포넌트로 인한 네트워크 부하 증가
2) 생성/파괴를 통한 GC 발생
(2) 변경
1) 탄환을 발사할 때만 그 정보를 RPC로 전달 >> 더 가볍게 하려면 RaiseEvent로 변경해보기
각각 로컬 클라이언트에서 유도탄을 생성하고 움직임을 제어하도록 변경 >> 네트워크 부하 완화
2) 오브젝트 풀링
탄환 생성 통신을 받으면 정보에 맞게
각각 로컬클라이언트에서 탄환을 생성하고
사용이 끝난 탄은 비활성화 상태로 로컬 오브젝트 풀에 넣고
다음 탄환 생성 호출 시 풀에 남은 오브젝트가 있다면 이를 다시 쓰게끔 하는 방식을 통해
생성/파괴에서 발생하는 GC 절감


2. 드릴 무기 통신 최적화
드릴 무기 스크립트가 FixedUpdate() 주기로 RPC를 계속하고 있었음
>> 필요할 때만 1번씩 통신하게 하여 통신 최적화
3. GetComponent<>() 남용 완화
총알 발사 시, 동일한 컴포넌트를 3번이나 찾는 곳이 있었음
각각 다른 스크립트에서 다른 작업자들이 작업한 내용
GetComponent<>()도 성능을 꽤 먹는 메서드 중 하나라 런타임 중 남발하면 안됨에도 총알 발사 같이 슈팅 게임에서 매우 자주 일어나는 매커니즘마다 여러 번 쓰이고 있었음
한번은 컴포넌트를 가져오는 과정이 필요했기에 한번만 찾고 여기서 필요한 매커니즘들을 수행하게끔 통합
4. 이펙트 (파티클 이펙트)
(1) 탄환 발사/타격 이펙트의 Light, Glow, Glow Impact 제거
해당 오브젝트들을 에셋 스토어에서 구매 시 들어있어서 관성적으로 썼었는데 모바일 포팅까지 목표로 두고 있어 사소한 것도 넘길 수가 없었음
그림자, 빛 번짐 효과는 Inkoid 게임 그래픽에서 크게 중요한 것이 아니었기에 해당 컴포넌트들 비활성화 후 관찰 >> 기존과 큰 차이 없음 >> 해당 오브젝트들 삭제 >> 성능 부하 크게 완화
(2) 파티클 수 줄이기
물방울 튀는 이펙트들 중 수량이 많이 튀는 것이 있어 이룰 줄임
RPG의 경우 넓은 범위를 커버하는 느낌이 들어야 하기에 파티클 크기를 키우고 수를 줄여 최적화
(3) 파티클 라이프타임 줄이기
현재 매우 긴 라이프 타임. 눈에 보이는 것보다 더 길게 라이프가 유지됨 (2.5초 -> 1초)
'Unity 3D > Inkoid' 카테고리의 다른 글
| Inkoid 튜토리얼 제작 (0) | 2026.01.11 |
|---|---|
| 게임 최적화 공부 정리 (0) | 2025.11.30 |
| 지스타 2025 출품 이후 Inkoid 무기 개편 (0) | 2025.11.25 |