저는 게임서버 개발자를 희망했었습니다. 하지만 맙소사 첫 회사에 입사하고나니 인력이 부족한 게임플랫폼 팀에 배치되었습니다. 이게 현실이었습니다. 그 곳에서 처음으로 Android, iOS로 게임을 호환시키고, 배포, 관리하는 방법을 배우게 되었습니다.

이야기

처음에는 새로운 작업을 배우는 것이 흥미로웠습니다. 그러나 다양한 운영 체제에 맞게 프로젝트 코드를 관리하고 성능을 모니터링하며 유지하는 것은 쉽지 않았습니다. 새로운 기능을 추가할 때마다 Android와 iOS용으로 각각 코드를 작성하고 테스트를 진행해야 했습니다. 게다가 기기 호환성 측정은 더욱 복잡한 문제였습니다. FPS와 메모리 사용량을 여러 기기에서 동일한 환경에서 측정해야 했습니다. 심지어 게임이 어느 정도 인기가 있었음에도 불구하고, 저를 포함한 개발자들은 직접 FPS와 메모리 사용량을 수동으로 측정해야 했습니다. 이 과정은 한 번 실행하는 데 몇 시간이 걸렸던 것 같습니다. 게임 프로파일링을 위해 빌드하고 설치하고, 동일한 환경 설정으로 반복적으로 측정을 수행해야 했습니다. 더욱 안타까운 점은 대부분의 게임 프로젝트가 규모가 크기 때문에 빌드 및 설치에 많은 시간이 소요된다는 것이었습니다.

시간이 흐르면서, 저는 이러한 과정에 지쳐갔습니다. "왜 나만이 이 작업을 해야 하는 걸까요? 어떤 부분을 어떻게 측정해야 하는지도 잘 모르는데, 컨텐츠를 개발한 사람이 직접 측정하는 게 맞지 않을까요?"라는 불만과 의문이 생겼습니다. 그때, 웹 및 모바일 개발에 익숙한 동료 개발자가 Appium이라는 도구를 소개해 주었습니다. 그는 게임 테스트 자동화를 해보자고 제안했습니다.

저는 Appium과 Selenium의 존재조차도 몰랐습니다. 이전에는 AutoHotkey와 같은 매크로 도구만 알고 있었습니다. 그러나 Appium과 Selenium은 xpath를 기반으로 UI를 조회하고 클릭하거나 드래그하는 기능을 제공하는 것을 알게 되었습니다. 이 아이디어를 처음으로 접했을 때, 게임에도 이를 적용할 수 있다는 것을 깨달았습니다. 다행히도 게임 프로젝트에는 자체 UI 시스템이 있었고, UI 요소들은 각각 고유한 식별자(ID)를 가지고 있었습니다. 그래서 우리는 게임에 TCP 소켓 서버를 추가하고, Node.js 클라이언트를 사용하여 패킷을 전송하며 UI를 조회하고 Click, Drag하는 기능을 구현했습니다. 또한, 실행 시간에 Interpret 가능한 스크립트를 실행하는 기능도 추가했습니다.

결과

이 결과는 성공적이었습니다. 우리가 개발한 기능은 모바일 프로젝트에 적합하며, 새로운 콘텐츠가 추가될 때마다 자동으로 Android와 iOS 기기에서 여러 번의 FPS, 메모리 등의 측정 작업을 수행하고 결과를 확인할 수 있었습니다. 이제 더 이상 소중한 개발자와 품질 보증(QA)팀의 시간을 낭비할 필요가 없었습니다. 그 결과, 우리는 이 아낀 시간을 다른 흥미로운 작업에 투자할 수 있었습니다.

그러나 마음속에는 아쉬움이 남았습니다. 이 시스템의 리포트가 여러 곳에 흩어져 있었습니다. Jenkins, Kibana 등 여러 도구에 분산되어 있어서 테스트를 시작하는 버튼을 찾아야 했고, 결과는 다른 곳에서 리포트되었습니다. 또한, 우리는 다양한 정보를 필요로 했는데 Kibana는 차트 정도만 제공할 뿐이었습니다.

자동화 시스템을 개발하는 데 많은 시간이 소요되었습니다. 게임 제어와 같은 핵심 기능은 완성했지만, 리포트 및 기기 관리의 필요성이 생겨서 추가로 개발해야 했습니다. 그러나 진행하기에는 아쉬움이 있었습니다. 이 자동화 시스템은 해당 프로젝트에만 적용할 수 있었고, 다른 프로젝트에는 적용하기 어려웠습니다. 또한, 다른 게임 회사나 프로젝트에서 겪을 수 있는 문제를 해결해 줄 수 없었습니다. 그래서 우리는 모든 회사에서 사용할 수 있는 솔루션을 개발하고 싶은 욕심이 생겼습니다.

그래서 우리는 GamiumDogu 솔루션을 개발했습니다. Gamium은 게임을 스크립트로 제어할 수 있는 기능을 제공합니다. 그리고 Dogu 솔루션과 연결하면 리포트 및 기기 관리를 브라우저에서 공간 제약 없이 수행할 수 있습니다. 이제 더 이상 문제가 발생한 기기를 찾기 위해 기기들을 뒤지거나 돌아다닐 필요가 없습니다.

Gamium

우리는 Gamium을 오픈 소스로 배포했습니다. 이를 통해 다양한 게임 엔진과 클라이언트 언어를 지원하며, 많은 프로젝트에서 반복적이고 지루한 작업을 빠르게 해결할 수 있기를 바랍니다.

Dogu 솔루션

만약 Gamium을 적용해서 만족하셨다면 Dogu 솔루션을 사용해보세요. Dogu 솔루션은 조직 내의 기기를 원격에서 제어할 수 있고, 기기를 분류하여 특정 기기에 원하는 테스트 스크립트를 실행할 수 있습니다.