본문 바로가기
게임 프로그래밍/게임개발 중급

게임개발 중급(97) - Monster Killer(59)

by jyppro 2024. 9. 21.

Monster Killer

 

최적화

이번에는 저번에 말씀드린대로 최적화를 진행해 보겠습니다. 최적화를 하는 방법은 너무나도 방대해서 한가지만 한다고 끝나는 것이 절대 아닙니다. 저도 여러차례를 거쳐 최적화를 진행할 예정이니 감안하고 봐주시길 바랍니다.

 

텍스쳐 최적화

일단 유니티에서 가볍고 빠르게 최적화를 진행할 수 있는 방법 중에 가장 유용한 것은 텍스쳐 최적화입니다.

빌드로그

 

가장 먼저 게임을 만들고 빌드를 하게 되면, 위 이미지에서 Open Editor Log를 클릭하여 메모장으로 빌드 로그를 확인할 수 있습니다. 이걸 확인하는 이유는 빌드 리포트를 통해 용량을 얼마나 차지하는지를 확인할 수 있기 때문입니다.

 

리포트

 

Build Report를 찾으면 아래에 각각의 항목이 얼마나 차지하는지 볼 수 있습니다. 저는 이미 1차 최적화를 진행한 상태에서 위 창을 열어보았습니다. 역시나 대부분은 텍스쳐가 차지하는 모습을 볼 수 있습니다.

 

이제 텍스쳐를 최적화 할텐데 그 방법은 크게 두가지로 나뉩니다. 첫번째는 텍스쳐의 해상도를 낮추는 것입니다.

빌드옵션

 

이건 빌드 세팅창인데, 아래에 보시면 Max Texture Size가 있습니다. 여기서 1024로 맞추면 간편하게 설정할 수 있지만, 저는 개인적으로 더 정확하고 세밀하게 최적화를 하려면 모든 텍스쳐를 직접 설정하는 것이 더 좋다고 생각합니다.

텍스처1

 

텍스처 하나를 선택하여 옵션을 살펴보면 텍스처 사이즈 설정을 개별적으로 할 수 있습니다. 여기서 저는 1024로 설정해 주었습니다. 기존에 더 큰 텍스쳐 사이즈를 가지고 있었다면 용량이 확실하게 줄어드는 모습을 보실 수 있습니다.

 

이 텍스쳐는 기존에 2048사이즈에 1.4MB의 용량을 가지고 있었는데 1024를 설정해 주니 대폭 감소한 것을 볼 수 있습니다. 이어서 두번째 텍스쳐 최적화 방법은 위 이미지에 체크되어 있는 Crunch Compression를 사용하는 것입니다.

 

이 방법은 사실 WebGL로 웹 게임을 만드는 것이기 때문에 적용할 수 있는 것인데, WebGL 빌드 시, Texture Compression 세팅을 DXT로 설정하여 진행합니다. 이때 유용하게 사용하는 방법으로, 텍스쳐를 압축하고 해제하는 과정에서 CPU에서 해제한 뒤, 런타임에 GPU로 빠르게 업로드 하는 것입니다. 이것을 사용하면 텍스쳐가 디스크, 다운로드 공간을 적게 차지하도록 만들 수 있습니다.

 

WebGL 웹게임은 말 그대로 웹에 게임을 올리고 웹에서 플레이를 해야 하기 때문에 하드웨어의 영향을 최소화 하여야 합니다. 쉽게 말하면 성능이 좋지 않은 환경에서도 플레이 할 수 있어야 합니다. 그렇기 때문에 DXT 압축 포맷과 Crunch Compression을 적용하는 것이 WebGL 빌드에서 사용되는 것입니다.

 

결과

위 방법으로 두 세가지 정도의 최적화만 진행했는데 그 결과는 확실하게 나타납니다. 제가 최적화 이전에 빌드파일 사이즈를 캡쳐하지는 못했지만 그때 확인했을 때에는 320MB가 나왔었습니다. 사실 최적화를 진행하게 된 계기도 itch.io에 게임을 올려 테스트를 하려고 했지만, 200MB가 넘는 파일을 올릴 수 없었기 때문에 진행하게 되었습니다. 그래서 최적화를 하고 나서는 57MB까지 빌드파일의 용량을 감소시킬 수 있었습니다. 그 이후에 추가로 개발을 진행하며 다양한 보스를 세팅하게 되었고 추가적으로 다시 위 과정을 거쳐 최적화를 진행했습니다.

빌드파일

 

그 결과 현재는 95.4MB의 용량을 가지고 있는 빌드파일로 만들 수 있었습니다.

 

<NEXT>

이번에 한 것은 1차 최적화 입니다. 단순히 용량을 줄이기 위해 진행한 텍스쳐 최적화이고, 추후 지속적으로 최적화를 진행해야 합니다. 다음에는 현재까지 만들어진 프로토타입 게임의 간단한 시연을 통해 피드백을 받고 해당 피드백을 정리하여 어떤 기능을 추가로 개발하면 좋을지 찾아보는 시간을 갖도록 하겠습니다. 감사합니다.