본문 바로가기

분류 전체보기

(123)
고도엔진 튜토리얼 #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)과 같은 디자인 패턴들을 제쳐두고 자연스럽게 게임에 대해 생각하게 만들어줍니다. 먼저 눈에 보이는 요소..
고도엔진 튜토리얼 #2 인스턴스화(Instancing) 합리성 씬과 노드를 던져넣는 것은 소규모 프로젝트에서는 효과가 있을 수 있지만, 프로젝트가 커지면서, 점점 더 많은 노드가 사용되고 순식간에 관리할 수 없는 지경에 이를 것입니다. 이를 해결하기 위해 고도엔진은 한 프로젝트가 몇 개의 씬으로 분리되는 것을 허락합니다. 하지만 이 방식이 다른 게임 엔진들과는 다른 식으로 사용됩니다. 사실 정말 다르니까 이 튜토리얼을 놓치지 마세요!! 재점검 : 씬은 트리 형태로 구성된 노드 모음으로, 한개의 루트 노드를 가질 수 있습니다. 고도에서는, 씬을 만들어 디스크에 저장할 수 있습니다. 원하는 만큼의 씬을 만들고 저장할 수 있습니다. 그런 다음 기존 장면이나 새 씬을 편집하는 동안 다음과 같이 다른 장면을 인스턴스화할 수 있습니다. 위의 그림에서 씬 B가 씬 A에 ..
고도엔진 튜토리얼 #1 씬들과 노드들 (Scenes and nodes) 도입 잠시 여러분이 게임 개발자가 아니라고 상상해보세요. 대신, 여러분은 쉐프입니다! 힙스터 패션은 집어던지고 쉐프 차림을 해보세요. 지금부터, 게임을 만드는 것 대신에 여러분은 손님을 위해 새롭고 맛있는 레시피를 개발하는 겁니다. 그렇다면, 쉐프는 어떻게 레시피를 만들까요? 레시피는 두가지 부분으로 나뉩니다: 첫번째는 재료이고 두번째는 음식을 준비하기 위한 지시 혹은 단계들입니다. 이렇게 하면 누구나 레시피를 따라 할 수 있고 여러분의 훌륭한 창조물을 맛 볼 수 있습니다. 고도엔진으로 게임을 만드는 것은 위와 같은 방법과 비스무레합니다. 엔진을 사용하는 것은 주방에 있는 것과 같은 느낌입니다. 이 주방에서는, 노드들이 요리할 신선한 재료로 꽉 찬 냉장고와 같습니다. 다양한 유형의 노드가 있고, 일부는 ..