0. 개요


볼트의 기본 개념에 대해 알아보겠습니다.

1. 타입 (Types)


볼트에서 사용되는 모든 타입을 객체(Objects)로 다룹니다.

볼트는 이 타입들을 식별하기 좋게 시각적으로 아이콘을 제공합니다.

그래프를 구성할 때 아이콘끼리 호환이 되는 경우 연결이 가능합니다.

대표적인 타입은 링크에서 확인해주세요.

볼트의 타입 개념은 기존 Unity C# 스크립트에서 사용되었던 타입 개념과 유사합니다.

대표적인 아이콘

icons

위 아이콘들은 자주 등장하므로 기억해 두는 편이 좋습니다.

2. 변수 (Variables)


볼트에서 변수는 총 6가지로 구분 됩니다.

아래로 갈 수록 변수의 스코프(scope)가 넓어집니다.

변수 종류 설명
플로우 변수 (Flow Variables) 같은 플로우내에서만 공유 할 수 있는 변수 (지역변수 개념)
그래프 변수 (Graph Variables) 같은 그래프 내부에서 모두 공유할 수 있는 변수
오브젝트 변수 (Object Variables) 같은 GameObject 내의 모든 그래프에서 공유하는 변수
씬 변수 (Scene Variables) 같은 Scene 내의 모든 모든 그래프에서 공유하는 변수
애플리케이션 변수 (Application Variables) 게임 시작부터 종료까지 모든 그래프에서 공유하는 변수
저장된 변수 (Saved Variables) 게임이 종료된 이후에도 PlayerPrefs 개념을 이용해
레지스트리에 저장하는 변수

Variables 레이아웃을 확인하면 새로운 변수를 생성하고 관리할 수 있습니다.

Flow Variables 같은 경우엔 Flow를 생성하고 Graph 레이아웃에서 추가해줘야 합니다.

3. 볼트의 구성 요소


3.1 그래프 (Graphs)


그래프는 프로그램의 논리를 시각화한 것입니다.

그래프는 플로우 그래프(Flow Graphs)와 상태 그래프(State Graphs)로 나뉩니다.

3.2 머신 (Machines)


머신은 그래프의 내용을 실행하기 위해 게임 오브젝트(GameObject)에 부착하는 컴포넌트 입니다.

머신은 플로우 머신(Flow Machines)과 상태 머신(State Machines)로 나뉩니다.

상태 머신은 상태에 따라 오브젝트의 플로우가 달라져야하는 경우에 사용하고

그렇지 않은 경우 플로우 머신을 사용하면 됩니다.

처음에 상태 변이 딱히 기획되어 있지 않다면 그냥 플로우 머신으로 개발하셔도 무방합니다.

만약 나중에 상태 변이가 필요할 때 상태 머신으로 바꾸는 일은 어렵지 않습니다.

3.2 플로우 그래프 (Flow Graphs)


플로우 그래프는 저급 레벨(low-level)의 논리를 실행하기 위해 사용됩니다.

실제로 이벤트가 발생했을 때, 어떻게, 어떤 순서로 논리가 진행되어야 하는지를 구성합니다.

따라서, 분기(branching), 반복(loop), 수학적 계산 등이 있을 것 입니다.

3.3 상태 (State Graphs)


상태 그래프는 고급 레벨(high-level)의 논리를 실행하기 위해 사용됩니다.

“면역 상태”, “공격 불가”, “회복 불가” 와 같은 추상적인 개념을 정의할 수 있습니다.

이때 중요한 개념은 트랜지션(Transitions)입니다.

트랜지션은 어떤 특정 조건을 만족했을때 다른 상태로 넘어가는 것을 말합니다.

예를 들면, ‘캐릭터가 “공격 가능” 상태에서 어떤 조건을 만족하면 “공격 불가” 상태가 된다’와 같은 트랜지션을 정의할 수 있습니다.

상태 그래프는 앞서 언급했듯이 고급 레벨 스크립팅이기 때문에 내부적으로는 플로우 그래프가 필요합니다.

3.4 임베드, 매크로 (Embeds, Macros)


모든 그래프는 임베드 그래프와 매크로 그래프로 나눌 수 있습니다.

임베드 그래프는 부착된 머신에서만 사용되며 재활용이 불가능 합니다.

매크로 그래프는 여러 머신에서 함께 사용할 수 있으며 재활용이 가능합니다.

임베드, 매크로 그래프는 서로 전환될 수 있습니다.

각각의 주의사항은 해당 문서를 참고해주세요.

3.4.1 매크로에서 임베드로


몬스터의 행동을 매크로로 정의해놨지만,

특정 몬스터에서 고유의 움직임을 구현하고 싶은 경우

해당 매크로를 임베드로 변환하여 독립적인 그래프를 생성할 수 있습니다.

3.4.2 임베드에서 매크로로


특정 몬스터의 고유한 움직임을 다른 몬스터에게도 적용하고 싶을 때

해당 임베드를 매크로로 전환하여 같은 움직임의 그래프를 사용할 수 있습니다.

4. 그룹 (Groups)

groups

컨트롤을 누르고 원하는 영역을 드래그하면 해당 유닛들이 어떤 역할을 하는지 그룹으로 정의 할 수 있습니다.

그룹으로 지정한 뒤 그룹 이동을 하면 연결된 플로우가 모두 함께 이동합니다.

참고자료

Basic Concept | Bolt Visual Scripting