본문 바로가기

Coding/멋쟁이사자처럼

[멋쟁이사자처럼 X 넥슨] MOD Supporters Hackathon 1주차 회고 (2. 기본 개념의 이해)

[7월 11일]

 

[MOD 강좌 Chapter 2] 기본 개념의 이해

 

[Entity, Component, Property]

 

1. Entity

 

- MOD 내에서 월드를 구성하고 있는 어떤 것.

- 필자가 이전 게시글에서 임의로 아이템이라고 작성했던 것이 Entity임을 알 수 있었다.

- 지형(타일) 또한 엔티티이다.

- Scene Maker에서 확인할 수 있는 모든 요소들이 Entity라고 볼 수 있다.

 

 

몬스터와 타일, 사다리, 건물까지 모두 Entity이다.

 

Entity가 어떤 기능을 하고 어떤 성질을 갖는지는 Entity 내의 Component를 통해 설정할 수 있다.

각각의 Entity는 여러 개의 Component로 구성되어 있다.

 

2. Component

 

- 기능 단위를 각 기능에 특화되게 만들어 둔 것.

- 특정 Component가 기본적으로 주어지지 않은 Entity에 해당 Component를 추가하여 Entity에 초기에 가지고 있지 않았던 새로운 기능을 부여할 수 있다.

- ex) Portal Component라는 Component를 갖는 Entity들은 포탈처럼 사용될 수 있다.

 

3. Property

 

- Component들에 대한 세부 정보들을 Property에서 설정한다.

- 각 Component의 고유한 특성.

 

● Entity

 

 

 월드 내의 일반적인 Entity들은 눈으로 확인할 수 있다.

 월드 내의 모든 Entity는 Scene Maker Panel에서 확인할 수 있다.

하나의 맵이라는 Entity에서 작업이 되고 있기 때문에 이 하위로만 추가된다.

 계층 구조로 이루어져 있으며, 트리 형태로 구성이 되어 있다. 부모 - 자식과 같은 형태.

 


 특정 Entity를 다른 Entity의 하위로 둘 수 있고, 이렇게 되면 부모 - 자식 관계가 형성 된다.

 

 Entity의 위치를 조작할 때, 자식 Entity는 혼자서 이동이 가능하지만, 부모 Entity는 자식 Entity와 함께 이동하게 된다.

 

크림슨 발록(Monster-152)을 부모 Entity로 설정하였고, 주니어 발록(Monster-33)을 자식 entity로 설정하였다.

 

 부모 Entity를 이동하는 경우, 자식 Entity 또한 함께 이동한다.

 

 

 자식 Entity를 이동하는 경우, 부모 Entity는 함께 이동하지 않는다.

 

 

 부모 Entity를 삭제하는 경우, 자식 Entity 또한 함께 삭제된다.

 

 

 자식의 Enable 설정이 참이라 하더라도, 부모의 Enable 설정이 거짓이라면, 자식은 사용할 수 없다.

 

 

 배경을 만들 때 여러 Entity를 묶어서 하나의 Entity로 만들거나, 조작할 때 편리하게 관리형으로 조작을 할 수 있는 형태로 사용할 수 있다.

 

 

 Component

- Component는 Entity가 수행할 일과 가지게 될 성질에 대해 정의하는 역할을 수행한다.

- 각각의 Entity는 여러 개의 Component들로 구성되어 있다.

 

 

* Script, Native : 크게 두 종류가 있다.


 Script Component

    - 직접 컴포넌트 제작 가능

    - 컴포넌트가 수행할 작업은 컴포넌트 내 함수에서 처리

 Native Component

    - 기본적으로 제공되는 컴포넌트

 

 

    - WorkSpace → BaseEnvironment → NativeScripts → MODComponent

     : MOD에서 기본적으로 제공하는 미리 만들어진 컴포넌트 목록 확인 가능

 

    - API Reference에서 컴포넌트의 상세 내용 확인 가능

 

