MonoGame - 바퀴를 재발명하는 사람들을 위한 게임 엔진

발행: (2026년 5월 23일 AM 10:12 GMT+9)
7 분 소요
원문: Dev.to

출처: Dev.to

Introduction

새 게임을 만들 때 가장 먼저 마주치는 질문 중 하나는 게임 엔진을 고르는 일입니다.
대부분이 알고 있는 주요 후보는 Unity, Unreal Engine, 그리고 Godot입니다.
하지만 이들 외에도 잘 알려지지 않은 2차 엔진들이 꽤 있습니다.
그 중 하나가 바로 MonoGame이며, 이번 글에서 바로 그 이야기를 다루겠습니다. 간략히 역사를 살펴보고, 선택할 가치가 있는지 논의한 뒤, 몇 가지 유용한 링크도 공유합니다.

C# 프로그래밍 언어는 2002년 마이크로소프트가 만들었습니다. 마이크로소프트는 이를 범용 언어로 포지셔닝하면서 다양한 분야에서 사용할 수 있는 기술과 라이브러리를 개발했죠. 그 중 하나가 2006년에 출시된 XNA입니다. XNA는 DirectX 9 기반으로, 당시 마이크로소프트 생태계(Windows, Xbox, Windows Phone)용 게임을 만들 수 있게 해 주었습니다.

XNA는 게임 개발 커뮤니티에서 곧 큰 인기를 얻었고, 자연스럽게 개발자들은 게임을 다른 디바이스와 운영체제에서도 실행하고 싶어했습니다.
그 요구에 대한 답이 MonoGame이었습니다. MonoGame은 XNA와 완전한 API 호환성을 유지하면서 Android, iPhone, Linux 등에서도 동작하도록 설계되었습니다.

2013년에 마이크로소프트는 XNA 지원을 중단했습니다. 그 결과 MonoGame은 마이크로소프트 플랫폼에서도 동작하도록 확장될 수밖에 없었습니다. 현재 MonoGame은 대체로 XNA 4 사양을 구현하고 있습니다. 즉, 그래픽, 오디오, 마우스, 키보드, 게임패드 등에 대한 비교적 저수준 접근을 제공하는 게임 하드웨어 추상화 레이어라고 할 수 있습니다.

동시에 MonoGame은 몇 가지 고수준 기능도 포함하고 있습니다:

  • 선형대수와 3D 기하학 라이브러리. 행렬, 벡터, 레이, 변환 등. 원근 및 직교 투영 행렬을 만드는 메서드가 풍부하고, 바운딩 박스·구 등도 지원합니다.
  • SpriteBatch – 2D 그래픽 작업을 위한 궁극적인 도구이며, 텍스트 렌더링도 가능합니다.
  • 오디오 라이브러리.
  • Content Pipeline – 에셋을 처리하고 런타임에 적합한 포맷으로 변환하는 프레임워크. 다소 논란이 있는 기능이며, 개인적으로는 원시 형태로 에셋을 로드하는 것이 더 낫다고 생각합니다.
  • 간단한 3D 모델 라이브러리. 하지만 두 가지 큰 문제가 있습니다: Content Pipeline에 강하게 의존해 런타임에 동적으로 모델을 생성할 수 없으며, 애니메이션 지원이 부족합니다. 그래서 저도 사용하지 않습니다.
  • 몇 가지 기본 3D 셰이더. 예를 들어 BasicEffect(Blinn‑Phong 모델 기반 조명)와 SkinnedEffect(스켈레톤 애니메이션 지원) 등이 있습니다. 이 글의 처음에 보인 데모도 이러한 셰이더 위에 구축되었습니다. 다만 방향광만 지원하고, 포인트 라이트와 스포트 라이트는 지원되지 않습니다.

은 거의 맞습니다. 다만 이 말은 주로 아주 단순한 2D 게임에 해당한다는 점을 명확히 해야 합니다.
일반적인 경우라면, 개발 효율성을 최우선으로 한다면 Unity나 Unreal을 권합니다.
하지만 효율성이 최우선이 아니고 개발 과정을 즐기고 싶다면 MonoGame을 선택할 만한 이유가 몇 가지 있습니다.

  1. C#에 대한 애정 – Unity도 C#을 지원하지만, Unity는 오래된 언어 버전과 런타임을 지원하도록 자체 프레임워크를 사용합니다. 반면 MonoGame은 최신 Microsoft .NET 생태계 위에서 동작합니다.
  2. 오픈소스와 관용적인 라이선스에 대한 호감.
  3. “코드로 생각한다”는 사고방식을 가진 사람이라면, Unity·Unreal·Godot와 같은 디자이너 중심 접근보다 MonoGame이 제공하는 ‘벌거벗은’ 게임 루프 방식을 선호할 수 있습니다.
  4. 기술적인 디테일을 파고들고 휠을 재발명하는 즐거움 – MonoGame용 라이브러리가 많이 존재하지만(이 글의 저자도 몇 개 만들었습니다), 게임에 필요한 모든 기능을 바로 찾기란 쉽지 않습니다. 대부분 직접 라이브러리를 만들거나 기존 것을 확장해야 할 것입니다.

Official MonoGame Site

MonoGame 공식 사이트를 방문해 보세요. 특히 Showcase 페이지에서는 XNA/MonoGame으로 만든 유명 타이틀(예: Terraria, Stardew Valley)을 확인할 수 있습니다.

FNA - Another XNA Implementation

FNA는 또 다른 XNA 구현체이며, 관심이 있다면 살펴볼 만합니다.

0 조회
Back to Blog

관련 글

더 보기 »

내 스킬

프로젝트를 위한 AI 지시문을 만들고, 설치하고, 관리하세요 — 코딩이 필요 없습니다. CREATE 이름을 정하고, 카테고리를 선택하고, 원하는 것을 설명하세요 — 마법사가 자동으로 구성합니다.