본문 바로가기
게임개발/가마수트라

주말 동안 유니티(Unity)에서 고도(Godot)으로 전환하기

by 아수랑 2023. 12. 27.
728x90
분야: 프로그래밍 / 6분 읽기
작성자: Sergio Flores


Godot은 새로운 유니티가 되기까지 몇 가지 보완해야 할 점이 있습니다. 하지만 그만의 매력과 장점이 있습니다.


안녕하세요, 동료 인디 개발자 여러분!

"오니 헌터스" / "미니몬" 시리즈의 제작자로서 저는 지난 10년 동안 게임 개발 세계가 급격하게 발전하는 것을 지켜보았습니다. 대부분의 개발사가 자체 엔진을 사용하던 시절부터 유니티가 인디 개발의 왕좌를 차지한 현대에 이르기까지 툴은 끊임없이 변화해 왔습니다.

저는 이번 주말에 최신 게임을 Unity에서 Godot으로 포팅하는 어려운 작업을 수행했습니다.

그 과정과 이유, 교훈을 알아보려면 계속 읽어보세요!


왜 Godot인가?


유니티는 수년간 많은 기업에게 좋은 서비스를 제공해 왔습니다. 하지만 최근 유니티가 서비스 약관을 소급하여 변경하기로 결정한 후, 특히 이전에 약속했던 것과는 달리 저를 포함한 많은 개발자의 신뢰가 심각하게 훼손되어 대안을 모색해야 했습니다.

C#을 훌륭하게 지원하는 떠오르는 스타, Godot을 소개합니다. Godot을 완전히 처음 접하는 저로서는 제 Unity 경험이 어떻게 이전될지 궁금했습니다.


퀵 포트 뒤에 숨겨진 '마법'


이 글을 읽고 있는 개발자들의 탄식이 들리는 것 같습니다. 전체 게임을 단 주말 만에 다른 엔진으로 포팅한다고요?
특히 10년의 역사를 자랑하는 "오니 헌터스"의 규모를 고려하면, 약 3,000개의 에셋(스프라이트, 오디오, 맵 등)이 포함된 4GB의 방대한 리포지토리와 500개 이상의 C# 스크립트가 함께 포함되어 있습니다. 거의 불가능에 가깝게 들리죠? 하지만 이 모든 것을 가능하게 만든 비법이 있습니다.

그 비결은 바로 엔진 추상화 계층에 있습니다. 과거에 까다로운 포팅 경험으로 인해 상처를 입은 저는 "오니 헌터스"의 미래를 대비하기 위해 단호하게 결정했습니다. 단 3개의 소스 파일과 깔끔한 씬 아키텍처로 Unity 관련 종속성을 제한함으로써 원활한 포팅 환경을 위한 토대를 마련했습니다. 모든 개발자가 이 방법을 사용할 수 있는 것은 아니지만, 저처럼 2D 레트로 게임에 집중하는 개발자에게는 시간을 절약할 수 있는 금광과도 같은 방법입니다.

기본적으로 제 전략은 게임과 엔진 사이에 있는 보호 계층인 자체 API를 만들어 게임 로직을 특정 엔진의 세부 사항으로부터 격리하는 것이었습니다. 간단히 말해, 게임의 요구 사항에 맞게 맞춤형 인터페이스를 제작하는 것과 같습니다. 2D RPG 게임을 예로 들면, 이 API에는 LoadMap(), CreateActor(), StartBattle() 등과 같은 간단한 메서드가 들어갑니다.

에셋 측면에서는 맵을 Unity 외부에서 Tiled를 사용하여 생성함으로써 엔진에 구애받지 않도록 만들었습니다. 스프라이트 시트와 같은 것들의 경우, 모든 스프라이트에 대해 특정 크기 규칙을 따랐기 때문에 개별 프레임으로 분할하고 애니메이션을 자동화하는 것이 간단했습니다.

게임 개발계에서는 이 접근 방식을 "코드 중심 개발", "씬 미니멀리즘" 또는 "런타임 씬 생성" 등 다양한 이름으로 부르는 것을 보았습니다. 이 접근법의 핵심은 Unity 씬을 대부분 비워둔 채로 C# 스크립트를 통해 게임 로직과 콘텐츠의 대부분을 구동하는 것입니다. Unity의 핵심 기능을 계속 활용하되, 에디터에서 강조점이 약간 이동합니다. 즉, 에디터는 실시간 검수 및 수정을 위해 여전히 중요합니다.

이러한 접근 방식은 시간과 계획에 대한 사전 투자가 필요하지만, 장기적으로 볼 때 유연성과 독립성은 매우 중요합니다. 엔진이 업계에 아무리 깊숙이 파고들어도 적절한 추상화를 통해 제 게임은 자유롭고 민첩한 상태를 유지할 수 있습니다. 모든 사람에게 적합한 접근 방식은 아니라는 것을 알고 있습니다.

반응형


DIY 솔루션 자세히 알아보기


이제 여러분 중 일부의 탄식과 즉각적인 반문이 들릴 것 같습니다. "유니티가 제공하는 멋진 기능들은 다 뭐죠?" 라고요. 그럼 얘기해 보겠습니다.

충돌 감지? 2D 게임의 세계에서 교차하는 선, 원, 직사각형의 수학은 게임에 강력한 물리 시뮬레이션이 필요하지 않는 한 매우 간단합니다.

