게임패드로 즐기는 전술 카드 게임: Ancient Duel의 컨트롤러 지원은 어떻게 작동하는가
컨트롤러 지원은 보통 이동과 조준이 중심인 게임의 몫입니다. Ancient Duel에는 둘 다 없습니다. 이 게임은 카드 게임입니다. 보드를 살펴보고, 잠시 생각한 다음, 하나의 분명한 선택을 내립니다.
바로 그 때문에 게임패드가 이 게임에 잘 맞는다는 사실이 드러났습니다. 결투의 모든 행동은 같은 짧은 목록으로 귀결됩니다. 어떤 카드인가. 어떤 표시 형식인가. 어떤 대상인가. 확인. 뒤로. 이것이 컨트롤러가 본래 쓰는 언어이며, 화면의 아무 픽셀이나 가리키는 것이 주특기인 장치와는 잘 맞지 않습니다.
컨트롤러가 마우스 흉내를 내서는 안 된다
스틱으로 화면 위의 커서를 이리저리 밀게 하는 지름길은 유혹적입니다. 만들기는 빠르지만 쓰기는 불쾌합니다. 디지털한 선택 하나를 하려고 아날로그 작업을 하면서, 빈 테이블 천 위로 포인터를 끌고 다니게 되기 때문입니다.
그래서 Ancient Duel은 커서 대신 선택을 움직입니다. 스틱이나 방향 버튼은 실제로 의미 있는 대상 사이를 한 칸씩 옮겨 다니고 — 패의 카드, 필드의 유닛, 대상, 버튼, 탭 — 확인 버튼은 지금 선택된 것을 실행합니다. 조준할 일은 전혀 없습니다. “다음 카드”, “저것”, “좋아”라고 말할 뿐입니다.
입력 계층 전체는 제가 초기에 정하고 한 번도 어기지 않은 규칙 하나를 따릅니다. 게임 동작을 절대 다시 구현하지 않는다는 것입니다. 입력 계층은 포커스를 옮기고, 원래 있던 버튼이 제 할 일을 하게 둘 뿐입니다. 이 게임은 4월의 접근성 작업 이후로 키보드만으로 완전히 조작할 수 있었기 때문에, 컨트롤러 지원을 위해 게임 로직을 건드릴 필요가 전혀 없었습니다. 반대도 성립합니다. 키보드로 닿을 수 없는 것은 패드로도 닿을 수 없습니다. 무언가를 탐색 가능하게 만든다는 것은 새 입력 코드를 쓰는 것이 아니라, 그것을 포커스가 멈추는 지점으로 만드는 일입니다.
보드는 이미 격자였다
여기서 카드 게임은 3D 세계가 해 주지 못하는 방식으로 도움이 됩니다. Ancient Duel의 전장은 고정된 유한한 구조입니다. 한쪽에 유닛 자리 네 개, 가운데에 지휘관 슬롯, 전략 열, 패, 묘지 두 개, 지형 존이 있습니다. 가로질러야 할 연속된 공간은 없습니다.
그래서 화면 배치가 그대로 내비게이션이 될 수 있습니다. 왼쪽과 오른쪽은 한 열을 따라 이동하고, 위와 아래는 패와 필드 사이를 오가며, 숄더 버튼은 그 사이를 하나하나 거치지 않고 존 단위로 한 번에 건너뜁니다. 오른쪽 스틱은 스크롤을 담당하고, Start 버튼은 컨트롤러 설정을 엽니다.
포커스가 곧 커서다
마우스를 쓸 때 플레이어는 자신이 무엇을 가리키고 있는지 항상 압니다. 직접 손으로 가리키고 있으니까요. 포인터를 없애면 인터페이스가 언제나 세 가지 질문에 답해야 합니다. 무엇이 선택되어 있는가, 확인을 누르면 그것에 무슨 일이 일어나는가, 뒤로를 누르면 무엇이 취소되는가.
당연하게 들리지만, 손이 많이 가는 작업 대부분이 바로 여기에 들어갔습니다. 대화 상자가 닫기 버튼에 선택이 놓인 채로 열린다면, 기술적으로는 탐색 가능해도 실제로는 쓸모가 없습니다. 게임이 방금 어떤 카드를 버릴지 물었는데 강조 표시는 ✕ 위에 앉아 있는 것입니다. 이제 대화 상자는 첫 번째 실제 선택지에서 열리고, 대상 지정 모드는 대상 후보를 모두 강조하기만 하는 대신 첫 번째로 지정 가능한 대상에 선택을 둡니다. 모두 강조하는 방식은 포인터가 있을 때는 괜찮았지만, 포인터가 없으면 하나하나 찾아다녀야 한다는 뜻이었습니다.
좋은 컨트롤러 지원이란 모든 버튼에 닿을 수 있는 상태가 아닙니다. 버튼에 닿는 일을 더 이상 의식하지 않게 되는 상태입니다.
버튼 번호를 절대 믿지 마라
이 부분을 저는 심하게 과소평가했습니다.
PC 컨트롤러는 표준 배치를 쓴다고 보고해 놓고는, 펌웨어 마음대로 버튼 번호를 매길 수 있습니다. 제가 테스트에 쓰는 패드가 정확히 그렇게 하고, 더 곤란하게도 A/B/X/Y 대신 위에서부터 시계 방향으로 1 / 2 / 3 / 4가 인쇄되어 있습니다. 그래서 버튼을 누를 때마다 세 가지 별개의 사실이 숨어 있는데, 실제로 알 수 있는 것은 첫 번째뿐입니다. 원시 입력, 플라스틱 위에서 그 버튼의 물리적 위치, 그리고 그 옆에 인쇄된 라벨입니다. 확인을 “버튼 0”에 묶는 게임은 세 가지 중 두 가지를 추측하고 있는 셈입니다.
그래서 Ancient Duel에는 보정 마법사가 있으며, 이 마법사는 번호에서 아무것도 추론하지 않습니다. 물리적 위치는 플레이어의 손에서 배우고, 인쇄된 라벨은 장치에 무엇이 적혀 있는지 플레이어가 알려 주는 내용에서 배웁니다. 컨트롤러에는 글자 키가 없으니 라벨은 직접 입력하는 대신 목록에서 고릅니다. 그리고 라벨은 장식이 아닙니다. 아래쪽 버튼에 “B”, 오른쪽 버튼에 “A”가 적혀 있다고 알려 주면, 브라우저가 뭐라고 생각하든 그 플레이어는 닌텐도 방식의 하드웨어를 쥐고 있는 것이고, 확인과 뒤로가 그에 맞게 서로 바뀝니다.
건너뛴 조작은 아무 반응도 하지 않습니다. 추측한 번호로 되돌아가는 일은 없습니다. 항복을 확정해 버리는 숄더 버튼이야말로 보정이 막으려고 존재하는 바로 그 실패이기 때문입니다.
마우스를 요구할 수 없는 보정
여기에는 역설이 하나 숨어 있습니다. 컨트롤러 매핑이 잘못된 플레이어야말로 보정 화면이 필요한 플레이어이고, 동시에 그 화면에 가려고 일반 메뉴를 탐색할 수 없는 플레이어이기도 합니다.
그래서 설계 전체가 따르는 규칙은, 컨트롤러를 마우스나 키보드 없이 보정하고, 라벨을 붙이고, 저장하고, 다시 열고, 고칠 수 있어야 한다는 것입니다. 데스크톱에서는 마우스와 키보드도 편의상 작동하지만, 그 어떤 것도 이들을 요구해서는 안 됩니다.
실제로 이는 마법사가 “시작하려면 아무 버튼이나 누르세요”라는 화면으로 열리고, 연결된 어느 패드의 어떤 원시 버튼이든 받아들인다는 뜻이며, 그 입력이 어느 컨트롤러가 세션을 차지할지도 정합니다. 다음은 확인과 취소이며, 이 둘은 건너뛸 수 없습니다. 세 번째 질문부터는 방금 오른쪽 페이스 버튼으로 지정한 버튼이 한 단계 뒤로 돌아가게 해 주므로, 그 버튼을 충분히 누르면 마법사에서 나가게 됩니다 — 포인터가 필요 없는 유일한 출구입니다. 각 입력 단계는 저절로 다음으로 넘어갑니다. 아래쪽 페이스 버튼을 누르라는 안내를 막 받은 플레이어가 “다음”까지 누를 방법은 없기 때문입니다.
스틱에 대해서는 절대 묻지 않는 이유
질문은 여덟 개이고, 모두 버튼에 관한 것입니다. 방향 입력에 대해서는 아무것도 묻지 않습니다.
방향 입력이 믿을 만한 부분이라는 점도 이유의 하나입니다. 표준 매핑 컨트롤러에서는 왼쪽 스틱이 처음 두 축으로 들어오므로, 제조사가 제멋대로 번호를 매긴 버튼보다 방향 입력이 훨씬 예측 가능합니다. 하지만 더 큰 이유는 실패하는 모습을 지켜본 뒤에야 깨달은 무언가 때문입니다. 버튼은 눌려 있거나 그렇지 않거나 둘 중 하나입니다. 축에는 의미 있는 ‘놓인’ 상태가 없습니다 — 낡은 스틱은 떠돌고, 방향 패드의 햇 스위치는 3.29에 머물고, 트리거는 −1에 놓여 있습니다. 그리고 이 중 무엇이든 아무도 묻지 않은 질문에 답해 버리거나, 화면의 어떤 설명으로도 알 수 없는 이유로 단계가 끝나지 않게 막을 수 있습니다. 묻지 않음으로써 설명할 수 없는 동작이라는 범주 하나가 통째로 사라졌습니다.
방향을 누르고 있으면 반복 입력되며, 그 속도는 직접 설정할 수 있습니다. 스틱이 저절로 움직인다면 데드존도 함께 설정할 수 있습니다.
글자 없이 입력하기
그러다 텍스트 입력란을 만나면 컨트롤러는 내놓을 것이 없습니다. 로그인하기, 덱 이름 짓기, 카드 풀 검색하기, 이 모든 것에 어떤 게임패드에도 없는 문자가 필요합니다.
그래서 텍스트 입력란에서 확인을 누르면 화면에 완전한 QWERTY 키보드가 열립니다. 평범한 레이어 위의 평범한 버튼들이므로, 같은 내비게이션으로 그 위를 돌아다닐 수 있고 뒤로를 누르면 다른 모든 것처럼 닫힙니다. 실제 키보드를 쓰는 플레이어에게는 아예 나타나지 않습니다.
중요하리라고 예상하지 못한 세부 사항이 하나 있습니다. 이 배치는 ANSI 키보드와 같은 4분의 1 키 단위의 어긋남, 즉 실제 물리적 엇갈림을 그대로 씁니다. 내비게이션은 “위”가 어디로 갈지 정하기 위해 렌더링된 형태를 읽기 때문에, 바로 이 엇갈림이 W를 A와 S 사이의 틈 위에 놓아 줍니다. 더 깔끔한 숫자는 오히려 실패합니다 — 정확히 반 키만큼 엇갈리게 하면 모든 키가 아래 두 키와 같은 거리에 놓이고, 그 동점은 마크업이 우연히 놓인 순서에 따라 결정됩니다.
컨트롤러가 게임의 나머지 부분에서 찾아낸 것
이 작업에서 가장 유용했던 것은 그것이 드러낸 문제들입니다. 마우스는 원하는 것을 직접 가리킬 수 있게 해 주므로 플레이어가 인터페이스의 문제를 덮고 지나갈 수 있습니다. 컨트롤러는 그럴 수 없으므로 인터페이스가 그 관계를 명시적으로 드러내야 하는데 — 그렇지 못한 곳이 여럿 있었습니다.
저장된 덱은 포커스가 멈추는 지점이 아니었고, 그래서 마우스 없이는 덱을 아예 열 수 없었습니다. 묘지와 지형도 마찬가지였습니다. 덱 빌더는 카드를 추가할 때마다 두 열을 모두 다시 만들어서, 방금 누른 버튼을 없애 버리고 현재 위치도 잃게 했습니다. 이제는 카드와 동작을 기억해 두었다가 다시 찾아냅니다. 브라우저 자체의 확인 및 알림 대화 상자는 앱의 포커스 모델 밖에 완전히 놓여 있었기 때문에, 안전한 답에서 열리는 페이지 내 대화 상자로 교체했습니다.
이 중 어느 것도 컨트롤러 버그가 아닙니다. 포인터가 조용히 메워 주고 있던 인터페이스 버그이며, 이를 고치자 게임패드를 한 번도 만지지 않을 사람들에게도 게임이 더 좋아졌습니다.
Steam, 소파, 그리고 Deck
같은 코드가 브라우저에서, Steam용 Windows 빌드에서, macOS 빌드에서 실행되며, 세 가지 모두 같은 컨트롤러 시스템과 같은 설정 로직을 사용합니다 — 다만 설정 자체는 계정이 아니라 기기에 저장됩니다.
그 덕분에 얻는 것은 단순합니다. PC가 더 이상 책상만이 아니게 됩니다. 같은 빌드가 노트북에서도, 텔레비전에 연결한 컴퓨터에서도, 소파에 앉아 패드를 쥔 채로도 작동합니다. 카드 게임은 대부분의 장르보다 이런 환경에 더 잘 어울립니다. Ancient Duel을 즐기는 자연스러운 자세는 앞으로 몸을 숙이고 클릭하는 것이 아니라, 뒤로 기대어 생각하는 것이기 때문입니다.
Steam Deck 같은 휴대용 기기에 대해 솔직하게 말하자면, 기반 작업은 끝났지만 테스트는 끝나지 않았습니다. Steam Input은 컨트롤러 입력을 XInput과 호환되는 표준 매핑으로 제공할 수 있으므로, 이미 갖춰진 구조는 원칙적으로 유용한 토대가 되며, 마우스를 전제하지 않는 게임이라는 점은 그런 종류의 기기를 위한 중요한 전제 조건입니다. 하지만 실제 하드웨어에서 Ancient Duel을 검증하지는 않았으므로, 그곳에서 작동한다고 주장하지는 않겠습니다. TV 모드도 있습니다. 이 모드는 타이틀 세이프 여백을 추가하는데, 일부 텔레비전 환경은 여전히 오버스캔을 적용해 화면 가장자리를 잘라 내고, 그것만으로도 항복 버튼이 화면 밖으로 밀려날 수 있기 때문입니다.
같은 논리는 앞으로의 어떤 플랫폼에도 적용됩니다. 콘솔 버전에는 입력 작업보다 훨씬 많은 것이 필요합니다. SDK, 인증, 플랫폼 서비스, 패키징, 스토어 승인 등입니다. 하지만 장벽 하나는 일찍 걷어 낼 수 있고, 그것은 모든 화면에 걸쳐 있는 장벽입니다. 게임이 마우스가 있다고 가정해서는 안 된다는 것입니다. 그렇다고 콘솔 준비가 끝나는 것은 아닙니다. 다만 나중에 다시 열려면 비용이 많이 드는 문을 열어 둘 뿐입니다.
마우스는 어디로도 가지 않았다
이 중 무엇도 기존의 무언가를 대체하지 않습니다. 마우스와 키보드는 예전과 똑같이 작동하며, 데스크톱에서는 여전히 더 빠릅니다. 목적은 처음부터 플레이어 대신 입력 장치를 골라 주는 것이 아니었습니다.
컨트롤러로 치르는 결투도 다른 결투가 아닙니다. 같은 카드를 선택하고, 같은 대상을 고르고, 같은 결정을 내리고 그 결과를 감당합니다. 달라지는 것은 그 선택이 게임에 전달되는 방식뿐입니다 — 그리고 Ancient Duel이 플레이어의 손에 무엇이 들려 있는지 덜 가정할수록, 그 같은 결투를 즐길 수 있는 곳은 더 많아집니다.
Daniel Rusu
Ancient Duel 제작자 & 개발자