본문 바로가기

레퍼런스/고도엔진

(28)
고도엔진 튜토리얼 #10 자원, 리소스(Resources) 노드와 리소스 지금까지, 노드는 엔진의 행동과 특징을 고도의 가장 중요한 데이터 타입인 노드를 통해서 암시했습니다. 고도에는 그 만큼 중요한 데이터 타입이 하나 더 있는데요. 바로 자원(Resource)입니다. 노드는 스프라이트를 그리고, 3D 모델을 그리며 물리, GUI 컨트롤 등의 행동에 집중합니다. 자원은 단순히 데이터 저장소입니다. 이것은 그들이 어떠한 행동이나 정보의 프로세스를 수행하지 않는다는 뜻입니다. 자원은 그저 데이터를 담고 있을 뿐입니다. 자원의 예로는 Texture, Script, Mesh, Animation, Sample, AudioStream, Font, Translation 등이 있습니다. 고도에서 씬(.scn 또는 .xml), 이미지(.png, .jpg), 스크립트(.gd)나 ..
고도엔진 튜토리얼 #9 애니메이션(Animations) 도입 이 튜토리얼은 고도에서 애니메이션화를 어떻게 해야하는 지 보여줍니다. 고도의 애니메이션 시스템은 정말 강력하고 유연합니다. 시작하면서, 이전의 튜토리얼에서 사용한 씬을 사용합시다(Splash screen). 목표는 간단한 애니메이션을 추가하는 것입니다. 만약을 위한 복사본입니다 : 애니메이션 생성 우선, AnimationPlayer 노드를 "bg"(루트 노드)의 자식으로 씬에 추가합니다. 노드 타입이 선택되면, 애니메이션 에디터 패널이 나타납니다 : 새로운 애니메이션을 만들 시간입니다! new animation 버튼을 누르고 이름을 "intro"로 해주세요. 애니메이션이 만들어지면, 편집을 할 시간입니다. "edit" 버튼을 누르세요. 애니메이션 편집 이제 마법같은 일이 일어납니다! "edit" 버..
고도엔진 튜토리얼 #8 화면을 뿌리다(Splash screen). 튜토리얼 GUI 하위 시스템이 어떻게 작동하는지 기본적인 아이디어를 만들어주는 간단한 튜토리얼입니다. 목표는 간단한데, 정적인 화면을 뿌리는 것입니다. 아래 파일의 에셋을 사용하세요. 여러분의 프로젝트 폴더에 직접 더해질 수 있습니다 - 따로 import 할 필요가 없습니다 : 설정 Project Settings에서 화면 해상도를 800x450으로 하고, 새로운 씬을 다음과 같이 만드세요 : "background"와 "logo" 노드는 TextureFrame 타입입니다. 표시할 텍스쳐를 설정할 수 있는 특수한 속성이 있습니다. 일치하는 파일을 로드하기만 하면 됩니다. "start" 노드는 TextureButton입니다. 서로 다른 상태에 대한 몇몇 이미지가 있겠지만, 이 예에서는 정상과 눌림 이미지만 제..
고도엔진 튜토리얼 #7 GUI 튜토리얼(GUI tutorial) 도입 프로그래머들이 열렬히 싫어하는 것이 있다면, 그것은 사용자 인터페이스(GUIs)를 프로그래밍 하는 것이다. 지루하고, 또 지루하며 도전적이지도 않기 때문입니다. 다음과 같은 몇가지 측면이 문제를 더 심각하게 만듭니다 : UI 요소의 픽셀 정렬은 어렵습니다(디자이너가 의도했던 것처럼요).UI는 설계 및 적합성 문제로 테스트 기간 동안 계속 변경됩니다.다양한 디스플레이 해상도에 적합한 화면 크기 조정 처리를 해야합니다.정적으로 보이지 않으려고, 화면 구성 요소를 애니메이션화 해야 합니다. GUI 프로그래밍은 프로그래머가 과로하게 되는 주된 원인입니다. 고도로 개발하는 중에는(그리고 이전 엔진에서도 반복적으로), 즉시 모드, 컨테이너, 앵커, 스크립팅 등과 같은 UI 개발을 위한 몇가지 기술과 철학이 시..
고도엔진 튜토리얼 #6 간단한 2D 게임(Simple 2D game) 퐁 튜토리얼에서 간단한 게임인 퐁을 만들어 볼 겁니다. 많은 데모가 엔진에 포함되어 있습니다만, 2D 게임의 기본적인 기능성을 소개해줄 겁니다. 자 시작해보죠, 고도엔진을 켜서 프로젝트를 시작해주세요. 에셋 몇몇 에셋이 튜토리얼을 위해 포함되어 있습니다 : 여러분의 프로젝트 폴더에 내용물을 압축 해제하세요. 씬 설정 오랜 전통에 따라, 게임은 640x400 픽셀 해상도를 지닙니다. 해상도는 Project Setting (프로젝트 설정을 보세요.)의 Scene/Project 세팅 메뉴 하위에서 설정할 수 있습니다. 기본 배경 색은 검은색입니다 : 프로젝트 루트를 위해서 Node2D를 생성하세요. Node2D는 2D 엔진의 기본 타입입니다. 이후, 왼쪽 혹은 오른쪽 패들에 몇몇 스프라이트(스프라이트 노드)를..
고도엔진 튜토리얼 #5 스크립팅 - 이어서(Scripting (continued)) 프로세싱 고도에서 몇몇 행동들은 콜백이나 가상 기능들에 의해 촉발되기 때문에, 항상 쓰기 코드를 확인할 필요가 없습니다. 또한 애니메이션 플레이어로 많은 것을 할 수 있습니다. 그러나 모든 프레임에서 스크립트 프로세스를 수행하는 것은 여전히 일반적인 경우입니다. 처리에는 유휴 처리와 고정처리의 두 가지 경우가 있습니다. 유휴 처리는 Node.set_process() 기능으로 활성화됩니다. 활성화되면, Node.process() 콜백은 모든 프레임마다 불리게 됩니다. 예 : func _ready(): set_process(true) func _process(delta): # do something...델타 매개 변수는 이전의 _process() 호출 이후 경과된 시간(초, 부동소수점)으로 기술합니다. 고정..
고도엔진 튜토리얼 #4 스크립팅(Scripting) 소개 사용자가 프로그래밍 없이 비디오 게임을 만들 수 있게 해주는 도구에 대해서 많은 논의들이 있어 왔습니다. 많은 독립적인 개발자들이 코드를 쓰지 않고도 게임을 만드는 것이 꿈입니다. 이런 필요성은 오랫 동안, 심지어 게임 디자이너들이 게임의 흐름을 더 잘 제어하고 싶어하는 회사 내부에서조차 존재해 왔습니다. 많은 제품이 프로그래밍이 필요없는 환경을 약속하며 출시되었지만 결과적으로 기존 코드에 비해 종종 불완전하거나 복잡하고 또는 비효율적입니다. 결과적으로, 프로그래밍은 앞으로도 지속될 것입니다. 사실, 게임 엔진의 일반적인 방향은 특정 작업을 위해 작성되어야 하는 코드를 줄이고 개발 속도를 높이기 위해 도구들을 추가하는 것입니다. 그런 의미에서 고도엔진은 그 목표를 향애 유용한 디자인 결정을 내렸습니..
고도엔진 튜토리얼 #3 인스턴스화 - 이어서(Instnacing (continued)) 씌우다 인스턴스화는 많은 편리함을 지닙니다. 살짝 맛배기만 보여드리자면, 인스턴스화는 : 씬을 세분화하고 관리하기 쉽게 만드는 기능이 있습니다.프리펩(prefabs)에 해대 더욱 유연한 대안(여러 수준에서 작동하는 훨씬 강력한 인스턴스),더 복잡한 게임 흐름과 UI까지 디자인(UI도 고도엔진에서 노드로 제공합니다.) 디자인 언어 훌륭한 디자인 언어는 씬을 인스턴스화 하는 것에서 나온다. 이 점이 여타 다른 엔진들과 고도엔진이 다른 점이다. 전체 엔진이 처음부터 이 개념을 중심으로 설계되었다. 고도엔진으로 게임을 만들 때, MVC나 실재-관계 다이어그램(Entity-Relationship diagrams)과 같은 디자인 패턴들을 제쳐두고 자연스럽게 게임에 대해 생각하게 만들어줍니다. 먼저 눈에 보이는 요소..