본문 바로가기

프로그래밍

게임 개발시 최적화 관련 토막글

보통 게임을 만들때, 특히 출시까지 고려하게 되면 최적화는 피할 수 없는 문제가 된다.

그런데 내가 처음 게임을 만들때는 이런 기준이 전혀 잡히지 않아서 난감하고 막막했었다.

하지만 물론 게임마다 다르겠지만, 대략적으로 기준을 잡는 방법이 있다

아마 듣고 나면 당연해서 왜 생각 못했지 싶을 것 같다.

아무튼 상당히 명료한 기준이다.

 

바로 fps를 기준으로 잡으면 된다.

뭔소리고 하니, 일반적인 게임은 60fps 혹은 120fps정도로 맞춘다.

물론 그 이상의 프레임을 원하는 유저들도 있지만, 보통은 저정도 프레임률이 나오면 보통은 만족한다.

 

안드로이드는 60fps, pc는 120fps를 기준으로 잡으면 된다.

fps는 초당 프레임률이기 때문에, fps를 역수 취해주면 프레임당 초가 나온다.

1/120= 0.00833..., 따라서 8ms 이내로 하나의 프레임을 처리 할 수 있으면 된다.

60fps로 잡으면 그 두배인 16ms면 이내로 처리하면 될 것이다.

 

여기부터는 유니티 기준 얘기다.

 

프레임단위 처리에 소요시간을 기준으로 판단해야한다는 것을 알았다.

이를 확인하는 방법은 여러가지가 있겠으나,

가장 편리한 방법은 유니티 프로파일러를 이용하는 것이다.

 

이렇게 창을 열어놓고, 씬을 플레이해보자

 

왼쪽에 Others를 눌러서 비활성화했는데,

보통은 유니티 에디터가 잡아먹는 시간(Editor Loop)을 포함하는데,

이것이 무식하게 크기 때문에 꺼두었다.

물론 Others에 에디터루프만 포함되는 것은 아니다.

그래도 간단하게 성능을 확인해보는덴 큰 문제가 없다.

 

사실 좀더 옳은 방법은 직접 Development build와 Autoconnect profiler옵션을 키고 빌드를 해두고,

이를 이용해서 판단하는게 좀더 적절하다.

크게 어렵지 않으니 이부분은 설명을 생략하겠다.

 

추가로, 아래와 같이 특정 지점을 찍으면 어느 부분에서 리소스를 잡아먹는지 좀더 구체적으로 확인할수 있다.

자기 프로그램에서 좀 많이잡아먹는다 싶은 부분을 확인하고 그 부분을 가볍게 만들면 될 것이다.

그래서 PC겜 기준으론 120fps 이하로 보낼수 있으면 문제 없다고 대충 진단할 수 있다.

 

물론 컴퓨터마다 성능차이는 확연하기 때문에, 여러 하드웨어에서 돌려봐야 한다지만,

이걸 아는 것 만으로도 최적화에 대한 막연함은 많이 줄어들 것이다.