"고도 엔진 소스 빌드하기"와 "비주얼 스튜디오로 고도 게임 엔진 개발 환경 구축"에 이은 글로 이번 포스팅은 간단하지만 엔진을 직접 수정하는 과정을 다뤄보고자 한다. 아직 고도 게임 엔진의 소스 빌드를 하지 않았다면 아직 포스팅을 참조할 필요가 있다. 고도 엔진을 처음 실행하면 위의 그림과 같이 한글은 정상적으로 표시되지 않는다. 한글은 기본 폰트에 없기 때문이다. "고도에서 한글 출력하기"에서 다룬 것처럼 커스텀 폰트로 설정하는 방법을 사용해야 한다. 엔진 내부에는 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...
위의 그림은 고도 스크립트에서 파일 클래스를 사용하는 대표적인 사례로 클래스 인스턴스를 만들고, 파일을 열고, 작업 후 닫는 전형적인 과정을 거친다. 사용할 수 있는 다양한 메서드는 다음과 같다. 파일 읽기 및 쓰기는 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..
"리듬 게임 분석하기" 글에 이어서 여러 가지 기술적 요소를 살펴보고 있다. ■ 씬 인스턴스 활용 다양한 게임 요소들은 동적인 요소와 정적인 요소로 나눌 수 있는데 음악의 비트에 따라 터치 또는 드래그하도록 숫자와 원으로 표시하는 씬이나 터치한 곳에 점수를 표시하는 씬은 게임 진행에 따라 위치와 내용, 개수가 동적인 요소이다. 반면에 배경 이미지나 게임 진행 중 화면 상단에 표시하는 점수는 게임 제작 시점에 정해진 위치와 개수대로 유지하는 정적인 요소라 할 수 있다. 동적인 요소든 정적인 요소든 동일한 씬을 위치와 모양을 바꾸어 가며 재사용하는 것이 씬의 인스턴스 활용이다. 1. 동적 예제1 extends Node2D export var sprite_fx: PackedScene func _ready() ..
고도 스크립트 개요, 예약어와 연산자, 고도 스크립트 타입과 변수 선언, 고도 스크립트 클래스와 함수에 이은 글이다. ■ 조건문 if, else, elif 키워드를 이용해서 조건문을 기술할 수 있다. 블록 내 조건문 "if (velocity.y > 0):"처럼 조건에 괄호를 사용해도 되지만 C/C++처럼 반드시 기술해야 하는 필수 요소는 아니다. 조건이 true 일 때, false 일 때 수행할 문장들은 탭 문자를 이용해서 들여 쓰기 해야 한다. 조건문을 반복해야 하는 경우 elif로 문장을 이어갈 수 있다. 조건에 따라 처리해야 할 문장이 짧은 경우 위의 예제처럼 조건 표현과 같은 줄에 기술할 수도 있다. 조건에 따른 작업이 단순한 대입문인 경우 앞서 기술한 삼항 연산자를 사용하는 것도 유용하다. ■ ..
고도 게임 엔진에서 하나의 프로젝트는 하나의 폴더를 생성하는 것으로 시작한다. 해당 폴더가 프로젝트의 루트 폴더가 되어서 씬이나 자원, 스크립트 경로를 지정할 때 "res://"는 프로젝트의 루트 폴더를 의미한다. 물론 하위 폴더를 가질 수 있다. 루트 폴더에 고도 프로젝트 파일(project.godot)이 한 개 존재하고 한 개 이상의 씬 파일과 스크립트 파일, 그리고 여러 가지 에셋(이미지, 폰트, 3D 모델 등등) 파일로 프로젝트 파일 시스템을 구성한다. ■ 고도 프로젝트 파일(project.godot) 프로젝트의 이름, 시작 씬, 입력 설정 정보 등의 프로젝트의 주요 설정이 담기는 파일. config_version=4 [application] config/name="Global Illuminati..