루미아 섬의 생존자 여러분, 안녕하세요.


오늘의 개발 일지는 프레임 보고서 편입니다.


게임 업계에는 결코 최적화에 대해 장담하지 말라는 격언(?)이 있습니다. 전반적인 최적화 성능의 향상이 모든 사람에게 공평하게 적용되지는 않기 때문에 플레이어에 따라 체감 편차가 매우 크기 때문입니다. 또 전반적인 최적화가 좋아지더라도, 특정 조작 하나가 문제를 일으키는 경우는 언제든 튀어나올 수 있기 때문에 최적화는 끝없이 진행되어야 하는 과정입니다. 그래서 개발 일지에 최적화에 대한 이야기를 꺼내는 건 무척 조심스럽습니다.


하지만 최적화는 이터널 리턴 1.0을 준비하면서 내부적으로 가장 중요하게 생각했던 과제였습니다. 특히 스쿼드 모드는 가장 프레임 드랍(화면 처리 지연) 문제가 빈번하게 드러났었는데, 참여 인원도 24인으로 늘어나면서 최적화가 안 되면 게임이 성립하지도 못할 수 있다는 우려가 컸습니다.


그래서 눈에 보이지 않는 백 엔드(Back End)의 많은 부분을 재설계한다는 각오로 최적화 작업이 진행되었고, 작업량 기준으로는 개발 일지에 소개한 모든 내용 중 가장 큰 작업이었습니다.


진행된 주요 작업들을 간단히 소개해 드리고자 합니다.


먼저 루미아 섬에 라이트 맵(Light Map)이 적용되었습니다. 기존에는 광원을 실시간으로 계산하였는데, 라이트맵은 베이킹이라는 작업을 통해 광원 효과와 그림자를 사전에 계산한 라이팅(Lighting) 정보를 텍스쳐(사물 표면의 이미지 파일)로 변환합니다. 방대한 라이팅 정보가 텍스쳐에 저장되어 VRAM 사용량이 조금 늘어나지만, 실시간 라이팅에서는 표현하기 어려운 다채로운 광원 효과를 표현하면서 동시에 연산량은 크게 줄어듭니다.


그리드 맵(Grid Map)은 게임 내 좌표계를 루미아 섬에 배치된 실제 오브젝트로 사용하지 않고, 가상 평면의 좌표계로 변환하는 작업입니다. 모든 오브젝트를 직접 계산하지 않고 간소화 하기 때문에 이 작업 또한 물리 엔진의 연산량을 크게 줄일 수 있지만, 두 좌표계를 왔다 갔다 하는 과정에서 인지와 맞지 않는 부분이 발생할 수 있어서 여러 가지 디테일한 교정 작업이 필요합니다.


게임 리소스(모델, 텍스쳐, 애니메이션, 이펙트 등)에 주소를 부여해서 로딩 방식을 효율화하는 어드레서블 어셋은 목표 중 하나였지만, 이번 과정에는 아쉽게도 제외되었고 추후를 기약하고자 합니다.


체감적으로 가장 컸던 작업 중 하나는UI와 정보 관리의 최적화였습니다. 이터널 리턴은 실시간으로 많은 정보가 갱신되는 게임입니다. 멀리 있는 적의 정보는 많이 축약할 수 있는 1인칭 게임과는 달리 전체 참여자의 정보가 언제든 보여질 수 있고, UI로 표현되는 정보의 양 자체도 많아서 정보 관리가 많은 부하가 발생했었던 부분이었고 많은 누수를 잡아냈던 분야입니다.


게임에 사용되는 모든 리소스들의 재사용성 강화에도 주력했습니다. 플레이 인원의 증가뿐 아니라, 넓어진 맵에 맞춰 야생 동물과 오브젝트의 개체수도 증가했는데, 이를 최적화하기 위해 리소스들을 먼저 로드해 두고, 최대한 게임에 재사용하는 형태로 구현을 진행했습니다.


또한, 캐릭터 스킬도 부하가 큰 이펙트로 연산량과 메모리를 많이 사용하는 경우가 많아 이펙트 최적화에도 많은 노력이 투입되었습니다. 캐릭터 편에 일부 소개가 나갔던 부분도 있지만 그 외에도 많은 케이스들이 있었습니다.


개발 기간 끝 무렵에는, 게임의 기반 엔진인 유니티(Unity)의 최신 안정화 버전이 Unity 2022로 버전업 되어서 엔진 업데이트도 진행되었습니다. 기반 엔진의 업데이트는 장기적으로 저희 코드가 접근하기 어려운 문제들을 많이 개선해 줄 수 있지만, 단기적으로는 여러 가지 문제를 발생시킬 수 있어서 라이브 서비스 중에 진행하기는 쉽지 않습니다. 다만 이터널 리턴 1.0을 위해 라이브 업데이트를 축소해둔 상태여서 좀 더 과감히 적용할 수 있었습니다.


그 외에도 많은 개선 작업들이 진행되었고, 그에 따른 효과를 측정해 보고자 했습니다.


게임 플레이 중 가장 자주 불편함이 느껴지는 문제는 프레임 드랍이기 때문에 가장 중요한 목표는 프레임 방어였습니다.


