뉴스홈 > 뉴스센터 > 취재

[NDC14]"패치 전 던파는 통통배 위에 얹어진 항공모함이었다"

2014년05월29일 18시30분
게임포커스 신은서 기자 (ses@gamefocus.co.kr)

네오플의 하재승 프로그래머가 넥슨 개발자 컨퍼런스 2014(NDC14 ) 현장에서 지난 15일 진행한 인기 액션 RPG '던전앤파이터(이하 던파)'의 최적화 패치에 대한 강연을 진행했다.

지난 15일 던파가 진행한 최적화 패치란 게임의 로딩 속도 개선과 스킬 랙을 감소시키는 클라이언트 업데이트로 업데이트 전 네오플은 영상을 통해 약 세배 빨라진 로딩 속도와 저사양 PC에서 스킬 랙이 크게 줄어드는 모습을 공개해 유저들의 큰 호응을 얻기도 했다.

패치 전 던파의 상태와 최적화 패치 로드맵
하재승 프로그래머는 패치전 던파를 “8년 간의 라이브 개발을 통해 수많은 깨진 창문이 있는 상태”라며 유저들이 흔히 말한 통통배 위에 얹은 항공모함이라는 말에도 공감하는 모습을 보였다.

실제 패치 전 던파는 데이터 파일 수만해도 54만개였으며, 이미지 파일은 천 만개 이상(4.1GB)를 가진 꽤나 무거운 상태였다. 파일 수가 많은 만큼 로딩하는 시간도 길어졌으며, 게임 플레이 시 필요한 데이터를 계속 하드에서 읽어와야 했으므로 게임을 오래할수록 메모리의 부하가 극심했다

그는 이런 상황에서 유저들은 최대한 쾌적한 플레이를 위해 2D 게임임에도 불구하고 SSD가 사실상 필수라는 말을 자주한 것을 알고 있으며 메모리 사용량도 2GB가 쉽게 넘어가 생각보다 높은 사양의 PC가 필요했다고 설명했다.

이에 하재승 프로그래머는 최적화 패치의 목표를 정할 때 일반 HDD 사용 시에도 랙 최소화, 메모리 사용량 최적화, 크래쉬 문제 해결, 복잡한 코드 구조로 인한 문제 해결을 목표로 삼고 최적화 패치를 진행했다고 밝혔다.

최적화 패치에서 사용한 기술
Dumpable 라이브러리 기술도 도입하였으나 게임 적용 후 성능 향상이 미미하여 롤백 당한데다 C++에 대한 지식이 꽤나 많이 필요하므로 이 기사에서는 제외하고 2일 던파 공식 홈페이지를 통해 밝힌 최적화 패치에서 사용된 기술을 위주로 작성됐습니다.

데이터 분할 압축
제일 먼저 최적화를 위해 사용된 기술은 데이터 분할 압축으로 이미지와 사운드 등을 제외한 순수 데이터 파일만 해도 54만개(642Mb)에 XML과 유사한 태그가 존재하는 텍스트 파일 이름만 모아도 30Mb가 넘었던 기존의 던파는 이 파일들의 메모리 공간 점유율이 높고, XP SP2 이전 버전에서 실행 문제 발생, 하드디스크 읽기 제어 불가 등 다양한 문제를 일으켰다.

이에 하재승 프로그래머는 이 용량을 줄이기 위해 데이터를 압축했으나, 전체를 압축하면 게임 내에서 부분적으로 불러와야 할 때 문제가 생기므로 비슷한 종류의 파일을 모아서 압축하고 압축된 내용 전체를 메모리에 올리고 필요한 것만 사용할 수 있는 방법을 도입했다고 밝혔다. 특히 게임 패치 시 추가되는 파일을 대비 패치를 위해 필요한 부분만 패킹하는 증분 패킹을 통해 로딩 시간을 줄였다고 밝혔다.

이를 통해 게임 입장 후 메모리 사용량은 100Mb 감소했으며, 패치 용량 및 데이터 파일 읽는 시간이 대폭 감소해 로딩 시간에 영향을 주었다. 하지만 초기화 시간에는 큰 개선이 없어 다른 방법을 찾아야했다고 밝혔다.

