와우할때도 그렇고 개발 철학같은 글이 참 재밌더라구요. 그래서 번역해봤습니다.

의미 전달이 잘 되지 않는 부분이나 번역투 느낌이 나는 부분 지적해주시면 감사하겠습니다.



안녕하세요!

다시 찾아온 개발자 블로그에 오신 것을 환영합니다. 이번엔 게임플레이 팀이 아니라 봇에 대해 얘기하려고 해요. 믿으실지 모르겠지만 AI전은 리그 오브 레전드에서 꽤 많은 게임 시간을 차지하고 있거든요. 최근에 봇들을 더 사람처럼 행동하게 하기 위해서 여러 가지를 바꿨는데요, 업데이트 뒷이야기에 대해 관심이 있으실 거라고 생각했어요.

언제나처럼 여러분의 의견은 개발자 블로그가 나아지는데 많은 도움이 되겠지만, 그 전에 봇에 대한 얘기부터 해보죠! 단상에 오르시는 분은 저희의 뛰어난 디자인 분석팀의 RoamingNumeral입니다. 시작하죠! - Pwyff

왜 봇을 업데이트 했나요?

AI전은 30레벨 플레이어들도 꽤 플레이하고 있습니다. 저희의 로봇 친구들과 함께하시는 많은 시간들을 좀 더 재밌게 만들자고 결정했어요.

우선 봇전, PVP 플레이어들 양쪽 모두가 봇에 대해 어떻게 생각하는지 조사했어요. 한 가지 명백한 점은 모두들 좀 더 사람같은 봇을 원한다는 것이었죠. 좀 더 예측하기 어렵고 막타랑 콤보처럼 사람들이 중요시하는 걸 따라하는 봇요. 더 강한 봇에 대한 요구는 상대적으로 적었어요. 그래서 조사 결과에 따라 사람같은 봇을 이번 업데이트의 최우선 과제로 삼았어요. 이 업데이트들이 차후에 있을 더 어려운 봇전을 더 재밌게 만들어주기도 할 테니까요.

플레이어들은 봇들이 위험과 강함에 대해 생각하는 방식이 사람들과 다르다고 지적했어요. 물론 그게 맞았죠.

위협 평가를 개선

위협 평가는 봇들이 자신들이 얼마나 세고 적들이 얼마나 강한지에 대해 평가하는 방식을 저희가 부르는 방법이에요. 이 시스템은 게임 시작부터 끝까지 봇들의 행동에 관여해요.

저희가 이전에 쓰던 위협 평가는 다른 게임들에서도 많이 쓰이는 방식으로, 특히 FPS에서 볼 수 있어요. 봇은 지금 이 시점 바로 이전까지 짧은 시간동안 얼마나 많은 데미지를 받았는지에 기반해서 앞으로 있을 위협에 대해 판단해요. FPS에서는 잘 맞아 들어가죠. 길 모퉁이에서 왔다갔다하다가 많은 데미지를 받았다면 거기 계속 있다간 더 맞을테니 물러나는게 최선이죠.

리그 오브 레전드는 좀 달라요. 베이가가 스킬을 봇에게 퍼부어버리고 나서 봇이 살아남으면 그때는 도망가야 할 때가 아니죠. 그건 이제 봇이 그 쪼끄만 ㅆXㅅX를 터뜨려버릴 때죠! 베이가는 모든 스킬이 쿨다운에 걸려 있을 때는 거의 공격력이 없으니, 베이가가 약한 동안 이제 좀 때리러 가봐야죠?

새로운 위협 평가는 이제 이런 상황에서 체력만 보는 것이 아니라 봇 자신과 주변의 상대들이 얼마나 많은 스킬을 쓸 수 있는지도 함께 생각해요. 결과적으로, 위협 평가가 명확히 발전했어요(베이가에게는 슬픈 일이지만)


