고도 데모에 있는 2D 리듬 게임을 분석하며 스터디를 해볼까 한다. 위의 그림은 게임의 실행 화면으로 [Go] 버튼을 클릭하면 게임을 시작한다. Cephalopod, Disco Lounge, Werq라는 3개의 트랙이 있는데 그중에서 Cephalopod를 실행하고 있는 화면이다. 곡을 바꾸려면 [Go] 버튼을 누르기 전에 상단의 사각형 박스를 좌측 또는 우측으로 드래그하면 된다. 기본 분석 내용은 아래와 같다. ■ 프로젝트 이름 : 2D Rhythm Game ■ 프로젝트 파일 : ■ 메인 씬 : RhythmGameDemo.tscn ■ 자동 로드 : Events="*res://RhythmGame/Autoload/Events.gd" ■ 입력 맵 : ☞ touch : BUTTON_LEFT 입력 맵에서 확인할 ..
고도 스크립트 개요, 예약어와 연산자, 고도 스크립트 타입과 변수 선언, 고도 스크립트 클래스와 함수, 고도 스크립트의 제어문, 고도 스크립트의 시그널에 이은 글이다. ■ tool 모드 통상 고도 스크립트는 실행 모드에서만 수행되고 된다. 그런데 스크립트를 편집기 내부에서도 수행할 수 있는데 스크립트 첫 라인에 위의 그림과 같이 tool 키워드를 기술하면 된다. 스크립트를 적용한 씬을 편집할 때 해당 스크립트도 수행한다. 고도에서는 현재 스크립트가 실행 모드인지 아니면 편집 상태인지를 위의 예제와 같이 Engine.editor_hint 로 확인할 수 있게 해 준다. 위의 예제에서는 _draw 이벤트 함수가 호출되더라도 실행 모드에서는 해당 이벤트를 무시하고 편집기 상태에서만 내보내기 한 변수 값으로 사각..
고도 스크립트 개요, 예약어와 연산자, 고도 스크립트 타입과 변수 선언, 고도 스크립트 클래스와 함수, 고도 스크립트의 제어문에 이은 글이다. 시그널은 오브젝트 간에 메시지를 주고받기 위한 도구로 시스템에 내장된 시그널은 필요에 따라 사용자 함수에 연결하여 해당 시그널을 받아서 사용하면 된다. 사용자 오브젝트에 시그널을 적용하고 싶다면 시그널을 정의하는 과정과 시그널을 발생시키는 과정이 필요하다. ■ 시그널 연결하기 위의 그림은 고도에 내장된 RigidBody라는 클래스의 도움말 화면으로 RigidBody 클래스에서 제공하는 시그널을 확인할 수 있다. 시스템 클래스가 제공하는 시그널의 경우에는 connect로 사용자 함수에 연결만 하면 해당 이벤트가 발생하는 시점에 지정한 함수가 호출되는 방식이다. 위의..
개발 과정에서는 무엇을 배우든 간에 과정의 처음부터 끝까지 길을 한번 가보는 것이 매우 중요하다. 결과적으로 거칠고 다듬어지지 않은 것이라 해도 완성품을 보는 것이다. 이 과정을 통해서 할 수 있다는 자신감뿐만 아니라, 각 과정에서 필요한 것이 무엇인지, 한 단계 발전하기 위해서 내게 필요한 것이 무엇인지도 파악할 수 있다. 이번 포스팅에서는 고도 튜토리얼에서 제시하고 있는 키보드를 이용한 "피하기 게임"을 제작하는 과정을 다루어 보고자 한다. 게임은 키보드의 방향키로 캐릭터를 움직여서 사방에서 날아오는 괴물을 피하는 것이다. 방향키를 따라 움직이는 캐릭터로 표시하는 플레이어, 사방에서 날아오는 괴물들, 그리고 플레이어가 버틴 시간을 표시하는 정보 창 등이 이 게임의 주요 요소라 하겠다. 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 ..