[취재] 'AI가 짤짤이를 넣는다?' 던전앤파이터, 시즈키 도장의 AI 구현법

게임뉴스 | 정필권 기자 | 댓글: 7개 |
'더욱 더 사람 같은 AI를 만들 수는 없을까?' '진짜 사람과 연습하듯이 할 수 있는 AI를 만들어 보는 것은 어떨까?' 대전 콘텐츠를 만드는 사람에게 있어 '보다 사람같이' 행동하는 AI는 연구 대상 중의 하나였다. 유저들이 AI와의 대전을 통해 연습을 시작하고, 하나의 콘텐츠에 흥미를 느낄 수 있는 계기로 작동할 수 있었으니 말이다.

그런 의미에서 2016년 8월에 등장한 던전앤파이터(던파)의 '시즈키 도장'은 많은 놀라움을 줬다. 사람 대 AI의 전투였지만, 흡사 사람처럼 움직이는 AI의 모습은 많은 호평을 받았다. 소위 말하는 짤짤이로 콤보를 이어나가거나, 사람처럼 실수하기도 하는 등 이전의 AI에서는 만날 수 없는 모습을 보였다.

편차는 있었지만, 놀라움을 남겼던 시즈키 도장의 AI는 어떻게 해서 만들어졌을까. 현재 네오플 던파개발실 콘텐츠 프로그램팀의 임희종 개발자는 거창하지 않은 방법으로도 '충분히 사람 같은 AI'를 구현할 수 있다고 말하며 강연을 시작했다.



▲ 네오플 던파개발실 콘텐츠 프로그램팀의 임희종 개발자

먼저, 강연자는 '현실적'이라는 제목은 부정적인 것이 아니라, 누구나 구현 가능하고 쉬운. 바로 사용할 수 있는 의미가 있다고 설명했다. 머신 러닝과 같은 복잡한 요소들보다는 Lua 쉽게 구현할 수 있는 AI를 만드는 데에 중점을 뒀다.

시즈키 도장은 기획 당시, '유저처럼 움직이는 AI, 사람과 싸우고 싶어하는 AI, 아케이드 모드에 사용할 수 있는 AI'를 만드는 것을 목표로 삼았다. 유저들이 해당 AI와 대전하는 것으로 실력 향상의 계단으로 이용할 수 있다는 구상이었다. 문제는 항상 그렇듯 '잘' 만들어야 한다는 것.

적지만 효율적인 개발을 통해서 만들어진 시즈키 도장의 AI는 유저들에게 호평을 받았다. 한계점도 나름대로 존재했지만, 적어도 개발 코스트 대비 긍정적인 반응을 이끌어 낼 수 있었다. 강연자는 해당 AI를 개발하면서 겪은 노하우와 방법론이 다른 프로젝트에서 사용할 수 있을 것이란 기대의 말을 남기며 본격적인 강연을 시작했다.






■ 던파의 결투장, 그리고 시즈키 도장의 목표

던파의 결투장은 대전치고는 많은 스킬들을 가지고 있는 것이 특징이었다. 캐릭터당 던전에서 사용하는 스킬은 60개가 넘었으며, PVP에서는 몇 스킬을 사용할 수 없는 상태였어도 30개가 넘는 상태였다. 15개의 캐릭터, 51개의 전직까지 가지고 있었으니, 총 스킬만 3,000여 개가 넘는 셈이었다.

게다가 공중콤보, 스탠딩콤보, 바닥콤보를 갖추고 있었고, 여기에 보정 시스템까지 고려해서 개발해야 했다. 유저의 실력에 따라서 구분되는 레이팅 포인트 매칭 시스템으로 운영됐다. 이와 같은 모든 요소를 고려해서 AI를 구축하는 것이 과제가 되었다.




