티스토리 뷰

728x90

새 프로젝트 만들기로 노드와 씬의 개념을 잡기 위한 HelloWorld 프로젝트를 생성한다. C언어, 파이썬, C#, PHP 등 무슨 프로그래밍 언어를 배우든 간에 시작 시점에 뭔가를 코딩해서 컴파일 후 그 실행 결과를 보는 것만큼 중요한 것은 없다. 백날 머리로 "그렇구나!" 해서는 아무 소용이 없다. 프로그래밍은 상상한 것을 코딩하고 그 결과를 확인하는 과정이라 해도 과언이 아니기 때문이다. 그래서 화면에 "Hello World!"라고 출력하는 것은 아무것도 아닌 것처럼 보일지는 몰라도 언어 시스템 전체를 움직이게 하고 그것을 몸으로 경험하는 아주 중요한 작업이다. 마찬가지로 고도의 생산 시스템을 전체적으로 움직여 보는 "Hello World!"를 출력해 보고자 한다.

 

프로젝트를 생성하고 편집기를 열면 위의 그림처럼 중앙에 작업 공간이 나오고 좌측에 씬 창이 보이는데("고도 편집기의 구조와 작업 공간" 참조) 고도 편집기는 기본적으로 씬 편집기라 할 수 있다. 2D 씬, 3D 씬, 사용자 인터페이스 등을 편집하는 다양한 도구가 있지만, 고도 편집기는 고도 게임을 구성하는 씬(Scene)과 노드(Node)를 편집하는 것이라고 생각하는 것이 좋다. 고도 게임, 다시 말해서 하나의 고도 프로젝트는 하나 또는 하나 이상의 씬으로 구성되고 하나의 씬은 노드 그룹으로 이루어진다. 게임을 실행한다는 의미는 씬을 실행한다는 의미이고 씬은 게임의 여러 재료인 노드들로 구성되고 각 노드들은 또 다른 노드를 가지는 계층적인 구조를 갖는다.

 

고도 편집기에서 씬과 노드의 유형을 구분할 수 있는 간편한 방법은 색상으로 파란색은 2D 씬으로 Node2D 라는 노드 유형이고, 적색은 3D 씬으로 Spatial 이라는 노드 유형을 갖는다. 녹색은 사용자 인터페이스로 Control 이라는 노드 유형이고 나머지 회색은 Node 라는 노드 유형을 갖는다.

 

위의 그림에서 보듯이 하나의 씬은 최상위 노드인 루트 노드를 갖고 이 노드 아래 다른 노드들이 계층적으로 구성되는 구조이다. 위의 그림에서 Stage(Node2D 유형), World(Spatial 유형), main(Node 유형)이 루트 노드이고 이 루트 노드를 가진 씬은 씬 단위로 하나의 파일에 저장되고 불러올 수 있으며 개체화(instance) 될 수 있는 특징을 갖는다.

 

노드는 고유의 이름으로 자신을 식별하며 다른 노드를 자식 노드로 가질 수 있고, 다른 노드의 자식 노드가 되는 방식으로 노드 그룹은 트리 구조를 가진다. 각 노드의 속성을 설정할 수 있어서 특정 노드를 선택하면 인스텍터 창에 위의 그림처럼 각 노드의 특성에 맞는 속성을 지정할 수 있다. 또한 우측의 그림처럼 시그널을 받아 처리할 수도 있다.

 

씬은 위의 좌측 그림에 있는 "main.tscn"처럼 통상 "루트 노드 이름.tscn"이라는 파일 이름으로 저장하게 된다. 좌측 그림을 보면 하나의 게임에 상당히 많은 씬이 존재하는데 개별 씬 파일을 더블 클릭하면 새로운 작업 공간이 추가되면서 씬 창의 루트 노드에 씬 파일의 이름이 나오고 해당 씬을 편집할 수 있게 된다. 저장한 씬은 우측 그림처럼 스크립트에서 불러와서 사용할 수 있다. 파일 시스템 창에서도 스크립트 내에서 씬을 불러올 때도 "res://"가 사용되고 있는데 이는 프로젝트 폴더를 의미하는 것으로 프로젝트 파일, 씬 파일을 비롯해서 오디오, 이미지 등을 모두 프로젝트 폴더 아래 위치시키고 배포도 폴더 단위로 해서 시스템 간의 호환성도 좋게 하고 배포의 편의성도 좋게 하는 장점을 확보하게 된다.

 

씬과 노드의 개념은 둘러보았으니 이번 포스팅의 목표인 "Hello World!"를 출력해 볼까 한다. 우선 새 프로젝트 화면의 좌측 상단에 있는 씬 창에서 녹색의 "사용자 인터페이스"를 클릭한다. 그러면 루트 노드가 기본적으로 "Control"로 생성된다. 노드의 이름도 노드의 유형도 Control인 노드이다. 이 상태에서 씬 창 좌상단에 있는 + 버튼을 클릭하거나 Ctrl+A 단축키를 눌러서 "새 노드 만들기"를 선택한다. 선택할 수 있는 다양한 노드들이 보이는데 그중에서 Control>Label을 선택하고 [만들기]를 클릭한다. 이렇게 생성하는 노드는 현재 선택한 노드의 자식 노드로 만들어진다.

 

추가한 레이블 노드의 속성을 수정하면 되는데, 비주얼 스튜디오나 이클립스와 같은 통합 개발 환경과 비슷한 방식이다. 우측의 인스펙터 창의 Text 속성에 출력할 문자열을 입력하면 중앙 작업 공간의 디자이너에서도 동일하게 반영된다.

 

다음에 필요한 것은 현재 씬을 저장하는 것으로 씬>씬 저장 메뉴를 선택하거나, Ctrl+S 단축키로 수행할 수 있다. 위의 그림을 보면 앞서 설명했듯이 프로젝트 폴더인 "res://"가 경로로 설정되어 있고 루트 노드의 이름인 Control을 기본 씬 파일의 이름으로 설정해 놓았다. [저장]하면 작업 공간 제목도 "저장 하지 않음"이 아니라 저장한 씬 파일 이름으로 바뀌고 파일 시스템 창에서도 해당 씬 파일을 표시한다.

 

끝으로, 프로젝트의 시작점이 되는 씬을 지정해야 하는데 위의 그림처럼 프로젝트>프로젝트 설정 ... 메뉴로 들어가 Application>Run 항목의 Main Scene에서 프로젝트 수행 시 실행시킬 씬을 지정한다. 

 

위의 모든 작업이 끝났으면 이제 실행할 수 있는 상단 툴바의 실행(F5 단축키)이나 씬 실행(F6 단축키) 어느 것으로 해도 좋다.

 

실행 결과 화면이다. "시작이 반이다!".

 

728x90
댓글
글 보관함
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31