프로젝트에서 정교한 내러티브를 선택해야만 몰입감을 높이고 플레이어에게 깊은 인상을 남길 수 있는 것은 아닙니다. 간단한 상호작용으로도 게임플레이에 의미 있는 효과를 줄 수 있습니다.
이 페이지에서는 대화를 작성하는 방법을 단시간에 배워보고 다양한 유형의 대화 구조를 만드는 과정을 자세히 살펴봅니다. UEFN의 대화 템플릿(Conversation Template)에 등장하는 컨버세이션 그래프를 활용하는 팁도 소개합니다.
대화 장치 자체에 대한 자세한 내용은 대화 장치 페이지를 참고하세요.
대화 작성하기
대화 장치를 사용해 내러티브를 게임플레이에 연결하기 전에 먼저 대화의 흐름이 자연스러운지, 앞뒤가 맞는지, 구현하고 싶은 경험에 어울리는 대화인지를 확인해야 합니다. 크리에이티브 글쓰기를 해 본 적이 없다면 아래 방법을 활용해 보세요.
내레이션과 대화가 사용되는 게임을 플레이해 보세요. 잘 쓴(또는 못 쓴) 대화의 예시를 보면 크리에이티브 과정에 도움이 될 수 있습니다.
대화 역할을 가진 NPC에 대해 생각해 보세요. 캐릭터가 어디에서 왔는지, 어떤 삶을 살고 있는지, 어떤 사람인지를 생각해 두면 더 자연스러운 대화를 쓸 수 있고 모든 NPC의 말투가 비슷해 보이는 문제를 피할 수 있습니다.
우리가 현실에서 만나는 사람들이 어떻게 말하는지 생각해 보세요. 다양한 캐릭터에 맞는 억양과 말투를 찾는 데 도움이 될 수 있습니다.
대화 도중에 어떤 일이 일어나는지 생각해 보세요. 대화하는 도중에도 삶은 계속해서 흘러갑니다. 대화가 어디에서 이루어지고 있는지, 배경에서 어떤 일이 벌어질 수 있는지 생각해 보세요.
게임 대화
비디오 게임 대화는 영화 대사와 비슷하지만, 플레이어가 NPC와의 상호작용을 통해 스토리라인을 바꿀 수 있다는 차이가 있습니다. 게임에서 대화는 다음과 같이 다양한 기능을 수행합니다.
배경 정보 제공
게임플레이 설명 또는 단서 제공
게임 내 재화 및 서비스 교환
플레이어가 특정 경로를 진행하도록 설정하거나 플레이어의 선택에 따라 경로 변경
게임에서 소개는 중요한 역할을 합니다. NPC와의 만남은 플레이어가 전체적인 경험에 몰입할 수 있도록 도와주는 게임플레이의 핵심적인 부분입니다. 게임에서 플레이어에게 NPC를 소개해야 하는 이유는 다음과 같습니다.
NPC가 누구인지, 게임에서 어떤 역할을 하는지 이해시킵니다.
플레이어의 행동을 유도할 수 있는 기본 정보를 제공합니다.
플레이어가 게임 내 세계에 적응할 수 있도록 도와줍니다.
대화는 가급적 일반적인 대화와 비슷해야 합니다. 자연스러운 느낌을 위해 속어와 줄임말을 사용하는 것도 여기 포함됩니다.
퀘스트
특정 캐릭터를 이용해 해당 캐릭터만 알 수 있는 정보를 플레이어에게 전해주거나 기술적인 내용을 설명해줄 수 있습니다. NPC가 단서를 쥐고 있거나 플레이어와 공유할 수 있는 비밀을 알고 있을 수도 있습니다.
아래에 NPC와의 짧은 대화를 간략하게 보여주는 표가 나와 있습니다. NPC는 플레이어에게 퀘스트에 참여할 수 있는 선택지를 줍니다.
각 응답에는 플레이어가 퀘스트의 수락 여부를 선택할 때 트리거되는 이벤트가 있습니다. 플레이어가 퀘스트를 수락하면 보상을 받고, 향후 퀘스트에서 해당 NPC를 사용할 수 있습니다. 퀘스트를 거절하면 새로운 스토리라인이 만들어지고, 향후 퀘스트에서 NPC가 플레이어를 도와주지 않기 때문에 게임플레이와 내러티브의 결과가 달라집니다.
| 플레이어 | 음성 | 응답 | 결과 | NPC |
|---|---|---|---|---|
NPC: “저기 있잖아! 숙제를 내야 하는데, 나가서 공놀이 하고 싶어. 나 대신 숙제 좀 제출해 줄래?” | -- | -- | ||
-- | -- | 플레이어: “좋아, 5골드만 줘.” | 좋아: NPC가 플레이어에게 5골드를 주고 쿼드 쪽으로 걸어갑니다. | -- |
-- | -- | 플레이어:“싫어, 내가 왜?” | 싫어: NPC가 이 응답을 기억하고 다른 퀘스트에서 플레이어를 도와주지 않습니다. | -- |
-- | NPC: “뭐 어려운 부탁도 아닌데!” | -- | -- | -- |
기본적인 컨버세이션 그래프 만들기
대화 트리는 대화의 목적에 따라 커질 수도, 작아질 수도 있습니다. 컨버세이션 뱅크를 생성하고 대화 에디터를 열어 그래프 생성 작업을 시작합니다.
그래프 영역을 우클릭하고 노드 선택 메뉴에서 디폴트 엔트리 포인트(Default Entry Point) 노드를 선택합니다.
디폴트 엔트리 포인트 노드 하단 바를 클릭하고 화살표를 새로운 위치로 드래그합니다. 마우스 버튼을 놓으면 새로운 노드를 선택할 수 있는 옵션이 나타납니다. 노드 선택 메뉴에서 음성(Speech) 노드를 선택합니다. 디테일(Details) 패널에서 음성 노드의 옵션을 볼 수 있습니다.
그래프를 우클릭하고 원하는 노드를 생성한 다음 화살표로 두 노드를 연결하는 방법도 있습니다. 노드를 연결하려면 노드 하단에 마우스 커서를 올리고, 노란색으로 바뀌면 드래그합니다. 라인을 받는 노드의 상단 바가 노란색으로 바뀌면 드래그를 멈춥니다.
메시지(Message) 필드에 소개 텍스트를 추가합니다.
게임에서 중요한 역할을 하는 NPC의 경우 여기에서 NPC가 자신의 역할을 설명하도록 하는 것이 좋습니다.
그래프를 우클릭하고 응답(Response) 노드를 추가합니다. 디테일 패널에 플레이어가 NPC에게 하게 될 응답을 작성합니다.
여러 개의 응답 노드를 생성해 같은 소개 스피치 노드에 연결할 수도 있습니다. 이 경우 여러 개의 대화 경로가 만들어집니다.
스피치 노드는 항상 NPC가 플레이어에게 하는 대사입니다. 첫 번째 스피치 노드는 NPC와 플레이어 사이의 소개가 되어야 하며, 여기에 응답과 이벤트의 기준점 역할을 하는 스피치 노드를 추가합니다.
경유(Reroute) 노드를 사용하면 대화를 더 보기 좋게 정리할 수 있습니다. 먼저 연결하고 싶은 두 개의 노드 사이에 화살표를 만들고, 화살표 위에서 경유 노드를 추가하고 싶은 곳을 더블클릭합니다. 노드를 클릭하면 그래프상에서 드래그할 수 있는 경계선이 표시됩니다.
스피치 노드는 원하는 만큼 만들 수 있습니다. 플레이어는 대화 도중에 NPC로부터 벗어나 대화를 종료할 수 있습니다.
같은 유형의 노드는 화살표로 연결할 수 없으며, 연결을 시도해도 작업을 완료할 수 없습니다.
아래에는 가능한 노드 연결 목록이 나와 있습니다. 앞에 불가(NO)가 표시된 칸은 유효하지 않은 연결을 나타냅니다.
| -- | 디폴트 엔트리 포인트 | 대화 이벤트 | 반복 | 응답 | 대화 재시작 | 음성 | 랜덤 |
|---|---|---|---|---|---|---|---|
디폴트 엔트리 포인트 | 엔트리 포인트 > 이벤트 | 불가 엔트리 포인트 > 반복 | 불가 엔트리 포인트 > 응답 | 불가 엔트리 포인트 > 재시작 | 엔트리 포인트 > 음성 | 엔트리 포인트 > 랜덤 | |
대화 이벤트 | N/A | 이벤트 > 반복 | 이벤트 > 응답 | 이벤트 > 재시작 | 이벤트 > 음성 | 이벤트 > 랜덤 | |
반복 | N/A | 반복 > 이벤트 | 반복 > 응답 | 반복 > 재시작 | 반복 > 음성 | 반복 > 랜덤 | |
응답 | N/A | 응답 > 이벤트 | 응답 > 반복 | 응답 > 재시작 | 응답 > 음성 | 응답 > 랜덤 | |
대화 재시작 | N/A | 불가 재시작 > 이벤트 | 불가 재시작 > 반복 | 불가 재시작 > 응답 | 불가 재시작 > 음성 | 불가 재시작 > 랜덤 | |
음성 | N/A | 음성 > 이벤트 | 음성 > 반복 | 음성 > 응답 | 음성 > 재시작 | 음성 > 랜덤 | |
랜덤 | N/A | 랜덤 > 이벤트 | 랜덤 > 반복 | 불가 랜덤 > 응답 | 불가 랜덤 > 재시작 | 랜덤 > 음성 |
화자 2명의 대화 만들기
대화 머티리얼 설정 노드를 사용하여 하나의 컨버세이션 그래프에서 화자 2명의 대화를 만들 수 있습니다. 디폴트 엔트리 포인트에서 첫 번째 대화 머티리얼 설정(Set Conversation Material) 노드를 추가한 후 디테일 패널에서 노드를 첫 번째 화자로 커스터마이징합니다.
두 번째 화자가 등장하는 포인트까지 대화를 계속해서 만듭니다. 이 포인트에서 두 번째 대화 머티리얼 설정 노드를 설정하고 디테일 패널에서 노드를 두 번째 화자로 커스터마이징합니다.
자체 대화 UI를 만들면 머티리얼 크기를 세부적으로 제어할 수 있습니다.
이벤트 추가하기
이벤트 노드는 이벤트를 트리거하거나 플레이어에게 선택지를 제공하는 데 사용됩니다. 이벤트는 시네마틱 시퀀스 장치를 사용해 NPC가 플레이어의 선택에 반응하는 기본적인 형태가 될 수도 있고, 보스전 시작이 될 수도 있습니다.
기존 노드의 하단을 클릭하고 드래그한 뒤 드롭다운 메뉴에서 대화 이벤트(Conversation Event)를 클릭하여 이벤트 노드를 생성합니다. 하나의 대화에는 최대 10개의 이벤트를 연결할 수 있습니다. 자세한 내용은 대화 장치 페이지를 참고하세요.
UI 머티리얼 추가하기
UI 머티리얼을 만들고 대화 머티리얼(Conversation Material) 옵션에서 이를 대화 장치에 추가합니다. 배열 아이콘(+)을 클릭하여 머티리얼을 인덱스 목록에 추가합니다.
디폴트 엔트리 포인트 노드 아래에 대화 머티리얼 설정 노드를 추가합니다. 그러면 대화 장치에서 대화 머티리얼 옵션과 이 컨버세이션 뱅크를 사용해 대화 UI 머티리얼을 설정하게 됩니다.
대화 숨기기 및 표시하기
시네마틱 이펙트를 위해 대화를 일시적으로 숨겼다가 표시합니다. 이는 대화 숨기기 노드와 대화 장치의 대화 숨기기(Hide Conversation) 및 대화 표시(Show Conversation) 기능을 사용하여 수행합니다.
대화 숨기기 기능은 플레이어로부터 캐릭터의 대화 UI를 숨기고, UI가 다시 표시될 때까지 플레이어가 옵션을 선택하지 못하도록 합니다. 대화 숨기기 노드와 함수를 사용하면 플레이어의 대화 UI가 표시되지 않게 되므로 다음과 같은 효과가 있습니다.
대화가 숨겨져 있는 동안 플레이어가 어떤 응답도 선택하거나 보거나 탐색할 수 없습니다.
대화를 다시 플레이어에게 표시하고 대화를 계속하려면 Verse 코드 또는 장치가 대화 표시 함수를 트리거해야 합니다.
대화 표시 함수는 대화 UI를 플레이어에게 표시합니다. 대화가 다시 표시되면 플레이어가 대화를 계속 진행하고 옵션을 다시 선택할 수 있습니다.
정리하기
이 섹션에서는 비교적 복잡한 대화를 만드는 모범 사례를 소개합니다. 모든 팁은 UEFN의 대화 템플릿에 있는 기능 예시(Feature Examples)에서 확인할 수 있습니다.
코멘트
코멘트(Comments)는 복잡한 컨버세이션 그래프를 쉽게 추적할 수 있게 해 줍니다. 한 글자의 짧은 코멘트로 다양한 분기 경로를 구별할 수도 있고, 대화의 특정 부분에서 발생하는 일을 자세한 코멘트로 설명할 수도 있습니다.
새 코멘트를 생성하려면 그래프에서 원하는 노드를 선택하고 C를 누릅니다. 그러면 제목이 있는 텍스트 박스가 생성됩니다.
코멘트의 디테일 패널에서 영역 컬러, 줌 아웃 시 말풍선 표시 여부, 말풍선 컬러, 코멘트가 포함된 노드와 함께 이동할 것인지를 선택할 수 있습니다.
경유 노드
경유 노드는 말 그대로 경유 노드입니다. 대화가 여러 방향으로 분기될 때 경유 노드를 사용해 논리적인 흐름을 보기 좋게 정리할 수 있습니다. 경유 노드가 없으면 노드 사이의 화살표가 화면상에서 서로 교차해 그래프를 시각적으로 파악하기가 어려워질 수 있습니다.
경유 노드로 그래프를 정리하면 대화 흐름을 의도에 따라 구성할 수 있고 기존 경로를 자유롭게 변경할 수 있습니다.
아래 복잡한 대화를 예로 들면, 경유 노드를 사용해 플레이어의 선택에 따라 결정되는 다양한 경로를 정리했습니다. 슬라이더를 왼쪽으로 움직이면 경유 노드를 사용하지 않은 버전의 같은 대화를 볼 수 있습니다. 정리는 선호 사항에 따라 결정해야 하지만, 대화가 복잡할수록 혼동의 가능성이 높아진다는 점에 유의해 주세요.