Dungeon & Fighter

새소식

업데이트

주요

멀티 스레드 업데이트

2022.06.29 17:00 147,363

멀티 스레드 업데이트

멀티 스레드
 
안녕하세요. 던전앤파이터 클라이언트 최적화 담당 팀장입니다.

현재 던전앤파이터 클라이언트는 메인 스레드라 지칭하는 하나의 스레드를 통해 캐릭터, 몬스터, 스킬과 같은 객체의 생성과 이동, 타격 판정 등의 모든 논리적 연산을 수행하고 있습니다.또한 이 모든 연산의 결과물을 화면에 표현하기 위한 과정인 랜더링 역시 모두 메인 스레드를 통해 순차적으로 처리하고 있습니다. 

이는 싱글 코어 CPU를 탑재한 PC가 주를 이루던 2000년대 초/중반에 개발된 대다수의 게임들이 차용한 방식이었습니다.
하지만 2000년대 후반에 접어들며 멀티 코어 CPU를 탑재한 PC가 대중화되며, 일부 상용 게임 엔진들을 필두로 클라이언트의 성능을 향상시키기 위해 멀티 코어를 활용하기 위한 병렬 처리 구조를 차용하기 시작했습니다.
던전앤파이터 클라이언트 역시 일부 영역에 한해 병렬 처리 구조를 차용하여 성능 최적화를 진행하였으나 모험가님들이 만족하실 만큼의 성과를 거두진 못했습니다.
이는 클라이언트의 코어 영역인 전투 로직과 랜더링 과정 등이 여전히 직렬 처리 구조로 구성되어있기에 앞서 언급드린 메인 스레드라는 하나의 스레드에만 과도한 연산 부하가 일어나는 문제가 발생하기 때문이었습니다.

먼저 그동안 던전앤파이터 클라이언트의 코어 영역을 병렬 처리 구조 형태로 변경할 수 없었던 이유를 설명(변명)드리자면..
15년 이상 서비스를 이어오며 생산된 방대한 코드의 양,
병렬 처리 구조로 개선하는 과정에서도 서비스는 유지되어야 하기에 기존 구조에 맞춰 신규 콘텐츠들이 계속 생산된다는 문제,
마지막으로 앞서 언급된 문제들을 다 해결한다고 해도... 개선된 구조가 서비스의 안정성을 담보해 줄 수 있는가? 에 대한 물음에 자신있게 답할 수 없었기 때문이었습니다.

그럼에도 가야 할 길을 가지 않고 계속 미뤄둘 순 없기에.. 서비스의 안정성을 저해시키지 않는 선에서 선택할 수 있는 최선의 방법을 찾는 과정을 꾸준히 찾고 시도해 보았습니다. 아래에서 소개할 작업들은 앞선 과정을 거치며 진행된 작업들로 지난 한 달간 퍼스트 서버에 우선 배포하여 기본적인 안정성 테스트를 진행하였고 이렇게 정식 버전에 배포하게 되었습니다.

물론 아직까진 100% 만족스러운 수준은 아니지만.. 멀티 코어의 지원을 위한 첫 걸음을 떼었다는 측면에서 의미 있게 바라봐 주시기를 부탁드리겠습니다.
렌더 스레드가 추가됩니다.
메인 스레드를 통해 연산된 결과물을 전달받아 DirectX를 이용하여 화면에 출력하기 위한 일련의 과정을 담당하는 스레드입니다.
 
- 기대 효과 : 메인 스레드내 랜더링과 관련된 연산 부하가 감소됨에 따라 클라이언트의 평균 FPS가 향상됩니다.
로드 스레드가 개선됩니다.
메인 스레드나 렌더 스레드의 요구에 따라 지정된 파일을 로딩하여 메모리에 탑재하는 역할을 담당하는 스레드입니다.
참고로 이미 기존 던전앤파이터 클라이언트에서도 로드 스레드를 이용하여 파일 로딩을 수행하고 있었으나 좋지 않은 구조로 인해 메인 스레드의 병목을 유발시키는 형태로 구성되어있어 이를 개선하였습니다.
또한 새로운 로드 스레드 구조는 코어 개수에 비례하여, 동적으로 스레드 개수로 조절할 수 있도록 보완되었습니다.
 
- 기대 효과 : 게임 플레이 도중 동적으로 생성/소환되는 몬스터나 이펙트 등에 의해 발생하는 일시적인 클라이언트 병목 현상이 일부 완화됩니다.
키 명령어 입력 감지(기록) 스레드가 추가됩니다.
플레이어의 입력을 받아들여 이를 기록하는 역할을 담당하는 스레드입니다. 메인 스레드는 로직 연산에 앞서 키 명령어 입력 감지 스레드를 통해 기록된 유저의 입력을 전달받아 명령을 수행하게 됩니다.
참고로 기존 클라이언트에서는 메인 스레드에서 유저의 입력을 받아들이고 해석하는 일련의 과정을 모두 수행했기에 과도한 연산이나 랜더링이 이뤄지는 상황에서 메인 스레드에 병목현상이 발생하는 경우 간헐적으로 유저의 입력을 받아들일 수 없는 문제가 발생할 수 있었습니다.
 
