4. Building blocks

2020. 6. 16. 20:05DEFOLD/메뉴얼

Defold의 디자인의 핵심에는 파악하는데 약간의 시간이 걸릴 수 있는 몇가지 개념이 있습니다. 이 설명서는 Defold의 구성 요소에 대해 설명합니다. 이 매뉴얼을 읽은 후에는 주소 지정 매뉴얼과 메시지 전달 매뉴얼로 이동합니다. 또한 편집기 내에서 빠르게 시작하고 실행할 수 있는 튜토리얼 세트도 제공됩니다.

 

Defold는 게임을 구성하는데 사용하는 세가지 기본 구성 요소 유형이 있습니다.

 

- Collection

컬렉션은 게임을 구성하는데 사용되는 파일입니다. 컬렉션에서는 게임 오브젝트 및 기타 컬렉션의 계층을 구성합니다. 그들은 일반적으로 게임 레벨, 적들의 그룹 또는 여러 게임 오브젝트로 구성된 캐릭터를 구성하는 데 사용됩니다.

 

- Game object

게임 오브젝트는 ID, 위치, 회전, 스케일을 가진 컨테이너입니다. Component를 포함하는데 사용됩니다. 일반적으로 플레이어 캐릭터, 글머리 기호, 게임 규칙 시스템 또는 레벨 로더/로더를 만드는 데 사용됩니다.

 

- Component

Component는 게임 내에서 시각적, 청각적 및 논리적 표현을 제공하기 위해 게임 오브젝트에 넣는 엔티티입니다. 일반적으로 문자 스프라이트, 스크립트 파일, 사운드 효과를 추가하거나 입자 효과를 추가하는 데 사용됩니다.

Collections

Collections은 게임 오브젝트와 다른 컬렉션을 저장하는 트리 구조입니다. 컬렉션은 항상 파일에 저장됩니다.

 

Defold엔진이 시작되면 "game.project" 설정 파일에 지정된 대로 단일 부트스트랩 컬렉션이 로드됩니다. 부트스트랩 Collections의 이름은 "main.collection"인 경우가 많지만 원하는 이름을 사용할 수 있습니다.

 

Collection은 게임 개체와 다른 Collection(하위 컬렉션 파일 참조)을 포함할 수 있으며 임의로 깊게 중첩될 수 있습니다. 여기"main.collection"이라는 예제 파일이 있습니다. 게임 오브젝트(ID "can") 하나와 하위 컬렉션(ID "bean")하나가 포함되어 있습니다. 이 하위 컬렉션에는 두개의 게임 오브젝트인 "bean"과 "shield"가 포함됩니다.

 

ID가 "bean"인 하위 컬렉션은 "/main/bean.collection"이라는 자체 파일에 저장되며"main.collection"에서만 참조됩니다.

 

"main" 및 "bean" 컬렉션에 해당하는 런타임 개체가 없으므로 컬렉션을 직접 지정할 수 없습니다. 그러나 게임 개체 경로의 일부로 컬렉션의 ID를 사용해야 하는 경우가 있습니다. (자세한 내용은 주소 지정 매뉴얼 참조)

 

-- file: can.script

-- get position of the "bean" game object in the "bean" collection

local pos = go.get_position("bean/bean")

 

컬렉션은 항상 컬렉션 파일에 대한 참조로 다른 컬렉션에 추가됩니다.

Outline안의 Collection을 Right-click해서 Add Collection File을 선택해서 Collection을 만들 수 있다.

Game Objects

게임 오브젝트는 게임 실행 중에 각각 다른 수명을 가진 간단한 오브젝트입니다. 게임 오브젝트에는 런타임에 각 개체를 조작하고 애니메이션 할 수 있는 위치, 회전 및 스케일이 있습니다.

 

-- animate X position of "can" game object

go.animate("can", "position.x", go.PLAYBACK_LOOP_PINGPONG, 100, go.EASING_LINEAR, 1.0)

 

게임 오브젝트는 비어 있는 상태(예:위치 마커)로 사용할 수 있지만 일반적으로 스프라이트, 소리, 스크립트, 모델, 공장 등과 같은 다양한 구성 요소가 장착되어 사용됩니다. 게임 개체는 편집기에 생성되거나 수집 파일에 배치되거나 Factory 구성 요소를 통해 런타임에 동적으로 생성됩니다.

 

게임 개체는 집합내에 추가되거나 게임 개체 파일에 대한 참조로 모음에 추가됩니다.

 

Outline안의 Collection을 Right-click해서 Add Game Object File 파일를 선택해서 Game Object를 추가 할 수 있다.

Components