그렇다고는 해도, 새 위협 평가가 모든 걸 다 해주진 않아요. 리그 오브 레전드는 봇이 아니라 사람들이 플레이하도록 개발되었기 때문에 재밌는 문제들을 갖고 있어요. 예를 들어서, 게임은 스킬이 막상 쓰이기 전까지는 뭐가 어떻게 될지 알지 못해요. 모르가나 궁극기를 쓰고 나면, 누군가가 끈을 끊어냈는지 계속해서 확인하는 스크립트가 실행돼요. 채널링 시간이 끝나면 이제 스크립트가 "너 못 끊었으니까 스턴+데미지" 하고 아직 범위 안에 남아 있는 모든 챔피언들에게 얘기하는 거죠. 모르가나가 궁극기를 쓰기 전에는 게임 자체에서 데미지와 스턴을 넣을지 판단을 할 수가 없어요.

당연한 얘기였지만, 그 이유는 사람들이 툴팁을 읽고 뭐가 일어날지 예상을 할 수가 있기 때문이에요. 결론적으로, 스킬을 사용했을 때 뭐가 일어나는지 게임 시스템이 계산을 할 수는 있지만, 읽을 수도 없고 배울 수도 없는 봇의 입장에서 예측이라는 행위는 큰 문제가 되죠.

그렇기 때문에, 이번 업데이트는 챔피언들이 만들어내는 데미지에 대해서 좀 투박한 예상치를 쓸 수밖에 없었어요. 봇들은 여전히 너무 들이대거나 이길 수 있는 상황에서 도망가거나 할 거예요. 완벽하게 모든 걸 계산할 수는 없기 때문에.. 사람들처럼 말이죠 :P

왜 정글링과 벽 넘기를 하지 않는지

이유는 딱 하나예요. 봇들은 벽이 어디있는지, 심지어는 벽이 뭔지도 몰라요.(봇하기 참 힘들죠?)

이건 사실상 위협 평가와 맞닿아 있어요. 리그 오브 레전드는 사람들을 위해 만들어진 게임이거든요. 사람들에게는 왜 벽을 돌아서 가야하는지가 명확하죠. 거기 벽이 있으니까요! 하지만 봇은 그냥 주어진 최단거리 경로를 따라갈 뿐이에요. 벽이 정확히 어디 있는지나 얼마나 두꺼운 벽인지는 몰라요. 장애물이 사실 벽인지 아닌지도 모르거든요. 벽 대신 미니언이 쌓여있을 수도 있구요. 봇은 단지 여기서 저기까지 가는 최단경로 계산 시스템이 건네준 길을 신나게 따라갈 뿐이에요.

점멸이나 다른 스킬들로 벽을 넘는 것도 똑같은 이유로 어려워요. 벽이 얼마나 두꺼운지, 얇은 벽은 어디에 있는지 판단하는 걸 구현하기는 거의 불가능해요. 벽 넘기를 만들어내려면 지형에 관한 거의 모든 걸 뒤엎어야 해요. 아주 멀고 먼 미래가 되겠죠.

정글링도 거의 같은 이야기예요. 정글링을 잘 하기 위한 것 중에 하나는 길이 안전한지 처럼 거리 외에 다른 요소를 포함해서 좋은 경로를 고르는 것이죠. 지형과 경로 선택에 관한 시스템을 바꾸지 않고서는 정글러 봇은 단지 돌아다니는 300골짜리 선물밖에 안 될 거예요.

저희도 물론 벽 넘기와 정글러 봇이 정말 멋질 거라고 생각하고, 나중에 봇들이 실제로 해낼 수 있도록 시스템을 바꿀 방법을 찾으려고 해요. 하지만 지금은 전투에서 봇들이 할 수 있는 것들에 집중하기로 했어요.

스킬샷 피하기

사람과 봇은 스킬샷이 다가올 때 어떻게 반응하는지에 대해서도 많이 다르죠. 사람들은 웬만하면 피하려고 할테지만 봇은 아예 움찔하지도 않아요. 전혀 사람같지 않은 행동이니 저희는 정말 이걸 바꾸고 싶었어요. 하지만 역시 같은 문제에 도달했죠.(예상하시죠?) 지형 문제처럼, 봇들은 스킬샷을 볼 수가 없어요.

이건 니달리가 던진 창이 애니 봇에게 만들어내던 상황이에요.

애니 봇 접속..
스캔중..
대상 : 니달리
내 HP : 높음
대상 Q 상태 : 사용 가능
행동 : 좋을대로 파밍

----

스캔중..
대상 : 니달리
내 HP : 높음
대상 Q 상태 : 쿨다운
행동 : 좀 더 파밍

----

스캔중..
대상 : 니달리
내 HP : 낮음
대상 HP : 높음
대상 Q 상태 : 쿨다운
행동 : 헐 ㅆX 내 HP 어디감? 니달리 OP 너프좀(도망)

----

애니 봇에겐 다행스럽게도, 라이옷은 봇들이 이미 갖고 있는 정보를 통해서 최소한 스킬샷을 피하려고 시도는 할 수 있는 방법을 찾았어요. 적들이 보고 있는 방향과 어떤 스킬이 방금 쓰였는지를 통해서 어떤 경우에는 스킬샷을 피하려고 할 수 있게 되었어요.

이건 업데이트 후에 투창이 애니 봇에게 만들어내는 일이에요.

애니 봇 접속...
스캔중...
대상 : 니달리
내 HP : 높음
대상 Q 상태 : 사용 가능
행동 : 파밍

----

스캔중...
대상 : 니달리
내 HP : 높음
대상 Q 상태 : 쿨다운
[Q 쓴 거 확인됨]
논타겟? : OK
대상이 나 보고 있음? : OK
행동 : 멋들어지게 피함

----

스캔중...
대상 : 니달리
내 HP : 높음
대상 Q 상태 : 쿨다운
행동 : ㅈX 멋지게 들어가서 확 뿌셔버림



업데이트를 통해서 봇들은 이제 스킬샷을 피하려고 시도할 수 있어요.. 물론 완벽하진 않지만요. 예를 들어서, 애니비아의 Q는 끝까지 가거나 터뜨리기 전까지 쿨다운이 돌지 않아서 쓰더라도 봇이 알 수가 없어요. 아리의 Q는 돌아오기 때문에, 봇이 처음엔 피할 수 있어도 돌아오는 건 모르구요. 시스템이 다룰 수 없는 스킬들도 아직 있지만, 최소한 몇 개는 피하는 것이 아예 피하지 않는 것보단 훨씬 낫죠!

콤보와 아이템

위에서처럼 기술적인 부분들 말고도, 단지 시간만 들여서 봇들을 사람처럼 행동하게 할 수 있는 방법도 있었어요. 스킬 콤보와 아이템 빌드처럼요. 품질 관리팀의 다이아 랭커 Riot Afic이 많이 도와준 덕분에, 이제 봇들은 요즘 많이 쓰이는 콤보와 좀 더 말이 되는 아이템을 살 거예요.

한 가지 말씀드리자면, 애니 봇은 이제 점멸 티버를 써요. 준비 잘 해두세요.

사람같은 봇

당연한 얘기지만 더 많은 경우들을 고려하게 되면 그만큼 계산할 게 많아지죠. 저희 팀의 RiotAaronMike와 RiotWooTang이 엄청난 최적화를 해준 덕에 서버에 영향을 미치지 않고 이번 업데이트를 내놓을 수 있게 되었어요.

봇들을 좀더 효율적이고 사람같이 보이게 하는 방법 중에 하나는 상황에 따라 주변을 스캔하고 반응하는 속도를 늦추는 거였어요. 초급 봇은 이제 전에 스캔하던 빈도의 33% 정도로, 중급 봇은 위협 평가에 따라 50%에서 100% 사이의 빈도로 스캔해요. 어느 쪽도 '늦다'고 말할 수 있는 수준은 아니지만, 전처럼 즉시 반응하지는 않기 때문에 말도 안 되는 초인적인 반응속도를 보이지는 않을 거예요.

이 변화들과 수많은 다른 업데이트들 덕분에 이제 저희는 봇들이 좀 더 사람같아졌다고 느껴요. 물론 다이아 랭커들만큼은 아니지만(아마 실버도 안 되겠지만) 다이아 랭커 봇을 만드는 게 목적은 아니에요. 저희는 이제 새로운 봇들로 뭘 할 수 있을지 찾고, 새로 리그 오브 레전드를 접한 플레이어들의 첫 몇 AI게임들을 더 나아지게 만드려고 해요. 다음 포스트를 기대해주세요! - RoamingNumeral

----------------

잘 읽히지 않거나 번역체가 보이면 말씀해주세요. 어떻게 바꾸는 게 좋을지 제안해주시면 더 좋겠네요.