게임 AI를 위한 탐색 알고리즘 입문 - 트리 탐색과 메타 휴리스틱으로 완성하는 최적화, C++ 기반 예제 코드 제공
아오키 에이타 지음, 서수환 옮김 / 한빛미디어 / 2024년 3월
평점 :
장바구니담기


오늘 리뷰할 책은 한빛미디어의 신간 '게임 AI를 위한 탐색 알고리즘 입문'이다. 알고리즘 이야기가 나오면 당연히 개발자(프로그래머)를 대상으로 하는 책이라고 생각을 하는데, 시스템의 이해와 밸런스 기획을 위해서도 게임 기획자에게도 필요한 지식이 담긴 책이라고 생각한다. 나는 기획자이기 때문에 기획자 입장에서 이 책의 리뷰를 쓴다.



파란색 OX 게임(틱택토)을 배경으로 검은 바탕에 깔끔한 디자인의 표지. C++ 기반의 예제 코드를 제공한다고 쓰여있다. 3장~8장에서 사용하는 예제 코드를 홈페이지를 통해 다운로드할 수 있다. 책의 첫 부분은 예제 코드의 다운로드 경로 안내와 함께 명령어 실행법 등을 간략하게 다루고 있다.



" 게임의 즐거움은 어디에서 오는가? "


게임성을 만드는 데 빠질 수 없는 난이도 조절. 너무 어려워서 포기하게 만들지 않고, 그렇다고 너무 쉬워서 시시하게 느끼지 않도록 적당한 긴장감을 유지할 수 있도록 난이도를 유지하는 역할을 게임의 AI가 담당하고, 그런 게임 AI가 사용하는 방법이 바로 이 책에서 말하는 탐색 알고리즘이다.


"왜 이 게임이 재미있는지" 콘텐츠를 분석하는 것이 주니어 기획자의 영역이라면, '어떻게 재미를 느끼게 할 것인지' 시스템으로 논리적으로 설득할 수 있는 것이 시니어 기획자라고 생각한다. 그런 면에서 기획자도 알아두면 유익한 내용들을 담은 책이라고 할 수 있다.



대전 게임의 AI라고 하면 딥러닝으로 널리 알려진 알파고를 떠올릴 수 있는데, 대전 게임 AI는 머신러닝뿐만 아니라 규칙 기반, 탐색 세 종류 기술 요소를 사용한다고 한다. 이 중 규칙 기반은 사람이 직접 만든 규칙에 따라 조건 분기하는 것을 뜻하며, 이 책은 앞의 세 종류의 기술 요소 중 '탐색'에 중점을 두고 설명하는 책이다.



시작은 OX 게임이라고도 불리는 틱택토 게임의 예를 들어서 게임 트리와 탐색의 기본 개념에 대해 설명한다.



게임의 시작부터 끝까지 모든 수를 포함한 게임 트리를 특별히 '완전 게임 트리'라고 부르며, 완전 게임 트리를 분석한 플레이어는 언제나 최선의 수를 선택할 수 있다. 하지만 게임 트리는 게임의 복잡성에 따라 지수 함수적으로 커지기 때문에 대부분의 게임을 완전 트리를 분석하는 건 현실적이지 않다. 그렇기 때문에 게임의 일부만 게임 트리로 표현하고, 한정된 자원으로 우선순위를 정하고 고심해서 좋은 답을 찾는데, 이 기법을 통틀어 '게임 트리 탐색'이라고 부르고 이 책은 대부분 이 '게임 트리 탐색'을 설명한다.


틱택토 같은 게임은 단순하기 때문에 완전 게임 트리가 크게 복잡하지 않고, 그렇다 보니 선공과 후공에 따른 필승 전법이 이미 적나라하게 알려져 있다. 라프코스터의 재미이론에서도 언급하듯 몇 번 플레이를 해보고 나면 이런 평이한 난이도의 게임은 더 이상 사용자에게 즐거움을 주지 못하고 플레이가 계속되지 못한다. 그래서 레벨과 밸런스의 영역은 기획자에게도 어려운 영역이다. 그 적절한 줄타기를 수와 이론적으로 해내야 하고 잘되면 평타인데 못하면 개망이거든.



