- 안녕하세요. 던전앤파이터 클라이언트 최적화 담당 팀장입니다.
현재 던전앤파이터 클라이언트는 메인 스레드라 지칭하는 하나의 스레드를 통해 캐릭터, 몬스터, 스킬과 같은 객체의 생성과 이동, 타격 판정 등의 모든 논리적 연산을 수행하고 있습니다.또한 이 모든 연산의 결과물을 화면에 표현하기 위한 과정인 랜더링 역시 모두 메인 스레드를 통해 순차적으로 처리하고 있습니다.
이는 싱글 코어 CPU를 탑재한 PC가 주를 이루던 2000년대 초/중반에 개발된 대다수의 게임들이 차용한 방식이었습니다.
하지만 2000년대 후반에 접어들며 멀티 코어 CPU를 탑재한 PC가 대중화되며, 일부 상용 게임 엔진들을 필두로 클라이언트의 성능을 향상시키기 위해 멀티 코어를 활용하기 위한 병렬 처리 구조를 차용하기 시작했습니다.
던전앤파이터 클라이언트 역시 일부 영역에 한해 병렬 처리 구조를 차용하여 성능 최적화를 진행하였으나 모험가님들이 만족하실 만큼의 성과를 거두진 못했습니다.
이는 클라이언트의 코어 영역인 전투 로직과 랜더링 과정 등이 여전히 직렬 처리 구조로 구성되어있기에 앞서 언급드린 메인 스레드라는 하나의 스레드에만 과도한 연산 부하가 일어나는 문제가 발생하기 때문이었습니다.
먼저 그동안 던전앤파이터 클라이언트의 코어 영역을 병렬 처리 구조 형태로 변경할 수 없었던 이유를 설명(변명)드리자면..
15년 이상 서비스를 이어오며 생산된 방대한 코드의 양,
병렬 처리 구조로 개선하는 과정에서도 서비스는 유지되어야 하기에 기존 구조에 맞춰 신규 콘텐츠들이 계속 생산된다는 문제,
마지막으로 앞서 언급된 문제들을 다 해결한다고 해도... 개선된 구조가 서비스의 안정성을 담보해 줄 수 있는가? 에 대한 물음에 자신있게 답할 수 없었기 때문이었습니다.
그럼에도 가야 할 길을 가지 않고 계속 미뤄둘 순 없기에.. 서비스의 안정성을 저해시키지 않는 선에서 선택할 수 있는 최선의 방법을 찾는 과정을 꾸준히 찾고 시도해 보았습니다. 아래에서 소개할 작업들은 앞선 과정을 거치며 진행된 작업들로 지난 한 달간 퍼스트 서버에 우선 배포하여 기본적인 안정성 테스트를 진행하였고 이렇게 정식 버전에 배포하게 되었습니다.
물론 아직까진 100% 만족스러운 수준은 아니지만.. 멀티 코어의 지원을 위한 첫 걸음을 떼었다는 측면에서 의미 있게 바라봐 주시기를 부탁드리겠습니다. - 렌더 스레드가 추가됩니다.
- 메인 스레드를 통해 연산된 결과물을 전달받아 DirectX를 이용하여 화면에 출력하기 위한 일련의 과정을 담당하는 스레드입니다.
- - 기대 효과 : 메인 스레드내 랜더링과 관련된 연산 부하가 감소됨에 따라 클라이언트의 평균 FPS가 향상됩니다.
- 로드 스레드가 개선됩니다.
- 메인 스레드나 렌더 스레드의 요구에 따라 지정된 파일을 로딩하여 메모리에 탑재하는 역할을 담당하는 스레드입니다.
참고로 이미 기존 던전앤파이터 클라이언트에서도 로드 스레드를 이용하여 파일 로딩을 수행하고 있었으나 좋지 않은 구조로 인해 메인 스레드의 병목을 유발시키는 형태로 구성되어있어 이를 개선하였습니다.
또한 새로운 로드 스레드 구조는 코어 개수에 비례하여, 동적으로 스레드 개수로 조절할 수 있도록 보완되었습니다. - - 기대 효과 : 게임 플레이 도중 동적으로 생성/소환되는 몬스터나 이펙트 등에 의해 발생하는 일시적인 클라이언트 병목 현상이 일부 완화됩니다.
- 키 명령어 입력 감지(기록) 스레드가 추가됩니다.
- 플레이어의 입력을 받아들여 이를 기록하는 역할을 담당하는 스레드입니다. 메인 스레드는 로직 연산에 앞서 키 명령어 입력 감지 스레드를 통해 기록된 유저의 입력을 전달받아 명령을 수행하게 됩니다.
참고로 기존 클라이언트에서는 메인 스레드에서 유저의 입력을 받아들이고 해석하는 일련의 과정을 모두 수행했기에 과도한 연산이나 랜더링이 이뤄지는 상황에서 메인 스레드에 병목현상이 발생하는 경우 간헐적으로 유저의 입력을 받아들일 수 없는 문제가 발생할 수 있었습니다. - - 기대 효과 : 메인 스레드의 심각한 병목 상황에서 플레이어의 입력이 누락되는 문제가 일부 개선됩니다.
- 네트워크 스레드가 추가됩니다.
- 파티 플레이 전투를 위해 필요한 동기화 과정인 패킷 송/수신 과정을 메인 스레드에서 분리하여 별도의 스레드를 통해 처리되도록 구조를 개선하였습니다.
- - 기대 효과 : 다량의 패킷을 송/수신하는 과정에서 발생하는 일시적인 병목 현상이 일부 완화됩니다.
- 개선 및 변경 사항
- * 빼앗긴 땅, 이스핀즈의 도래를 알리는 외전 퀘스트가 추가됩니다.
- * 스킬 레벨 마법이 부여된 칭호에 일반 마법 부여 시도 시 경고 메시지 안내가 강화됩니다.
- * 초월한 시공 과학자 헤스/차원 과학자 헤스의 크리쳐 스킬 챠징 게이지바의 위치가 크리쳐와 겹치지 않도록 개선됩니다.
- 버그 수정
- 던전
- * 노블레스 코드 - 팀원 캐릭터들의 스킬 추가 정보가 비정상 적용되는 현상이 수정됩니다.
- * 파괴된 죽은 자의 성 - 임무 시작 직후 파티원을 강퇴 가능한 현상이 수정됩니다.
- 캐릭터
- * 격투가(남) - 로킥 강화 스킬의 1레벨당 공격력 증가율이 비정상적으로 적용된 현상이 수정됩니다.
- * 나이트 - 어퍼 실드 강화 스킬의 1레벨당 공격력 증가율이 비정상적으로 적용된 현상이 수정됩니다.
- * 격투가(여) - 무즈 어퍼 강화 스킬의 1레벨당 공격력 증가율이 비정상적으로 적용된 현상이 수정됩니다.
- * 버서커 - 특정 상황에서 일부 던전의 보스 몬스터에게 블러드 스내치 스킬 적중 시, 보스 몬스터가 맵 끝에 끼이는 현상이 수정됩니다.
- * 버서커 - 진 각성 이전 캐릭터가 갈증 상태에서 잡기 불가 적에게 블러드러스트 스킬 사용 시, 데미지가 비정상적으로 적용되는 현상이 수정됩니다.
- * 어썰트 - 전직에 맞는 결전의 무기 착용 시 간헐적으로 전력 스택 UI가 출력되지 않는 현상이 수정됩니다.
- * 엘레멘탈마스터 - 플레임 스트라이크 강화 스킬 습득 시 플레임 스트라이크의 범위 비율 툴팁이 비정상적으로 적용되는 현상이 수정됩니다.
- * 엘레멘탈마스터 - 썬버스트 강화 스킬 습득 시 썬버스트의 범위 비율 툴팁이 비정상적으로 적용되는 현상이 수정됩니다.
- * 어벤저 - 악마화 스킬의 툴팁 오류가 수정됩니다.
- * 메카닉(남) - 던전 플레이 중 간헐적으로 HS-1 친구들이 사라지는 현상이 수정됩니다.
- * 마법사(여) - 위상변화 스킬의 정령 관련 툴팁이 수정됩니다.
- * 소환사 - 일부 정령 소환수가 피격 시 소환사 옆으로 순간이동하지 않도록 변경됩니다.
- * 소환사 - 기다려!! 스킬에 저놈 잡아라! 관련 툴팁이 누락된 현상이 수정됩니다.
- * 팔라딘 - 세라픽 페더 스킬의 툴팁 오탈자가 수정됩니다.
- * 팔라딘 - 컨페션 스킬 사용 시, 간헐적으로 스킬 사용이 불가능한 현상이 수정됩니다.
- * 버퍼 캐릭터의 탈리스만 옵션 툴팁에 적 속성 피해량 증가율에 대한 내용이 잘못 표기된 현상이 수정됩니다.
- 기타
- * 시공간 여행 시스템에서 획득했던 아이템을 초월할 수 없는 현상이 수정됩니다.
- * 몬스터 파편 다중 정제 시 시스템 메시지가 비정상 노출되는 현상이 수정됩니다.
- * 계정금고에서 정렬잠금 기능이 활성화되지 않는 현상이 수정됩니다.
- * 간헐적으로 획득하지 않은 감정표현을 사용 가능한 현상이 수정됩니다.
- * 게임 실행 시, 호환성 - 높은 DPI 설정이 초기화되는 현상이 수정됩니다.
- * 앵거스/지미 크리쳐의 스킬 툴팁 오탈자가 수정됩니다.
- * 15주년 화환 모자 아바타 착용 시 캐릭터명의 위치가 변경되지 않도록 수정됩니다.
- * NPC 초붕 - 결투 랭킹 팝업의 일부 버튼이 비정상 동작하는 현상이 수정됩니다.
- * 던전에서 파티원이 나간 뒤에 아이템을 버리면 아이템이 보이지 않는 현상이 수정됩니다.
- * 포레스트 엘프 패키지 - 일부 크리쳐에 피격 판정이 적용되는 현상이 수정됩니다.
- * 거너(남) - 국상 견갑 아바타 염색 시 비정상적인 이미지가 출력되는 현상이 수정됩니다.
- * 거너(남) - 무휼의 갑주 아바타 착용 시 하체 부분의 도트가 비정상적인 현상이 수정됩니다.
- * 대박기원 2008 ( 프리스트 ) 칭호 옵션 중 코크 스크류 블로우 스킬이 누락된 현상이 수정됩니다.
- * 마법사(여)/크리에이터 - 와일드럭셔리 코트 착용 시 팔 부분 이미지가 비정상 출력되는 현상이 수정됩니다.
- * 이펙트 퀄리티를 '하'로 설정해도 A타입 무기 강화 이펙트가 출력되는 현상이 수정됩니다.
- * 결투장에서 간헐적으로 유물 무기의 잔상이 보이지 않는 현상이 수정됩니다.
- * 간헐적으로 B타입 무기 강화 이펙트 상태에서 A타입 무기 강화 이펙트가 비정상 출력되는 현상이 수정됩니다.
- * 업적 - 레미디오스의 성역 장비 선택 상자 : 나이트 방어구에 하의 선택지가 누락된 현상이 수정됩니다.
- * 업적 - 노블레스 코드 던전 클리어 업적이 간헐적으로 증가하지 않는 현상이 수정됩니다.
- * 시누아 대두 아바타 상자에 새싹 아리 아바타가 포함된 현상이 수정됩니다.
- * 채팅창 - 특정 상황에서 외부 채팅창이 초기 위치로 설정되는 현상이 수정됩니다.
- * 정령석 세공 - 세공 직후 스킬창의 휠 기능을 이용할 수 없는 현상이 수정됩니다.
- * 세계수의 파수꾼 - 간헐적으로 상점이 해금되지 않는 현상이 수정됩니다.
- * 간헐적으로 파티 결성 및 해체 시 클라이언트가 비정상 종료되는 현상이 수정됩니다.
- * 던전에서 몬스터가 존재할 시 크리쳐 스킨 슬롯에 등록된 크리쳐를 변경 불가능한 현상이 수정됩니다.
-
(IP보기클릭)125.130.***.***
오래된 겜은 다 똑같음 연차 5~6년 넘은 국산게임은 다 저런 문제 있다고 보시면 됩니다.
(IP보기클릭)125.130.***.***
애초에 신기술을 다룰줄 안다고 기존 프로젝트에 바로 적용이 가능한게 아닙니다 소프트웨어는 뭘 해외에서 배우라는건지 모르겠네요. 여태까지 멀티스레딩 할줄 몰라서 적용 못한걸로 보이시나요?
(IP보기클릭)58.124.***.***
뭔 해외개발자들만 베테랑인가요 ? 넥슨 게임 팀장급이면 이미 경력으로 차고넘치고 알거 다아는 경력인데
(IP보기클릭)222.98.***.***
한번에 4인팟이 난사하면 버벅거리던 현상 개선
(IP보기클릭)118.235.***.***
(IP보기클릭)222.98.***.***
내일일은내일해
한번에 4인팟이 난사하면 버벅거리던 현상 개선 | 22.06.29 17:22 | | |
(IP보기클릭)121.134.***.***
여러 사람이랑 게임 할 경우 간헐적 렉 발생 완화 (네트워크 스레드) 뭔가 많이 화면에 나와야 하는 경우(이펙트 등) 발생할 수 있는 렉 완화 (렌더, 로딩 스레드) 키 씹히는 현상 완화 (입력 스레드) 정도로 보시면 되겠습니다. | 22.06.29 17:37 | | |
(IP보기클릭)203.90.***.***
(IP보기클릭)125.130.***.***
kangdol
오래된 겜은 다 똑같음 연차 5~6년 넘은 국산게임은 다 저런 문제 있다고 보시면 됩니다. | 22.06.29 17:33 | | |
(IP보기클릭)121.148.***.***
그건아님 신기술나올수록 구형기술가지고 최적화가 힘드니까 더이상손될수없는거죠 근대 던파가 어떻게서든 다른방법찾아볼려고 시도를많이햇는데불구하고 끊김 렉현상대한건 고칠수없는거죠 이번에 멀티적용은 언급은 예전에도 햇지만 이번에처음적용되는거라 해외개발자나채용하거나 기술을 해외에서 배워서 성장했으면더 좋았을지않을까 | 22.06.29 17:50 | | |
(IP보기클릭)125.130.***.***
루리웹-1172111319
애초에 신기술을 다룰줄 안다고 기존 프로젝트에 바로 적용이 가능한게 아닙니다 소프트웨어는 뭘 해외에서 배우라는건지 모르겠네요. 여태까지 멀티스레딩 할줄 몰라서 적용 못한걸로 보이시나요? | 22.06.29 18:16 | | |
(IP보기클릭)125.130.***.***
저 클라이언트 팀장이라는 분이 던파 개발하던 시점에 멀티스레딩을 할줄 몰랐을까? 물어보면 높은 확률로 이미 할줄 알았을겁니다. | 22.06.29 18:21 | | |
(IP보기클릭)121.148.***.***
네오플안에 개발자가 얼마나 있는지는 저희가 모르죠 그러나 개발자(팀장) 스펙이어떻게되는지로 모르는상황에서 몇년함께햇다고가정했을때 던파가 2d게임이라 최적화등 개발하는데 힘든부분은 해외개발자가와도 공감되는부분이구요 팀장뿐안아니라 직원들과함께 개발해왓기때문에 이전까지 언급한거 포함하면 아직 바껴야할건많지요 하지만 조금씩바끼고있고 한계점있는부분에서도 노력하고있다라는건 대단하다고봄니다 신기술 몰라서 적용못한것일수도있고 아는데 우리가 할수있는선에서 할려고해도 한계가 도달했다라고 봐야겠죠 기술을배우고 가르치는데엤어서 시간과 돈이필요하는거지만 cd프로젝트 스마일게이트등회사들보면 회사내부문제가많죠 엄부량초과할정도로 일을시켜서 힘들고 몸이아프고 퇴사할정도죠 | 22.06.29 18:41 | | |
(IP보기클릭)58.124.***.***
루리웹-1172111319
뭔 해외개발자들만 베테랑인가요 ? 넥슨 게임 팀장급이면 이미 경력으로 차고넘치고 알거 다아는 경력인데 | 22.06.29 19:02 | | |
(IP보기클릭)115.31.***.***
그게 말처럼 쉬웠으면 스파게티 코드 게임들은 존재하지 않았을것 | 22.06.29 20:49 | | |
(IP보기클릭)125.186.***.***
(IP보기클릭)121.148.***.***
(IP보기클릭)119.65.***.***
기술이 없어서 못한게 아니라 쌓아놓은 탑을 조지고 다시 쌓아야하는 리스크 때문에 못한거죠 이 이상 모르는소리 하지마셈 | 22.06.30 11:43 | | |
(IP보기클릭)121.166.***.***