게임 엔진 3종 비교
게임 엔진 3종 비교
글은 여타 인터넷에 있는 글보다는 실제로 3개의 엔진을 사용해본 사람의 입장에서 작성해본다. 개인적인 경험 위주로 작성할 예정이라 틀린 점이 있을 수 있다는 점
이 글은 2024년 HomeCommingDay 발표를 위해 작성된 글입니다.
유니티(Unity)
유니티는 처음 게임개발을 시작한 엔진으로 대부분의 게임 구조를 만들거나 떠올릴 때 유니티에 맞는 구조를 생각하게 된다. 유니티의 경우 컴포넌트 기반 (재사용성)의 아키텍처로 Mono를 상속받은 클래스를 게임오브젝트에 부착하여 유니티 라이플 사이클에 태워 게임이 동작하게 된다.
이러한 특성으로 처음 사용할 당시에 다양한 시도와 어려움이 있었다. 한 클래스안에 거대한 덩어리, 라이플사이클을 유지하기 위한 생각없이 Start, Awake 구조-> 후반에 가서 결국 엉킴, 관리자를 두기 위한 복잡한 게임 매니저 설계(싱글톤), 컴포넌트간의 의존성 문제 등등
대부분의 유니티로 게임 개발을 시작한 사람들이 겪는 문제라고 생각한다.
오브젝트마다 독립적인 라이프사이클을 가지다 보니 객체지향적인 구조를 가져가기 힘들다. 물론 프리팹으로 묶거나 SO로 관리할 수 있는 방법이나 DI Framework(젝젝트)로 가능하지만 분명한 한계가 있다. 이 때 트레이드 오프의 개념을 이해하는 것이 중요하며, 결국 따라서 게임의 성격에 맞게 구조를 설계하는 능력이 중요하다.
이외에도 C#을 기본 언어로 사용하기에 GC가 있어 좀 더 개발자에게 편한 감은 있다. 물론 여기에 항상 따라오는 말로 성능저하가 있다. 사용자가 직접 메모리 해제 시점을 조작하지 못하기 때문에 이런 말이 따라오지만, 유니티를 C++처럼 사용하는 사람들은 Dispose를 사용하여 리소스를 관리한다.
또한 인디게임 개발자가 현 시점 가장 많이 상주하고 정보도 가장 많기 때문에 처음 게임개발을 시작한다면 유니티가 좋긴하다. 하지만 스스로 대기업 게임 회사 취업이 목적이라면 언리얼 부터 시작하는게 좋을 것 같다. 최근 시장의 형성이 대부분 언리얼 PC게임이기 때문이다.
언리얼(Unreal)
언리얼은 약 6개월 정도 UNSEEN과정에서 학습을 해봤다. 유니티와 다르게 학습곡선이 좀 쌔다 그 이유는 C++을 기본 언어로 가져가기에 메모리 관리와 방대한 언리얼 구조를 익혀야 한다. C++자체도 언어 난이도가 높고, 언리얼 또한 유니티에 비해 좀 더 학습해야 할 내용이 많다.
그 이유를 좀 생각해보면, 결국 언리얼은 AAA급 게임을 제작하기에 유용한 툴이기에 최적화에 예민하고, 기본적으로 AAA급에는 멀티가 들어가기 때문에 멀티개념도 같이 공부해야 하기 때문이 아닐까? 라고 추축해본다.
언리얼은 이러한 어려운 단점을 상쇄하고자 블루프린트라는 시각적 노드 기반 프로그래밍 툴을 두었으나 실상 AAA급을 제작하는 게임에선 최적화를 위해 C++로 하는 경우가 많아지게 되는 이상한 상황이 나오게 된다. 시작을 블루프린트로 시작하고 고도화를 C++로 같이 나아가는게 가장 이상적일 것 같다. 또한 유니티에 비해 강의나 정보가 한정적이다.
고도(Godot)
고도의 경우엔 두 엔진과 다르게 매우 특이한 구조를 가지고 있음, 트리 형태의 엔진으로 언어 자체도 파이썬과 비슷한 GDScript라는 동적 언어를 지원한다. 대부분의 엔진에서 C계열을 사용하는 반면 고도 엔진의 경우 파이썬 문법을 그대로 사용함 물론 C#도 사용가능하지만 개발사에선 GDScript를 사용할 것을 권고한다.
어떻게 보면 엔진과 언어가 어느정도 레벨로 정렬되어 있다고 생각이 든다. 어려운 언리얼은 C++과 짝으로 가장 위에 위치하고 유니티의 경우 중간 정도, 고도의 경우가 가장 하단에 위치한다고 볼 수 있다.
노드 기반이라는 것은 유니티 컴포넌트와 비슷할 수 있지만, 게임오브젝트라는 껍데기 없이 한 컴포넌트 당 노드 한개를 가지고 이를 트리로 구성하여 씬이라는 독립적인 객체로 묶어서 사용함 이러한 구조 특성 때문에 코드를 작성하다 보면 자연스럽게 모듈형태로 프로그램이 만들어진다. 이것은 실제로 해봐야 알 수 있는 최대 장점이다.
결국 모듈(씬) 하나마다 독립적으로 동작할 수 있어야 한다는 특징이 생기고 씬과 씬을 연결하는 시그널(델리게이트 비슷함)로 디커플링을 유지하게 되면서 게임이 동작하게 된다.
사용해본 후기로는 고도가 가장 빠르고 간단하게 게임을 만들기 쉬웠으며 구조도 단순했다.
댓글남기기