- 기대 효과 : 메인 스레드의 심각한 병목 상황에서 플레이어의 입력이 누락되는 문제가 일부 개선됩니다.
네트워크 스레드가 추가됩니다.
파티 플레이 전투를 위해 필요한 동기화 과정인 패킷 송/수신 과정을 메인 스레드에서 분리하여 별도의 스레드를 통해 처리되도록 구조를 개선하였습니다.
 
- 기대 효과 : 다량의 패킷을 송/수신하는 과정에서 발생하는 일시적인 병목 현상이 일부 완화됩니다.

추가 변경 사항

개선 및 변경 사항
* 빼앗긴 땅, 이스핀즈의 도래를 알리는 외전 퀘스트가 추가됩니다.
* 스킬 레벨 마법이 부여된 칭호에 일반 마법 부여 시도 시 경고 메시지 안내가 강화됩니다.
* 초월한 시공 과학자 헤스/차원 과학자 헤스의 크리쳐 스킬 챠징 게이지바의 위치가 크리쳐와 겹치지 않도록 개선됩니다.
버그 수정
던전
* 노블레스 코드 - 팀원 캐릭터들의 스킬 추가 정보가 비정상 적용되는 현상이 수정됩니다.
* 파괴된 죽은 자의 성 - 임무 시작 직후 파티원을 강퇴 가능한 현상이 수정됩니다.
 
캐릭터
* 격투가(남) - 로킥 강화 스킬의 1레벨당 공격력 증가율이 비정상적으로 적용된 현상이 수정됩니다.
* 나이트 - 어퍼 실드 강화 스킬의 1레벨당 공격력 증가율이 비정상적으로 적용된 현상이 수정됩니다.
* 격투가(여) - 무즈 어퍼 강화 스킬의 1레벨당 공격력 증가율이 비정상적으로 적용된 현상이 수정됩니다.
* 버서커 - 특정 상황에서 일부 던전의 보스 몬스터에게 블러드 스내치 스킬 적중 시, 보스 몬스터가 맵 끝에 끼이는 현상이 수정됩니다.
* 버서커 - 진 각성 이전 캐릭터가 갈증 상태에서 잡기 불가 적에게 블러드러스트 스킬 사용 시, 데미지가 비정상적으로 적용되는 현상이 수정됩니다.
* 어썰트 - 전직에 맞는 결전의 무기 착용 시 간헐적으로 전력 스택 UI가 출력되지 않는 현상이 수정됩니다.
* 엘레멘탈마스터 - 플레임 스트라이크 강화 스킬 습득 시 플레임 스트라이크의 범위 비율 툴팁이 비정상적으로 적용되는 현상이 수정됩니다.
* 엘레멘탈마스터 - 썬버스트 강화 스킬 습득 시 썬버스트의 범위 비율 툴팁이 비정상적으로 적용되는 현상이 수정됩니다.
* 어벤저 - 악마화 스킬의 툴팁 오류가 수정됩니다.
* 메카닉(남) - 던전 플레이 중 간헐적으로 HS-1 친구들이 사라지는 현상이 수정됩니다.
* 마법사(여) - 위상변화 스킬의 정령 관련 툴팁이 수정됩니다.
* 소환사 - 일부 정령 소환수가 피격 시 소환사 옆으로 순간이동하지 않도록 변경됩니다.
* 소환사 - 기다려!! 스킬에 저놈 잡아라! 관련 툴팁이 누락된 현상이 수정됩니다.
* 팔라딘 - 세라픽 페더 스킬의 툴팁 오탈자가 수정됩니다.
* 팔라딘 - 컨페션 스킬 사용 시, 간헐적으로 스킬 사용이 불가능한 현상이 수정됩니다.
* 버퍼 캐릭터의 탈리스만 옵션 툴팁에 적 속성 피해량 증가율에 대한 내용이 잘못 표기된 현상이 수정됩니다.
 
