안녕하세요, articy:draft 첫 걸음 튜토리얼 시리즈의 8번째 레슨에 오신 것을 환영합니다.
https://youtu.be/X8o6oCB46mY?si=6qt1K5enwp4AwCiy
복습:
지난 레슨에서는 프레젠테이션 모드를 살펴보고 이를 사용하여 대화를 진행하는 방법을 배웠습니다.
이번 레슨:
오늘은 플레이어 입력 외의 방법으로 상호작용을 제어하는 방법을 살펴볼 것입니다. 글로벌 변수를 생성하는 방법과 이를 사용하여 미나와 드라큘라 사이의 대화를 더 흥미롭게 만드는 방법을 배울 것입니다.
대화를 다시 간단히 살펴봅시다. 플레이어 선택 이후 두 가지 분기가 있습니다.
a) 미나의 이름이 대화에서 언급되고, b) 미나의 이름은 드라큘라에게 숨겨집니다.
대화에서 나중에 이 사실을 다시 언급하여 드라큘라가 미나의 이름을 알고 있는지 아닌지에 따라 대화가 달라지면 얼마나 좋을까요?
이때 변수를 articy의 스크립팅 언어와 결합하여 사용할 수 있습니다. 걱정하지 마세요, 프로그래밍 배경이 없어도 따라올 수 있습니다. 우리는 간단한 사용 사례를 살펴볼 것입니다. 간단하지만 거의 모든 게임 이야기에서 사용되는 – 예/아니오 또는 참/거짓 상황입니다. 캐릭터가 이미 퀘스트 제공자와 대화했는지, 특정 아이템이 인벤토리에 있는지 등과 같은 상황입니다.
글로벌 변수 개요
1. 변수 기능에 접근하려면 점프스타트 페이지를 통해 가거나, 네비게이터에서 글로벌 변수 시스템 폴더를 클릭하면 됩니다.
이제 프로젝트에서 이미 존재하는 변수들의 개요를 볼 수 있습니다. 변수는 변수 집합(variable sets)이라는 그룹으로 생성됩니다. 변수 집합은 변수들을 위한 폴더와 같습니다. 여기 이미 있는 집합들은 최종 프로젝트 버전에 속해 있으므로, 이제 작업할 새로운 변수 집합을 만들어 봅시다.
2. "변수 집합 만들기" 버튼을 클릭한 후, 이름을 입력하세요.
⭐ 팁: 항상 설명적인 이름을 사용하는 것이 좋습니다. 프로젝트가 커지면 set 1, 2, 3과 같은 이름으로 작업하는 것이 금방 번거로워질 수 있습니다.
저는 이 집합을 "DialogueChapter1"이라고 부를 것입니다.
3. 이제 "변수 만들기" 버튼을 클릭하여 실제 변수를 생성할 수 있습니다.
👉 변수를 이름 지을 때는 조금 주의해야 합니다. 변수 이름은 코드 내에서 작동해야 하므로 공백이나 특수 문자를 포함할 수 없습니다.
드라큘라가 첫 대화에서 미나의 이름을 알게 되었는지를 확인하는 변수로 사용할 것이므로 저는 이 변수를 "nameRevealed"라고 부를 것입니다. 저는 변수 이름을 작성할 때 "Camel Case" 명명 규칙을 사용합니다. 이 규칙은 구나 약어가 문장 중간에 올 때 각 단어의 첫 글자를 대문자로 시작하는 방식입니다. 이는 코딩 세계에서 널리 사용되는 관례지만 명명 규칙은 아니므로 반드시 지킬 필요는 없습니다.
4. 그 다음, 변수 목록이 커지면 개요를 유지하는 데 도움이 되는 간단한 설명을 입력할 수 있습니다.
다음으로 변수의 유형을 선택해야 합니다. articy는 다양한 변수 유형을 지원하며, 이는 폭넓은 활용 범위를 커버합니다.
변수 유형
– Boolean 변수는 게임 작성 환경에서 가장 자주 사용되며, 우리는 이 변수 유형을 첫 번째 단계 시리즈에서 집중적으로 다룰 것입니다.
– Integer 변수는 셀 수 있는 모든 것에 사용될 수 있으며, 예를 들어 경험치나 사기 포인트가 있습니다.
– String 변수는 덜 자주 사용되며, 예를 들어 플레이어 캐릭터 이름을 저장하는 데 사용될 수 있습니다. 플레이어가 직접 이름을 선택할 수 있다면 이런 방식으로 저장할 수 있습니다.
5. 우리 변수의 유형으로 Boolean을 선택하세요.
마지막으로 조정할 수 있는 것은 변수의 기본값입니다. Boolean 변수는 true 또는 false만 가질 수 있으므로, 여기서는 기본값을 false로 설정합니다.
이 단계는 여기까지입니다. 이제 대화로 돌아갑시다.
스크립팅 기초
스크립팅을 제대로 사용하려면 두 가지 새로운 노드 유형을 활용해야 합니다: 명령(Instructions)과 조건(Conditions). 명령 노드는 변수 값을 수정하는 데 사용되고, 조건 노드는 이러한 값을 확인하고 게임 흐름을 제어합니다.
명령 노드
플레이어 선택 이후의 하위 분기는 드라큘라가 미나의 이름을 떠올리는 부분입니다. 이 정보를 저장하고 나중에 다시 사용할 수 있도록, 이전에 생성한 변수의 값을 명령 노드를 사용하여 변경할 것입니다.
1. 미나의 노드와 드라큘라의 노드 간 연결을 삭제하세요.
2. 그런 다음 툴바에서 명령 노드(Instruction node)를 드래그하여 이 두 노드 사이에 배치하세요.
3. 이제 노드들을 연결하세요.
👉 명령은 명령어 형태의 표현식으로 작성해야 합니다.
처음에는 다소 어려워 보일 수 있지만, 처음에 말씀드린 대로 프로그래밍 지식은 필요하지 않습니다. Boolean 변수의 값을 설정하는 구문과 특정 값을 확인하는 방법만 이해하면, 내러티브 게임의 기본 논리에 관한 많은 부분을 다룰 수 있습니다.
표현식은 다음과 같이 구성됩니다: 변수 집합 이름.변수 이름 연산자 값
articy는 이러한 표현식을 작성할 때 자동 완성 및 구문 강조 기능을 제공하여 도움을 줍니다. 입력을 시작하면 목록이 나타나고, 커서 키로 올바른 항목을 선택한 후 TAB 또는 Enter 키로 확정할 수 있습니다.
자동 완성 및 구문 강조가 작동하지 않는 드문 경우에는 네비게이터에서 설정(Settings) 폴더를 클릭하세요.
그런 다음 Flow 탭으로 이동하세요.
"Use built-in scripting support" 옵션이 체크되어 있는지 확인하세요.
변수 집합 이름 뒤에 점을 추가하면, 즉시 이 집합에 속한 변수 이름 목록이 표시됩니다. 현재는 우리가 생성한 변수 하나만 나타납니다.
다음으로 오는 연산자는 우리의 경우 등호(=)입니다. 이는 변수의 값이 이 할당 연산자 뒤에 오는 값으로 설정됨을 의미합니다. "NameRevealed" 변수를 생성할 때 기본값을 false로 설정했으므로, 이제 값을 true로 설정해야 합니다.
작성 중에 오타가 발생하거나 선택한 변수 유형에 맞지 않는 값을 할당하려고 시도하면, 오류가 발생한 부분은 a) 빨간색으로 밑줄이 그어지고, b) 노드 상단에 경고 기호가 나타납니다. 이 기호 위에 마우스를 올리면 오류 유형을 나타내는 도움말 텍스트가 표시됩니다.
명령 설정으로, 플레이어가 첫 번째 또는 두 번째 옵션을 선택하면 변수 값은 변경되지 않고, 세 번째 옵션을 선택하면 변수 값이 true로 설정됩니다.
이제 이 정보를 사용하는 방법을 추가해 보겠습니다. 우리는 대화 끝에서 미나가 드라큘라에게 도전을 했습니다. 그가 이 도전에 응답할 기회를 주되, 그의 대답이 도전자의 이름을 알고 있는지 여부에 따라 달라지도록 하고자 합니다.
조건 노드
변수 값을 확인하려면 조건이 필요합니다. 툴바에서 **조건 노드(Condition node)**를 드래그하여 마지막 대화 조각에 연결하세요.
이 노드는 지금까지 본 다른 노드들과 다르다는 것을 바로 알 수 있습니다. 두 개의 색깔 있는 출력 핀이 있습니다. 이 핀들의 기능은 잠시 후에 살펴보겠습니다.
조건의 기본 구문은 명령과 유사하지만, 사용하는 연산자의 종류가 다릅니다.
명령에서 사용한 구문을 기억하시나요? 변수 집합 이름.변수 이름 연산자 값
처음은 이전과 같습니다: DialogueChapter1.nameRevealed. 이제 값을 확인하기 위해 **관계 연산자(relational operator)**가 필요합니다. 우리는 변수의 값이 연산자 뒤에 오는 값과 같은지 확인하고자 하므로, 이 경우 **두 개의 등호(==)**를 사용합니다. 확인할 값은 true입니다.
조건 노드 내에서의 문장의 결과가 true이면 흐름은 녹색 출력 핀을 통해 계속 진행되고, false이면 빨간 핀을 통해 진행됩니다.
이 결과가 어떻게 나타나는지 잠시 후 살펴보겠지만, 먼저 조건 이후에 미나와 드라큘라 간의 대화를 완성하기 위해 몇 가지 대사 줄을 추가하겠습니다.
지금 전체 대화를 살펴보면, 내러티브 흐름이 두 가지 방식으로 분기되는 것을 볼 수 있습니다. 첫 번째는 플레이어가 적극적으로 결정을 내려야 하는 선택 지점이고, 두 번째는 반응 지점으로, 여기서 흐름은 변수의 현재 값에 의해 제어됩니다. 이 과정은 배경에서 자동으로 발생하므로, 플레이어는 이 시점에서 여러 가지 진행 방법이 있다는 사실을 알지 못합니다.
선택 지점은 플레이어 캐릭터가 관련될 때 자주 사용되며, 반응 지점은 플레이어와 NPC 모두에게 유효할 수 있습니다. 하지만 결국 이는 개발자와 그들이 구현 중에 이러한 지점을 어떻게 해석하느냐에 달려 있습니다.
articy의 스크립팅 언어 기능에 대해 더 깊이 알고 싶다면, 문서에서 자세한 내용을 확인할 수 있습니다.
플레이 스루
이제 우리의 대화가 다른 플레이 스루에서 어떻게 작동하는지 살펴보겠습니다.
1. 첫 번째 대화 조각을 선택한 상태에서 프레젠테이션을 시작하세요.
2. 계속하기 전에 플레이어 모드를 선택하세요.
플레이를 진행할 때, 우리는 게임에서 플레이어가 보게 될 것만 볼 수 있습니다. 변수 처리는 배경에서 이루어지며, 우리는 반응 지점을 전혀 인식하지 못합니다. 그저 잘 흐르는 대화만 볼 수 있습니다.
3. 흐름의 첫 번째 요소로 돌아가서 프레젠테이션을 다시 시작하세요. 이제 분석 모드가 선택되어 있는지 확인하세요.
4. 프레젠테이션을 따라가면서 동시에 변수를 모니터링하려면, 사이드에서 두 번째 뷰 창을 드래그하여 생성하세요. 그런 다음 두 번째 창에서 속성 검사기(Property Inspector) 항목을 선택하세요.
속성 검사기(Property Inspector)는 다른 창에서 선택한 객체와 이 창을 동기화시켜 주며, 하나의 객체에 대해 다양한 보기를 제공할 수 있습니다. 오늘은 속성 검사기를 사용하여 변수의 실시간 상태를 확인할 것입니다.
5. 두 번째 창에서 "변수 상태(Variable state)" 탭을 클릭하여 목록을 열고 대화를 진행하세요.
분석 모드에서는 명령이 프레젠테이션에 표시되고, 우리가 이 지점에 도달하면 변수 상태가 즉시 업데이트되는 것을 확인할 수 있습니다.
이 모드에서는 반응 지점도 시각적으로 표시됩니다.
옵션이 빨간색으로 표시된 것은 잘못된 옵션입니다. 일반적인 흐름은 상위 분기를 통해 계속 진행되지만, 분석 모드는 잘못된 경로도 포함하여 모든 경로를 따라갈 수 있게 해줍니다.
복습:
이번 레슨은 여기까지입니다. 우리는 글로벌 변수와 간단한 스크립팅에 대해 배웠고, 이를 바탕으로 대화에 반응 지점을 추가하여 지식을 적용했습니다.
다음 레슨:
다음 레슨에서는 템플릿에 대해 더 깊이 다룰 것입니다. 템플릿을 왜 사용해야 하는지, 그리고 템플릿을 어떻게 다룰 수 있는지에 대해 이야기할 예정입니다.
참여해 주셔서 감사합니다. 다음 튜토리얼에서 다시 만나요!
'기타 툴 > articy:draft3' 카테고리의 다른 글
articy:draft 첫 걸음 튜토리얼 시리즈 L10 Query Search (0) | 2025.02.06 |
---|---|
Articy:Draft 첫 걸음 튜토리얼 시리즈 L09 템플릿 (0) | 2025.02.06 |
articy:draft 첫 걸음 튜토리얼 시리즈 L07 프리젠테이션 모드 (0) | 2025.02.04 |
articy:draft 첫 걸음 튜토리얼 시리즈 L06 대화 만들기 (0) | 2025.02.04 |
articy:draft 첫 걸음 튜토리얼 시리즈 L05 플로우 (0) | 2025.02.04 |