본문 바로가기
프로젝트

Majestro 개발 후기 - 개발

by su00224 2026. 9. 15.

 

반갑

습니다

 

들어가기에 앞서,

저는 개발쪽에 크게 참여하지 않았습니다.

그래서 전체적인 기술 설명과 더불어, 주로 팀원들이 겪은 문제들을 작성합니다

그래서 개발 관련 궁금하신점이나 문의가 있으시다면 아래의 메일 주소로 부탁드립니다

(팀원들 허락은 아직 안받았는데 괜찮을겁니다)

 

목표 시스템

DirectX12를이용한 리듬액션구현

딥러닝기반AI의 게임 적용구현

서버권위리듬 판정/보정

서브컬쳐풍툰쉐이딩구현

기술 구현 중점 리소스 제작 및 자체 포맷기를 이용한 최적화

 

DirectX12를 이용한 리듬 액션 구현

 

 

딥러닝기반AI의 게임 적용구현

 

서버 권위 리듬 판정/보정

개발을 시작하기에 앞서 크게 걱정되었던 부분입니다.

여타 다른 리듬 액션 게임들은 멀티플레이가 잘 없었습니다

다만, Majestro의 경우 박자에다가 음악까지 다른 플레이어들과 연동을 시켜아하니

한쪽 클라이언트에서 지연이 발생하면 음악이 꼬이거나, 박자가 엉망진창이 되는 일이 예상되었습니다

 

 

 

기술적으로 어려웠던 점

1. 자체 포멧기

Majestro는 일반적으로 사용되는 3d모델링의 파일 포멧인 .fbx나 .glb를 그대로 이용하지 않고

이 파일 포멧들을 mesh, animation, bone으로 구분하는 자체 포멧기를 만들어서 사용했습니다

쉽게 말해 

파일들을 불러오는데에 이점이 있습니다.

엔진을 통해 Import할 때 그 과정을 에디터를 통해 진행할 수 없기 때문에 만들었습니다

 

근데 그것말고는 이점이라곤 없는 쉬벌놈입니다

 

 

우선 첫번째로 모델링 파이프라인이 굉장히 복잡해집니다

상용 엔진을 사용한다면 보통

캐릭터 모델링 -> 채색 -> 리깅(뼈 넣기) -> 애니메이션 이 과정을 거칩니다

다만 이를 사용하게 되면

뒤에 자체 포멧기를 사용해야한다는 단계 하나가 추가됩니다

 

엥?? 하나 추가되는데 뭐가 복잡하냐 라고 생각하셨다면

오류가 발생했을 때 아주 큰 문제가 발생합니다

 

이 파이프라인의 어느 단계에서 문제가 발생했는지를 알 수가 없습니다!!!!!!!!!!!!

문제가 뭔지, 어디를 수정해야 하는지, 내 문제는 맞는지, 컴퓨터 문제인지 전혀 알 수가 없습니다

 

그럼 이제 개발자 친구와 서로의 책임 전가와 문제 해결을 위한 싸움을 시작합니다

블렌더에서 3dsmax로 옮겨오는 과정이 문제니, 로컬좌표계가 문제니, 애니메이션이 문제니, 걍 니 문제니, 처음부터 다렉같은 걸 고른 내 잘못이니, 이걸 부축인 교수님 잘못이니 하면서 현실 부정 시간을 가집니다

 

그냥 고치면 안되냐고요? 이미 앞에서 저 파이프라인 검토와 수정만 20번을 넘게하기 시작하면 정신이 나가 미쳐버립니다

개발자 친구와 싸우기 시작하면 보통은 제가 이깁니다

사설 포멧기를 고쳐줍니다. 근데 그렇다고 제가 일을 안해도 되는 건 아니여서 한번 더 돌립니다. 그러다가 또 터집니다 시뷔러

그래서 결국 이 사설 포멧기로 변환한 포멧들을 직접 눈으로 확인해볼 수 있는 툴까지 개발하고,

조금씩 경험치가 붙으니까 해결이 됐습니다. 

 

주요 문제는 아래와 같았습니다.

1. 모델링 직후 반드시 Reset X Form(3dsmax), All Transform(Blender)를 실행할 것.

모델은 눈에 보이는 것과 크게 다릅니다. 로컬 좌표계와 월드 좌표계 2개로 구분되기 때문에

보이기에는 1.8m맞는데? 싶어도 실제로 까보면 180m에 0.01배가 되어있다던가하는 경우가 수두룩합니다.

 

2. 다른 툴로 이동 시에는 반드시 단위(Unit)을 맞춰라

3dsmax에서 Blender로, Unreal Engine에서 Blender로, 그의 역도 모두 성립합니다

블렌더에서 기준을 1m로 작업했다면 3dsmax에서도 m 단위로 작업해야 합니다.

이는 Import/Export를 할 때도 마찬가지입니다. 항상 단위에 신경써야 합니다

 

3. 3DSMAX 바이패드 이용 시 모델이 누워있지 않은 지 확인

3DSMAX에서 바이패드 작업 후 Mixamo에서 애니메이션 작업,

이후 다시 3dsmax로 불러오는 과정에서 자주 발생하는 현상입니다

 

1번 사진처럼 보기에는 멀쩡해보이지만 Skin을 꺼봤을 때 오른쪽과 같이 모델이 누워있는 경우가 있습니다

3dsmax는 오른손 좌표계를 이용하는데, 왼손 좌표계를 이용하는

다른 프로그램 혹은 사이트를 경유하는 경우 발생하는 문제 같습니다(확실하진 않습니다)

 

해결방법은 간단한데

Skin 비활성화 >> Always Deform 비활성화 >> 바이패드 Figure Mode >> 모델 선택 후 바이패드에 맞춰 회전

