OasisW매뉴얼 English
섹션 2. 핵심 개념 개념 작성 대기 3

프로젝트·씬·엔티티·컴포넌트·에셋

OasisW의 게임은 프로젝트(Project), 씬(Scene), 엔티티(Entity), 컴포넌트(Component), 에셋(Asset)의 다섯 단위로 이루어집니다. 이 페이지는 다섯 단위가 서로 어떻게 포함되는지, 그리고 에디터의 어느 패널에서 각 단위를 보는지 설명합니다.

개념 자체는 다른 엔진과 같습니다. 이 페이지가 다루는 것은 OasisW에서의 이름, 위치, 그리고 다른 엔진과 다르게 동작하는 지점입니다.

포함 관계

다섯 단위의 관계는 다음과 같습니다.

프로젝트
├─ 씬 (여러 개)
│   └─ 엔티티 (계층 구조, 맨 위는 Root)
│       └─ 컴포넌트 (RENDER, COLLISION, SCRIPT …)
│               │
│               └─ 에셋을 참조함 (머티리얼, 스크립트 파일 …)
└─ 에셋 (프로젝트 전체가 함께 씀)
도해 예정위 트리를 그림으로. 씬 상자 여러 개가 아래의 에셋 상자 하나를 화살표로 함께 가리키는 모양
  • 프로젝트가 가장 큰 단위입니다. 프로젝트 하나에 씬을 여러 개 둘 수 있습니다.
  • 씬은 엔티티의 계층 구조 하나를 담습니다. 씬마다 엔티티 목록이 따로 있습니다.
  • 엔티티는 씬 안에 놓이는 대상입니다. 엔티티 자체에는 이름과 Position·Rotation·Scale이 있습니다. 보이게 하거나 부딪히게 하는 기능은 컴포넌트가 맡습니다.
  • 컴포넌트는 엔티티에 붙어서 기능을 더합니다. 컴포넌트는 필요한 에셋을 참조합니다. 예를 들어 RENDER 컴포넌트는 머티리얼 에셋을, SCRIPT 컴포넌트는 스크립트 파일 에셋을 참조합니다.
  • 에셋은 씬이 아니라 프로젝트에 속합니다. 그래서 같은 프로젝트의 모든 씬에서 같은 ASSETS 목록이 보입니다.

마지막 줄이 이 구조에서 가장 중요한 점입니다. 엔티티와 컴포넌트는 씬마다 따로 있지만, 컴포넌트가 참조하는 에셋은 프로젝트 전체가 함께 씁니다. 이 차이가 실제 작업에 주는 영향은 씬마다 따로인 것, 프로젝트가 함께 쓰는 것에서 설명합니다.

각 단위를 보는 곳

단위보는 곳화면에서 찾는 법
프로젝트SCENES 창 왼쪽 위프로젝트 이름이 SCENES 창 왼쪽 위에 표시됩니다. 맨 위 줄의 집 아이콘은 프로젝트 목록으로 나갑니다
씬맨 위 줄의 씬 이름 → SCENES 창지금 열린 씬에 CURRENT 표시가 붙습니다
엔티티HIERARCHY 패널, 뷰포트왼쪽 HIERARCHY에서 고르거나 뷰포트에서 직접 클릭합니다
컴포넌트ENTITY 패널엔티티를 고르면 오른쪽이 ENTITY로 바뀌고, 붙은 컴포넌트가 헤더 단위로 보입니다
에셋ASSETS 패널가운데 아래에 있습니다. 왼쪽에 폴더 트리가 있습니다
스크린샷 예정에디터 전체 화면에 HIERARCHY·뷰포트·ASSETS·ENTITY 네 영역 번호 표식 (스킨 변경 후 촬영)

각 패널의 버튼과 칸은 화면 구성에서 자세히 다룹니다.

프로젝트

프로젝트는 씬과 에셋을 담는 그릇입니다. 프로젝트를 만들고 목록에서 고르는 화면은 작성 대기 프로젝트 만들기·목록 화면이 확정되면 프로젝트 만들고 에디터 열기에서 다룹니다.

새 프로젝트를 열면 SCENES 창이 먼저 뜹니다. 새 프로젝트에는 기본 씬이 하나 있습니다.

씬

맨 위 줄 왼쪽의 씬 이름을 누르면 SCENES 창이 열립니다. 이 창에서 씬 목록을 보고, 다른 씬으로 옮겨 가고, + New Scene으로 새 씬을 만듭니다. 씬 이름 오른쪽의 ··· 메뉴에는 Duplicate Scene과 Delete Scene이 있습니다.

새 프로젝트의 기본 씬과 새로 만든 씬은 처음 내용이 다릅니다.

씬처음 들어 있는 엔티티
새 프로젝트의 기본 씬Camera, Light, Box, Plane
+ New Scene으로 만든 씬Root만 있음

엔티티를 하나도 고르지 않은 상태에서는 오른쪽 패널이 SETTINGS를 표시합니다. SETTINGS는 씬 전체에 대한 설정입니다. 작성 대기 SETTINGS 패널의 항목이 기록되면

