ㅎㅇㅎㅇ 공 로봇을 굴려서 도시 파괴하는 아이들러 게임을 만들고 있어
(이전 개발일지 영상)
저번 시간에는 다양한 등급의 건물을 만들고 높이에 따라 배치하는 것과, 로봇 주변에 충격파를 생성하는 기능을 구현했었음.
이번주에는 크게 세 가지 개발 사항이 있는데
1. 파괴하면 폭발하면서 주변에 스플래시 데미지를 주는 폭탄 건물 추가
2. 플레이어 스킬 및 폭발이 발생할 때 범위를 확인할 수 있는 이펙트 추가
3. 최적화
우선 아래 영상처럼 건드리면 파괴되는 폭탄 건물을 추가했음.
눈에 잘 띄도록 붉은색 - 검은색 줄무늬 색상을 선택했는데, 동적으로 생성된 mesh이다 보니
UV맵 데이터가 없어서 보통의 셰이더그래프로는 머테리얼을 입힐 수가 없었음.
결국 시행착오 끝에, UV맵 없이 각 면에 이미지를 project 하는 방법으로 해결.
폭탄 건물의 폭발 데미지와 반경 역시 자원을 모아 업그레이드할 수 있음.
또한 폭탄이 폭발할 때와, 로봇이 점프했다 착지하면서 충격파를 발생시킬 때 그 범위를 정확히 알 수 있도록 주변에 원 형태의 이펙트가 생성됨.
마지막으로 눈에는 안 띄지만, 가장 많은 시간을 할애한 부분은 최적화였음. 위 영상에서 좌측 하단에 프레임이 뜨는데,
최적화 이전에는 80fps 정도로 유지되고 파티클 개수가 늘어나는 타이밍에는 60fps 밑으로 떨어지는 것을 볼 수 있음.
이 게임은 중반만 넘어가도 건물이 최소 1만개 이상 동적으로 생성되고, 매 초 수백개의 충돌처리와
그만큼의 파티클 이펙트를 실행해야 하는 게임이기 때문에 최적화가 무엇보다 중요함.
문제는, 최적화의 가장 중요한 포인트는 결국 인스턴싱을 통해 batch를 줄이는 것일 텐데...
이 게임의 건물들은 하나 하나 전부 다르게 생긴 모양으로 동적으로 생성됐기 때문에 인스턴싱이 불가능하다는 것...!
결국 최소 수천개의 batches를 항시 안고가야 한다는 뜻이다.
그래서 고육지책으로 그거 이외의 다른 모든 부분을 최대한 최적화시켰음.
합칠수 있는 mesh는 전부 합치고, 파티클도 최대한 단순화시키고, 콜라이더 모양까지 전부 구체로 바꾸는 등...
그렇게 주말 내내 최적화한 끝에 최종 빌드 결과는...!
좌측 하단의 숫자를 잘 보면 148.8 프레임으로 같은 환경에서 두배 이상 상승한 것을 볼 수 있음.
그마저도 거의 가장 낮은 시점에서 스크린샷이 찍혀서 그렇고 대부분의 경우 200fps 까지 방어됨.
최적화 성공!
이제 전체적인 기능은 대강 완성됐고, 슬슬 업그레이드 스킬트리 만지면서 밸런싱하는 작업이 남았다.
곧 다음 일지로 돌아올게
빌런 게임이네ㅋ 파괴된 건물수 + 사망자 수 라니
음.. 큐브랑 삼각 기둥을 조합하는 식으로 구성하면 배치를 크게 줄일 수 있을 것 같은데
뿌수는거 좋아하는사람은 렘페이지할거고 굴리는거 좋아하는사람은 귀혼을할것같음
공을 거인녀로 바꾸세요
https://store.steampowered.com/app/1536790
아이들러면 공이 자율주행하나?