>> Always Deform >> Skin 활성화 이 과정을 거치면 해결됩니다.

 

4. 자체 포멧기의 코드 문제

개발자를 닥달하고 탓하십시요 일단 내 문제인 것 같아도 일단 징징거리십쇼

 

2. 상하체 분리 보간의 문제

 

 

3. AI 작업 환경 조성의 문제

Majestro의 몬스터는 길찾기와 패턴 구성에 강화학습을 이용합니다.

이를 위해 AI 쪽을 담당했던 친구는 거의 게임을 새로 하나 만들정도의 환경 구성과

수십만번의 학습을 했는 데, 이렇게 해도 평균 정확도가 50% 정도에 그쳐서

너무 정확도가 낮은 경우 A*로 이동, 그 외에는 강화학습 기반의 전략적 이동을 하도록 했습니다

 

 

 

개발 과정

 

전반적인 개발의 시작은 메인 프로그래머 친구가 만들고 있던 3D 게임프로그래밍 수업의 프레임워크에서 시작했습니다

이때 터레인이나, 모델 불러오기, 스카이박스 등은 구현이 되어있었습니다.(완벽하진 않았지만)

충격적인 미감 때문에 제가 늘 이란 반군 시뮬레이터냐고 놀렸던 게임입니다

 

이후 제작 중이던 모델링을 띄워 애니메이션 테스트를 진행했습니다.

당시에는 모델링도 많이 부족했고, 아직 완성되어 있지 않아서, 구분만 가능하도록 채색한 후 애니메이션을 테스트했스빈다

 

 

 

이후 터레인과 스카이박스를 적용했습니다.

개발에서 가장 중요하다고 생각한 것은 "우선 게임처럼 보여야 한다" 였기 때문에

플레이어의 이동과 함께 가장 빨리 추가된 요소입니다

 

 

이후 터레인의 디테일한 작업과 그림자, 모델들이 추가되었습니다

터레인의 경우 뭔가 자글자글 거리는 잔상이 눈에 남았고

모델은 축이 자꾸 뒤집히는 문제가 있었습니다.

 

터레인은 그림자 문제였으며,

모델은 Blender, 3DSMAX와 DIRECTX12의 좌표계 문제 및 자체 FBX 컨버터 문제였습니다

이후 mimmap을 적용해 조금 더 부드럽게 보이도록 수정했습니다

 

 

모델에도 메탈릭, 러프니스가 적용되어 재질 표현이 가능해졌습니다

또한 적들과 UI가 추가되었으며, 콜리전 박스를 통해 충돌이 가능해졌습니다

 

 

 

이후 움직이면서 공격이 가능

하도록 상하체 애니메이션 분리보간을 진행했는데,

아직 불안정한 자체 FBX Converter의 여러 문제로 애니메이션이 깨지는 문제가 빈번했습니다

 

그림자와 터레인 메터리얼 등에 있어 더 많은 진행이 있었습니다

 

 

이제 제작한 맵을 적용하고 본격적인 개발이 시작되었습니다

그리고 이전까지 계속 작업하던 터레인은 폐기되었습니다

터레인은 정점을 많이 차지할 뿐만 아니라, 2층 이상의 건물 표현에도 큰 어려움이 있었기 때문입니다

자연환경이 아니라 정해진 마을 등의 레벨을 돌아다니는 게임에서 터레인이 크게 중요하지 않았다고 판단했습니다

 

 

쉐이더 쪽에서 큰 변화가 있었습니다

캐릭터 채색이 완료된 시점에서, 어떤 쉐이더가 우리 게임에 가장 잘맞는지를 확인하고 위해

여러번의 개발과 수정이 있었습니다

 

마비노기 스타일의 툰쉐이딩, NPR,PBR, 외곽선, 쉘 쉐이딩...

여러가지를 시도해보고 마지막으로 결정한 건 NPR+PBR 쉐이딩 입니다

최종 선택 결과

 

 

이제 디테일을 잡기 시작했습니다

나뭇잎과 풀이 뭔가 하나의 색상으로 통일해버리는 문제가 있었습니다

원인은 다양하지만 그림자 문제가 한 몫했습니다

블러드 라이너, 스피드 라이너, 블러

 

여러가지 쉐이더들을 추가 적용하기 시작했습니다

 

맵과 캐릭터 전체에 일관적으로 발생하던, 그림자, 노말꼬임 문제를 계속 해결해나갔습니다

동시에 EMMISIVE의

아직은 톤매핑이 적용되지 않아 레벨이 전체적으로 채도가 낮아보이는 듯한 느낌이 있습니다

 

트레일 VFX와 동시에 갓레이가 추가되었습니다

빛이 빈틈 사이사이로 희미하게 들어오는 그런 효과를 의미합니다

 

메인 메뉴 및 일시정지 화면 등의 UI 및 연출들이 추가되기 시작했습니다

 

UI 의 전반적인 개선이 있었으며, 플레이어를 조금 더 다채롭게 보이는 이미시브 선이 추가되었습니다

 

컨텐츠 추가 및 그래픽 개선이 진행되었으며, 동시에 60~80프레임을 유지하던 게임의 전체적인 성능 향상이 있었습니다

지금은 180~240를 유지합니다

 

 

지속적인 컨텐츠 추가 및 다듬기가 진행되었습니다

궁극기, 보스 추가 및 패턴 수정, 레벨 수정이 있었습니다

'프로젝트' 카테고리의 다른 글

Majestro 개발 후기 - 디자인  (1) 2026.09.05
Majestro 개발 후기 - 기획  (2) 2026.09.05
『Brace For Impact』 개발 후기  (2) 2025.02.23
『Deuteronomy』 개발 후기  (0) 2025.01.24