본문 바로가기

레퍼런스/고도엔진

(28)
고도엔진 튜토리얼 #26 3D 메시 임포트하기 (Importing 3D meshes) 서론 고도는 씬 천제를 임포팅 가능한 강력하고 유연한 3D 씬 임포터를 지원합니다. 많은 아티스트와 개발자들에게 충분하고도 남은 것입니다. 하지만, 많은 사람이 이 워크플로우를 싫어하며 단일 3D 메시를 임포트해 씬 안의 3D 고도 에디터 안에서 빌드하는 것을 더욱 선호합니다. (스켈레톤 애니메이션과 같은 진화된 기능이 있으며 3D 씬 임포터에는 없는 기능들이라는 것을 참고하세요). 3D 메시 임포트 워크플로우는 간단하며 OBJ 파일 형식을 써서 작동합니다. 임포트된 메시들은 결과적으로 MeshInstance에 사용자가 입력할 수 있는 .msh 이진 파일로, 편집된 씬의 어딘가에 위치할 수 있습니다. 임포팅 3D 임포팅 메쉬 메뉴를 통한 임포팅은 다음과 같습니다 : 메시 임포트 창을 엽니다 : 이 대화상..
고도엔진 튜토리얼 #25 3D 성능과 제한(3D performance and limitations) 서론 고도는 균형잡힌 성능 철학을 따릅니다. 성능의 세계에서는 유용성과 유연성을 위한 거래 속도로 구성되는 trade-off입니다. 몇몇 실용적인 예가 있습니다 : 많은 양의 오브젝트를 효과적으로 렌더링하는 것은 쉽지만 큰 씬을 렌더링 하는 경우 비효율적일 수 있습니다. 이를 해결하기 위해, 렌더링에 시각적 계산을 추가해 렌더링 효율성이 낮아지지만 동시에 렌더링되는 개체가 줄어들어 전반적인 효율성이 향상됩니다.렌더러가 필요한 모든 오브젝트를 위한 모든 자료(material)의 속성을 구성하는 것도 느립니다. 이를 해결하기 위해, 오브젝트는 자료의 값이 적은 순으로 정렬되어 있지만 이 정렬을 하느데도 값이 듭니다.3D 물리학에도 비슷한 상황이 생깁니다. 큰 값의 물리 물체를 다루는 데의 최고의 알고리즘은 ..
고도엔진 튜토리얼 #24 3D로의 초입(Introduction to 3D) 3D 게임을 만드는 것은 어려운 일입니다. 추가적인 Z 축은 간단한 2D 게임의 보통의 기술이 그렇게 도움이 되지 안습니다. 이 이동을 돕기 위해, 2D와 3D의 API가 매우 비슷하다는 것을 언급하는 것이 좋겠군요. 대부분의 노드는 2D와 3D 버전에서 같이 제공됩니다. 사실, 2D에서 해당하는 것과 똑같이 작동하는 3D 플랫폼 작성자 튜토리얼을 확인하거나 3D 동적 캐릭터 튜토리얼을 확인하는 것이 가치 있는 일일 것입니다. 3D에서, 수학적인 부분이 대부분 2D에 비해 복잡해졌습니다. 그러니 위키의 벡터 수학(수학자나 공학자가 아닌, 게임 개발자를 위해 창조된)도 확인해보세요. 3D 게임을 효율적으로 개발하는데 길을 닦는 것을 도와줄겁니다. 공간 노드(Spatial node) Node2D는 2D의 기..
고도엔진 튜토리얼 #23 파티클 시스템 (2D) (Particle Systems (2D)) 소개(Intro) 간단한 (하지만 대부분의 사용에 충분히 유연한) 파티클 시스템이 제공됩니다. 파티클 시스템은 복잡한 물리적인 이펙트, 스파크, 불, 마법 파티클, 연기, 안개, 마법 등을 시뮬레이트할 때 사용해 왔습니다. "파티클"이라는 생각은 고정된 기간동안 고정된 생명시간을 가지고 방출되는 겁니다. 그 생존기간동안 모든 파티클은 같은 기본 행동을 가집니다. 모든 파티클을 다르게 만들고 더 유기적인 모습을 보여주기위해 "randomness(임의성)"이라는 각 매개 변수와 연관되어 있습니다. 필수적으로, 파티클 시스템을 만든다는 것은 기본 물리 매개변수를 설정하고 임의성을 더해준다는 뜻입니다. 파티클2D(Particles2D) 파티클 시스템은 씬에 Particle2D 노드를 통해 추가됩니다. 기본 설정..
고도엔진 튜토리얼 #22 2D에서 커스텀으로 그리기(Custom drawing in 2D) 왜? 고도는 스프라이트, 다각형, 파티클, 그런 것들에 대한 노드를 가집니다. 항상은 아니지만 많은 경우에 이로 충분합니다. 그 특정 노드가 없는 것에 공포와 분노로 울부짖기 전에... 커스텀 커맨드로 그려서 어느 2D 노드든 쉽게 만들 수 있다는 것을 알아야 합니다 (컨트롤이나 Node2D 기반의). 정말 쉽게 할 수 있습니다. 하지만... 노드에서 커스텀 드로잉을 수동으로 하는 것은 매우 유용합니다. 여기 몇몇 예제가 있습니다 : 모양이나 로직을 그리는 것은 노드에 의해 다루어지지 않습니다 (예 : 원을 그리고, 흔적을 가진 이미지, 특별한 종류의 애니메이션 다각형 등 노드를 만드는 것)노드와 호환 가능하지 않은 시각화 (예 : 테트리스 보드). 블록을 그리기 위해 커스텀 드로우 함수를 이용한 테트리..
고도엔진 튜토리얼 #21 타일맵 사용하기(Using tilemaps) 서론 타일맵은 2D 게임 레벨을 만드는 간단하고 빠른 방법입니다. 기본적으로 원할 때마다 격자판(grid)에 올릴 수 있는 참조 타일 더미부터 시작합니다 : 2D 사이드 스크롤링과 탑타운 게임에서 허용되는 충돌도 타일에 추가될 수 있습니다. 타일셋 만들기 시작하려면 타일셋을 만들어야 합니다. 이를 위한 몇몇 타일이 있습니다. 타일들이 같은 이미지에 한꺼번에 있는데, 아티스트들이 종종 이를 선호합니다. 다른 이미지에 나누어 가지고 있는 것도 쓸만합니다. 새로운 프로젝트를 만들고 위의 png 이미지를 디렉토리에 넣어주세요. 우린 이제 TileSet 리소스를 만들겁니다. 이 리소스는 속성을 내보내는데 반하여, 복잡한 데이터를 얻고 유지하는 건 힘듭니다. 수동으로 리소스를 편집하는 건 이와 같은 모습입니다 : ..
고도엔진 튜토리얼 #20 캔버스 층(Canvas layer) 뷰포트와 캔버스 아이템 모든 2D 노드의 기본이 되는 일반적인 2D 노드 Node2D 또는 컨트롤은 CanvasItem에서 상속됩니다. CanvasItem은 트리 모양으로 수덩될 수 있으며 그들의 변환을 상속받을 수 있습니다. 이것은 부모를 움직이면 자식도 움직인다는 것을 뜻합니다. 이 노드들은 뷰포트의 직접 혹은 간접적인 자식으로 위치되며 뷰포트를 통해 볼 수 있습니다. 뷰포트는 커스텀 행렬32 변환에 의한 모든 CanvasItem 계층 구조의 변환을 허용하는 "canvas_transform" Viewport.set_canvas_transform() 속성을 가집니다. 노드는 Camera2D처럼 변환을 바꾸면서 작동합니다. 캔버스 변환을 바꾸는 것은 유용합니다. 왜냐하면 루트 캔버스 아이템을 움직이는 것..
고도엔진 튜토리얼 #19 뷰포트와 캔버스 변환(Viewport and canvas transforms) 도입 이 튜토리얼은 대부분의 사용자에게 다소 어두울 항목을 다룬 후 생성됩니다. 그리고 노드에 대해 로컬에서 콘텐츠를 그리는 시점부터 화면에 그려지는 시점까지 2D 변환되는 모든 사항을 설명합니다. 캔버스 변환 이전 튜토리얼인, 캔버스 층에서 언급했듯이 모든 CanvasItem 노드(Node2D와 제어가 CanvasItem을 공통된 루트로 사용한다는 것을 기억하세요)는 캔버스 층에 있습니다. 모든 캔버스층은 행렬32를 통해 접근 가능한 변환(이동, 회전, 스케일 등)을 가집니다. 또한 앞의 튜토리얼에서 다루었듯이, 노드는 내장된 캔버스인 기본으로 설정된 레이어 0에 그려집니다. 노드를 다른 레이어에 놓고 싶다면, CanvasLayer 노드를 사용할 수 있습니다. 전역 캔버스 변환 뷰포트도 전역 캔버스 변..