[NDC26] 퍼스트 디센던트가 '무인 테스트 환경'을 구축한 과정은?

게임뉴스 | 김찬휘 기자 | 댓글: 1개 |
View in English


넥슨게임즈 매그넘 스튜디오 소속 강장훈 엔지니어 ©INVEN 김찬휘 기자

  • 주제: 복잡한 게임에 자동화 테스트 하기 - 퍼스트 디센던트' 맞춤 오토 플레이 테스트 툴 제작기
  • 강연자 : 강장훈 - 넥슨게임즈 매그넘 스튜디오 엔지니어
  • 발표분야 : 프로그래밍
  • 권장 대상 : QA 자동화에 관심 있는 프로그래머 & 테크 리드 그리고 TA/QA 엔지니어
  • 관심태그 : #프로그래밍 #Automated #QA 테스팅


  • [🚨 강연 주제] 이 세션은 복잡한 지형과 다양한 전투가 벌어지는 '퍼스트 디센던트'의 환경에 맞춰, 콘솔 플랫폼의 보안 제약을 극복하고 게임 패키지 내부에 직접 탑재한 독자적인 자동화 성능 테스트 툴 'M 오토 플레이 테스터' 구축 개발기이다. 봇이 무한 대기 상태에 빠지지 않도록 설계한 3단계 폴백(Fallback) 경로 탐색 및 타임아웃 가드, 프레임 드랍을 방지하는 스마트 전투 캐싱, 오타를 유연하게 넘기는 레벤슈타인 유사도 매칭 등 무인 자동화 테스트를 위한 핵심 파이프라인 작업 과정과 공간 좌표 기반의 성능 데이터 시각화 노하우를 공유한다.

    '퍼스트 디센던트'를 위한 오토 플레이 테스트 툴 구축 계기




    사람이 하기에는 가짓수가 너무 많다! ©INVEN 김찬휘 기자

    흔히들 자동화 시스템을 속된 말로 '딸깍'이라고 표현하지만, 자동화 시스템이 구축되기까지 많은 코스트가 들어간다. 넥슨게임즈에서 '퍼스트 디센던트' 개발을 담당한 강장훈 엔지니어는 "자동화의 핵심은 완벽한 재현보다는 무슨 일이 있어도 멈추지 않는 과정을 만드는 것이 중요하다"고 말하며 퍼스트 디센던트 팀이 이를 어떻게 구축했는지 오토 플레이 테스트 툴 제작기를 공유했다.

    강 엔지니어는 퍼스트 디센던트가 오토 플레이 테스트 툴을 가지게 된 계기에 대해 다양한 플랫폼의 존재와 이에 따른 옵션 조합의 가짓수를 꼽았다. 이러한 환경에서 사람이 직접 테스트를 수행하기에는 물리적인 한계가 따른다는 것이다. 더불어 콘솔 플랫폼 보안 이슈로 인해 외부 플레이 테스트 툴을 사용할 수 없는 환경도 이야기했다. 그래서 퍼스트 디센던트 팀은 '패키지 게임 내부에서 동작 가능한 오토 플레이 툴'을 개발하기로 선택했다고 설명했다.

    폴백부터 아키텍처 및 데이터 시각화까지


    강 엔지니어는 오토 플레이 툴에 핵심 요소로 폴백부터 아키텍처 및 데이터 시각화까지 총 네 가지를 언급했다.



    일단 봇이 움직여야 테스트가 진행이 되겠죠? ©INVEN 김찬휘 기자

    먼저 폴백 구조의 길 찾기를 이야기하며 자동화 테스트의 첫 번째 관문은 복잡한 맵 안에서 목적지에 도달하는 것인데 봇이 지형에 끼어 테스트가 중단되는 사례가 종종 있었다고 말했다. 그러면서 개발팀은 이를 방지하기 위해 3단계 경로 탐색 시스템을 구축했다고 언급했다.

    1단계 '표준 탐색' 단계에서는 기본적인 내비게이션으로 메시 탐색을 시도한다. 그리고 나서 2단계인 '우회로 탐색'에서 테스트 봇이 자주 끼는 곳을 회피할 수 있도록 한다. 마지막으로 3단계 '평지 탐색'에서는 Z축 변화를 완전히 배제하여 최대한 안전한 평지 길을 찾는 것으로 테스트 봇의 이동을 자동화했다고 강 엔지니어는 이야기했다.

    혹여, 3단계 프로세스가 실패할 경우 '타임아웃 가드'가 작동하여 끼임 상태에서 탈출하도록 텔레포트를 작동시켰다고 덧붙이기도 했다.



    몬스터를 보이는 족족 스캔해버리면 연산에 과부하가 와버렷! ©INVEN 김찬휘 기자

    강 엔지니어는 그다음 핵심 기술로 프레임 드랍을 막는 '스마트 전투 캐싱'을 언급했다. 다수의 몬스터가 등장하는 퍼스트 디센던트 특성상, 봇이 틱마다 전체 몬스터를 스캔해서 찾으면 심각한 GPU 오버헤드와 프레임 드랍이 발생한다고 설명했다.

    이에 기반하여 개발팀은 몬스터들이 어그로 시스템에 끌려 플레이어 근처로 온다는 점을 살려 전체 스캔은 캐시가 비어있을 때만 진행시키고, 가장 가까운 소수의 몬스터만 배열에 담아 캐싱했음을 전했다. 캐싱된 타겟들에 대해서만 거리를 갱신하고 우선순위를 정렬함으로써 불필요한 연산 낭비를 걷어낸 것이 핵심이다.



    오탈자가 있어도 자동화는 계속되어야 한다. ©INVEN 김찬휘 기자

    세 번째로 레벤슈타인 거리를 통해 오탈자가 있어도 자동화가 계속되게 구축한 것도 핵심이라 전했다. 테스트 봇이 임무를 수행하기 위해서는 할당된 임무가 무엇인지 정확히 판별해야 하는데 개발자의 실수로 오탈자가 발생하면 봇이 멈추는 경우가 있을 수 있어 이를 사전에 방지한 것이다.

    강 엔지니어는 '레벤슈타인 거리' 알고리즘을 도입하여 게임 데이터와 봇이 할당받은 임무 간 유사도가 75% 이상이면 동일한 임무로 판정하도록 유연성을 부여했다고 언급했다. 이를 통해 데이터에 약간의 오차가 있어도 봇은 본연의 임무를 수행할 수 있는 것이다.



    신뢰할 수 있는 성과 측정도 중요하다 ©INVEN 김찬휘 기자

    마지막으로, 개발진은 경로 탐색부터 성능 데이터 수집까지 모든 로직이 엉키지 않도록 모듈형 구조를 채택했다. 테스트 사이클마다 데이터를 초기화하여 신뢰성을 높였으며, 자체적인 오버헤드 측정 결과 최대 1.1ms 이내로 테스트 간섭을 완벽히 통제했다.

    이러한 시스템을 통해 단순한 프레임 저하를 넘어 어느 플랫폼의 어떤 세팅에서 레벨의 어느 구간을 지날 때 병목이 생기는지를 정확히 짚어낼 수 있었다. 실제로 이 데이터를 기반으로 최적화를 진행한 결과, 하위 5%의 최악의 스파이크 구간 프레임 타임을 20ms에서 11ms로 대폭 감소시키는 성과를 거두기도 했다.

    사람의 역할도 중요, 자동화 도전 해보길



    향후 퍼스트 디센던트 오토 플레이 툴에 고려중인 것들 ©INVEN 김찬휘 기자
    끝으로 강 엔지니어는 자동화 툴이 사람을 완전히 대체할 수는 없다고 말하며 봇은 데이터를 성실히 수집하지만, 라이팅이나 텍스처 스트리밍 지연 같은 '시각적 오류'는 잡아내지 못하기에 자동화의 정답은 대체가 아닌 보완이고 기계가 단순 반복 작업을 수행하는 동안 사람은 더 고차원적인 판단에 집중해야 한다고 강조했다.

    더불어, 향후 오토 플레이 툴에 스크린샷 자동 비교 검토, 테스트 영상 자동 녹화, 임무 전략 모듈화를 도입해 보고 싶다고 말하는 한편, 이번 강의 세션을 통해 많은 개발자들이 완벽한 설계보단 '일단 해보자'는 마음가짐으로 한 번 도전해 봤으면 좋겠다는 소감을 전했다.

    댓글

    새로고침
    새로고침

    기사 목록

    1 2 3 4 5
    AD