요즘 대부분의 웹 사이트는 모바일에서 사이트를 보는지, 데스크톱에서 사이트 보는지와 관계없이 마치 해당 장비의 화면 크기에 맞게 사이트를 설계한 것처럼 기기에 맞는 크기로 깔끔하게 내용을 볼 수 있다. 반응형 웹 기술이 적용된 까닭이다. 반응형 웹(Responsive web design) 기술이 적용된 사이트는 화면 크기에 따라 내용이 어그러져 보이지도 않고 스크롤을 사용하지 않아도 편리하게 사이트 내용을 볼 수 있다. 이런 현상은 게임도 마찬가지인데 모바일, 데스크톱, 게임박스 등 기기에 따른 다양한 화면 크기와 해상도는 게임 설계에 있어 큰 짐이 될 수밖에 없다. 다행인 것은 고도 게임 엔진에서는 반응형 웹 설계 기술과 유사한 여러 기능들을 지원하고 있다는 것이다. ■ 가장 기본적인 5개의 컨트롤 노..
게임 개발이나 앱 개발이나 컴퓨팅 분야에서는 따라 하기 만큼 좋은 학습 방법이 없다. 체계적인 이해가 필요한 경우가 분명히 있지만, 초보자에게 일단 따라 하고 고쳐 가면서 눈에 보이는 결과물로 이해를 높이는 방법은 좋은 학습 방법임에 틀림없다. 앞으로 따라 하면서 활용하고 학습할 오픈 소스 고도 프로젝트들을 정리해 본다. ☞ 고도 데모 프로젝트 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..
고도 편집기에서 한글을 입력하다 보면 위의 그림처럼 주요 인터페이스와 코드 편집기, 인스펙터 창에서는 번역된 부분은 한글이 제대로 출력되고 입력 내용의 한글도 문제없지만 정작 한글이 나타나야 할 작업 공간에서는 한글이 표시되지 않는 문제가 있다. 이런 현상은 실행 화면에서도 마찬가지인데, 현재 버전(V3.2.1)까지는 아직 각 노드에서 사용할 사용자 폰트로 지정해 주어야만 한글을 정상적으로 사용할 수 있다. 비주얼 스튜디오에서 C#으로 윈도우 폼 응용을 개발하는 경우 폼의 폰트를 바꾸어 주면 폼 내의 다른 컨트롤들은 통상 상속을 받아서 폰트가 폼의 폰트로 자동 적용되는데 고도에서는 루트 노드에 폰트를 설정한다고 하위 노드에 해당 폰트가 자동 적용되지는 않는다. 한글 폰트 사용 부분은 다른 통합개발도구에서..
"고도로 만드는 첫 게임"에서 처럼 고도를 이용해 게임을 만들었다면 최종적으로 게임을 실행시킬 장비에 맞도록 내보내기 하여 배포하는 것으로 게임을 완성시킬 수 있다. 게임의 완성도를 위해서 클로즈 베타 테스트(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"와 같은 형태로 노드의 유형을 표시한다. 그렇지만 어떤 씬의 인스턴스인지와 유형을 우측의 그림처럼 표시하는 것이 바로 인스턴스이다. 그림에서 확인할 수 있듯이..
새 프로젝트 만들기로 노드와 씬의 개념을 잡기 위한 HelloWorld 프로젝트를 생성한다. C언어, 파이썬, C#, PHP 등 무슨 프로그래밍 언어를 배우든 간에 시작 시점에 뭔가를 코딩해서 컴파일 후 그 실행 결과를 보는 것만큼 중요한 것은 없다. 백날 머리로 "그렇구나!" 해서는 아무 소용이 없다. 프로그래밍은 상상한 것을 코딩하고 그 결과를 확인하는 과정이라 해도 과언이 아니기 때문이다. 그래서 화면에 "Hello World!"라고 출력하는 것은 아무것도 아닌 것처럼 보일지는 몰라도 언어 시스템 전체를 움직이게 하고 그것을 몸으로 경험하는 아주 중요한 작업이다. 마찬가지로 고도의 생산 시스템을 전체적으로 움직여 보는 "Hello World!"를 출력해 보고자 한다. 프로젝트를 생성하고 편집기를 열..
편집기의 구조는 기본적으로는 가운데에 크게 작업 공간(Work space)이 자리 잡고 작업 공간 아래로는 하단 패널이 자리한다. 이 모습은 비주얼 스튜디오와 같은 대부분의 통합 개발 환경(IDE)이 가지고 있는 형태로 디자인이나 코딩 작업을 작업 공간에서 수행하고 하단 패널에서는 작업 결과 출력이나, 디버깅 수행, 오디오나 애니메이션 편집 등이 이루어진다. 개발도구와 콘텐츠 저작 도구의 특성을 모두 가지고 있는 편집기의 모습이다. 2D씬(파란색 원), 3D씬(적색 원), 사용자 인터페이스(녹색 원)로 구성되는 좌상단의 씬 창을 중심으로 작업이 이루어지는데 씬 창에 내용을 추가하거나 특정 내용을 선택하면 중앙의 작업 공간에서 해당 내용을 편집할 수 있고, 우측의 인스펙터 창에서 다양한 속성을 조정할 수 ..
고도를 실행시키면 처음 만나게 되는 화면이 프로젝트 매니저다. 내가 수행하고 있는 여러 게임 제작 프로젝트들이 나열되므로 작업에 들어갈 프로젝트를 더블클릭하거나, 프로젝트를 선택한 상태에서 우측에 있는 [편집] 버튼을 누르면 바로 편집기로 들어갈 수 있다. 프로젝트를 선택한 상태에서 [실행]을 누르면 편집기를 열지 않고 게임을 실행시킬 수 있다. [스캔]은 프로젝트가 있는 폴더들을 검색해서 고도 프로젝트들을 프로젝트 매니저에 자동 등록하는 기능이다. 고도 프로젝트를 저장한 폴더를 보면 위의 그림처럼 project.godot라는 프로젝트 파일이 있는데 저 파일을 보고 [스캔]에서 프로젝트를 자동 등록해 주는 것이다. 마찬가지로 [가져오기]를 선택하면 프로젝트 매니저에 등록되지 않은 프로젝트의 폴더를 선택하..
고도 게임엔진의 설치는 스쿱(Scoop) 도구를 설치해 놓으면 여러모로 편리하다.("스쿱으로 크로스플랫폼 도구들을 간단하게 설치하기 - Scoop" 참조) 스쿱을 사용해서 설치하려면 우선 윈도우에서 파워쉘을 실행시켜야 한다. 위의 그림은 고도 설치전에 extras 버켓을 추가하는 과정이다. 명령은 "scoop bucket add extras"를 사용한다. 깃을 설치해야 한다고 해서 git를 추가 설치하는데 git에서 사용하는 7-zip도 자동 설치하는 것을 확인할 수 있다. 스쿱으로 고도 엔진을 설치하는 명령은 "scoop install godot"로 수행 과정은 위의 그림과 같다. 별도의 설치 창 없이 정말 간하게 설치되었다. 그렇지만, 일반적인 설치 프로그램으로 설치하는 과정들은 빠짐없이 수행된다. ..
https://www.gnucash.org/viewdoc.phtml?rev=3&lang=C&doc=guide 를 번역하며 그누캐시를 스터디하고 있습니다. 2.8. 계정 이번 장에서는 여러분의 계정을 조직하고 관리하는데 유용한 몇 가지 개념을 다룹니다. 그누캐시는 특정한 계정 체계를 강제하지 않기 때문에 여러분이 원하시는 대로 여러분이 사용하실 계정 체계를 자유롭게 구성하실 수 있습니다. 그렇지만 유용성을 최대화하기 위해서 따라야 할 몇 가지 기본 개념들이 있습니다. 2.8.1. 기본적인 회계 개념들 앞선 장에서 이미 살펴본 대로 회계 처리는 다음과 같은 다섯 가지 계정 타입에 기반해서 이루어집니다 : 자산, 부채, 자본, 수익과 비용입니다. 이제 이들 계정 타입에 대한 이해를 넓히고 이 계정들이 그누 캐..
https://www.gnucash.org/viewdoc.phtml?rev=3&lang=C&doc=guide 를 번역하며 그누캐시를 스터디하고 있습니다. 2.7 종합 예제 ※ 주의 이번 장에서 시작하는 따라 하기는 앞으로 이 자료 전체에 걸쳐 주기적으로 제공될 것입니다. 각 장 끝마다 종합 예제를 통해서 각 장에서 다룬 개념들을 설명하는 예제들을 만날 수 있을 것입니다. 각 종합 예제 앞선 예제와 이어지므로 파일을 꼭 저장하셔서 간편한 작업을 진행하세요. 이제 시작합시다! 1. 우선 여러분의 자료를 저장할 파일을 생성합니다. 그누 캐시를 열고 메뉴바에서 파일 → 새 파일을 선택합니다. 새 계정 체계 설정 도구가 시작되어 바로 필요한 계정들을 생성할 수 있습니다. ※ 주의 그누캐시를 처음 수행시키는 경우에..
https://www.gnucash.org/viewdoc.phtml?rev=3&lang=C&doc=guide 를 번역하며 그누캐시를 스터디하고 있습니다. 2.6. 그누캐시 자료의 이전 때때로 여러분은 그누캐시로 관리하던 회계자료나 설정 내용을 다른 곳으로 옮길 필요가 있으실 것입니다. 대표적인 예가 새로운 컴퓨터를 구입했다거나 서로 다른 운영체제에서 서로 동일한 그누캐시 설정으로 사용하고 싶은 경우입니다. 2.6.1. 회계 자료 이전하기 그누캐시 회계 자료의 이전은 파일 관리자로 *.gnucash 파일을 복사만 하면 되므로 아주 단순합니다. 그런데, 파일 저장 위치를 모르지만 파일을 열 수 있는 상황이라면 해당 파일을 원하는 위치로 저장해서 처리하면 됩니다. 파일이 있는 곳의 다른 파일들은 백업과 로그 ..
https://www.gnucash.org/viewdoc.phtml?rev=3&lang=C&doc=guide 를 번역하며 그누캐시를 스터디하고 있습니다. 2.5. 자료 백업과 복구 그누캐시는 여러분의 회계 자료가 손실되지 않도록 몇 가지 형태의 파일을 생성합니다. 파일을 저장한 폴더에 가시면 여러분이 저장한 파일 외에도. gnucash,. log,. LCK,. LNK 등의 확장자를 가진 파일들을 발견할 수 있을 것입니다. 이들 파일에 대한 소개는 아래와 같습니다. : ※ 주의 아래의 내용들은 회계 자료를 XML 형식으로 저장할 경우에만 유효합니다. $ ls myfile.gnucash myfile.gnucash.20100414185747.gnucash myfile.gnucash.20100414223248...
https://www.gnucash.org/viewdoc.phtml?rev=3&lang=C&doc=guide 를 번역하며 그누캐시를 스터디하고 있습니다. 2.4. 회계 자료 저장하기 2.4.1. 개요 그누캐시는 여러분의 회계 자료를 저장할 수 있는 몇 가지 저장 방식을 지원합니다. 기본 저장 방식은 XML 파일로 저장하는 것이고 SQLite, MySQL, PostgreSQL 등의 DBMS에 자료를 저장할 수도 있습니다. 새로운 파일은 파일→저장으로, 기존 파일은 파일→다른이름으로 저장에서 파일 형식을 지정할 수 있습니다. XML 저장 형식은 텍스트 파일이지만 기본적으로 압축되어 저장합니다. 편집→기본설정→일반→파일 에서 압축 여부를 설정할 수 있습니다. SQLite도 XML 파일처럼 하나의 파일에 저장하..
https://www.gnucash.org/viewdoc.phtml?rev=3&lang=C&doc=guide 를 번역하며 그누캐시를 스터디하고 있습니다. 2.3. 그누캐시 실행시키기 그누캐시는 시작 메뉴>GnuCash에서 GnuCash 메뉴를 선택하여 실행시킬 수 있습니다. 명령 창에서 gnucash 명령을 입력하는 것으로 프로그램을 실행시킬 수도 있습니다. 프로그램이 시작하면 스플래시 창이 나오면서 프로그램 버전 및 빌드 정보 등을 표시하면서 로딩 과정을 출력합니다. 2.3.1. 그누캐시에 어서 오세요 그누캐시를 열면 제일 처음 나오는 대화창은 "그누캐시에 어서 오세요!" 화면입니다. 이 화면에서 세 가지를 선택할 수 있습니다: ■ 새 계정 생성 - 새 계정 체계 설정 창을 실행합니다(2.3.2, “새..
https://www.gnucash.org/viewdoc.phtml?rev=3&lang=C&doc=guide 를 번역하며 그누캐시를 스터디하고 있습니다. 2.2. 3단계의 데이터 항목 개념 그누캐시에 데이터를 입력할 때 그누캐시가 파일, 계정, 거래라는 3단계로 구조화되어 있는 알아야 합니다. 각 단계별 복잡성을 갖는데 하나의 파일은 여러 계정을 가지고, 하나의 계정은 여러 거래를 갖습니다. 이러한 단계는 그누캐시 사용법을 이해하는데 중요한 기초가 됩니다. 2.2.1. 파일 그누캐시의 가장 높은 정보 저장 단계는 파일입니다. 파일은 여러분의 컴퓨터에 XML 파일 형태로(모든 버전에서 지원) 저장하거나 SQL 데이터베이스에(2.4 버전 이상 지원) 저장할 수 있습니다. 주의 - SQL은 "시퀄"이라고 읽습..
https://www.gnucash.org/viewdoc.phtml?rev=3&lang=C&doc=guide 를 번역하며 그누캐시를 스터디하고 있습니다. 2.1. 회계의 개념들 그누캐시는 그 사용에 있어 유용한 회계 원리들에 대한 전체적인 이해가 없어도 될 만큼 충분히 쉽습니다. 그러나, 여러분은 몇 가지 기본 회계 지식이 매우 중요하다는 것을 알게 되실 것입니다. 그누캐시는 이러한 원리들을 템플릿으로 사용하도록 설계되었기 때문입니다. 계속 진행하시기 이전에 이번 섹션을 이해하시기를 강력히 추천합니다. 2.1.1. 기본 계정 다섯가지 기본 회계 법칙은 재정과 관련된 모든 것들을 다섯 가지 계정 타입으로 묶습니다. 다시 말하면 회계가 다루는 모든 것들은 이 다섯 가지 계정중 하나로 배치될 수 있습니다: 자..
https://www.gnucash.org/viewdoc.phtml?rev=3&lang=C&doc=guide 를 번역하며 그누캐시를 스터디하고 있습니다. 1.3. 이 자습서에 대해서 이 자습서의 목적은 여러분의 시간을 아껴주기 위한 것입니다. 여러분이 가능한 한 빨리 그누캐시 사용을 시작할 수 있도록 해 줄 것입니다. 각 장은 단순한 형태로 되어 있습니다. 우선 "개념"을 다루는데 해당 장에서 언급하거나 사용된 용어나 일반적인 주제들을 소개합니다. 이어서 "사용법"에서 구체적인 절차를 다루고 마지막 "종합"에서는 구체적이고도 실제적인 예제를 제시합니다. 초보자들은 "개념" 부분이 매우 도움이 된다는 것을 알게 되실 것입니다. 개념에서는 여러분의 재정을 관리하는 좋은 방법에 대한 참조를 제공하거나, 회계에..
https://www.gnucash.org/viewdoc.phtml?rev=3&lang=C&doc=guide 를 번역하며 그누캐시의 세계로 들어가 봅니다. 1.1. 개요 > 소개 그누캐시는 개인을 대상으로 한 재정 관리 프로그램입니다. 단순한 것에서부터 복잡한 것까지 다양한 재정 정보를 관리할 수 있습니다. 여러 통화를 다룰 수 있는 몇 안 되는 회계 프로그램 중의 하나임에도 불구하고 오픈 소스 프로그램입니다. 무엇보다 쉽게 배우고 사용할 수 있습니다! 그렇다면 그누캐시가 여러분에게 해 줄 수 있는 것이 무엇일까요? 일단 여러분이 선호하는 수준만큼 상세하게 재정을 관리할 수 있습니다. 단순 현금 관리에서 시작하여 신용카드를 통한 소비 패턴을 파악하는데 까지 나아갈 수 있습니다. 투자를 시작한다면 여러분의..