게임제작/강좌

[게임메이커 스튜디오]디버그 모드를 활용하여 메모리 누수를 해결하자!

게임코드프리 2018. 11. 11. 04:00
반응형

#메모리 누수 #디버그 모드 #게임메이커 스튜디오2


게임메이커 스튜디오의 디버그 모드!


(배열도 확인 가능)


게임메이커 스튜디오2로 오면서 개인적으로는 가장 좋다고 느끼는 부분이 바로 디버그 모드인데,

F6번을 눌러 실행시 다양한 게임제작시 체크 상황을 알수 있습니다.


  • 메모리 체크상태 확인하기



게임 실행창 뒤로 보이는 메모리 현황이 나오는데 현 상태의 FPS라던가 어떤 상태에서 메모리가 크게 상승하는지

체크가 가능하기에 메모리 누수를 의심할만한 부분을 찾는데 도움이 됩니다.

대부분의 메모리 누수의 경우,


  1. 그래픽 리소스의 과도한 드로우

  2. 인스턴스를 무한정으로 생성할때

  3. 자료형 구조를 만든 후 생성과 파괴가 제대로 이루어지지 않을때

  4. 음악 리소스등 리소스의 크기가 큰 자료들을 생성할때

  5. 서페이스 같은 표면 구현장치의 생성 파괴를 제대로 구현하지 않을때

이런경우 메모리가 급상승하게 됩니다.


따로 어디에서 상승하는지에 대해서는 에러가 아닌 이상에는 자동으로 찾아주지 않으며

위와 같이 메모리 상승하는 타이밍과 인스턴스의 갯수를 체크.

혹은 반복적으로 드로우를 해주고 있는것은 아닌지를 하나하나 확인해가며 누수의 원인을 찾아야합니다.


  • 게임의 회전률을 체크해라



디버그 모드에서 Others라는 탭에서 프로파일링을 시작하게 되면

어떤 변수나 어떤 오브젝트에서 얼만큼의 요청과 회전이 일어나고 있는지에 대해 체크가 가능합니다.

급작스럽게 콜 카운트가 늘어나고 있다던지 사라지지 않고 계속 Step률을 올리고 있는 부분에 대해서는 

자신이 의도한것이 아니라면 메모리 누수의 원인이 되므로 이 부분도 지켜봐야 합니다.



  • 변수도 하나의 바이트


변수를 아무렇게나 쓰다보면 비슷한 내용의 변수들이 프로젝트를 진행할수록 엄청나게 늘어나게 됩니다.

게임메이커에서는 변수 1개당 8바이트를 차지하며 이런것들이 쌓이면 무시하지 못할 메모리 사용량을 가지게 되므로

어차피 같은 값을 가지고 있는 변수라면 하나로 통일하여 쓰는 것이 좋습니다.


이렇게까지 했는데도 해결하지 못하는 메모리 누수문제들


PC상에서는 사실 많은 메모리를 사용하더라도 크게 티가 나지 않기때문에,

체크를 못하고 넘어가는 부분이 많으며 결국 게임이 다 완성이 되서 체크를 하게되면 어느부분에서

메모리가 새고 있는지에 대해 체크 할당량이 많아 찾기 힘들어집니다.

모바일로 게임을 개발하고 있다면 이런 메모리 누수나 최적화에 대해서 고민을 해봐야 하며

어느정도 게임의 스케일이 큰 경우라면 제대로된 솔루션이 필요합니다.


  1. 현재 게임의 화면에 꼭 필요한 리소스들만 사용하고 있는가?

  2. 불필요한 데이터들을 모두 메모리에 올려두고 사용하고 있진 않은가?

  3. 데이터의 생성과 삭제가 적당한 타이밍에 이루어지고 있는가?

  4. 큰 이미지나 데이터의 용량을 줄여서 사용하고 있는가?

  5. 스크립트를 과도하게 많이 사용하고 있지는 않은가?


이러한 계획들을 잘 지키며 게임을 만들더라도 게임이 점점 커질수록 메모리 사용량은 늘어날 수 밖에 없으며

최적화를 얼마나 잘하는가에 따라서 게임을 즐기는 유저의 수도 늘어날 확률이 높다는 것을 인식해야합니다.

참고로 스크립트는 반복적으로 사용하는 긴 코드를 줄여주는 훌륭하고 편리한 기능이지만 

게임이 커질수록 스크립트 호출과 활용이 늘어남에 따라 메모리의 효율도 점점 나빠지게 됩니다.


반응형
facebook twitter kakaoTalk kakaostory naver band shareLink
人気ブログランキングでフォロー