안녕하세요, articy:draft 첫 걸음 튜토리얼 시리즈의 14번째 강의에 오신 것을 환영합니다.

https://youtu.be/D9ZhTb0RZbw?si=MKS3JKsbeloOwA3K

 

 

복습:

지난 강의에서는 문서 보기를 살펴보았다. articy에서 문서가 어떻게 구성되는지 확인하고, 프로젝트의 선형 컷신을 작성한 후 이를 Flow에서 연결된 노드로 변환하는 과정을 배웠다.

 

이번 강의:

이번 강의에서는 다시 Flow 보기로 돌아가 "최종 대결(Final confrontation)" 대사를 단계별로 살펴본다. 스크립트 로직을 추가하여 반응 포인트와 선택 포인트를 생성하고, 조건과 지시문을 활용하는 또 다른 방법을 배운다.

 

 

반응 포인트와 선택 포인트:

1. Flow에서 튜토리얼 폴더에 있는 "최종 대결(Final confrontation)" 대화 노드로 들어간다.

 

첫 번째로 눈에 띄는 것은 이름에 "_f"가 추가된 것으로, 이는 미나 엔티티가 최종 버전에서 온 것임을 나타낸다.

 

이것은 우리가 튜토리얼 폴더에서 미나 엔티티를 만들기 이전부터 이 대사가 존재했기 때문이다.

 

2. 프로젝트의 연속성을 유지하기 위해 동일한 엔티티를 사용하도록 업데이트해야 한다. 이를 위해 화자 이름을 더블 클릭하여 강조 표시한 후 이름을 입력하면 선택 드롭다운이 열리고 올바른 엔티티를 선택할 수 있다.

 

이제 대사를 자세히 살펴보자.

 

대화의 시작 부분에서 반응 포인트를 추가해야 한다. 조건 노드를 확대해 보면 "드라큘라가 미나의 이름을 알고 있는지 여부를 다시 확인한다"는 내용의 텍스트가 들어 있다. 조건이나 지시문 안에서 텍스트를 사용하려면, 예를 들어 스크립팅 표현식의 자리 표시자로 활용하려면, 반드시 주석(Comment) 형태로 입력해야 한다.

 

3. 단일 줄 주석을 만들려면 문장의 앞에 **//**를 붙이면 된다. 그렇지 않으면 articy가 이를 표현식으로 해석하려고 시도하여 오류가 발생할 수 있다.

 

이 조건에서는 "nameRevealed" 변수의 상태를 확인해야 한다. 이 변수의 값은 플레이어가 첫 번째 대화에서 어떤 선택을 했느냐에 따라 변경되었을 수도 있다.

 

👉 글로벌 변수는 Flow의 한 레이어에서만 사용할 수 있는 것이 아니라, 프로젝트 전체에서 활용할 수 있다.

 

조건문의 구조가 어떻게 되어 있는지 기억하는가? 직접 작성해 본 후 아래 정답 이미지를 확인해 보자.

 

4. 변수 이름이 확실하지 않거나 특정 변수가 어떤 세트에 속해 있는지 확인하려면 Navigator에서 "Global variables" 시스템 폴더를 클릭하면 된다.

 

여기에서 모든 정보를 확인할 수 있으며, 우리는 "DialogueChapter1" 변수 세트에 있는 "nameRevealed" 변수를 사용해야 한다.

 

5. 조건 노드 안에서 변수 세트 이름을 입력하기 시작하면 자동 완성이 활성화되며, Enter 또는 TAB 키를 눌러 입력을 완료할 수 있다.

 

다음으로, 변수 이름을 입력해야 하며, 세트 이름 뒤에 "."(점)을 붙여 입력하면 자동 완성 드롭다운에 변수가 표시된다. 우리가 현재까지 이 세트에서 생성한 변수는 하나뿐이므로, 점을 입력하자마자 "nameRevealed" 변수가 나타난다. 다시 Enter 또는 TAB을 눌러 입력을 완료한다.

 

이제 연산자를 입력해야 한다. 특정 값을 확인하려면 관계 연산자 "=="를 사용한다. 이 변수는 기본값이 false로 설정되어 있으며, 드라큘라가 미나의 이름을 알게 되면 첫 번째 대화에서 true로 변경된다. 우리는 이 변수가 true인지 확인할 것이므로 최종 표현식은 다음과 같다.

