"한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다."
이번에 한빛미디어에서 출간한 '레트로의 유니티 성능 최적화'는 유니티로 게임을 오래 만들어 왔지만, 막상 규모가 커진 프로젝트에서 실제로 부딪히는 성능 문제 앞에서는 어디서부터 손을 대야 할지 막막했던 개발자에게 특히 큰 도움이 되는 책이라고 느꼈습니다. 저희가 만들고 있는 프로젝트는 방치형 모바일 RPG이면서 동시에 PC와 모바일 크로스 플랫폼으로 플레이할 수 있도록 개발 중인데, 이런 프로젝트일수록 최적화는 선택이 아니라 거의 설계의 일부에 가깝다는 점을 절실하게 느끼고 있습니다.
그동안 회사에서 유니티 엔진으로 게임 개발을 진행한 기간은 꽤 되었지만, 주로 하이퍼 모바일 게임류의 비교적 작은 프로젝트를 다뤄왔습니다. 그런 프로젝트에서는 일정 수준의 최적화만 해도 큰 문제가 드러나지 않는 경우가 많았습니다. 하지만 최근처럼 콘텐츠 양이 많고, 캐릭터·UI·이펙트·장비·성장 시스템이 복합적으로 얽히는 규모 있는 게임 프로젝트를 진행하게 되니, 예전과는 전혀 다른 종류의 문제를 마주하게 되었습니다. 예를 들어 게임 로딩이 이해되지 않을 정도로 느려지거나, 특정 구간에서 플레이 중 갑자기 앱이 종료되거나, 장시간 실행 후에야 드러나는 메모리 사용량 증가와 프레임 저하 같은 문제들이었습니다. 처음에는 원인을 알 수 없어 막연하게 “유니티라서 그런가?” 하고 넘기기 쉬웠지만, 이 책을 읽고 나서는 적어도 어떤 관점으로 원인을 좁혀가야 하는지가 보이기 시작했습니다.
이 책의 가장 큰 장점은 “최적화는 무조건 코드 몇 줄 고치면 끝나는 작업”이 아니라, CPU, GPU, 메모리, 로딩 구조, 리소스 관리, 렌더링 방식, UI 구성까지 전체 흐름을 이해해야 하는 문제라는 점을 실무적으로 설명해 준다는 데 있습니다. 유니티는 최적화에 따라 성능을 꽤 높은 수준까지 끌어낼 수 있다는 것을 알게 되었지만, 동시에 엔진 소스를 직접 볼 수 없기 때문에 내부 동작을 추측하며 접근해야 하는 부분도 많습니다. 그런 점에서 이 책은 단순한 팁 모음집이 아니라, 왜 느려지는지, 어디를 의심해야 하는지, 어떤 도구와 지표를 봐야 하는지를 알려주는 가이드 역할을 해줍니다. 원인을 정확히 모르던 문제들도 “이건 로딩 구조 문제일 수 있겠다”, “이건 GC나 객체 생성 패턴을 의심해야겠다”, “이건 드로우콜이나 오버드로우 쪽일 가능성이 높겠다”처럼 유추할 수 있게 된 점이 정말 유익했습니다.
실제로 떠오르는 사례도 있습니다. 첫 번째는 초기 로딩 지연 문제입니다. 프로젝트 규모가 커지면서 로비 진입이나 전투 시작 전 로딩이 비정상적으로 길어지는 일이 있었는데, 예전에는 단순히 데이터가 많아서 그런가 보다 하고 생각했습니다. 하지만 이 책을 읽고 나서는 한 번에 너무 많은 리소스를 불러오고 있지는 않은지, 꼭 지금 불러와야 할 것과 나중에 불러와도 되는 것이 섞여 있지는 않은지, 동기 로딩이 병목이 되고 있지는 않은지 같은 관점으로 보게 되었습니다. 그 결과 로딩 타이밍을 나누고, 선로드와 지연 로드를 구분해야 한다는 인식이 생겼고, 실제로 일부 구간은 구조를 다시 보며 개선 방향을 잡을 수 있었습니다.
두 번째는 플레이 중 튕김과 메모리 문제입니다. 모바일에서는 특히 텍스처, 이펙트, UI 리소스가 누적되면 어느 순간 앱이 버티지 못하고 종료되는 상황이 생기는데, PC에서는 상대적으로 늦게 드러나기 때문에 초기에 놓치기 쉽습니다. 이 책은 플랫폼별로 자원 관리 관점이 달라야 한다는 점을 잘 짚어주고 있어서, “PC에서 괜찮으니 모바일도 괜찮겠지”라는 위험한 생각을 버리게 해줍니다. 예를 들어 사용이 끝난 오브젝트와 리소스가 정말 해제되고 있는지, 재사용 가능한 객체를 불필요하게 계속 생성하고 있지는 않은지, 텍스처 크기와 압축 방식이 적절한지 등을 점검하는 습관을 갖게 되었습니다. 원인을 몰랐던 크래시 문제도 이 책 덕분에 메모리 관점에서 접근해 볼 수 있었고, 몇 가지는 실제로 해결까지 이어졌습니다.
세 번째는 방치형 RPG 특유의 UI와 이펙트 누적 문제입니다. 방치형 장르는 화면에 항상 여러 UI가 떠 있고, 성장 알림, 재화 획득, 버튼 강조, 캐릭터 스킬 이펙트 등 시각 요소가 끊임없이 쌓입니다. 여기에 모바일과 PC 크로스 플랫폼 대응까지 더해지면 단순히 “보이기 좋게” 만드는 것만으로는 부족하고, 어떤 요소가 프레임을 갉아먹는지를 함께 고민해야 합니다. 이 책은 이런 부분을 감으로 접근하지 않게 해주었습니다. 캔버스 분리, 불필요한 갱신 최소화, 배치와 드로우콜, 오버드로우, 프로파일러 기반 확인 같은 개념을 실무 흐름 안에서 이해할 수 있어서, 단순히 책을 읽고 끝나는 것이 아니라 바로 프로젝트에 대입해 보게 만든다는 점이 좋았습니다.
무엇보다 이 책은 “최적화는 고수들만 하는 어려운 영역”이라는 막연한 두려움을 줄여줍니다. 물론 유니티 최적화는 결코 쉬운 일이 아니고, 엔진 소스를 공개하고 있지 않기 때문에 답답한 순간도 많습니다. 그럼에도 불구하고 이 책은 보이지 않는 엔진 내부를 전부 알 수는 없어도, 최소한 증상을 통해 원인을 추적하는 방법을 알려줍니다. 그 덕분에 문제를 마주했을 때 막연히 불안해하기보다, 프로파일링하고 가설을 세우고 확인하는 식의 좀 더 개발다운 접근이 가능해졌습니다.
결론적으로 '레트로의 유니티 성능 최적화'는 유니티를 어느 정도 써 본 개발자, 특히 작은 프로젝트를 넘어 조금 더 큰 규모의 게임을 다루기 시작한 팀에게 매우 추천할 만한 책입니다. 저처럼 하이퍼 모바일 게임 중심의 경험에서 출발해, 이제는 방치형 모바일 RPG 같은 규모 있는 프로젝트를 PC와 모바일 크로스 플랫폼으로 개발하며 새로운 문제들을 마주하는 입장에서는 더더욱 공감되는 내용이 많았습니다. 단순히 성능을 “좋게 만드는 법”을 알려주는 책이 아니라, 왜 문제가 생기는지 이해하고, 원인을 유추하고, 실제 해결 방향을 잡게 해주는 책이라는 점에서 실무 가치가 높았습니다. 원인을 몰랐던 문제들을 추정할 수 있게 되었고, 실제로 몇 가지는 해결까지 이어졌다는 점에서, 이 책은 저희 프로젝트에 분명히 도움이 된 실용적인 개발서였습니다.
#한빛미디어, #레트로의유니티성능최적화, #유니티최적화, #유니티성능최적화

댓글
댓글 쓰기