고도 게임 엔진에서 하나의 프로젝트는 하나의 폴더를 생성하는 것으로 시작한다. 해당 폴더가 프로젝트의 루트 폴더가 되어서 씬이나 자원, 스크립트 경로를 지정할 때 "res://"는 프로젝트의 루트 폴더를 의미한다. 물론 하위 폴더를 가질 수 있다. 루트 폴더에 고도 프로젝트 파일(project.godot)이 한 개 존재하고 한 개 이상의 씬 파일과 스크립트 파일, 그리고 여러 가지 에셋(이미지, 폰트, 3D 모델 등등) 파일로 프로젝트 파일 시스템을 구성한다. ■ 고도 프로젝트 파일(project.godot) 프로젝트의 이름, 시작 씬, 입력 설정 정보 등의 프로젝트의 주요 설정이 담기는 파일. config_version=4 [application] config/name="Global Illuminati..
사용자가 키보드나 마우스, 게임 패드나 조이스틱, 심지어 터치까지 뭔가 신호를 주면 그에 따른 반응과 움직임을 보이는 것은 게임의 핵심이지 않을까! 사용자의 개입이 없다면 그냥 동영상이라 해도 무방할 것이다. 초보 게이머가 고도 엔진을 설치하고 데모 프로젝트를 수행하는 과정은 대부분 키보드에서 화살표를 움직이거나 마우스를 움직여 보는 것 말고는 특별히 할 수 있는 것이 없다. 사용 안내서도 없고, 일반적인 게임 방법에도 익숙하지 않기 때문이다. 데모 프로젝트를 따라 하면서 개발 기술을 익히려면 우선 데모 프로젝트를 플레이 할 수 있어야 하는데, 시작부터 막힌 것이다. 고도 스크립트를 열어 보면 Input.is_action_pressed("aim")처럼 뭔가 눌러졌을 때를 처리하는 로직이 있는데, 전통적인..
■ 커패시턴스(Capacitance) 축전기(capacitor 커패시터) 또는 콘덴서(condenser)가 전하를 충전할 수 있는 능력으로 기호는 C를 사용하고 단위는 패럿(F, Farad)을 사용합니다. 정전 용량(커패시턴스)은 전극이 전하를 축적하는 능력을 나타내는 값으로 전극의 모양과 전극 사이의 유전체 종류에 따라 값이 결정 됩니다. C = Q/V[F] 로 1F는 1V의 전압을 가해서 1C의 전하가 축적되는 정전 용량을 말합니다. - 대전 : 어떤 물질이 양 또는 음전기를 띠는 것 - 대전체 : 전기를 띤 물체 - 충전 : 전기적으로 중성인 대전체가 전하를 가지게 되는 것 - 방전 : 대전체가 가지고 있던 전하를 잃어 버리는 것 - 접지 : 도체를 대지에 연결하는 것 - 정전기(靜電氣, Stati..
"고도로 만드는 첫 게임"에서 처럼 고도를 이용해 게임을 만들었다면 최종적으로 게임을 실행시킬 장비에 맞도록 내보내기 하여 배포하는 것으로 게임을 완성시킬 수 있다. 게임의 완성도를 위해서 클로즈 베타 테스트(CBT, Closed Beta Test)와 오픈 베타 테스트(OBT, Open Beta Test)를 수행하는 경우에도 게임 내보내기는 필수 과정일 수 밖에 없다. 고도 편집기가 없어도 게임을 수행할 수 있는 형태의 패키지로 제작하는 과정이다. ■ 내보내기 템플릿 "고도로 만드는 첫 게임"은 키보드로 동작하는 게임이기 때문에 윈도우, 리눅스, 맥용 데스크톱으로는 내보내기 해도 문제가 될 것이 없지만, 아이폰이나 안드로이드로 내보내기 하면 게임 동작 자체가 부자연스러울 수밖에 없다. 모바일용 게임이라면..
https://www.gnucash.org/viewdoc.phtml?rev=3&lang=C&doc=guide 를 번역하며 그누 캐시를 스터디하고 있습니다. 2.9.3. 단순 거래와 분할 거래 그누 캐시에서 각 거래는 최소한 두 개의 분할을 갖지만 두 개 이상의 분할을 가질 수도 있습니다. 단 두 개의 분할만을 가진 거래는 현재 계정과 다른 대상 계정만이 연관되기 때문에 이런 거래를 단순 거래라 합니다. 3개 이상의 분할을 가진 거래는 분할 거래라 합니다. 등록기가 기본 원장 모드 일 때는 현재 계정과 연관되는 분할들의 요약이 표시됩니다. 단순 거래라면 대체 열에 자금이 대체될 다른 계정을 표시하고 분할 거래라면 대체 열에 '-- 분할 거래 --'를 표시합니다. 이때 분할 거래를 선택한 상태에서 툴바의 [..
개발 과정에서는 무엇을 배우든 간에 과정의 처음부터 끝까지 길을 한번 가보는 것이 매우 중요하다. 결과적으로 거칠고 다듬어지지 않은 것이라 해도 완성품을 보는 것이다. 이 과정을 통해서 할 수 있다는 자신감뿐만 아니라, 각 과정에서 필요한 것이 무엇인지, 한 단계 발전하기 위해서 내게 필요한 것이 무엇인지도 파악할 수 있다. 이번 포스팅에서는 고도 튜토리얼에서 제시하고 있는 키보드를 이용한 "피하기 게임"을 제작하는 과정을 다루어 보고자 한다. 게임은 키보드의 방향키로 캐릭터를 움직여서 사방에서 날아오는 괴물을 피하는 것이다. 방향키를 따라 움직이는 캐릭터로 표시하는 플레이어, 사방에서 날아오는 괴물들, 그리고 플레이어가 버틴 시간을 표시하는 정보 창 등이 이 게임의 주요 요소라 하겠다. 2D 게임으로 ..
https://www.gnucash.org/viewdoc.phtml?rev=3&lang=C&doc=guide 를 번역하며 그누캐시를 스터디하고 있습니다. 2.9. 거래 이번 장에서는 그누캐시에서 거래를 이해하고 사용하기 위한 정보들을 제공할 것입니다. 계정이 계정 과목표의 뼈대와 구조라면 거래는 계정을 채우는 자료입니다. 2.9.1. 기본 개념 그누캐시와 같은 복식부기에서의 거래는 최소 2개 이상의 계정 간의 교환입니다. 사실상 하나의 거래는 항상 원본 계정과 대상 계정이라는 최소 두 부분으로 구성됩니다. 원본 계정으로부터 대상 계정으로 값이 대체되는 것입니다. 회계사들은 이것들을 원장 항목이라 부르고 그누캐시에서는 분할이라 부릅니다. 분할은 해당 계정과 대체될 금액을 소유하게 되며 필요하다면 나름의 특..
시그널(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"와 같은 형태로 노드의 유형을 표시한다. 그렇지만 어떤 씬의 인스턴스인지와 유형을 우측의 그림처럼 표시하는 것이 바로 인스턴스이다. 그림에서 확인할 수 있듯이..