언어 공부

[week14] AI/ML과 게임엔진 (feat.메이플)

mapsycoy 2025. 10. 4. 22:43
요즘 게임 회사들을 보면 대부분 AI 연구부서를 새로 만들어 게임엔진과 AI 시스템을 연동시킨 경험이 있는 개발자들을 채용하고 있다. 
전 세계적으로 통용되는 대표적인 게임 엔진은 Unity와 Unreal Engine으로 둘의 가장 큰 차이점이라 하면, Unity는 C#기반으로 2D나 2.5D 캐주얼 모바일 게임에 최적화되어 있고, Unreal은 C++기반으로 3D 온라인 게임에 최적화돼 있다는 것이다.
이것이 일반적으로 아트 쪽 사람들이 알고 있는 상식(?)이다.

 

그렇기에 원래는 각 회사마다, 그리고 게임마다 사용하는 주 엔진이 달라 하나로 더 파고든 것을 우대하는 경향이 강했는데, 지금 시점에서는 둘 중 어느 것 하나라도 AI 접목 경험이 있다면 채용하는 분위기이다.🤔

 

아래 가장 최근 넥슨에서 올린 AI 엔지니어 채용공고 내용을 보자.

넥슨 [메이플스토리] AI 엔지니어 채용공고

원래 넥슨의 경우 자체엔진을 활용하여 게임을 제작해 왔는데, 최근 메이플스토리 AI 엔지니어 채용 공고를 보면 [언리얼 또는 유니티 엔진을 이용한 게임에 AI 서비스를 융합시키는 업무]가 가장 상단에 나와있음을 알 수 있다.

이쯤 되니 넥슨의 자체 게임엔진이 어디까지 활용되고 있는지 궁금해진다.


[목차여기]

자체 게임엔진은 옛말. 넥슨도 상용화 엔진으로 교체하고 있다.

 

넥슨 ‘어둠의 전설’, “새 엔진 교체, 유저와 미래를 위해 내린 결정” - 게임뷰

넥슨이 서비스 중인 MMORPG ‘어둠의 전설’은 지난 1998년에 서비스를 시작한 게임이다. 최장수 게임인 ‘바람의 나라’에 이어 두 번째로 긴 서비스 역사를

www.gamevu.co.kr

2020년 어둠의 전설 '유니티'로 점진적 교체

 

넥슨 "19주년 맞은 '마비노기' 언리얼 엔진으로 새 단장"

넥슨 "19주년 맞은 '마비노기' 언리얼 엔진으로 새 단장", IT/과학

www.hankyung.com

2023년 마비노기 '언리얼 엔진'으로 점진적 교체

 

2D 스토리텔링부터 3D 액션까지, 넥슨이 준비 중인 미공개 신작들 - 게임뷰

‘던전앤파이터’, ‘메이플스토리’ 등 강력한 IP의 힘으로 좋은 성과를 이어가고 있는 넥슨이 꾸준히 신작 개발을 이어가고 있다. 그 중에는 조만간 쇼케이스를 개최

www.gamevu.co.kr

넥슨이 최근에 출시한 게임 그리고 개발 중인 신작들은 전부 유니티와 언리얼 엔진 5 기반이라는 점에서 [메이플스토리]도 신규 콘텐츠의 경우는 그런 상용화된 게임엔진으로 개발되고 있을 확률이 매우 높을 것으로 판단된다.

결국 자체 기술력이 외면받는다는 것이니, 슬픈 현실이기도 하다.


따라서 메이플은 언리얼처럼 보이지 않지만, 언리얼일 수 있다.

2020년이었나..  러셀이라는 크리에이터가 언리얼엔진으로 3D화 시킨 메이플 월드가 유튜브에 공개되면서 폭발적인 조회수를 기록하였고, 이에 적지 않은 사람들이 메이플스토리가 언리얼버전으로 신규 출시되거나, 교체되길 바라왔었다.

러셀이 제작한 언리얼 메이플 월드
메이플스토리 인벤 게시글

심지어 이때로부터 4년이 지난 올해 6월 중순까지도 이러한 글이 인벤에 올라왔으니 그 임팩트는 상당했음을 알 수 있다.

 