구성 요소는 게임 오브젝트에 특정 표현 및/또는 기능을 제공하는 데 사용됩니다. 구성 요소는 게임 오브젝트 내부에 포함되어야 하며, 구성 요소를 포함하는 게임 오브젝트의 위치, 회전 및 규모에 따라 영향을 받습니다.

 

많은 구성 요소는 조작할 수 있는 유형별 속성을 가지고 있으며 런타임에 이들 구성 요소와 상호 작용하는 데 사용할 수 있는 구성 요소 유형별 기능이 있습니다.

 

-- disable the can "body" sprite

msg.post("can#body", "disable")

-- play "hoohoo"

sound on "bean" in 1 second sound.play("bean#hoohoo", { delay = 1, gain = 0.5 } )

 

구성 요소는 게임 오브젝트 내에 삽입되거나 구성 요소 파일에 대한 참조로 게임 오브젝트에 추가됩니다.

 

Outline안의 게임 오브젝트를 선택하고 Right-click을 눌러서 Add Component File를 선택해서 Component를 추가 할 수 있다.

 

대부분의 경우 내부에서 Component를 생성하는 것이 가장 적합하지만 게임 오브젝트를 참조하여 추가하기 전에 다음 Component 유형을 별도의 리소스 파일에 생성해야 합니다.

 

- Script

- GUI

- Particle FX

- Tile Map

 

사용 가능한 모든 구성 요소 유형 목록은 구성 요소 개요를 참조하십시오.

Objects added in-place or by reference (내부 또는 참조에 의해 추가된 개체)

Collections, Game object 또는 Component 파일을 생성할 때 Blueprint 또는 프로토타입을 생성합니다. 이렇게 하면 프로젝트 파일 구조에만 파일이 추가되고 실행 중인 게임에는 아무 것도 추가되지 않습니다. Blueprint파일을 기반으로 Collections, Game Object 또는 Component의 인스턴스를 추가하려면 수집 파일 중 하나에 해당 인스턴스를 추가합니다.

 

개요 보기에서 개체 인스턴스를 기반으로 하는 파일을 볼 수 있습니다. main.collection파일에는 파일을 기반으로 하는 세가지 인스턴스가 포함되어 있습니다.

 

1. "bean" 하위 컬렉션입니다.
2. "bean"하위 컬렉션의 "bean"게임 개체에 있는 "bean"스크립트 구성 요소입니다.
3. game object의 "can"스크립트 구성 요소입니다.

 

Game object 또는 Collection의 인스턴스가 여러개 있고 모든 항목을 변경하려는 경우 Blueprint파일을 생성하면 얻을 수 있는 이점은 다음과 같습니다.

 

Blueprint파일을 변경하면 해당 파일을 사용하는 인스턴스가 즉시 업데이트됩니다.

 

Childing game object

수집 파일에서 하나 이상의 게임 개체가 상위 게임 개체의 자식이 될 수 있도록 게임 개체의 계층 구조를 만들 수 있습니다. 게임 오브젝트에 자식이될 게임 오브젝트를 드래깅 하면 드래깅된 게임 오브젝트는 자식이 됩니다.

 

개체 부모-자식 계층은 개체가 변환에 반응하는 방식에 영향을 미치는 동적 관계입니다. 개체에 적용되는 모든 변환(이동, 회전 또는 스케일링)은 편집기와 런타임에 개체의 하위 항목에 차례로 적용됩니다.

 

반대로, 아이들의 변환작업은 부모의 로컬 공간에서 이루어진다. 편집기에서(기본 값)또는을

Edit ▸ Local Space선택 Edit ▸ World Space하여 로컬 공간이나 월드 공간에서 하위 게임 개체를 편집하도록 선택할 수 있습니다.

 

런타임시에 개체의 상위 항목을 변경할 수도 있습니다. set_parent개체에 메시지를 보냅니다.

local parent = go.get_id("bean") 
msg.post("child_bean", "set_parent", { parent_id = parent }) 

일반적인 오해는 게임 개체가 부모-자식 계층의 일부가 되면 수집 계층에서 게임 개체의 위치가 변경된다는 것입니다. 

하지만, 이것들은 매우 다른 두가지이다. 

상위-하위 계층은 개체를 서로 시각적으로 연결할 수 있는 씬(scene)그래프를 동적으로 변경합니다. 

게임 오브젝트의 주소를 명령하는 유일한 것은 수집 계층에서의 위치입니다. 

주소는 개체의 수명 동안 정적입니다.

 

 

 

 

'DEFOLD > 메뉴얼' 카테고리의 다른 글

7. Importing assets  (0) 2020.06.17
6. Application lifecycle  (0) 2020.06.17
5. Addressing  (0) 2020.06.17
3. 라이브러리  (0) 2020.06.16
1. 용어사전  (0) 2020.06.16