유저 로그 기반 미리 읽기 리스트 생성
패치 전 던파는 던전에 들어가서 스킬을 처음 사용하면 하드에서 이미지를 읽느라 랙이 발생하는 현상이 자주 발생했다. 하재승 프로그래머는 이 문제의 원인으로 많은 양의 하드 코딩을 꼽았다.

던파는 직업 별로 독특한 플레이 스타일이 구현돼있으며 이는 데이터 수치 만으로 표현되기는 사실상 힘든 부분이 많았다. 또한 8년간 서비스 되며 예상치 못한 문제도 발생하면서 지금까지는 하드 코딩을 통해 이를 최대한 수정해왔다.

대표적인 하드 코딩으로는 일단 HDD에서 불러낸 데이터를 버리지 않고 플레이할 때마다 다시 이용하는 방식이 있으며 이런 하드 코딩은 처음 데이터를 불러낼 때 랙을 유발하고 메모리 부족 현상을 불러일으켜 런타임 오류 등을 통해 게임에 튕기게하는 주범 중에 하나였다.

이에 하재승 프로그래머는 유저 로그 기반 미리 읽기 리스트 생성하는 방식으로 문제를 해결하고자 했으며 이 때 테스트 서버를 통해 취합된 일주일 치 데이터 CSV만 해도 15Gb, 이미지를 읽은 기록은 7750만건, 유저 스킬 사용 횟수는 140회 이상이라고 밝혔다.

그는 현재 미리 읽기 데이터는 스킬 애니메이션과 아바타로 구분하여 분석 및 수정돼 업데이트됐다라고 밝혔다. 유저가 스킬을 사용한 타이밍을 수집해 분산 값을 통해 추정해 던전에서 스킬을 미리 불러 렉을 줄이는 한편 다양한 아바타 파츠의 이름을 모션 이름 위치에 저장해 하나만 HDD가 읽어도 여러 개를 한꺼번에 읽는 효과를 얻어냈다고 밝혔다.

물론 문제점도 있었다. 던파 자체의 맵이 포털 방식인 만큼 1번 방에서 A 스킬을 사용하고 2번 방에 갔다 다시 1번 방으로 돌아오면 이전에 출력된 스킬 이펙트의 로그가 남아 이어서 출력되는 문제점과 여러 데이터를 한꺼번에 묶다보니 관련 없는 항목이 포함되는 등 여러 문제점도 생겼다고 그는 밝혔다.

그는 이번 패치는 현재 유저 로그 기반 미리 읽기 리스트 생성은 1인 플레이에만 적용됐으며, 이 패치를 통해 던전 입장 시간은 증가했지만 던전 내에서는 랙이 크게 감소하는 효과를 나타내고 있다라고 설명했다. 하지만 데이터를 미리 읽어오는 만큼 메모리 사용량 증가로 크래쉬(게임 튕김) 현상의 증가가 우려된다라고 말해 주목 받기도 했다.

이 외에도 하재승 프로그래머는 게임 로딩 시 2천 개 이상의 이미지 팩을 일일이 다 열어보고 내부에 어떤 이미지 팩이 있는지 확인하는 시간이 느려지는 현상을 개선하기 위해 색인 파일 생성을 했으며, 보안 및 비정상적인 접근 차단을 위해 게임에 적용한 추적 변수가 정상적인 접근에서도 불러지는 경우가 있어 이를 수정했다라고 밝혔다.

마지막으로 하재승 프로그래머는 강연을 마무리하며 이후 진행될 던파의 다음 최적화 패치의 목표를 설명했다.

그는 이번 분석을 통해 스킬 사용 시 클라이언트가 읽어야 할 데이터가 어떤 것이고 버려야하는 데이터가 어떤 것인지 알게 됐으므로 던전 종료 시 필요 없는 데이터를 버리는 업데이트를 진행할 예정이며, 마을의 특정 부분(던전 입구)에서 사용량이 높아 랙이 유발되므로 그 부분을 개선할 예정이라고 밝혔다.

덧붙여 메모리 사용량 최적화는 이 후에도 진행될 예정이며, 유저 로그 기반 미리 읽기 리스트 생성을 파티 플레이에도 적용해 파티 플레이에서도 랙을 감소하고 크래쉬(게임 튕김)을 최소화 시켜 쾌적한 게임 플레이를 제공할 것이라 약속하고 강연을 마쳤다.


 