* 각 Component들이 어떠한 기능을 하는지는 개발자 센터에 잘 설명되어 있다.

 

- Component의 세부적인 설정을 Property를 통해 조작할 수 있다.

 

* Component의 상세한 설명은 개발자 센터의 API Reference 페이지에 상세하게 제공되어 있다.
  어떠한 Component와 어떠한 Property가 어떤 식으로 일을 하는지 이 곳에 나와 있다.

 

- Script를 확인해보았을 때 Property로 분류되어 있는 내용들이 Property 설정을 통해 확인할 수 있는 Property와 동일하다는 것을 알 수 있다.

 

* Entity는 어떤 곳에 존재하는 개체 같은 느낌이고, 그 개체가 어떤 일을 하느냐는 Component가 결정을 하고, 그 어떤 일을 어떤 식으로 하느냐, 어떤 속성을 가지고 하느냐는 Property에 의해서 결정이 된다고 볼 수 있겠다.

 

* 각 Entity에 포함되어 있는 Component는 같은 종류라고 하더라도 다르게 구별된다. 이름이 같고 기능이 같지만, 실제로 생성된 것들은 다르다고 볼 수 있다. 그래서 Component는 Entity에 속해있는 거고, 여러 가지로 나타낼 수 있다.

 

[Service & Logic, Model]

 

● Service & Logic

 

 

* Workspace - BaseEnvironment - NativeScripts - MODService

* Workspace - BaseEnvironment - NativeScripts - MODLogic

 

MOD Service와 MOD Logic이라는 것이 있으며,

각각의 Service와 각각의 Logic은 월드 상에서 딱 하나만 존재할 수 있다.

 

 Service와 Logic의 차이?

 

 Service

- 깊은 부분에서 실제로 유저가 제어하기 힘든 부분들을 제공하는 로직.

- User, Log, Data, Camera

- 재가공 불가능

 

 Logic

- 실제로 게임을 돌리기 위해 사용되는 로직.

- UI, util

- 재가공 가능

- 자체 제작 가능

 

 Model
- Model이란 Entity와 Component의 집합체로써 이미 규격화되어 있는 형태를 가져와 사용할 수 있도록 하는 것이다.

(기본적으로 엔티티를 생성하기 위해서는 Entity를 생성하고 필요한 Component를 각각 설정해주어야 하지만,

 이러한 과정이 너무 번거롭기 때문에 미리 규격화된 것을 사용하고, 이를 Model이라 한다. 마치 도장과 같이 생각해주면 쉽다.)

- 각 카테고리에 따라서 적절한 Component들과 Property들이 사전에 지정되어 있다.

- 즉, 모듈화된 객체라고 볼 수 있으나 객체와는 엄연히 다른 개념이다.

- MOD 맵을 제작할 때 이미 많이 사용하는 오브젝트들을 Model이라고 한다.

- 기본적으로 제공되는 Model과 새롭게 제작해 모델화시키는 Entity를 바탕으로 Entity를 커스텀 할 수 있다.

- 내가 원하는 방식대로 나만의 게임을 만들고 싶은데, 매번 하나하나 설정해주기가 번거로울 수도 있다. 이런 경우, Entity를 Model로 만들어 사용할 수도 있다.

 

 

- Entity를 선택하고 우클릭 - Make Original Model을 선택하면 모델이 생성된다.

 

 

- 생성된 모델은 Workspace - MyDesk에서 확인할 수 있다.

- 생산성을 높이고 싶을 때 Model을 사용하면 유용하다.

- 만들어진 Entity를 어떠한 틀 내에서 찍어내는 용도로 사용하면 된다.

 

이번 강의에서는 Entity, Property, Component, Service, Logic, Model에 대해서 학습하였으며, MOD를 학습하며 필요한 가장 기초적인 요소들을 익힐 수 있는 시간이었다.

 

*해당 게시글은 Supporters Hackathon 참여자에게 제공되는 MOD 학습 강의와 기본 학습 교안의 내용을 기반으로 작성되었음을 알립니다.