씬을 만들고 오가는 방법은 씬 만들고 오가기에 있습니다.

엔티티

HIERARCHY 패널이 지금 씬의 엔티티를 계층 구조로 보여 줍니다. 부모-자식 관계는 다른 엔진과 같습니다.

AI GAME BUILDER가 게임을 만들면 엔티티를 Environment, Lighting, Gameplay, UI 같은 부모 엔티티로 묶는 경우가 많습니다. 묶음의 이름과 구성은 만들 때마다 다릅니다. 묶음 앞의 +를 누르면 자식 엔티티가 펼쳐집니다. 찾는 엔티티가 보이지 않으면 패널 맨 위 Search 칸에 이름을 입력합니다.

이름 앞에 <>가 붙은 엔티티에는 스크립트가 붙어 있습니다. 컴포넌트가 여럿이면 아이콘은 하나만 보이므로, <>가 없어도 스크립트가 붙어 있을 수 있습니다.

엔티티를 고르면 세 가지가 함께 바뀝니다. HIERARCHY의 줄이 강조되고, 뷰포트의 엔티티에 기즈모가 붙고, 오른쪽 패널이 ENTITY로 바뀝니다. 같은 줄을 다시 클릭하면 선택이 풀리고 오른쪽은 SETTINGS로 돌아갑니다.

컴포넌트

ENTITY 패널 맨 위에는 엔티티 자체의 Position·Rotation·Scale 칸이 있습니다. 그 아래에 붙은 컴포넌트가 RENDER, COLLISION, SCRIPT, LIGHT, SCREEN, ELEMENT 같은 헤더로 하나씩 보입니다.

컴포넌트는 Position·Rotation·Scale 아래의 + ADD COMPONENT 버튼으로 붙입니다. 메뉴는 분류별로 나뉩니다.

분류들어 있는 것
PhysicsRigid Body, Collision
2D, 3D화면에 그리는 컴포넌트
Audio, Light, Camera소리, 빛, 카메라
Anim, Particle System애니메이션, 파티클
Script, UI스크립트, 화면 UI

이미 붙어 있는 컴포넌트는 메뉴에서 흐리게 보입니다. AI가 만든 엔티티에 어떤 컴포넌트가 붙는지는 만들 때마다 다릅니다. 붙이고 떼는 방법은 컴포넌트 붙이고 떼기에 있습니다.

에셋

ASSETS 패널은 프로젝트의 에셋을 보여 줍니다. 왼쪽 폴더 트리는 루트 /에서 시작합니다. AI가 만든 프로젝트에는 Materials, Scripts 같은 폴더가 생깁니다.

  • 오른쪽 끝의 Upload는 내 컴퓨터의 파일을 올립니다.
  • +는 새 에셋을 만드는 메뉴입니다. Folder, Material, Script 등이 있습니다.
  • 목록 보기(줄 세 개 아이콘)를 켜면 Type 칸에 에셋 종류가 보입니다.

컴포넌트와 에셋은 어떻게 이어지는가

컴포넌트는 에셋을 복사하지 않고 참조합니다. 이 점은 두 가지 예에서 드러납니다.

머티리얼 — AI가 만든 머티리얼은 Materials 폴더에 Color E63946처럼 색 코드 이름으로 생깁니다. 같은 색을 쓰는 엔티티는 머티리얼 하나를 함께 참조합니다. 실측한 판에서는 Enemy 엔티티 5개가 Color E63946 머티리얼 하나를 썼습니다. 따라서 이 머티리얼의 색을 바꾸면 5개가 함께 바뀔 것으로 보입니다. 작성 대기 공유 머티리얼의 색을 바꿔 여러 엔티티가 함께 바뀌는지 실측 엔티티 쪽에서는 RENDER 컴포넌트의 Materials 칸이 어느 머티리얼을 쓰는지 정합니다. 자세한 내용은 엔티티 색 바꾸기에 있습니다.

스크립트 — 스크립트 파일(예: ballMove.js)은 ASSETS에 있는 에셋입니다. 엔티티에서는 SCRIPT 컴포넌트가 이 파일을 참조합니다. 스크립트가 선언한 속성 값은 엔티티의 SCRIPT 컴포넌트 칸에 따로 들어 있습니다. 한 번 확인한 바로는, 코드의 default: 값을 11에서 22로 바꿔도 게임은 그대로 11이었습니다. 엔티티 칸에 들어 있던 값 11이 쓰인 것으로 보입니다. 자세한 내용은 스크립트 속성 값 바꾸기에 있습니다.

정리하면, 코드는 에셋이라 프로젝트가 함께 씁니다. 어느 엔티티에 붙이는지와 속성 값은 엔티티 쪽에 있으므로 씬마다 따로일 것으로 보입니다. 씬마다 따로인지는 아직 직접 시험하지 않았습니다.

다음으로

원고 concepts/project-structure.html