그래픽 카드와 옵션 설정, 게임 내 상황이 다른 약 30가지 환경을 설정하고 앞서 해보기 버전과 정식 오픈 준비 버전을 모두 11차례에 걸쳐 프레임을 측정했습니다. 그 중, 가장 최근에 측정한 앞서 해보기 버전(0.87, 파란색 선)과 정식 오픈 버전(1.0.5, 빨간색 선)을 비교해 보았습니다. 프레임이 높을수록 움직임이 부드럽습니다.


<전투 상황 테스트 - 지포스 계열>



<전투 상황 테스트 - 고사양 노트북>



전투 6인 테스트는 6인이 계속해서 스킬을 사용해 전투하며 측정했습니다. 그 외에도 루미아 섬을 이동하면서 측정하는 비전투 테스트나, 극단적으로 18인이 계속 모여서 전투하는 스트레스 테스트도 진행되었습니다.


<비전투 상황 테스트- 라데온 계열>



30가지 환경 거의 대부분에서 프레임이 눈에 띄게 향상되었고, 빨간색으로 표현된 1.0.5 버전 이후에도 최적화가 더 진행되었기 때문에 정식 출시 버전은 위 그래프 보다 조금 더 향상되었습니다.


프레임 이외에도 CPU, GPU, 메모리 사용률의 변화도 측정되었습니다. 이 중 CPU와 GPU 사용률은 현상 유지가 목표였는데 조금 늘어나긴 했지만, 큰 변화는 없는 편이었습니다.




다만 메모리 사용률은 비교적 증가했습니다.



CPU와 GPU도 그렇지만, 특히 메모리 사용률은 프레임과 상충 관계(Trade-off)를 형성하는 부분이 있습니다. 더 많은 리소스를 메모리에 로드하면 프레임이 잘 유지되는 편입니다. 다만 CPU와 GPU 사용률의 상승은 크래시를 비롯한 또 다른 문제를 가져올 수 있기 때문에, 훨씬 더 신중하게 접근하는 편입니다.


메모리 사용률의 상승분은 RAM 용량이 8GB 이상일 때에는 큰 문제가 없지만, 4GB 환경에서 운영체제의 기본 사용량이 있기 때문에 사실상 실행이 어려워집니다. 이에 따라 더 좋은 플레이 환경을 위해 부득이 메모리 최소 사양을 8GB로 올리게 된 점 깊은 양해를 부탁드립니다.


게임 로딩 시간도 크게 단축되었습니다. PC를 켜고 게임을 처음 실행시킬 때 특히 로딩이 긴 문제가 있었는데, 환경에 따라 다르지만, 평균 2분 내외 소요되었던 PC에서 30초 내외로 빨라지는 등 특히 로딩이 길었던 환경에서 개선이 많이 되었습니다. 게임을 시작할 때 루미아 섬의 로딩 시간도 유의미하게 개선된 사례가 많았습니다.


전체적인 로딩 시간의 개선도 트레이드 오프가 있습니다. 패치마다 업데이트되는 용량이 기존보다 커지게 되었는데, 쉽게 설명하면 로딩할 덩어리들을 잘 묶으면 로딩이 빨라지게 되는 대신, 패치할 때마다 묶음 통째로 패치 해야 하는 개념에 가깝습니다.


여러 가지 수치들을 소개 드렸지만 그래서 결국 최적화의 체감이 어떠한가는 플레이어마다 다를 수 있습니다. 최적화의 딜레마는 늘 최적화 작업이 모든 분들에게 공평하지 않을 수 있고, 특히 테스트 되지 않은 환경에서는 예상치 못한 작동을 할 수 있다는 점입니다. 무척 조심스럽지만, 저희 팀원들의 플레이 피드백을 몇 가지만 소개드리고자 합니다.



♦ 게임 플레이 중 렉은 전혀 걸리지 않았습니다.


♦ 프레임 락을 풀고 플레이 해도 프레임 감소 타이밍이 딱히 없었습니다.


♦ 스팀으로 프레임 확인하면 100~140 정도 오갔습니다.


♦ 내부 테스트 하다가 랭크 마지막이라서 라이브 플레이 하니깐 최적화 역체감이 무척 심했습니다.



몇 개의 피드백이 결코 모든 환경을 대변할 수는 없고 사람 마다 체감이 다를 부분이지만, 기존 환경 보다 훨씬 좋아졌다는 피드백이 많아서 더 쾌적한 이터널 리턴을 조금 기대해 주시면 좋겠습니다.


이상으로 이터널 리턴 1.0의 개발 일지가 모두 끝났습니다.


이제 정식 오픈이 이틀 앞으로 다가왔습니다. 아무리 많은 준비를 해도 기다려 주신 플레이어분들을 떠올리면 한 없이 부족하다고 느껴지고 아쉬움이 큰 것 같습니다.


앞서 해보기 3년의 긴 여정을 마치고 1.0까지 올 수 있었던 건 함께 해주신 플레이어 분들 덕이 가장 큽니다. 남은 이틀, 그리고 오픈 이후에도 조금이라도 더 재미있는 게임을 선보일 수 있도록 끝까지 노력하겠습니다.


늘 함께 해주셔서 감사합니다.