DialogueChapter1.nameRevealed == true

 

조건식이 참이면, 즉 변수 값이 true이면 대화는 a) 녹색 출력 핀을 통해 계속 진행된다. 드라큘라가 첫 번째 대화에서 미나의 이름을 알아내지 못했다면 b) 빨간색 핀을 통해 흐름이 진행된다.

 

반응 포인트 이후에는 대화가 하나의 가지로 다시 합쳐진다. 이후 조금 더 복잡한 지점에 도달하게 되는데, 이 노드에는 네 개의 출력 연결이 있으며, 아래쪽에 있는 다른 위치에서 입력 핀으로 연결되는 두 개의 추가 연결이 있다.

 

출력 연결들은 플레이어가 선택할 수 있는 또 다른 선택 포인트를 의미한다. 하지만 첫 번째 대화에서의 선택 포인트와는 차이가 있다. 모든 선택지가 항상 활성화되는 것은 아니다.

 

선택지의 입력 핀을 자세히 보면 첫 번째 두 개가 주황색으로 강조되어 있다. 이것은 해당 핀이 추가 정보를 포함하고 있음을 의미하며, 이 경우에는 조건(Conditions)이 설정되어 있다.

 

어떤 경우에는 조건 노드를 사용할 수 없는 상황이 발생할 수 있다. 예를 들어 이처럼 두 개 이상의 선택지가 있을 때는 조건 노드를 사용하기 어렵다. 특정 상황에서만 선택지가 활성화되도록 하려면 입력 핀에 조건을 설정할 수 있다. 핀 위에 마우스를 올리면 조건 내용이 작은 팝업으로 표시된다.

 

6. 입력 핀을 더블 클릭하여 편집 창을 연다. 여기에 추가된 주석을 보면, 이 대화 옵션은 미나의 인벤토리에 Stake 아이템이 있을 때만 플레이어에게 표시되어야 한다.

 

Lesson 11에서 Stake 아이템을 만들었고, 미나의 인벤토리를 나타내는 새로운 변수 세트도 생성했다. 조건이 어떻게 구성되어야 할지 예상할 수 있는가? 이전과 매우 유사하게 변수 값을 확인해야 한다. 이번에는 다른 변수 세트를 사용해야 하며, 조건식은 다음과 같다. Inventory.Stake == true

 

스토리 진행 중 미나가 Stake를 습득했다면 변수 값이 true가 되고, 조건식 전체도 true가 되어 플레이어가 해당 대화 옵션을 선택할 수 있다. 반면, 미나가 아직 아이템을 얻지 못했다면 조건식은 false가 되고 이 대화 옵션은 플레이어에게 보이지 않는다.

 

플레이어가 이 선택지를 사용할 수 있고 이를 선택하면 대화는 즉시 종료되며, 미나와 드라큘라의 전투가 시작된다. 이는 articy 내에서 자리 표시자 노드(Placeholder Node)로 표현되며, 실제 전투 시스템은 게임 엔진에서 구현될 것이다.

 

이제 두 번째 선택지의 입력 핀을 열어 주석을 확인한다. 여기에 또 다른 조건을 추가해야 하며, 이 대화 옵션은 특정 조건을 충족할 때만 표시되어야 한다. 이 선택지는 플레이어가 최소한 한 가지 질문을 한 후에만 나타나야 한다.

 

어떻게 구현할 수 있을까? 새로운 기능이 필요한 것은 아니며, 지금까지 사용한 도구만으로 해결할 수 있다.

 

단계별로 살펴보자. 오늘 다뤘던 조건에서 배운 점은 입력 핀 안의 조건이 false를 반환하면 흐름이 해당 노드를 통과하지 않는다는 것이다. 선택 포인트에서는 특정 선택지가 플레이어에게 표시되지 않는다는 의미다. 따라서 첫 번째로 플레이어가 이 선택 포인트에 도달했을 때, 해당 선택지가 false를 반환하도록 조건을 설정해야 한다.

 

그러나 조건을 확인하기 전에, 이를 위한 변수를 먼저 생성해야 한다.

 

7. Navigator에서 "Global Variables" 아래에 있는 "DialogueChapter1"을 클릭하여 해당 변수 세트로 바로 이동한다.

 

