포켓몬 카드 게임 Pocket: 캐주얼 게임에 Vulkan 전용 개발 채택

포켓몬 카드 게임 Pocket의 게임 제목 로고 스크린샷

포켓몬 트레이딩 카드 게임 (TCG)은 전 세계에서 30년 가까이 사랑받고 있습니다. 최근에 출시된 포켓몬 카드 게임 Pocket은 플레이어가 실물 카드 없이 언제 어디서나 포켓몬 컬렉션과 배틀을 즐길 수 있도록 설계되었습니다. 스마트폰에서 액세스할 수 있는 게임이라는 점이 사용자들 사이에서 널리 인기를 얻는 데 기여했습니다.

캐주얼 카드 게임처럼 보이지만 포켓몬 카드 게임 Pocket은 복잡한 셰이더를 사용하므로 컴파일 시간을 줄이는 데 상당한 어려움이 있습니다. 이 문제를 해결하고 고화질 그래픽과 원활한 게임 환경을 제공하기 위해 Pokémon TCG Pocket의 Android 버전에서는 차세대 그래픽 API인 Vulkan을 채택했습니다.

이 문서에서는 Pokémon TCG Pocket 개발팀의 Vulkan 채택, 발생한 문제, Vulkan이 제공하는 이점을 자세히 살펴봅니다.

그림 1. 포켓몬 카드 게임 Pocket 게임 플레이 장면

Vulkan을 채택하는 이유

처음에 포켓몬 카드 게임 Pocket 개발팀은 OpenGL ES를 사용할 계획이었습니다. 하지만 미래가 유망한 그래픽 API인 Vulkan을 채택하기로 결정했습니다. Vulkan을 선택한 주된 이유는 다음과 같습니다.

  • 장기 앱 관리: Vulkan이 Android의 주요 그래픽 API가 되는 추세를 인식한 팀은 Vulkan이 장기 앱 관리에 최적의 선택이라고 판단했습니다.
  • 저사양 기기에서 안정적인 성능: 다양한 사용자에게 원활한 환경을 제공하려면 저사양 기기에서 안정적인 성능을 제공하는 것이 필수적입니다. Vulkan의 CPU 부하 감소 기능으로 프레임 속도와 배터리 소모량이 개선될 것으로 예상됩니다.
  • 대규모 출시 후 변경사항 방지: 출시 후 OpenGL ES에서 Vulkan으로 전환하면 광범위한 수정이 필요하여 사용자 환경이 중단될 수 있습니다. 처음부터 Vulkan을 채택하여 이러한 큰 변화의 필요성을 완화했습니다.

Unity로 Vulkan 구현

Pokémon TCG Pocket은 Unity를 게임 엔진으로 사용합니다. Unity는 클릭 한 번으로 Vulkan을 구현하는 간소화된 프로세스를 제공합니다. 개발팀은 Unity를 사용하여 전문적인 교육 없이도 Vulkan을 원활하게 통합했습니다. 또한 개발 환경 및 도구에 맞는 Vulkan 관련 조정이 부족하여 비용 효율성이 떨어졌습니다.

Unity의 Auto Graphics API
그림 2. Unity의 Auto Graphics API

Vulkan 구현의 과제

Vulkan 구현은 비교적 간단했지만 개발팀은 그 후 몇 가지 문제에 직면했습니다.

  • 기기별 문제: 일부 제조업체의 드라이버는 OpenGL ES에 비해 Vulkan에서 안정성이 낮아 기기별 문제가 발생했습니다.
  • 미들웨어의 불완전한 Vulkan 지원: 일부 미들웨어는 완전한 Vulkan 지원이 없어 팀에서 미들웨어 업데이트를 기다려야 했습니다.

개발팀은 하위 수준 그래픽 API 또는 맞춤 엔진에 대한 경험이 풍부한 문제 해결을 위한 경험 많은 소비자 게임 개발자 팀을 구성하고 개별 문제 해결을 위해 Google 및 Unity팀과 협력하는 등 다양한 전략을 통해 이러한 문제를 해결했습니다. 기기 호환성을 확대하기 위해 테스트에 중급에서 오래된 고급 기기 (2~3년 전에 출시됨)를 포함하여 권장 기기 사양을 결정했습니다.

Vulkan의 이점

Vulkan을 채택하면 포켓몬 카드 게임 Pocket에 다음과 같은 여러 이점이 있습니다.

  • 셰이더 컴파일 시간 감소: Vulkan은 다수의 셰이더에서도 셰이더 컴파일 시간을 크게 줄였습니다. 예를 들어 OpenGL ES 컴파일 시간은 1초를 초과할 수 있지만 Vulkan 렌더링에서는 더 이상 문제가 되지 않습니다.
  • 지원되는 기기 범위 확대: 프레임 속도와 배터리 소모량이 개선되어 더 다양한 기기를 지원할 수 있게 되었으며, 더 많은 사용자에게 원활한 환경을 제공할 수 있게 되었습니다.
  • Vulkan 유효성 검사 계층을 통한 향상된 원격 분석: Vulkan 유효성 검사 계층은 Vitals ANR/비정상 종료 보고서에서 제공하는 데이터를 보완하여 문제의 근본 원인을 파악하는 데 매우 유용했습니다.

개발자를 위한 메시지

Pokémon TCG Pocket 개발팀은 프로젝트에 Vulkan을 고려하는 개발자에게 다음과 같은 조언을 제공합니다.

  • Vulkan은 셰이더 컴파일 시간 단축 외에도 상당한 성능 이점을 제공합니다.
  • vkQuality를 사용하여 OpenGL ES로 대체하면 Pokémon TCG Pocket에서 아직 사용하지 않더라도 기기 지원을 확장할 수 있습니다.

결론

포켓몬 TCG 포켓 개발팀은 Vulkan을 채택하여 다양한 기기에서 그래픽을 최적화하여 모든 플레이어에게 원활하고 몰입도 높은 환경을 제공할 수 있었습니다. 지속적인 기능 추가와 향후 발전 가능성으로 인해 Vulkan은 시간이 지남에 따라 더 많은 이점을 제공할 것으로 예상됩니다.