애니팡4와 유니티 시뮬레이션
선데이토즈는 모든 유저들에게 최고의 재미를 선물하기 위해 항상 최선을 다하고 있습니다.
그를 위해 새로운 기술과 시스템을 적극 활용하고 있습니다.
이번에는 애니팡4에서 유니티 시뮬레이션을 활용하여 게임의 안정성을 향상 시키고 스테이지의 난이도를 조절하여 유저 경험을 개선한 사례를 소개하겠습니다.
이 글은 Unite Seoul 2020의 Unity Game Simulation, 게임의 본질에 집중하게 하다. 세션을 기반으로 작성되었습니다.
안정성
애니팡4는 현재 40개에 달하는 오브젝트와 기믹으로 1200개가 넘는 스테이지를 만들어 유저분들에게 서비스하고 있으며 2주마다 새로운 스테이지와 오브젝트들을 추가하고 있습니다.
유저 여러분께 새로운 재미와 도전을 선물해드리기 위해 열심히 일하고 있죠.
물론 새로운 기능의 추가는 개발팀에게도 많은 도전이 됩니다.
새로운 기능이 기존의 오브젝트들과 상호작용하면서 문제가 생기지 않는지, 혹은 새로운 스테이지에서만 발생하는 문제는 없는지 매번 업데이트마다 신경을 곤두세우게 됩니다.
그래서 개발팀과 QA팀이 협력하여 열심히 게임을 플레이하며 문제가 발생하는지 체크하는 것이 일상이랍니다.
난이도 밸런싱
게임의 재미를 결정짓는데 있어서 가장 중요한 요소 중 하나는 바로 난이도 입니다. 퍼즐게임이 그저 쉽기만 하다면 과연 재미있는 게임이라고 할 수 있을까요?
비록 어렵더라도 유저의 노력, 그리고 약간의 운에 의해 아슬아슬하게 게임을 클리어해내는 것이야 말로 퍼즐게임의 묘미라고 할 수 있습니다.
그래서 개발팀은 항상 새롭게 스테이지를 만들어낼 때마다 어떻게 하면 유저분들께 아슬아슬한 즐거움을 선사할 수 있을지 고민합니다.
하지만 고민만 한다고 해서 게임의 난이도를 알맞게 조정할 수 있는 건 아니죠.
머리로만 고민하는 것이 아니라 손가락으로 직접 새로운 스테이지를 플레이 하면서 성공율, 실패율을 확인하고 적절한 턴 수를 결정하고 있습니다.
오토 플레이 머신
안정성을 높이고 난이도를 조절하기 위해선 실제로 게임을 플레이하면서 데이터를 수집해야만 합니다.
직접 신규 기능들을 플레이하면서 미처 확인하지 못한 문제가 생기진 않는지, 신규 스테이지를 클리어하는 데 몇 번의 턴이 소비되는지 등을 확인해야 하죠.
하지만 2주라는 짧은 일정과 제한된 인력으로는 많은 데이터를 만들어 내기 어렵습니다.
간단히 계산해 볼까요?
사람이 하나의 스테이지를 플레이하는데 평균 3분 정도의 시간이 소요됩니다. 연출로 인해 시간이 길어지기도 하고, 최적의 선택을 위해 고민하는 시간도 필요하니까요.
그렇기 때문에 근로기준법 제49조에 의거 1일의 근로시간 8시간 동안 쉬지 않고 테스트한다고 해도 하루에 한명이 플레이할 수 있는 스테이지 수는 160개에 불과합니다.
2주마다 개발팀은 총 30개의 스테이지를 만든 후 그 중에서 20개의 스테이지를 선택하여 업데이트를 합니다. 즉 한명이 하루에 하나의 스테이지를 5번 밖에 플레이할 수 없다는 것이죠.
그렇다고 매 업데이트마다 스테이지만 테스트할 순 없죠. 스테이지 이외의 새로운 기능들도 테스트 해야 하니까요.
업데이트 일정과 인력의 한계를 생각하면 실제로 새로운 스테이지를 테스트할 수 있는 횟수는 매우 제한됩니다.
이러한 한계를 극복하기 위해 선데이토즈에서는 3매치 퍼즐을 자동으로 플레이하는 오토 플레이 머신을 개발했습니다.
오토 플레이 머신은 게임 환경과 데이터를 즉각적으로 인지할 수 있기 때문에 사람과 달리 연출을 기다리거나 플레이를 고민할 필요가 없습니다. 덕분에 스테이지 당 평균 플레이 시간이 20초까지 줄일 수 있었습니다.
또 사람과 달리 근로기준법의 보호를 받지 않기 때문에 24시간 내내 스테이지를 플레이 시킬 수 있습니다.
즉 하루에 4320번 스테이지를 테스트할 수 있게 된 것이죠.
하지만 여전히 한계는 있습니다.
4320번 테스트를 하는 도중에 오류가 나서 게임이 멈춘다면 어떻게 해야 할까?
난이도 밸런싱을 위해서는 스테이지 성공/실패율이 필요한데 해당 정보를 어떻게 수집해야 할까?
완전한 테스트 자동화를 위해선 오류 로그를 별도로 수집하고 테스트를 강행할 수 있어야 합니다.
그리고 스테이지 성공/실패에 대한 자료를 수집하고 해당 자료를 시각화해서 보여주는 시스템도 필요하죠.
유니티 시뮬레이션
유니티 시뮬레이션은 유니티 프로젝트 인스턴스를 클라우드 환경에 업로드한 후 일괄적으로 실행할 수 있는 클라우드 서비스입니다.
유니티에서 직접 관리하는 클라우드를 사용하므로 컴퓨팅 소프트웨어나 하드웨어의 관리 없이 시뮬레이션 환경 구성 및 결과 분석에만 집중할 수 있습니다.
특히 여러 인스턴스를 동시에 빠른 속도로 실행할 수 있고 각 인스턴스의 환경을 파라미터로 컨트롤할 수 있어 많은 데이터를 생산할 필요가 있는 머신러닝 분야에서 많은 기대를 받고 있는 서비스입니다.
뿐만 아니라 실행 결과 및 로그를 raw data로 받을 수 있기 때문에 시뮬레이션 경과를 별도로 분석할 수 있습니다.
또한 데이터 시각화를 위한 API를 제공하기 때문에 별도의 툴을 구현하여 시뮬레이션의 성과를 확인하기에도 편리합니다.
이러한 장점은 앞서 이야기했던 완전한 테스트 자동화의 필수 조건을 완벽하게 충족시켜 줍니다.
따라서 테스트 자동화 및 난이도 밸런싱을 위해 애니팡4에 유니티 시뮬레이션을 적용하기로 결정했습니다.
애니팡4와 유니티 시뮬레이션
먼저 유니티 시뮬레이션을 통해 오토 플레이 머신의 성능을 개선하기로 했습니다.
유니티 시뮬레이션을 통해 샘플링한 스테이지들을 오토 플레이 머신으로 1000회 가까이 플레이하면서 오토 플레이 머신의 성능을 개선하였습니다.
위 그래프에서 노란 실선은 유저들의 실패율입니다.
시뮬레이션을 통해 개선을 거듭한 결과 오토 플레이 머신의 실패율과 유저들의 실패율과 매우 유사해졌습니다.
이후 유니티 시뮬레이션을 통해 오류를 감지했습니다.
스테이지 테스트 중 오류가 발생할 경우 raw data를 통해 당시의 환경과 입력값, 그리고 실제 발생한 오류 메시지를 확인할 수 있습니다.
그리고 개발자의 환경에서 동일한 오류를 재현하여 문제를 해결할 수 있었습니다.
유니티 시뮬레이션을 통해 획득한 데이터와 기존 라이브 유저들의 실패율을 비교하여 적정한 턴수를 결정할 수 있었습니다.
파라미터에 턴 수를 입력한 후 오토 플레이 머신으로 테스트를 진행하여 각 턴 수에 따라 스테이지 별 실패율을 확인할 수 있습니다.
뿐만 아니라 아이템을 사용했을 때의 실패율, 스테이지를 성공했을 때의 남은 이동 횟수, 스테이지를 진행하면서 블럭 재배치가 일어난 횟수까지 데이터를 확인할 수 있어서 해당 데이터를 토대로 각 스테이지의 경험을 예측할 수 있습니다.
3매치 퍼즐게임은 랜덤 요소가 게임에 크게 영향을 미칩니다. 또한 유저의 성향과 실력에 따라서도 스테이지의 체감 난이도가 달라지기 마련이죠.
일정한 플레이 스타일을 보이는 오토 플레이 머신의 플레이 데이터를 토대로 최대한 많은 유저들을 위한 난이도 밸런싱을 진행할 수 있었고 또한 각 스테이지 별 플레이 경험 지표를 통해 각 스테이지들을 개선할 근거를 마련할 수 있었습니다.
맺음말
애니팡4에 유니티 시뮬레이션을 적용함으로써 신규 스테이지와 기능을 제작하고 테스트 하기 위한 인력과 시간을 크게 절약하고 더욱 많은 데이터를 토대로 적절한 난이도를 제공할 수 있게 되었습니다.
그로 인해 더욱 재미있는 게임을 만드는 데 온전히 집중할 수 있게 되었죠.
앞으로도 선데이토즈는 유저 여러분께 더 많은 재미와 더 나은 경험을 제공하기 위해 계속해서 새로운 도전을 이어 나가겠습니다.
참고자료
아래 참고자료를 통해 유니티 게임 시뮬레이션을 사용하는 데 있어 필요한 팁들을 얻으실 수 있습니다.
많은 시청 바랍니다.