8. 도구 모음에서 "Create variable" 버튼을 클릭하여 새 변수를 생성한다.

 

변수 이름은 "firstQuestion"으로 설정하고 간단한 설명을 입력한다. 기본 타입이 Boolean이므로 그대로 유지하되, 기본값을 True로 변경한다.

 

나는 보통 스크립트 표현식을 작성할 때 논리적으로 가장 이해하기 쉬운 초기값을 선택하는 편이다. 이후 스크립트 표현식을 작성할 때 내 의도를 쉽게 이해할 수 있을 것이다.

 

9. 이제 필요한 변수는 준비되었으므로 다시 대화로 돌아간다. 노드의 입력 핀을 더블 클릭하여 Edit 창을 연다.

 

첫 번째 부분은 간단하다 : 변수 세트 이름, 변수 이름, 관계 연산자로 구성된 표현식을 작성하면 된다. DialogueChapter1.firstQuestion ==

 

이제 무엇을 확인해야 할까? 변수의 초기값은 true다. 현재가 첫 번째 질문인가? 그렇다. 하지만 이 선택지는 플레이어가 다른 질문을 먼저 했을 때만 나타나야 하므로, 여기서는 false 값을 확인해야 한다.

 

이제 첫 번째 단계를 완료했다. 이제 변수 값을 변경하는 방법만 추가하면 된다. 마지막 두 개의 선택지에서 출력 핀이 주황색으로 강조되어 있는데, 이는 지시문(Instructions)이 포함되어 있다는 의미다.

 

👉 조건은 항상 입력 핀에 추가되며, 노드에 접근할 수 있는지를 확인하는 역할을 한다. 지시문은 출력 핀에 배치되며, 노드를 통과한 후 값이나 상태를 변경하는 역할을 한다. 입력 핀의 편집 창을 열면 어떤 내용이 필요한지 확인할 수 있다.

 

마지막 두 개의 대화 선택지는 항상 플레이어에게 표시되므로, 여기에서 변수를 변경하는 지시문을 추가한다. 첫 번째 선택지는 미나가 Stake를 가지고 있는 경우에만 보일 수 있지만, 이 선택지는 대화를 즉시 종료시키므로 별도의 지시문을 추가할 필요가 없다.

 

10. 출력 핀을 더블 클릭하여 편집 창을 연다. 이제 변수 값을 변경해야 한다. 이 노드를 통과한 후에는 첫 번째 질문 단계가 아니므로, 변수 값을 false로 변경해야 한다.

 

"DialogueChapter1.firstQuestion = false"

 

이제 이 표현식을 남은 노드에도 복사하면 된다.

 

플레이어가 마지막 두 가지 선택지 중 하나를 선택하면 드라큘라가 응답한 후 대화 흐름이 다시 드라큘라가 "무엇을 알고 싶은가?"라고 묻는 지점으로 돌아간다.

 

이제 이 흐름이 실제로 어떻게 진행되는지 빠르게 확인해 보자.

 

 

프레젠테이션 모드에서 스크립트를 다시 확인

1. 선택 포인트 앞에 있는 드라큘라 노드를 선택한 후 프레젠테이션 모드를 시작한다.

 

2. 분석 모드가 활성화되어 있는지 확인한다.

 

여기에서 두 개의 선택지만 유효한 응답이며, 나머지 두 개는 조건을 충족하지 않아 빨간색으로 강조된 것을 볼 수 있다. 이 선택지는 플레이어에게 표시되지 않는다.

 

대화를 계속 진행하면 "firstQuestion" 변수의 값이 변경되며, 다시 선택 포인트에 도달했을 때 새로운 선택지가 활성화된다.

 

이제 질문 루프에서 벗어나 최종 전투로 이어지는 응답을 선택할 수 있다.

 

아주 잘되었다.

 

 

복습:

오늘은 지시문과 조건을 노드 핀에 추가할 수 있다는 것을 배웠으며, 스크립트를 활용하여 대화에 인터랙티브 요소를 추가하고 개선했다.

 

다음 강의:

다음 강의에서는 이 대화를 계속 다루면서 허브(Hub)와 점프(Jump) Flow 요소를 활용해 구조를 업데이트할 예정이다.

함께해 주어 감사하며, 다음 튜토리얼에서 다시 만나자.

+ Recent posts