이 책은 컨텍스트가 있는 1인 게임, 컨텍스트가 없는 1인 게임, 교대로 두는 2인 게임, 동시에 두는 2인 게임. 총 네 종류로 게임을 분류하고 설명한다. 여기서 신입이라면 컨텍스트라는 단어가 다소 생소할 수 있는데, '플레이어의 행동에 따라 상황이 변화하는 것'을 컨텍스트가 있다고 한다. UI/UX 기획자에게 '컨텍스트'란 매우 밀접한 조건이며, 게임 기획자에게도 아주 중요하고 필요한 개념이다.


'컨텍스트'에 대한 이해와 지식이 있는 게임 기획자는 '시스템'에 대한 이해와 지식이 있는 게임 기획자처럼 같은 업무를 할 때 경쟁력을 가질 수 있다. 특히 사용자의 자유도를 어디까지 허용할 것인지, 자유도가 없음에도 유저가 자유도가 있다고 느낄 수 있는 콘텐츠와 시스템을 기획할 때 도움이 된다.



기획자가 왜 탐색을 배워야 할까. 개인 게임 개발을 한다면 서버 구축이나 온라인 실시간 대전 게임을 개발하기는 쉽지 않은데, AI 대결 상대를 만들어 클라이언트만으로 대전 게임을 개발할 수 있다. 뭐 개인 게임 개발을 넘어서 회사에서도 항상 풀 리소스를 투입해서 개발을 할 수 있는 상황이 있는 건 아니기 때문에 활용할 수 있는 플랜을 더 많이 알고 있다면 실무에 더욱 효율적일 수밖에 없다.



책에서는 순서대로 컨텍스트가 있는 1인 게임에서 사용하고 싶은 탐색 알고리즘과 컨텍스트가 없는 1인 게임에서 사용하고 싶은 탐색 알고리즘을 다루고 각 장에서 다양한 탐색 기법을 소개하고 구현 방법을 알려준다. 예제 코드가 제공되기 때문에 어렵지 않게 따라 할 수 있다. (신입 기획자가 보기에는 어렵다. 프로그래머가 보기엔 쉬움.)



그리고 바둑같이 교대로 두는 2인 게임에서 사용하고 싶은 탐색 알고리즘을 다루며 탐색 기법을 소개하고 구현 방법을 알려준다. 조금 아쉬운 점은 이 책의 대상 독자가 '알고리즘에 흥미가 있으신 분'부터 시작해서 '대결 게임을 개발하고 싶지만 CPU를 만드는 방법을 모르시는 분'까지로 시작부터 어느 정도 베이스 지식이 있어야 이해하고 볼 수 있는 책이기 때문인지, 교대로 두는 2인 게임이라고 하면서도 그게 무엇인지 대체적인 예시 이미지 하나 없다는 점이 좀 아쉽다. 그랬다면 기획자들도 좀 더 흥미를 가지고 볼 수 있는 책이 되지 않았을까 하는 아쉬움이 남는다.


교대로 두는 2인 게임의 탐색 알고리즘 다음으로는 동시에 두는 2인 게임의 탐색 알고리즘을 다룬다. 순서가 교대로 돌아온다면 상대방 행동을 확인하고 나서 자신의 행동을 검토할 수 있는데, 상대방과 자신이 동시에 두는 상황이라면 무엇을 고려해야 할까? 그런 면에서 이 책은 기획자에게도 다양한 상황에 대한 시뮬레이션을 돌릴 수 있어서 좋은 책인 것 같다.


둘이서 동시에 두는 탐색 알고리즘을 판 다음에는 더 좋은 탐색을 하는 기법들에 대해 다룬다. 평가 함수 설계나 다양성 확보 방침 등을 여기에서 배울 수 있다. 그리고 마지막 8장에서 실제로 존재하는 게임에 탐색 알고리즘을 적용해서 AI를 강화하는 방법을 실습한다. 8장까지는 안 간다고 해도 기획자 입장에서 대단히 유익한 책이었고, 쫀득한 퍼즐 게임의 밸런스를 만들고 싶은 기획자라면 이 책을 한 번 읽어보기를 추천하고 싶다.



"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo