본문 바로가기
게임개발/가마수트라

심층 분석: 대화를 하며 즐기는 포커 게임 <Sunshine Shuffle>에서 원활한 대화를 만든 방법

by 아수랑 2023. 12. 23.
728x90
분야: 게임 기획 / 8분 읽기
작성자: Stav Hinenzon

 

"이 게임의 내러티브와 게임플레이를 구성하는 블록은 보편적이거나 신화적인 것이 아닙니다. 게임의 목적이 무엇이고 무엇을 하고 싶은지 초기에 파악한 다음 이를 달성하기 위한 시스템을 설계한 결과물입니다."


게임 개발자 심층 분석은 비디오 게임의 특정 디자인, 아트 또는 기술적 특징을 조명하여 단순해 보이는 근본적인 디자인 결정이 실제로는 전혀 간단하지 않다는 것을 보여주기 위해 진행 중인 시리즈입니다.

이번 에피소드에서는 스트레인지 스캐폴드의 개발자 스타브 히넨존이 선샤인 셔플의 내러티브 디자인 구조를 분석합니다. 



안녕하세요! 저는 미국 북서부에 거주하는 게임 디자이너이자 개발자인 스타브 히넨존입니다. 저는 5월 24일에 출시된 인디 스튜디오 Strange Scaffold의 신작 게임 Sunshine Shuffle에서 프리랜서 프로그래머로 일했습니다. 선샤인 셔플에서 플레이어는 한 무리의 동물들과 함께 친근한 포커 게임을 즐기며 20년 전 은행을 털었던 이야기를 들려줄 준비를 합니다. 게임의 주요 영감이 된 텔테일의 '인벤토리에서의 포커의 밤'처럼 게임과 대화가 동시에 진행됩니다. 이로 인해 게임의 내러티브 툴과 시스템에 몇 가지 흥미로운 제약이 생겼습니다. 이 글에서는 이러한 제약 조건을 충족하고 원활한 대화 경험을 구현하기 위해 게임의 대화 시스템을 어떻게 설계했는지 살펴보겠습니다.

반응형


내러티브 목표와 제약

선샤인 셔플은 인벤토리의 포커 나이트와 마찬가지로 플레이어와 캐릭터가 공유하는 활동을 중심으로 게임플레이를 구성하고 해당 활동의 공간을 방해하지 않음으로써 가상의 캐릭터 그룹과 공간을 공유하는 듯한 느낌을 주는 것을 목표로 합니다. 플레이어가 메인 메뉴를 지나면 게임은 포커 게임이 진행되는 보트 선실에 머물게 됩니다. 플레이어가 선실에 머무르는 동안에도 카메라를 회전하여 방의 다른 지점을 보면 게임 메뉴에 액세스할 수 있습니다. 인스크라이프도 이에 대한 좋은 예입니다. 이 게임은 플레이어가 의자에서 일어나는 것을 나타내는 간단한 카메라 움직임을 통해 로그라이크 모드와 방탈출 모드 사이를 오갑니다. 선샤인 셔플의 대화는 동일한 제약 조건을 준수하는 동시에 스토리를 전달하는 주요 수단이어야 했습니다.

포커 나이트와 달리 선샤인 셔플의 대화는 더 길고, 향후 대화에서 관련성이 있는 줄거리 정보가 포함되어 있습니다. 이 게임의 캐릭터는 디자인이 더 단순하고 성우 연기에 의존하지 않기 때문에 내러티브 전달의 대부분을 텍스트에 의존합니다. 이러한 차이는 대사가 차지하는 인지적 부하를 증가시키고 플레이어를 압도하여 전체 경험을 저해할 위험이 있습니다. 중요한 게임플레이와 내러티브 비트에는 충분한 시간이 주어져야 합니다. 대화 시스템의 역할 중 가장 큰 부분은 콘텐츠와 타이밍을 관리하는 것입니다. 대화 시스템은 무엇을 언제 플레이해야 하는지 알아야 합니다. 여기에는 게임의 두 트랙 중 현재 어느 트랙에 집중하고 있는지 파악하고, 트랙 간의 타이밍 충돌을 해결하고, 내러티브 속도를 제어하는 것이 포함됩니다. 스포트라이트를 제어하는 것은 선샤인 셔플의 핵심 루프를 구성하는 포커와 대화 사이의 직조에서 핵심적인 역할을 합니다.

 

게임플레이 단위 내러티브 단위