근데 비록 이들이 원하던 형태는 아닐지라도 사실 메이플은 이미 알게 모르게 어느 지점부터 언리얼로 서비스되고 있었을 수도 있다는 것이다. 왜냐하면 외부에 공개된 바로는 자체개발엔진이 C++기반이기 때문.

단일 모드로 플레이하는 몇몇 신규 에피소드의 경우 Unity가 혼용되고 있을 수도 있다.


메이플은 2D 횡스크롤 게임이면서 왜 C++로 개발되었을까?

C#이 2D에 최적화된 것이 아니라, 2D에 최적화된 Unity가 C#을 택한 것이다.

대부분의 인디게임 회사들이 사용하는 Unity의 경우 2D 게임을 위한 타일맵, 스프라이트 애니메이션, UI 시스템을 툴로 제공하고 있다. 그러나 이 모든 게 C#이기 때문에 가능한 것이 아니라, 이 기능을 제공하는 Unity의 개발환경이 C#이라는 것이다.

 

그렇다면 Unity는 왜 C#을 택했을까?

Unity 엔진의 탄생 배경은 "비개발자도 쉽게 게임을 만들 수 있도록 하자."였다. 그런 점에서 OOP(객체 지향 프로그래밍)와 메모리 관리가 자동(GC)으로 이루어지는 C#이 기본적으로 수동인 C++에 비해 다루기 수월한 언어라고 생각된다. 

운전면허로 비유하자면 C#은 2종 자동이고, C++은 1종 보통이라고 보면 되겠더라. 

대신 C#은 자동관리 기능으로 가비지 콜렉팅 과정(오버헤드)이 추가되기 때문에 C++에 비해 전반적인 게임 성능을 놓고 보면 속도가 느리다는 단점이 있다. 

 

따라서 2D 횡스크롤이더라도 [메이플스토리] 같이 한 서버에 여러 동시 접속자가 동시 사냥을 할 수 있도록

'극도로 낮은 지연과 높은 처리량'을 구현해야 하는 하이엔드 MMORPG라면 C++이 더 적합한 언어일 것이다.

반면 MiHoYo가 개발한 [원신]은 3D 오픈월드에 AAA급 그래픽 퀄리티로 하이엔드 느낌이 강하지만, 기본적으로 '싱글플레이어' 모드를 지원하고 모바일 최적화이기에 Unity로 개발되었다.

+ 메이플스토리 개발은 C#이 자리 잡기 이전에 시작되었다.

C#은 마이크로소프트가 2000년 7월에 최초공개한 언어로, 버전 1인 [.NET Framework 1.0]의 정식 출시일은 2002년이다.

그리고 위젯이 메이플스토리를 개발하기 시작한 것이 2002년부터이다.

당시 개발진들은 C#의 존재자체를 몰랐을 확률이 매우 높고, 알았더라도 굳이 검증되지 않은 언어를 사용할 이유가 없었을 것이다.


CC++을 낳고, C++C++++을 낳았다(?)

C에서 OOP 기능이 추가된 것이 C++이고, C++의 복잡성을 줄인 것이 C#이라고 한다.

그동안 일종의 밈인 줄만 알았으나, 실제 C#의 정체는 C++위에 ++을 얹은 것이 맞다.

flaws in most major programming languages (e.g. C++, Java, Delphi, and Smalltalk) drove the fundamentals of the Common Language Runtime (CLR), which, in turn, drove the design of the C# language.

 

게다가 위키피디아에 적힌 위 인용문(기존 언어가 가진 여러 단점을 보완했다는 식)까지 읽고 나면 마치 C#이 C++이 진화된 버전처럼 느껴진다.

그러나 C#의 고수준 철학은 JAVA를 벤치마킹했다는 것이 기정사실이며, 세상에 완벽한 것은 없다. C#은 쉬운 언어가 되기 위해서 포기한 것도 많았다.

앞서 얘기했듯 GC로 인한 오버헤드로 C++보다 속도가 느리다거나, 저수준 메모리/하드웨어 제어에 제한이 있다거나..

그래서 개발 커뮤니티를 둘러보면 C# 자체가 약간 '애송이가 쓰는 언어'처럼 무시받는 경향이 있다. (근데 대체 '쿨하다'의 기준이 뭘까..?)

 