기타
* 시공간 여행 시스템에서 획득했던 아이템을 초월할 수 없는 현상이 수정됩니다.
* 몬스터 파편 다중 정제 시 시스템 메시지가 비정상 노출되는 현상이 수정됩니다.
* 계정금고에서 정렬잠금 기능이 활성화되지 않는 현상이 수정됩니다.
* 간헐적으로 획득하지 않은 감정표현을 사용 가능한 현상이 수정됩니다.
* 게임 실행 시, 호환성 - 높은 DPI 설정이 초기화되는 현상이 수정됩니다.
* 앵거스/지미 크리쳐의 스킬 툴팁 오탈자가 수정됩니다.
* 15주년 화환 모자 아바타 착용 시 캐릭터명의 위치가 변경되지 않도록 수정됩니다.
* NPC 초붕 - 결투 랭킹 팝업의 일부 버튼이 비정상 동작하는 현상이 수정됩니다.
* 던전에서 파티원이 나간 뒤에 아이템을 버리면 아이템이 보이지 않는 현상이 수정됩니다.
* 포레스트 엘프 패키지 - 일부 크리쳐에 피격 판정이 적용되는 현상이 수정됩니다.
* 거너(남) - 국상 견갑 아바타 염색 시 비정상적인 이미지가 출력되는 현상이 수정됩니다.
* 거너(남) - 무휼의 갑주 아바타 착용 시 하체 부분의 도트가 비정상적인 현상이 수정됩니다.
* 대박기원 2008 ( 프리스트 ) 칭호 옵션 중 코크 스크류 블로우 스킬이 누락된 현상이 수정됩니다.
* 마법사(여)/크리에이터 - 와일드럭셔리 코트 착용 시 팔 부분 이미지가 비정상 출력되는 현상이 수정됩니다.
* 이펙트 퀄리티를 '하'로 설정해도 A타입 무기 강화 이펙트가 출력되는 현상이 수정됩니다.
* 결투장에서 간헐적으로 유물 무기의 잔상이 보이지 않는 현상이 수정됩니다.
* 간헐적으로 B타입 무기 강화 이펙트 상태에서 A타입 무기 강화 이펙트가 비정상 출력되는 현상이 수정됩니다.
* 업적 - 레미디오스의 성역 장비 선택 상자 : 나이트 방어구에 하의 선택지가 누락된 현상이 수정됩니다.
* 업적 - 노블레스 코드 던전 클리어 업적이 간헐적으로 증가하지 않는 현상이 수정됩니다.
* 시누아 대두 아바타 상자에 새싹 아리 아바타가 포함된 현상이 수정됩니다.
* 채팅창 - 특정 상황에서 외부 채팅창이 초기 위치로 설정되는 현상이 수정됩니다.
* 정령석 세공 - 세공 직후 스킬창의 휠 기능을 이용할 수 없는 현상이 수정됩니다.
* 세계수의 파수꾼 - 간헐적으로 상점이 해금되지 않는 현상이 수정됩니다.
* 간헐적으로 파티 결성 및 해체 시 클라이언트가 비정상 종료되는 현상이 수정됩니다.
* 던전에서 몬스터가 존재할 시 크리쳐 스킨 슬롯에 등록된 크리쳐를 변경 불가능한 현상이 수정됩니다.

업데이트

  • 퍼스트서버
  • 4/17(수) 퍼스트 서버 업데이트 안내
  • 2024.04.17
  • 64,789
  • 일반
  • 4/18(목) 정기점검 업데이트 안내
  • 2024.04.17
  • 15,987
  • 일반
  • 4/11(목) 정기점검 업데이트 안내
  • 2024.04.10
  • 29,906
  • 일반
  • 4/4(목) 정기점검 업데이트 안내
  • 2024.04.03
  • 37,683
  • 던파ON
  • 3/28(목) 던파ON 업데이트 안내
  • 2024.03.28
  • 23,352
  • 일반
  • 3/28(목) 정기점검 업데이트 안내
  • 2024.03.27
  • 45,659
  • 일반
  • 3/21(목) 정기점검 업데이트 안내
  • 2024.03.20
  • 65,788
  • 대규모
  • 시즌 9 Act 3. Hunter & Vigilante : 사냥 개시!
  • 2024.03.13
  • 397,558
  • 일반
  • 3/7(목) 정기점검 업데이트 안내
  • 2024.03.06
  • 51,406
  • 일반
  • 2/29(목) 정기점검 업데이트 안내
  • 2024.02.28
  • 41,532
  • 퍼스트서버
  • 2/28(수) 퍼스트 서버 업데이트 안내
  • 2024.02.28
  • 46,283
  • 대규모
  • 시즌 9 Act 2. 아스라한 : 무의 장막
  • 2024.02.21
  • 569,961
  • 퍼스트서버
  • 2/14(수) 퍼스트 서버 업데이트 안내 (2) 아이템, 시스템, 추가 변경 사항
  • 2024.02.14
  • 199,999
  • 일반
  • 2/15(목) 정기점검 업데이트 안내
  • 2024.02.14
  • 27,473
  • 퍼스트서버
  • 2/14(수) 퍼스트 서버 업데이트 안내 (1) 콘텐츠, 성장 개편
  • 2024.02.14
  • 103,027
  • 일반
  • 2/8(목) 정기점검 업데이트 안내
  • 2024.02.07
  • 44,897
  • 주요
  • 배틀메이지 리뉴얼 & 미스트리스 도트 리뉴얼 업데이트
  • 2024.01.31
  • 116,727
  • 퍼스트서버
  • 1/24(수) 퍼스트 서버 업데이트 안내
  • 2024.01.24
  • 65,229
  • 일반
  • 1/25(목) 정기점검 업데이트 안내
  • 2024.01.24
  • 41,234
  • 일반
  • 1/18(목) 정기점검 업데이트 안내
  • 2024.01.17
  • 40,818

업데이트 안정화 제보 던전앤파이터 플레이 도중 발생하는 오류나 문제점, 개선사항을 제보해주세요.
모험가님의 소중한 의견을 바탕으로 업데이트 안정화에 최선을 다하겠습니다.

제보하기