기본적인 시스템의 현황을 파악하고 나서, 시즈키 도장의 세부목표와 개발 방향성이 정해졌다. 첫 번째로 '모든 유저가 자신과 같은 전직의 AI와 대전이 가능'해야 했다. 강연자는 전직 수만 51개나 되는 상황에서 해결책을 모색했다. 복잡도가 높은 콘텐츠였으므로, AI의 로직을 기획자가 바로 짤 수 있도록 환경을 만들었다. 스크립트는 Lua를 사용하여 쉽게 제작할 수 있도록 구성했다.

두 번째로 '유저의 콤보 학습을 도와야 한다'는 방향성이 있었다. 실제로 유저들이 사용하는 많은 콤보들을 쉽고, 빠르게 제작해야 하는 문제에 당면했다. 다음으로는 '유저와 같은 무빙'을 해야 한다는 점을 과제로 삼았다. 최대한 현실적인 움직임을 구현하기 위해, AI가 유저의 상황을 판단하고 이를 탐색하여 예측하는 움직임을 보여주고자 했다.

마지막으로는 '총 세 개의 난이도로 구분하여 만드는 것'을 신경 썼다. 레이팅으로 매칭이 이루어지는 만큼, 유저들의 수준에 맞는 AI를 제공하는 것이 목적이었다. 하지만 모든 AI를 별개로 만드는 것은 51개 X 3개 만큼의 시간이 소요되는 상황. 강연자는 이를 데이터로만 결정하는 것으로 정했다. 수치 입력에 따라서 AI가 똑똑해지거나 멍청해지거나를 결정하는 방식이었다.






■ AI가 짤짤이를 넣어요? - 키스트림 기반의 콤보 만들기

방향성이 설정되었다면, 이제는 본격적인 개발에 들어갈 차례다. 강연자는 콤보의 본질이 '상대가 무력화된 상태에서, 순차적으로 실행되는 흐름일 뿐'이라고 정의했다. 환경이 변하지 않고 일방적으로 진행되는 것이기에, 상대방이 공중에 띄워졌을 때 자신의 플레이만 진행하면 된다고 봤다.

그래서 기획자의 콤보 키 입력을 파일로 저장할 수 있는 기능을 제공했다. 이로써 쉽고 빠르게, '찍어낼 수 있는' 시스템으로 완성됐다. 기획자는 원하는 캐릭터로 콤보를 녹화하게 되며, 녹화 도중 기획자가 입력한 콤보 키는 텍스트 파일로 저장되는 형태였다.

AI 로직에서는 이러한 키 입력 파일을 그저 실행하기만 하면 되는 간단한 구성으로 해결할 수 있었다. 특정 게이지만큼 공격하면 자동으로 캐릭터가 공중에서 떨어지는 보정 시스템은 스크립트 실행 후, AI가 적정위치를 이동하는 것으로 해결했다. 유저 캐릭터의 보정 게이지를 AI가 파악하고 활용하는 로직으로 꾸려진 것이다.

간단한 해결책이었지만, 꽤 그럴듯한 시스템으로 완성할 수 있었다. AI는 어색하지 않은 공중 콤보를 사용하게 되었고, 작업에 드는 시간과 노력도 큰 편이 아니었다. 보정 게이지를 활용한다는 점에서, 보다 사람 같은 움직임과 판단을 보이기도 했다.






■ 더욱 더 사람 같은 움직임을 위해서 - 위험영역 기반의 무빙

강연자는 대전에 있어서 무빙이란 '나는 맞지 않고 상대방을 때리려는 움직임의 연속'이라고 설명했다. 복싱 선수의 움직임처럼, 자신이 맞지 않으려는 위치로 이동하고, 그곳에서 때릴 수 있는 위치를 확보하는 것을 말한다. 소위 말하는 '깔짝거리는 움직임'이 대표적인 예다.