그렇다면 과연 머신러닝에 있어서 입지는 Unity와 Unreal 중 어느 것이 더 우위에 있을까?


ML분야에서 Unity vs Unreal

아래는 최근 Seedream4.0이라는 이미지 생성 모델로 구글의 나노바나나를 맹추격 중인 ByteDance의 기업용 AI 솔루션 자회사, BytePlus에 올라와있는 자료이다.

BytePlus - Unity vs unreal engine: Advanced features for GANs development (2025)

우선 위 표에 약간의 오류가 있어서 업데이트되어야 할 부분을 짚고 넘어가겠다.

 

Unity의 Model Inference는 이제 Barracuda가 아닌 Sentis를 사용하고 있다.

이것은 추론 엔진으로, 게임 내에서 실시간 ML 추론(예: 강화 학습으로 훈련된 NPC 봇의 행동 실행)을 효율적으로 처리하는 역할을 한다.

Unreal은 해당 부분이 네이티브로 적혀있는데, 이는 네이티브 신경망 실행이 가능하다는 것이지 아직 전용 추론 엔진은 없다는 의미라고 보면 되겠다. 그런 점 때문에 ML커뮤니티에서 Unreal은 직접 커스터마이징이 필요해 번거롭다고 이야기하는 것 같다.

 

그리고 엄밀히 따지면 Unreal Engine도 Learning Agents라는 ML플러그인을 제공하긴 한다.

에픽게임즈 커뮤니티

위 표에서 플러그인이 쏙 빠진 이유는 아마도 해당 기능이 2025년 현재까지 실험 단계(experimental plugin)에 머물고 있기 때문일 것이다.

Github - ML-Agents Release 페이지

반면 Unity의 ML-Agents는 2017년 첫 베타버전이 출시되었고, 가장 최근 버전인 4.0.0은 지난 8월 말 23번째 업데이트를 맞았다.

 

Unity: A General Platform for Intelligent Agents

Recent advances in artificial intelligence have been driven by the presence of increasingly realistic and complex simulated environments. However, many of the existing environments provide either unrealistic visuals, inaccurate physics, low task complexity

arxiv.org

그리고 이를 직접적으로 다룬 국내 ML 논문도 적지 않게 볼 수 있다.

따라서 현재 단계에서는 Unity가 ML 연구 표준에 더 가깝다고 할 수 있겠다.


근데 서양 커뮤니티에서 "C# is dead"라는 말은 왜 나온 걸까?

AI 붐 이후로 Python이 ML 라이브러리(TensorFlow, PyTorch)에서 압도적 우위를 점하면서, C#이 "쇠퇴"한다고 보는 시각이 생겼다. 반면 C++은 이런 말이 애초에 나오지를 않는데, 그 이유는 PyTorch, TensorFlow 같은 라이브러리의 코어 연산 엔진은 전부 C++/CUDA이기 때문이다.

따라서 위처럼 C# (Unity의 주 언어)이 "쇠퇴"라는 소문이 퍼지는 와중에 Unity가 ML 통합 성숙도와 사용 편의성에서 우위를 보이는 것은 모순처럼 느껴지기도 한다.


그럼에도 Unity가 현재 우위에 있는 이유는?

구글링을 해보면 일반적으로 AI/ML 하면 Python이 먼저 떠오르는 것은 맞지만, C#도 충분히 AI/ML 애플리케이션에 사용될 수 있다고 주장하는 글들이 상당하다.

특히 이미 .NET 생태계 위주로 기존 시스템이 구성된 경우, C#을 선택하는 것이 통합성과 효율성 측면에서 유리하다는 의견이다.

State of Developer Ecosystem Report 2024

2024년 발표된 개발자 생태계 현황에 따르면 비즈니스 애플리케이션에 가장 많이 활용되는 언어가 C#이라고 한다.

Stackoverflow - 2024 Developer Survey

마찬가지로 2024년 가장 많이 활용되는 프레임워크와 라이브러리는 .NET이라고 한다.

그리고 역시나 그 이유는 C++이 학습 곡선이 너무 크기 때문에 당장 소규모 비즈니스에 접목하기에는 비효율적이라는 점이다.


그래서 오늘의 결론

나는 이만 C# 공부하러 가보겠다.