이 작업은 게임플레이와 내러티브를 단위로 나누어 관리할 수 있습니다. 그런 다음 이러한 단위를 구성하고, 우선순위를 정하고, 대응할 수 있습니다. 포커는 이미 턴제 게임이기 때문에 유닛으로 나누기가 쉽습니다. 플레이어의 턴이 한 종류의 유닛을 형성하고, 베팅 라운드가 끝나면 다른 종류의 유닛이 형성됩니다. 내러티브에서 유닛은 한 줄입니다. 선샤인 셔플의 내러티브는 텍스트가 주도하기 때문에 대사는 항상 텍스트가 중심이 되며, 카메라 컷이나 캐릭터 애니메이션(모든 캐릭터)과 같이 텍스트에 반응하여 일어나는 모든 것을 포함합니다. 대사는 바크 또는 스토리렛에 속합니다. 바크는 특정 게임플레이 트리거에 반응하는 단일 대사로 구성되며, 스토리렛은 대화를 표현하기 위한 대사의 그룹으로 구성됩니다. 이러한 단위는 대화 시스템이 관리하는 대상을 명확하게 정의합니다. 내러티브 디자이너가 우선순위, 전제 조건, 시간 간격을 지정할 수 있으며, 이 모든 것이 내러티브 디자이너에게 노출되어 게임의 시스템 내러티브의 속도를 제어할 수 있습니다.

이 구성 방식이 완전히 정립된 것은 아니었습니다. 우선순위를 정할 개별 이벤트를 정의해야 한다는 것은 일찍부터 알고 있었지만, 아직 게임의 전체 구조가 머릿속에 그려지지 않았기 때문입니다. 개발 초기에는 유연성을 원했기 때문에 유닛을 훨씬 더 원자 단위로 만들었습니다. 이러한 단위는 한 줄의 텍스트를 표시하거나, 애니메이션을 재생하거나, 카메라 컷을 수행하는 등 한 가지 작업을 수행하는 단일 시스템으로 구성되었습니다. '집안일'이라고 불리는 이러한 작은 이벤트는 게임에서 다양한 시스템이 한꺼번에 작동하는 방식을 유연하게 처리하기 위한 것이었습니다. 개발이 진행되면서 잡일을 그룹화하고 우선순위를 정하는 방식에 명확한 패턴이 나타나기 시작했습니다. 이에 따라 저는 게임을 구성하는 데 사용하는 스키마를 머릿속과 코드에서 모두 변경했습니다. 하지만 게임은 여전히 초기의 원자화된 반복을 기반으로 만들어졌습니다. 사실 라인은 한 번에 해결되는 집안일 모음입니다. 다음 게임플레이 단위를 트리거하기 위한 게임 계속하기만 유일하게 더 큰 그룹으로 결합되지 않았습니다.

728x90


기계의 부품

게임 유닛은 대화 시스템의 두 가지 주요 구성 요소인 잡일 대기열과 스토리텔링 파서에 의해 처리됩니다. 잡일 대기열은 여러 소스에서 이벤트를 가져와서 이벤트 간의 타이밍 충돌을 해결하는 우선순위 대기열입니다. 잡일 대기열의 역할은 텔테일 툴에서 영감을 얻었으며, 텔테일 프로그래머 툴리 래퍼티가 설계에 도움을 주었습니다. 게임 시스템에서 게임 흐름에 따라 달라지는 이벤트를 트리거하고자 할 때마다 잡일 대기열에 잡일을 추가합니다. 게임 턴, 짖음, 새로운 스토리 시작은 모두 잡일로 표현됩니다. 이러한 집안일에는 각각 임의의 정수로 표시되는 우선순위가 있으며, 이 우선순위에 따라 실행 순서가 결정됩니다. 일반적인 게임플레이 중에는 잡일이 대기열에 몇 프레임 이상 머무르지 않으므로 우선순위는 주로 여러 시스템이 한꺼번에 잡일을 실행할 때 중요해집니다. 집안일 대기열 자체를 닫아 새 집안일을 실행하지 못하게 할 수도 있습니다. 이 경우 우선순위에 따라 대기열이 다시 열렸을 때 어떤 작업이 먼저 실행될지도 결정됩니다. 닫기 기능은 집안일의 우선순위를 정하는 방법도 알려줍니다. 대기열을 닫는 모든 작업은 높은 우선순위를 가져야 대기열이 닫히기 전에 불량 작업들이 통과하지 못합니다.


선샤인 셔플의 짖음은 게임플레이의 일부로 트리거되고 해결되지만, 스토리렛은 이를 관리하기 위한 자체 시스템이 필요합니다. 이것이 바로 스토리렛 파서가 하는 일입니다. 몇 번의 베팅 라운드마다 파서는 가중 무작위성을 사용하여 트리거할 새 스토리렛을 선택합니다. 그 전제 조건은 현재 스토리 상태가 충족되어야 합니다. 스토리렛이 선택되면 시작 작업이 대기열에 배치됩니다. 이 작업이 완료되면 짖는 소리가 비활성화되고 스토리렛이 재생되기 시작합니다. 선샤인 셔플의 스토리렛은 대화를 구성하는 집안일을 나타내는 일련의 연결된 노드인 시각적 스크립팅 그래프입니다.