이를 위해서 캐릭터의 스킬마다 유효한 판정범위를 '위험 범위'라는 이름의 데이터로 설정하고, AI가 유저의 공격 범위를 판단하여 움직일 수 있게 만들었다. 유저의 쿨타임에 따라서 위험 영역이 생겼다가 사라지는 형태이며, 여기에 일정 거리를 벌리는 스크립트가 합해졌다. 이와 같은 설계를 기반으로 스킬 쿨타임에 따라 접근 및 도주하는 형태의 AI가 구현됐다.






■ AI가 짤짤이를 넣게 하는 방법 - FSM의 상태정의

결과적으로 단순하지만, 효율적인 구성으로 FSM의 상태정의가 이루어졌다. 첫 번째로 적에게 접근해서 적의 위험 범위를 체크한 뒤, 콤보를 이어나가고 적절한 시점에서 다시 빠지는 형태로 구성했다. 이로써 유저와 흡사한 움직임을 구현할 수 있었다.

강연자는 특히 체크 스테이트를 따로 뺀 것이 주효한 결정이었다고 강조했다. 견제를 담당하는 상태를 따로 정의함으로써 '툭툭 치는' 행위부터 시작하여 띄웠을 때에는 공중 콤보를, 상대가 누웠을 때에는 다운 콤보를 진해할 수 있게 됐다고 설명했다. 상태를 별도로 분리함으로써 유저가 판단하거나 행동하는 것처럼 움직임이 구현되었다는 이야기다.

일련의 과정은 기획자가 직접 입력한 콤보로 학습이 가능한 수준으로 완성됐고, 위험 영역 기반으로 판단하는 방식을 활용하여 유저와 같은 무빙까지 구현됐다. 그리고 체크 스테이트를 별도로 분리하여 AI가 견제할 수 있는 모습까지 보였다. 기본적인 틀은 만들어졌고, 이를 난이도별로 구분하기만 하면 되는 상태였다.






■ 세 개를 따로 만들 필요는 없다 - AI 난이도 구현하기

레이팅에 따른 AI를 만들고자 한 강연자는 모든 로직을 분리하는 것은 힘들다고 판단했다. 50여 개 전직에 대해서 3개의 난이도를 따로 제작하는 데에는 많은 시간과 노력이 들어간다는 판단이었다. 그래서 난이도의 본질에 대해서 고민했다.

결국, 난이도란 숙련도의 차이이자, 같은 플레이라고 하더라도 조금 더 정교한 조작과 타이밍에 맞는 키입력에 있다고 기준을 잡았다. 이를 정확도라는 데이터로 구분하고, 정확도에 따라서 AI의 행동이 달라지게 구현했다. Lua 작성된 스크립트에서 기획자가 정확도 부분에 특정 값을 입력하면 행동이 달라지게 했다.

단순한 정확도 설정이었지만, 실제적인 효과를 볼 수 있었다. 노멀 모드 AI가 RP1000 유저에게 승률이 88.5%를 기록했지만, 마스터 난이도의 AI에게는 RP 1000 유저라도 할지라도 승률이 67.06%까지 떨어졌다. 해당 표본은 1만 5천여 건의 전투로 도출된 결과이므로, 그만큼 AI의 설계가 그만큼 효과적이었다는 증명이기도 하다.









■ 완벽하지는 않지만, 그럼에도 불구하고

강연자는 시즈키 도장의 AI가 의미 있는 결과물이지만, 미흡한 점도 있다고 설명했다. 유저들이 지적한 것처럼 투사체와 설치형 스킬에 취약한 면이 있었고, AI 별로 편차가 있다고 분석했다. 그럼에도 불구하고 키스트림 기반, 위험 영역 기반, 체크 스테이트를 이용한 FSM 등 간단하면서도 효율적인 아이디어로 생산성과 효율을 확보할 수 있었다고 정리했다.

마지막으로 "이러한 결과물은 개발자의 방향성을 신뢰하고 공감해준 동료들이 있었기에 가능했던 결과"라고 감사의 인사를 전하며 강연을 마쳤다.








댓글

새로고침
새로고침

기사 목록

1 2 3 4 5