어른도 아이도 시간 순삭, IPX '서울스프링...
나이언틱 한국 최초의 '피크민 블룸' 첫 오...
[체험기]넥슨 '아크 레이더스', 차별화 위...
위믹스 김석한 대표 "DAXA의 결정, 지나치...
전세계 게이머들이 설마 했던 'GTA6' 출시...
kakao LINE

관련뉴스

- 관련뉴스가 없습니다.
목록으로 목록으로 스크랩하기
로그인 한 사용자만 댓글 작성이 가능합니다
숨기기
댓글 2 예비 베플
최적화 패치를 하는 건 좋다 이겁니다. 근데 처음에 나온 프레젠테이션의 문구처럼 우리 아이가 3배 빨라졌어요, 이 딴 문구는 좀 빼면 안됩니까? 지금 하재승인지 뭔재승인지 개발자들이 하는 행동은 팔에 가시가 박혔는데 다리를 몽둥이로 때려놓고는 "이제 팔은 안아프지?" 하는거랑 뭐가 다른지 모르겠네요. 차라리 1분 넘게 검은화면이나 정지화면에서 기다려도 좋으니까 튕김 현상을 없애는게 더 좋지 않나요? 눈 앞에서 자기가 착용할 아이템이 드랍됐음에도 튕김현상으로 인해 즐겁게 즐겨야 하는 게임이 스트레스로 작용된다면 분명 문제가 있는겁니다. 능력이 없는 걸 인정하고 좀 더 완벽하게 하고 난뒤 다시 자신있게 내놓았으면 좋겠네요.
능력이 없는거죠 | 10.05 22:40 삭제
댓글 0
95 111
최적화패치후 런타임오류 너무많이뜨내요 온오프 기능있어서 오프해놔도 엄청잘팅기고 런타임오류만 1시간에 몇번뜨는지참 답이없내요
아니도대체뭘만졋길래? | 06.26 21:55 삭제
댓글 0
133 98
최적화 패치를 하는 건 좋다 이겁니다. 근데 처음에 나온 프레젠테이션의 문구처럼 우리 아이가 3배 빨라졌어요, 이 딴 문구는 좀 빼면 안됩니까? 지금 하재승인지 뭔재승인지 개발자들이 하는 행동은 팔에 가시가 박혔는데 다리를 몽둥이로 때려놓고는 "이제 팔은 안아프지?" 하는거랑 뭐가 다른지 모르겠네요. 차라리 1분 넘게 검은화면이나 정지화면에서 기다려도 좋으니까 튕김 현상을 없애는게 더 좋지 않나요? 눈 앞에서 자기가 착용할 아이템이 드랍됐음에도 튕김현상으로 인해 즐겁게 즐겨야 하는 게임이 스트레스로 작용된다면 분명 문제가 있는겁니다. 능력이 없는 걸 인정하고 좀 더 완벽하게 하고 난뒤 다시 자신있게 내놓았으면 좋겠네요.
능력이 없는거죠 | 10.05 22:40 삭제
댓글 0
95 111
최적화패치후 런타임오류 너무많이뜨내요 온오프 기능있어서 오프해놔도 엄청잘팅기고 런타임오류만 1시간에 몇번뜨는지참 답이없내요
아니도대체뭘만졋길래? | 06.26 21:55 삭제
댓글 0
133 98
1

많이 본 뉴스

모델솔루션, 애플, 가정용 로봇 개발 박차… 애플 협력사 부각 '...
에스엠코어, SK 로봇 사업 본격화... SK그룹 내 스마트팩토리 자...
아이언디바이스, HBM 이을 SiC 관심... SiC·GaN 전력반도체 파...
모비데이즈, 틱톡 세계 최초 시각 인식 AI 공개 소식에 '상승세'...
디아이씨, 글로벌 휴머노이드 로봇 업체와 감속기 기술 공급 논...
자비스, 유리기판 검사장비 상반기 첫 공급 예정 소식에 '강세'...
피아이이, 유리기판 TGV 검사 기술 보유... 삼성전자 유리기판 ...