본문 바로가기

레퍼런스/고도엔진

고도엔진 튜토리얼 #3 인스턴스화 - 이어서(Instnacing (continued))

씌우다


인스턴스화는 많은 편리함을 지닙니다. 살짝 맛배기만 보여드리자면, 인스턴스화는 :


  • 씬을 세분화하고 관리하기 쉽게 만드는 기능이 있습니다.
  • 프리펩(prefabs)에 해대 더욱 유연한 대안(여러 수준에서 작동하는 훨씬 강력한 인스턴스),
  • 더 복잡한 게임 흐름과 UI까지 디자인(UI도 고도엔진에서 노드로 제공합니다.)


디자인 언어


훌륭한 디자인 언어는 씬을 인스턴스화 하는 것에서 나온다. 이 점이 여타 다른 엔진들과 고도엔진이 다른 점이다. 전체 엔진이 처음부터 이 개념을 중심으로 설계되었다.


고도엔진으로 게임을 만들 때, MVC나 실재-관계 다이어그램(Entity-Relationship diagrams)과 같은 디자인 패턴들을 제쳐두고 자연스럽게 게임에 대해 생각하게 만들어줍니다. 먼저 눈에 보이는 요소를 상상하는 것부터 시작하는데, 프로그래머 뿐만 아니라 누구나 이름을 붙일 수 있습니다.


예를 들어 간단한 슈팅 게임을 만드는 것을 상상해보세요 :

../../_images/shooter_instancing.png

이런 도표는 거의 모든 종류의 게임에서 사용하기 쉽습니다. 생각나는 모든 요소들을 적어보세요. 그리고 상속 관계를 떠올리며 화살표를 그려보세요.


일단 다이어그램이 있으면 게임을 만드는 것은 각각의 노드라는 인스턴스를 이용해 씬(장면)을 만드는 과정입니다(코드나 편집기로).


게임을 만드는 데(혹은 일반적으로 소프트웨어를 만드는데) 대부분의 시간은 구조를 설계하고 그 구조에 게임 구성 요소를 맞추는데 사용합니다. 씬에 기반한 디자이닝(Designing)이 이를 대체하고, 개발을 훨씬 더 빠르고 간단하게 만들어 게임 그 자체에 집중할 수 있게 합니다. 씬과 인스턴스화 기반의 설계는 대부분의 구성 요소가 직접 씬에 직접 매핑되기 때문에 이러한 작업의 대부분을 저장하는 데 매우 효율적입니다. 이런 식으로 하면, 구조 코드가 전혀 또는 거의 필요하지 않습니다.


다음은 상호 작용하는 많은 자산과 부품이 있는 오픈 월드 형식의 게임으로, 더욱 복잡한 예입니다.


../../_images/openworld_instancing.png

가구가 딸린 방을 몇 개 만들고 나서 그것들을 연결하세요. 나중에 집을 만들 때 그 방들을 인테리어로 사용하는 방법으로 쉽게 창조할 수 있습니다.


그 집은 많은 집을 가지고 있는 성채의 일부일 수 있습니다. 마침내 그 성은 월드 맵 지형 어딘가에 놓일 수 있겠죠. 또한 방어병과 다른 NPC들을 추가하기 전에 따로 그들에 대한 씬들을 만들 수 있습니다(Add also guards and other NPCs to the citadel by previously creating their scenes.).


고도와 함께라면 게임은 원하는 대로 더 빨리 개발할 수 있고, 원하는 많은 씬들은 생성되고 인스턴스화 될 수 있습니다. 에디터 UI는 프로그래머가 아닌 사람도 조작 할 수 있고 일반적인 팀 개발 과정에서 3D 또는 2D 아티스트, 레벨 디자이너, 게임 디자이너, 애니메이터 등이 에디터 인터페이스로 조작이 가능합니다.



정보 과부하!


너무 걱정하지 마세요. 이 튜토리얼의 중요한 부분은 실제 생활에서 씬과 인스턴스가 어떻게 사용되는지에 대한 인식을 만드는 것입니다. 이 모든 것을 이해하는 가장 좋은 방법은 게임을 개발하는 것이죠.


연습할 때는 모든 것들이 분명해 질 것입니다. 머리를 긁적이지 마시고 다음 튜토리얼로 넘아가세요!!