String은 유니코드를 지원하는 내장 문자열 클래스다. 문자열을 다루는 작업은 코딩 과정에서 자주 사용하는 것이므로 고도에서 제공하는 것을 정리하고 넘어간다. var output_dir : String = dir.get_current_dir() var blueprint_name := "" label.text = String(canvas_number) 변수의 타입으로 문자열을 지정하기 위해서 String을 사용할 수도 있지만 ""로 문자열 상수를 직접 기술할 수도 있다. 문자열 리터럴은 다른 언어처럼 백 슬래시(\)를 에스케이프 문자로 사용할 수 있음을 "고도 스크립트 개요, 예약어와 연산자"에서 이미 다루었다. 다중 라인 문자열은 """로 기술한다. 위의 예제에서 blueprint_name은 빈 문자열..
요즘 대부분의 웹 사이트는 모바일에서 사이트를 보는지, 데스크톱에서 사이트 보는지와 관계없이 마치 해당 장비의 화면 크기에 맞게 사이트를 설계한 것처럼 기기에 맞는 크기로 깔끔하게 내용을 볼 수 있다. 반응형 웹 기술이 적용된 까닭이다. 반응형 웹(Responsive web design) 기술이 적용된 사이트는 화면 크기에 따라 내용이 어그러져 보이지도 않고 스크롤을 사용하지 않아도 편리하게 사이트 내용을 볼 수 있다. 이런 현상은 게임도 마찬가지인데 모바일, 데스크톱, 게임박스 등 기기에 따른 다양한 화면 크기와 해상도는 게임 설계에 있어 큰 짐이 될 수밖에 없다. 다행인 것은 고도 게임 엔진에서는 반응형 웹 설계 기술과 유사한 여러 기능들을 지원하고 있다는 것이다. ■ 가장 기본적인 5개의 컨트롤 노..
"고도 엔진 소스 빌드하기"와 "비주얼 스튜디오로 고도 게임 엔진 개발 환경 구축"에 이은 글로 이번 포스팅은 간단하지만 엔진을 직접 수정하는 과정을 다뤄보고자 한다. 아직 고도 게임 엔진의 소스 빌드를 하지 않았다면 아직 포스팅을 참조할 필요가 있다. 고도 엔진을 처음 실행하면 위의 그림과 같이 한글은 정상적으로 표시되지 않는다. 한글은 기본 폰트에 없기 때문이다. "고도에서 한글 출력하기"에서 다룬 것처럼 커스텀 폰트로 설정하는 방법을 사용해야 한다. 엔진 내부에는 191개의 문자에 대해서만 고해상도 및 저해상도용 폰트를 내장하고 있다.(godot/scene/resources/default_theme/font_hidpi.inc, font_lodpi.inc) 실행 모드나 노드 편집기에서는 한글이 표시되..
고도 게임 엔진은 스콘(SCons, A software construction tool)을 통해서 소스 코드를 빌드하고 다양한 형태의 실행 파일을 만들고 다른 플랫폼용으로 크로스 컴파일도 가능하다. 그렇지만 윈도우 환경에서 비주얼 스튜디오와 같은 통합 개발 환경(IDE)에 익숙한 개발자라면 고도 게임 엔진의 소스코드들을 통합 개발 환경 내에서 편집하는 것이 여러모로 편리할 것이다. 본격적으로 비주얼 스튜디오 기반의 고도 게임 엔진 개발 환경을 구축하기 전에 "고도 엔진 소스 빌드하기"와 같이 스콘을 통한 소스 코드 빌드를 성공적으로 마쳐야 한다. 위의 그림처럼 scons 소스 빌드 명령 뒤에 "vsproj=yes"를 붙여주면 비주얼 스튜디오에서 엔진의 소스 코드도 열고 빌드도 할 수 있다. 소스 폴더에 ..
고도 게임 엔진의 매력 중의 하나는 라이선스가 상당히 개방적이라는 점이다. MIT 라이선스를 채용하고 있는데, 이 정도면 거의 자유롭게 코드를 변경해서 배포할 수 있다. 아무리 좋은 소스 코드라 해도 일단, 빌드를 원활하게 수행할 수 있어야 하므로 최신 고도 엔진 소스를 받아서 빌드를 하기로 했다. 리눅스 시스템에서 크로스 컴파일로 윈도우용 고도를 빌드할 수도 있지만 윈도우 시스템에서 윈도우용 고도를 빌드한다. ■ 소스 내려받기 위의 그림처럼 git clone https://github.com/godotengine/godot.git을 수행하여 고도 최신 코드를 내려받는다. 만약 안정화 버전으로 작업하려면 git clone https://github.com/godotengine/godot.git -b 3...
요즘 많이 사용하는 프로그래밍 언어를 접하다 보면 무엇보다 매력적인 것이 사전 타입의 지원이다. 키 값에 따라 다양한 타입의 값을 가질 수 있고 위의 color 항목들처럼 사전 속에 사전 타입을 가질 수 있다. 사전 상수는 위의 예제처럼 {중괄호} 속에 키:값의 목록을 기술하면 된다. 빈 사전 타입을 선언하려면 var adic = {}와 같이 기술하면 된다. 중괄호 속에 키 = 값의 목록으로 기술하는 방법도 있는데 이 경우 키는 따옴표를 붙이지 않으며 자동으로 문자열 타입의 키로 간주된다. 사전 타입 변수는 키 값을 가지고 개별 항목에 접근할 수 있으며 해당 키가 존재하는지 여부는 has() 메서드로 확인할 수 있다. 항목을 추가하는 방법은 키값으로 지정하는 항목에 단순 대입하면 기존에 존재하는 키라면 ..
배열은 프로그래밍 과정에서 없어서는 안 될 핵심 요소이다. 다른 프로그래밍 언어와 아주 다른 점이 하나 있는데, 대부분의 언어는 배열의 요소들은 동일한 데이터 타입만 허용한다. 그러나, 고도 스크립트에서는 배열의 요소들 간에 데이터 타입이 서로 달라도 된다는 점이다. 첫 번째 요소는 스트링, 두 번째 요소는 정수 타입, 세 번째 요소는 실수 타입으로 저장할 수도 있다. 배열 선언은 위 예제처럼 []로 빈 배열을 선언할 수 있다. 배열 크기가 고정된 것이 아니므로 배열 크기를 지정할 필요가 없다. 예제처럼 배열. append()로 배열 끝에 항목을 추가할 수 있다. 배열.insert()로 특정 위치를 지정하여 항목을 삽입할 수도 있다. 배열. size()로 확인할 수 있는 배열 크기 내에서 배열 첨자를 활..
위의 그림은 고도 스크립트에서 파일 클래스를 사용하는 대표적인 사례로 클래스 인스턴스를 만들고, 파일을 열고, 작업 후 닫는 전형적인 과정을 거친다. 사용할 수 있는 다양한 메서드는 다음과 같다. 파일 읽기 및 쓰기는 UTF-8 인코딩으로 처리한다. ■ 열기, 닫기 Error open ( String path, ModeFlags flags ) ☞ 정상시 OK 리턴, READ/WRITE/READ_WRITE/WRITE_READ(파일 존재하면 삭제함) 모드 사용 가능 Error open_compressed ( String path, ModeFlags mode_flags, CompressionMode compression_mode=0 ) ☞ 압축된 파일 열기, 단 고도에서 저장한 파일만 읽기 가능. 압축 방식은..
게임 개발이나 앱 개발이나 컴퓨팅 분야에서는 따라 하기 만큼 좋은 학습 방법이 없다. 체계적인 이해가 필요한 경우가 분명히 있지만, 초보자에게 일단 따라 하고 고쳐 가면서 눈에 보이는 결과물로 이해를 높이는 방법은 좋은 학습 방법임에 틀림없다. 앞으로 따라 하면서 활용하고 학습할 오픈 소스 고도 프로젝트들을 정리해 본다. ☞ 고도 데모 프로젝트 https://github.com/godotengine/godot-demo-projects 고도에서 기본적으로 제공하고 있는 데모 프로젝트들. >2D:bullet_shower, dodge_the_creeps, finite_state_machine, gd_paint, hdr, hexagonal_map, instancing, isometric, kinematic_ch..
"리듬 게임 분석하기" 글에 이어서 여러 가지 기술적 요소를 살펴보고 있다. 2D 요소든 3D 요소든 움직임을 표시하는 것은 생동감 있는 게임을 만드는 데 있어 핵심적인 요소라 할 수 있다. 이번 포스팅에서는 2D 요소에 대한 움직임을 표현하는 데 사용하는 AnimationPlayer와 Tween 클래스를 다루고자 한다. ■ AnimationPlayer 클래스 위의 그림은 리듬 게임에서 리듬 비트에 따라 표시되었다가 없어지는 터치 및 드래그 게임 요소를 표시하기 위해 AnimationPlayer 클래스를 사용하고 있는 모습이다. 애니메이션 플레이어는 여러가지 자원을 가지고 애니메이션을 수행하는 클래스로 인스펙터 창에 있는 대부분의 요소에 대해서 애니메이션이 가능하다. 트윈의 경우에도 애니메이션 플레이어가..
"리듬 게임 분석하기" 글에 이어서 여러 가지 기술적 요소를 살펴보고 있다. 리듬 게임은 첫 화면에서 원하는 음악을 선택하고 [Go] 버튼을 누르는 것으로 시작한다. 데모에서는 3가지 트랙을 담고 있는데 개별 트랙을 선택하는 방법은 상단의 사각형을 좌우로 드래그하는 것이다. 각 음악 트랙을 서로 다른 색상의 사각형으로 표시하고 있는데 이때 사용하는 주요 클래스는 Area2D, Sprite, CollisionShape2D 등이다. ■ Area2D 클래스 게임 개발에 있어 2D든 3D든 자주 사용하게 되는 것이 두 오브젝트가 겹치거나 닿을 것 같은 상황을 감지하는 충돌 감지와 충돌에 대한 반응을 처리하는 것으로 고도 엔진에서는 물리 몸체(Physics Body)로 Area2D를 비롯하여 StaticBody2..
"리듬 게임 분석하기" 글에 이어서 여러 가지 기술적 요소를 살펴보고 있다. ■ 씬 인스턴스 활용 다양한 게임 요소들은 동적인 요소와 정적인 요소로 나눌 수 있는데 음악의 비트에 따라 터치 또는 드래그하도록 숫자와 원으로 표시하는 씬이나 터치한 곳에 점수를 표시하는 씬은 게임 진행에 따라 위치와 내용, 개수가 동적인 요소이다. 반면에 배경 이미지나 게임 진행 중 화면 상단에 표시하는 점수는 게임 제작 시점에 정해진 위치와 개수대로 유지하는 정적인 요소라 할 수 있다. 동적인 요소든 정적인 요소든 동일한 씬을 위치와 모양을 바꾸어 가며 재사용하는 것이 씬의 인스턴스 활용이다. 1. 동적 예제1 extends Node2D export var sprite_fx: PackedScene func _ready() ..
고도 데모에 있는 2D 리듬 게임을 분석하며 스터디를 해볼까 한다. 위의 그림은 게임의 실행 화면으로 [Go] 버튼을 클릭하면 게임을 시작한다. Cephalopod, Disco Lounge, Werq라는 3개의 트랙이 있는데 그중에서 Cephalopod를 실행하고 있는 화면이다. 곡을 바꾸려면 [Go] 버튼을 누르기 전에 상단의 사각형 박스를 좌측 또는 우측으로 드래그하면 된다. 기본 분석 내용은 아래와 같다. ■ 프로젝트 이름 : 2D Rhythm Game ■ 프로젝트 파일 : ■ 메인 씬 : RhythmGameDemo.tscn ■ 자동 로드 : Events="*res://RhythmGame/Autoload/Events.gd" ■ 입력 맵 : ☞ touch : BUTTON_LEFT 입력 맵에서 확인할 ..
고도 편집기에서 한글을 입력하다 보면 위의 그림처럼 주요 인터페이스와 코드 편집기, 인스펙터 창에서는 번역된 부분은 한글이 제대로 출력되고 입력 내용의 한글도 문제없지만 정작 한글이 나타나야 할 작업 공간에서는 한글이 표시되지 않는 문제가 있다. 이런 현상은 실행 화면에서도 마찬가지인데, 현재 버전(V3.2.1)까지는 아직 각 노드에서 사용할 사용자 폰트로 지정해 주어야만 한글을 정상적으로 사용할 수 있다. 비주얼 스튜디오에서 C#으로 윈도우 폼 응용을 개발하는 경우 폼의 폰트를 바꾸어 주면 폼 내의 다른 컨트롤들은 통상 상속을 받아서 폰트가 폼의 폰트로 자동 적용되는데 고도에서는 루트 노드에 폰트를 설정한다고 하위 노드에 해당 폰트가 자동 적용되지는 않는다. 한글 폰트 사용 부분은 다른 통합개발도구에서..
고도 스크립트 개요, 예약어와 연산자, 고도 스크립트 타입과 변수 선언, 고도 스크립트 클래스와 함수, 고도 스크립트의 제어문, 고도 스크립트의 시그널에 이은 글이다. ■ tool 모드 통상 고도 스크립트는 실행 모드에서만 수행되고 된다. 그런데 스크립트를 편집기 내부에서도 수행할 수 있는데 스크립트 첫 라인에 위의 그림과 같이 tool 키워드를 기술하면 된다. 스크립트를 적용한 씬을 편집할 때 해당 스크립트도 수행한다. 고도에서는 현재 스크립트가 실행 모드인지 아니면 편집 상태인지를 위의 예제와 같이 Engine.editor_hint 로 확인할 수 있게 해 준다. 위의 예제에서는 _draw 이벤트 함수가 호출되더라도 실행 모드에서는 해당 이벤트를 무시하고 편집기 상태에서만 내보내기 한 변수 값으로 사각..
고도 스크립트 개요, 예약어와 연산자, 고도 스크립트 타입과 변수 선언, 고도 스크립트 클래스와 함수, 고도 스크립트의 제어문에 이은 글이다. 시그널은 오브젝트 간에 메시지를 주고받기 위한 도구로 시스템에 내장된 시그널은 필요에 따라 사용자 함수에 연결하여 해당 시그널을 받아서 사용하면 된다. 사용자 오브젝트에 시그널을 적용하고 싶다면 시그널을 정의하는 과정과 시그널을 발생시키는 과정이 필요하다. ■ 시그널 연결하기 위의 그림은 고도에 내장된 RigidBody라는 클래스의 도움말 화면으로 RigidBody 클래스에서 제공하는 시그널을 확인할 수 있다. 시스템 클래스가 제공하는 시그널의 경우에는 connect로 사용자 함수에 연결만 하면 해당 이벤트가 발생하는 시점에 지정한 함수가 호출되는 방식이다. 위의..
고도 스크립트 개요, 예약어와 연산자, 고도 스크립트 타입과 변수 선언, 고도 스크립트 클래스와 함수에 이은 글이다. ■ 조건문 if, else, elif 키워드를 이용해서 조건문을 기술할 수 있다. 블록 내 조건문 "if (velocity.y > 0):"처럼 조건에 괄호를 사용해도 되지만 C/C++처럼 반드시 기술해야 하는 필수 요소는 아니다. 조건이 true 일 때, false 일 때 수행할 문장들은 탭 문자를 이용해서 들여 쓰기 해야 한다. 조건문을 반복해야 하는 경우 elif로 문장을 이어갈 수 있다. 조건에 따라 처리해야 할 문장이 짧은 경우 위의 예제처럼 조건 표현과 같은 줄에 기술할 수도 있다. 조건에 따른 작업이 단순한 대입문인 경우 앞서 기술한 삼항 연산자를 사용하는 것도 유용하다. ■ ..
고도 스크립트 개요, 예약어와 연산자, 고도 스크립트 타입과 변수 선언에 이은 글이다. ■ 클래스 고도에서는 스크립트 파일 하나를 기본적으로 하나의 클래스로 간주한다. 단, 이름 없는 클래스인데 해당 파일에 이름을 부여하고 싶다면 class_name 키워드를 사용하여 "class_name 클래스명, 아이콘 경로"의 형식으로 기술할 수 있다. 아이콘 지정은 생략할 수 있다. 위의 그림은 스크립트에 클래스 이름을 부여하면서 아이콘을 지정한 것으로 해당 스크립트를 사용하는 노드의 아이콘이 편집기에서 지정한 것으로 변경된 것을 확인할 수 있다. 아이콘을 지정하지 않으면 상속한 부모 클래스의 아이콘을 표시한다. 고도의 클래스는 변수와 함수를 가질 수 있으며 함수는 static으로 정의해서 인스턴스화 없이도 사용할..
고도 스크립트 개요, 예약어와 연산자에 이은 글이다. ■ 내장 타입 고도 스크립트에서는 기본, 벡터, 엔진, 컨테이너 내장 타입을 지원한다. 대입문에서 데이터를 복사하거나 함수의 인수로 사용할 때의 데이터 전달 방식을 결정한다. 데이터 용량이 큰 배열이나 사전 타입은 값 전달이 아니라 참조 방식으로 수행된다. ☞ 기본 타입 - null : 데이터를 가질 수 없는 빈 타입. - bool : boolean 도 가능. true/false만 가질 수 있다. - int : integer 도 가능. 64비트 정수. - float : 64비트 배정도 실수. - String : 유니코드 문자열. 위의 그림은 기본 타입을 사용하고 있는 예제이다. ☞ 벡터 타입 - Vector2 : x, y 항목을 가진 2D 벡터 타입 ..
고도 게임 엔진에서 캐릭터를 움직이게 하고, 사용자의 동작에 반응하거나 제작자 미리 준비한 시나리오나 시간에 따라 어떤 작업을 수행하는 것은 고도 스크립트(GDScript)에 기반한다. 그러므로 고도 게임 엔진으로 뭔가를 만들고 싶다면 고도 스크립트의 기본적인 문법이나 사용법을 익히는 것은 필수 과정이라 할 수 있겠다. 물론 고도에서 제공하는 비주얼 스크립트나 C# 스크립트를 사용하는 방법도 있지만 고도에서 제공하는 대부분의 데모 프로젝트나 샘플은 GDScript를 사용하고 있다는 한계가 있다. C#에 익숙한 개발자라면 C# 스크립트를 이용하는 것도 상당히 매력적인 선택이지만 이 또한 오픈소스 닷넷 프레임워크인 모노(Mono)를 추가적으로 설치해야 한다는 제약이 있다. 고도 스크립트의 가장 큰 특징 두 ..
고도 게임 엔진에서 하나의 프로젝트는 하나의 폴더를 생성하는 것으로 시작한다. 해당 폴더가 프로젝트의 루트 폴더가 되어서 씬이나 자원, 스크립트 경로를 지정할 때 "res://"는 프로젝트의 루트 폴더를 의미한다. 물론 하위 폴더를 가질 수 있다. 루트 폴더에 고도 프로젝트 파일(project.godot)이 한 개 존재하고 한 개 이상의 씬 파일과 스크립트 파일, 그리고 여러 가지 에셋(이미지, 폰트, 3D 모델 등등) 파일로 프로젝트 파일 시스템을 구성한다. ■ 고도 프로젝트 파일(project.godot) 프로젝트의 이름, 시작 씬, 입력 설정 정보 등의 프로젝트의 주요 설정이 담기는 파일. config_version=4 [application] config/name="Global Illuminati..
사용자가 키보드나 마우스, 게임 패드나 조이스틱, 심지어 터치까지 뭔가 신호를 주면 그에 따른 반응과 움직임을 보이는 것은 게임의 핵심이지 않을까! 사용자의 개입이 없다면 그냥 동영상이라 해도 무방할 것이다. 초보 게이머가 고도 엔진을 설치하고 데모 프로젝트를 수행하는 과정은 대부분 키보드에서 화살표를 움직이거나 마우스를 움직여 보는 것 말고는 특별히 할 수 있는 것이 없다. 사용 안내서도 없고, 일반적인 게임 방법에도 익숙하지 않기 때문이다. 데모 프로젝트를 따라 하면서 개발 기술을 익히려면 우선 데모 프로젝트를 플레이 할 수 있어야 하는데, 시작부터 막힌 것이다. 고도 스크립트를 열어 보면 Input.is_action_pressed("aim")처럼 뭔가 눌러졌을 때를 처리하는 로직이 있는데, 전통적인..
"고도로 만드는 첫 게임"에서 처럼 고도를 이용해 게임을 만들었다면 최종적으로 게임을 실행시킬 장비에 맞도록 내보내기 하여 배포하는 것으로 게임을 완성시킬 수 있다. 게임의 완성도를 위해서 클로즈 베타 테스트(CBT, Closed Beta Test)와 오픈 베타 테스트(OBT, Open Beta Test)를 수행하는 경우에도 게임 내보내기는 필수 과정일 수 밖에 없다. 고도 편집기가 없어도 게임을 수행할 수 있는 형태의 패키지로 제작하는 과정이다. ■ 내보내기 템플릿 "고도로 만드는 첫 게임"은 키보드로 동작하는 게임이기 때문에 윈도우, 리눅스, 맥용 데스크톱으로는 내보내기 해도 문제가 될 것이 없지만, 아이폰이나 안드로이드로 내보내기 하면 게임 동작 자체가 부자연스러울 수밖에 없다. 모바일용 게임이라면..
개발 과정에서는 무엇을 배우든 간에 과정의 처음부터 끝까지 길을 한번 가보는 것이 매우 중요하다. 결과적으로 거칠고 다듬어지지 않은 것이라 해도 완성품을 보는 것이다. 이 과정을 통해서 할 수 있다는 자신감뿐만 아니라, 각 과정에서 필요한 것이 무엇인지, 한 단계 발전하기 위해서 내게 필요한 것이 무엇인지도 파악할 수 있다. 이번 포스팅에서는 고도 튜토리얼에서 제시하고 있는 키보드를 이용한 "피하기 게임"을 제작하는 과정을 다루어 보고자 한다. 게임은 키보드의 방향키로 캐릭터를 움직여서 사방에서 날아오는 괴물을 피하는 것이다. 방향키를 따라 움직이는 캐릭터로 표시하는 플레이어, 사방에서 날아오는 괴물들, 그리고 플레이어가 버틴 시간을 표시하는 정보 창 등이 이 게임의 주요 요소라 하겠다. 2D 게임으로 ..
시그널(Signal)은 노드와 노드 간에 신호를 주고받을 수 있는 체계로 위의 그림처럼 특정 노드를 선택한 상태에서 우측 "노드"창의 시그널 탭을 통해서 해당 노드에서 사용할 수 있는 시그널을 사용할 수 있다. extends Control var accum = 0 # Called when the node enters the scene tree for the first time. func _ready(): get_node("Button").connect("pressed", self, "_on_Button_pressed") # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): accum ..
위의 그림은 고도의 데모 프로젝트 FPS MP Client에 있는 스크립트 예제로 GDScript라 불리는 고도의 스크립트 언어는 파이썬의 언어 체계와 유사한 특성을 가지고 있는데 대표적인 유사점으로 키워드들이 비슷하고, 들여 쓰기로 코드 블록을 구분한다는 점이다. 게임 개발과 통합에 있어 스크립트를 통해 상당한 유연성을 확보할 수 있다. 버전 3.0 이전에는 GDScript만 지원했으나 현재는 GDScript를 다이어그램 형태로 사용할 수 있는 Visual Script를 사용할 수 있게 되었다. 위의 그림은 템플릿에서 "Visual"로 검색하면 나오는 "Pong with VisualScript" 프로젝트의 스크립트 편집화면으로 내용을 보면 GDScript를 그림 형태로 만들 수 있다는 점을 제외하면 프..
앞선 글("노드와 씬(Scene), Hello World 프로젝트")에서 노드는 다른 노드를 자식 노드로 가질 수 있을 뿐만 아니라 다른 노드의 자식 노드가 되는 방식으로 트리 구조의 노드 그룹을 형성하며, 씬은 하나의 루트 노드로 시작하는 계층 구조의 노드 그룹을 가지며 파일에 저장되고(*.tscn) 불러올 수 있고 개체화(instance) 할 수 있는 특징이 있음을 다루었다. 이번 글에서는 개체화 맛보기를 통해서 개체화(instance)에 대한 이해를 높이고자 한다. 씬 창에서 일반적인 노드위에 마우스를 올려두면 좌측 그림의 "유형:Node2D"와 같은 형태로 노드의 유형을 표시한다. 그렇지만 어떤 씬의 인스턴스인지와 유형을 우측의 그림처럼 표시하는 것이 바로 인스턴스이다. 그림에서 확인할 수 있듯이..
새 프로젝트 만들기로 노드와 씬의 개념을 잡기 위한 HelloWorld 프로젝트를 생성한다. C언어, 파이썬, C#, PHP 등 무슨 프로그래밍 언어를 배우든 간에 시작 시점에 뭔가를 코딩해서 컴파일 후 그 실행 결과를 보는 것만큼 중요한 것은 없다. 백날 머리로 "그렇구나!" 해서는 아무 소용이 없다. 프로그래밍은 상상한 것을 코딩하고 그 결과를 확인하는 과정이라 해도 과언이 아니기 때문이다. 그래서 화면에 "Hello World!"라고 출력하는 것은 아무것도 아닌 것처럼 보일지는 몰라도 언어 시스템 전체를 움직이게 하고 그것을 몸으로 경험하는 아주 중요한 작업이다. 마찬가지로 고도의 생산 시스템을 전체적으로 움직여 보는 "Hello World!"를 출력해 보고자 한다. 프로젝트를 생성하고 편집기를 열..
편집기의 구조는 기본적으로는 가운데에 크게 작업 공간(Work space)이 자리 잡고 작업 공간 아래로는 하단 패널이 자리한다. 이 모습은 비주얼 스튜디오와 같은 대부분의 통합 개발 환경(IDE)이 가지고 있는 형태로 디자인이나 코딩 작업을 작업 공간에서 수행하고 하단 패널에서는 작업 결과 출력이나, 디버깅 수행, 오디오나 애니메이션 편집 등이 이루어진다. 개발도구와 콘텐츠 저작 도구의 특성을 모두 가지고 있는 편집기의 모습이다. 2D씬(파란색 원), 3D씬(적색 원), 사용자 인터페이스(녹색 원)로 구성되는 좌상단의 씬 창을 중심으로 작업이 이루어지는데 씬 창에 내용을 추가하거나 특정 내용을 선택하면 중앙의 작업 공간에서 해당 내용을 편집할 수 있고, 우측의 인스펙터 창에서 다양한 속성을 조정할 수 ..
고도를 실행시키면 처음 만나게 되는 화면이 프로젝트 매니저다. 내가 수행하고 있는 여러 게임 제작 프로젝트들이 나열되므로 작업에 들어갈 프로젝트를 더블클릭하거나, 프로젝트를 선택한 상태에서 우측에 있는 [편집] 버튼을 누르면 바로 편집기로 들어갈 수 있다. 프로젝트를 선택한 상태에서 [실행]을 누르면 편집기를 열지 않고 게임을 실행시킬 수 있다. [스캔]은 프로젝트가 있는 폴더들을 검색해서 고도 프로젝트들을 프로젝트 매니저에 자동 등록하는 기능이다. 고도 프로젝트를 저장한 폴더를 보면 위의 그림처럼 project.godot라는 프로젝트 파일이 있는데 저 파일을 보고 [스캔]에서 프로젝트를 자동 등록해 주는 것이다. 마찬가지로 [가져오기]를 선택하면 프로젝트 매니저에 등록되지 않은 프로젝트의 폴더를 선택하..