스토리렛이 시작되면 구문 분석기는 가상 플레이헤드를 사용하여 그래프를 따라 내려가 각 노드를 대기열의 작업으로 전환합니다. 재생 헤드는 한 번에 한 줄씩 이동한 다음 이벤트가 계속될 때까지 기다립니다. 처음에는 라인의 텍스트 표시가 끝나고 조정 가능한 시간 간격이 지나면 해당 이벤트가 자동으로 트리거되었습니다. 개발 과정에서 플레이어가 각 대사를 읽는 데 필요한 시간을 주기 위해, 그리고 게임의 인지 부하를 줄이기 위한 지속적인 노력의 일환으로 플레이어가 이벤트를 트리거하는 방식으로 전환했습니다. 처음에 이 기능은 알렉스 서스만이 만든 선택적 기능이었으며, 티모시 개튼이 구현한 최종 버전에서는 게임에서 스토리 진행을 위한 유일한 방법이 되었습니다.

스토리텔링이 진행되는 동안에는 내러티브에 집중할 수 있습니다. 대부분의 다른 집안일은 중단할 만큼 내러티브에 집중할 수 있는 시간을 빼앗지 않습니다. 단, 플레이어의 입력이 필요한 플레이어의 턴, 패의 결과가 드러나는 대결, 게임의 드라마를 전면에 내세워야 하는 올인 등 세 가지 예외가 있습니다. 각 단계는 스토리를 멈추고 스포트라이트를 받으며 해결됩니다. 게임이 끝나면 게임은 다시 스토리텔링으로 돌아가 중단된 부분부터 계속됩니다. 쇼다운과 플레이어 턴은 집안일 대기열을 멈춤으로써 이러한 중단을 수행하지만, 올인은 포커 집안일을 계속 진행해야 하므로 스토리렛 파서가 진행되지 못하도록 차단합니다. 이는 게임의 내러티브를 관리하기 위해 계획하고 구성했음에도 불구하고 시스템이 실제로는 상당히 지저분해졌음을 보여주는 많은 예시 중 하나입니다.

선샤인_셔플_스위치_스크린샷


결론

이러한 지저분함은 진화하는 스키마, 개발 프로세스, 그리고 시스템적인 게임플레이에 따라 표현이 달라지는 많은 텍스트가 있는 게임에서 계속되는 반복 작업으로 인해 발생합니다. 2020년에 [스튜디오 책임자] 살라비에[넬슨 주니어]가 처음 이 프로젝트를 설명했을 때는 벅찬 전망이었지만, 계획과 분류를 통해 관리가 가능해졌습니다. 이 게임의 내러티브와 게임플레이를 구성하는 블록은 기존의 개념으로 만들어졌지만 보편적이거나 신화적인 것은 아닙니다. 내러티브가 있는 레고 블록이 아닙니다. 이 게임이 무엇인지, 무엇을 하고 싶은지 초기에 파악한 다음 이를 달성하기 위한 시스템을 설계한 결과물입니다. 덕분에 저와 나머지 팀원들은 내러티브 루프에서 더 적절한 반복 작업을 할 수 있었습니다. 이러한 반복 작업을 통해 선샤인 셔플은 비슷한 예산의 게임에서는 흔히 볼 수 없는 매끄러운 대화 스타일을 구현하는 동시에, 10년 동안 후속작을 보고 싶었던 게임의 정신적 계승자로서의 역할을 수행했습니다.


* 원문: https://www.gamedeveloper.com/design/deep-dive-creating-seamless-dialogue-for-sunshine-shuffle

 

Deep Dive: Creating seamless dialogue for narrative poker game Sunshine Shuffle

"The blocks that form this game's narrative and gameplay aren't universal or mythic. They are the result of figuring out early on what the game was and what it wanted to do, and then designing a system to accomplish that."

www.gamedeveloper.com

 

* 게임 사이트: https://store.steampowered.com/app/1912420/Sunshine_Shuffle/

 

Save 33% on Sunshine Shuffle on Steam

Play cards with a group of adorable animal friends who robbed the largest bank on the Eastern Seaboard 12 years ago, and are willing to let you decorate their boat in return for not being executed by the mafia.

store.steampowered.com

 

// 오역이 있을 수 있습니다. 잘못된 번역은 댓글로 알려주세요.

댓글