파티클 시스템? 픽셀아트 게임에서는 아티스트가 직접 제작하고 애니메이션 프레임으로 매끄럽게 통합한 수작업 파티클 효과를 사용하는 것이 일반적입니다.

경로 탐색? A*와 같은 고전적인 알고리즘은 약 50줄의 C#으로 구성된 간결한 스크립트로 구현할 수 있습니다.

GUI? 게임에 따라 다르지만, 많은 인디 게임에서는 복잡한 GUI가 필요하지 않습니다. 또한 이미 엔진에서 스프라이트 드로잉을 추상화했다면 그 위에 기본 GUI 레이어를 구축하는 것도 가능합니다.

 


목록은 계속 이어집니다. 인디 개발자가 필수적인 '엔진 제공 기능'이라고 생각하는 기능도 약간의 창의력을 발휘하면 생각보다 훨씬 쉽게 구현할 수 있는 경우가 많습니다. 그리고 그 코드를 잘 추상화해 두면 향후 모든 프로젝트에서 계속 재사용할 수 있습니다.


Godot 101: 인디 개발자의 첫걸음

 

저처럼 Godot을 처음 접하는 분들을 위해 몇 가지 기본 사항을 설명해 드리겠습니다:

씬과 노드: 게임 오브젝트로 가득 찬 Unity 씬을 생각해 보세요.Godot에서는 노드, 특히 2D 게임용 노드2D가 있는 씬이 전부입니다. 충분히 비슷합니다.

가장 중요한 메서드: Ready와 _Process는 Unity의 시작 및 업데이트에 있어 Godot의 가장 친한 친구입니다.

2D 스프라이트: Sprite2D 클래스가 여러분을 도와드립니다.

입력 처리하기: 입력 메서드를 활용하세요.

오디오: 오디오 스트림 플레이어는 사용하기 매우 쉽습니다.


음악 신디사이저 재생과 무작위 몬스터 이펙트 모두에 많이 사용하는 프로시저럴 오디오가 가장 큰 문제였습니다. 유니티의 온오디오필터읽기가 마음에 들긴 했지만, Godot은 오디오스트림제너레이터라는 기능을 제공합니다. 처음에는 몇 가지 문제가 있었지만(이 부분은 곧 자세히 설명하겠습니다), 다이나믹 오디오 솔루션을 찾는 사람들에게 유용합니다.

이 목록은 주로 오니 헌터를 포팅하는 동안 제가 필요로 한 것을 기반으로 한 것이므로, 여러분의 요구 사항은 다를 수 있습니다.

Godot은 유망하지만 완벽하지는 않습니다. 4.1 버전에서 오디오스트림제너레이터를 사용해 본 결과, 오디오가 전혀 들리지 않아서 많이 실망했습니다. 다행히도 오픈 소스 커뮤니티의 힘이 빛을 발하는 부분입니다. 수소문 끝에 수정 사항이 포함된 PR을 찾아서 커스텀 Godot 버전을 만들었고, 짜잔! 오디오 문제는 역사 속으로 사라졌습니다. 소스로 빌드하는 것이 두려운 분들을 위해 말씀드리자면, 생각보다 간단합니다. 필요한 모든 단계를 설명하는 좋은 문서가 있는 Godot의 문서를 읽어보세요.

728x90


마무리 생각


Godot 이 새로운 유니티일까요? 아직은 아닙니다. 전체 소스 코드 액세스와 같은 매력과 장점이 있습니다. 하지만 아직 따라잡아야 할 부분도 있습니다. 예를 들어 Godot 의 프로파일러는 아직 C#을 지원하지 않기 때문에 타사 .NET 프로파일링 툴을 사용해야 합니다. 하지만 이러한 단점에도 불구하고 Godot은 인디 개발자에게 강력한 선택지가 될 수 있는 길을 가고 있다고 자신 있게 말할 수 있습니다.

또한 성능도 약간 향상되었습니다. 이는 유니티가 여전히 이전 버전의 모노를 사용하는 반면, Godot 은 .NET 6을 사용하기 때문일 수 있습니다.

유니티에서 Godot 으로 전환하는 과정은 깨달음을 주는 여정이었고, 앞으로 Godot 이 어떤 방향으로 나아갈지 정말 기대가 됩니다. Godot 이 모든 개발자에게 유니티를 대체할 수는 없겠지만, 새로운 것을 받아들이고자 하는 인디 개발자에게는 흥미로운 놀이터가 될 것입니다. 활기찬 인디 커뮤니티에서 더 많은 실험과 공유가 이루어지기를 기대합니다!


* 원문: https://www.gamedeveloper.com/programming/from-unity-to-godot-in-a-weekend

 

From Unity to Godot in a Weekend

Godot has some catching up to do before it becomes the new Unity. But it does have its charms and advantages.

www.gamedeveloper.com

 

* 게임 사이트: https://store.steampowered.com/app/1051070/Oni_Hunters/?l=koreana

 

Oni Hunters on Steam

Journey through Gironia's lands, where monsters roam and secrets await. Battle, fuse creatures, and decide your fate in the grand Monster Jubilee. Ready for the adventure?

store.steampowered.com

 

// 오역이 있을 수 있습니다. 잘못된 번역은 댓글로 알려주세요.

반응형
LIST

댓글