본문 바로가기

Coding/멋쟁이사자처럼

[멋쟁이사자처럼 X 넥슨] MOD Supporters Hackathon 1주차 회고 (1. 기본의 이해)

멋쟁이사자처럼에서 넥슨과 협업하여 Project MOD라는 서비스를 가지고 게임 개발을 하도록 하는 MOD Supporters Hackathon이라는 활동을 한다는 소식을 듣고 지원하였고, 6월 29일 합격했다는 문자와 메일을 받게 되었다.

 

 

팀빌딩 이후 강의를 수강하기 시작했으며, 앞으로는 학습 내용들을 이 곳에 기록하며 회고하고자 한다.

 

[7월 11일]

 

[MOD 강좌 Chapter 1] 기본의 이해

 

MOD 소개

🕹️ MOD : 넥슨에서 제공하는 메타버스 기반 게임 제작 프로그램

누구나 자유롭게 컨텐츠를 제작하는 플랫폼을 목표로 하는 신규 프로젝트.

메이플스토리를 포함한 그 외 IP 사용을 통해 어떤 클라이언트든 상관 없이 변형 게임을 제작할 수 있는 UCC 소프트웨어이다.

Window 지원, MacOS는 개발중이다.

 

* 아이템 : 필자가 임의로 설정한 용어

 

MOD 클라이언트를 실행하면 다음과 같은 화면을 볼 수 있다.

 

 

왼쪽 메뉴에 홈, 플레이, 아바타, 만들기, 배경, 더보기 총 여섯 개의 메뉴가 있는 것을 확인할 수 있다.

만들기 메뉴를 선택하고 새로운 메뉴를 만들어보자.

 

홈 : 플레이했던 게임들을 볼 수 있다.

플레이 : 플레이 하진 않았지만 다양하게 출시되는 게임들의 목록을 보여주고, 원하는 게임을 선택해 플레이 할 수 있다.

아바타 : 캐릭터를 꾸며 나만의 아바타를 만들 수 있다.

배경 : 원하는 배경화면을 지정할 수 있다.

더보기 : 프로필 편집, MOD 포럼, 개발자 사이트, 건의하기 등으로 연결 된다.

              버그 건의 등을 할 수 있다. 소셜 기능은 현재 개발 중에 있다.

 

 

 

월드를 만들 때 새로 만들기, 기본, 인스턴스맵 세 종류의 맵 중 하나를 선택하여 생성할 수 있다.

다음은 새로 만들기를 선택하여 생성한 월드이다.

 

 

MOD에서는 메이플스토리의 각종 리소스들을 활용하여 나만의 게임을 개발하고 출시할 수 있다.

 

 

기본적으로 제공된 카테고리가 있지만, 원한다면 새로운 카테고리를 만들어 자기가 원하는 아이템들을 모아둘 수도 있다.

 

 

File

- Publish : MOD상에 내 게임 출시하는 것.

- Save : 저장하는 즉시 서버에 저장. (로컬에 따로 저장되지 않는다.)

- Export to File : 파일로 게임 내보내기

- Revisions : 버전 기록 기능 (버전 백업). 특정 버전으로 되돌리기/다운로드 가능

 

 

Edit

- 편집 기능. Undo, Redo, Cut, Copy, Paste 등의 기능이 있다.

 

 

Create

- 생성 기능. Entity, Ui Entity, folder, scripts 등으로 새로 생성할 수 있다.

 

 

Panels

- 다양한 패널들을 제공하고 있다.

- 처음 상태와 조작한 패널의 상태가 많이 차이가 날 경우 Reset Panels를 통해 초기화 할 수 있다.

 

 

 

[Scene]

- 그리드 정보 : 직사각형 모양의 그리드가 뜨고, 좌표를 좀 더 정확하게 확인할 수 있다.

- 발판 정보 : 발판의 정보를 확인할 수 있다. (기본적으로 타일의 모양에 따라서 발판 정보가 형성된다.)

- 여기서 시작 : 원하는 지점에서 테스트를 시작할 수 있다.

- 모바일 시뮬레이터 : 모바일에서 플레이하는 것처럼 테스트 할 수 있다.

- 성능 통계 : 현재 이 게임의 statics를 확인할 수 있다.

 

[Model List]

- 배경, solid 배경, 이미지 배경, 타일, 객체, 몬스터, npc, foothold, 사다리, 로프, 포탈, 트랩, bgm, 아이템, 스페셜 모델, 내 모델, ui preset 등 게임에 필요한 content 리스트이다.

- 슬라이더 조작으로 미리보기 크기 조정이 가능하다.

- 새 그룹 추가 : 나만의 카테고리 생성

*Foothold: 발판 정보를 갖고 있는 객체로 edit foothold 사용해서 foothold 정보를 수정할 수 있다. foothold 기능이 없는 객체여도 기능을 추가할 수 있다.

 

좌측 상단의 메뉴에서 File - Pulish를 선택하면 다음과 같은 창을 확인할 수 있다.

 

이 메뉴를 통해 완성된 월드를 출시할 때의 각종 세부정보들을 설정할 수 있다.

 

최대 플레이어 수 (1~100)

- 제작한 게임에서 플레이할 수 있는 플레이어의 수가 아니라 한 서버에 들어올 수 있는 최대 플레이어의 수

- 메이플스토리에는 하나의 서버 당 여러 개의 채널이 있다. 여기에서 채널과 같은 개념이라고 생각하면 쉽겠다.

 

플레이 가능 여부

- 다른 사람이 플레이하지 못하게 하기 위해서는 비공개로 설정하여 출시하면 된다.

- 제작 중인 게임을 테스트할 때 이러한 방식을 사용하면 유용하다.

 

리메이크 허용 여부

- 리메이크 허용 시 다른 사람이 리메이크 기능을 통해 출시된 버전(리소스 및 스크립트 포함)을 복제하여 수정 및 출시할 수 있게 된다.

 

프로젝트는 MOD 서버에 저장되기 때문에 따로 로컬에 저장되지는 않지만, File-Export to File을 통해서 파일로 저장하는 것이 가능하다.

 

다음과 같이 타일 메뉴에서 원하는 타일을 선택하여 좌클릭으로 드래그하면, 맵에 타일을 배치할 수 있다.

맵의 다른 공간을 확인하고 싶을 땐 휠클릭으로 드래그 하면 이동할 수 있다.

 

아래의 출시 버튼을 누르면 게임이 출시가 되며, 다른 플레이어와 함께 플레이 할 수 있다.

 

좌측 상단의 메뉴에서 File - Revisions를 선택하면 다음과 같은 창을 확인할 수 있다.

Revision 설정을 통하여 백업과 버전 관리를 편리하게 할 수 있다.

 

* 하나의 컴퓨터로 멀티 클라이언트를 실행하여 멀티 플레이가 정상적으로 실행되는지 점검할 수 있다.

 

 

 

현재 월드를 저장할 수 있다.

 

 

이전에 저장해두었던 월드를 백업하여 덮어씌울 수 있다.

 

 

하나의 월드에는 다양한 맵을 포함할 수 있고, 맵을 복제 또는 삭제가 가능하다.

게임을 시작할 때 처음 시작하는 맵을 지정할 수도 있다.

 

 

Foothold 메뉴를 통해 Foothold를 배치할 수 있다.

Foothold는 발판 정보를 의미하며, 아래와 같이 빨간 선을 따라서 캐릭터가 움직일 수 있다.

기본적으로 설정된 Foothold를 수정할 수도 있고, Foothold 정보가 없는 아이템에도 Foothold를 지정할 수 있다.

 

 

강의에서 확인한 내용에 따르면, 세로로 타일을 배치했을 경우에는 발판 정보가 하나로 모이게 되어 캐릭터가 통과할 수 없게 된다고 했다. 하지만, 직접 확인해 본 결과 발판 정보가 하나로 모이지 않고 캐릭터가 통과할 수 있는 것을 확인할 수 있었다.

 

 

어떠한 부분에서 내가 놓쳤을까 고민을 해봤는데, 타일이 아니라 Foothold로 배치했기 때문에 가능하지 않았나 싶다. 어떠한 이유에서인지 타일을 맵에 배치할 수 없었다. 따라서 타일 대신 Foothold를 배치했고, 그래서 설명했던 내용과 달랐다고 생각한다. 하지만, 타일을 맵에 배치할 수 없었던 이유는 아직 정확하게 파악하지 못했으며, 이후의 내용에서 학습하게 된다면 수정해놓도록 하겠다.

 

(+수정)

 

위의 내용들은 맵 레이어에 대해서 학습하지 않은 상태에서 작성한 내용이었기 때문에 혼란이 있었다. 그래도 내 예상대로 타일을 배치하지 않았기 때문이라는 것을 확인하니 그래도 조금이나마 뿌듯함을 느낄 수 있었다. 위에서 타일을 맵에 배치할 수 없던 이유는 바로 하나의 맵 레이어에서 다른 종류의 타일을 배치하려고 했기 때문이다. 하나의 맵 레이어에서는 한 종류의 타일만 사용할 수 있다. 하지만 나는 하낭의 맵 레이어에서 기존에 사용했던 타일과 다른 종류의 타일을 배치하려고 했기 때문에 타일을 배치할 수 없었다.

 

따라서, 강의의 내용대로 타일을 세로로 배치해 보았다.

 

 

따라서, 강의 내용과 같이 타일을 세로로 배치하여 보았다. 나는 타일을 세로로 배치한다는 것을 무엇인가 특별한 것처럼 생각했지만, 막상 해보고 나니 별 것 없었다는 생각이 들었다. 그리고 이러한 맵구조가 메이플스토리의 여러 맵에서도 존재했다는 것을 떠올릴 수 있었다.

 

 

 

세로로 타일을 배치했을 때 발판 정보가 하나로 모여 캐릭터가 통과할 수 없게 된다는 사실을 직접 확인할 수 있었다.

 

 

우측 상단의 작은 아이콘들 중에서 네 번째 아이콘을 선택하면, 노란색 아이콘이 화면에 위치하는데, 이 노란색 아이콘의 위치를 지정하면 게임 시작 시 캐릭터의 위치를 지정할 수 있다.

 

 

MOD는 PC, 모바일 모두 지원하며 모바일 UI 또한 편집 가능하다.

 

Panels - Resource Storage

UIResourceStorage - 스프라이트 슬라이스를 통해 축만 스케일링 할 수도 있다.
이미지 슬라이스 값 설정.

* 이후의 강의에서 더 자세하게 다루어 볼 수 있을 것 같다.

 

 

Scene Maker를 통해 맵에 위치한 여러 아이템을 선택하여 동시에 위치를 이동할 수 있다.

 

 

아이템을 추가하면, Scene Maker와 Workspace 탭에 하나씩 추가되는 것을 확인할 수 있는데, 같은 아이템을 계속 추가하여 배치한다면 Scene Maker에는 계속 추가되지만, Workspace에는 더 이상 추가되지 않는 것을 확인할 수 있다. Workspace에는 이 월드에 어떤 종류의 아이템들이 지정되었는지를 표현한다고 생각하면  될 것 같다.

* 모델과 엔티티에 관련해서는 나중에 자세하게 다룰 것이다.

 

[Scene Maker]

- Scene Maker : 제작 중인 게임의 현황을 부모 자식 관계를 가지는 계층 구조로 볼 수 있는 패널

- 맵에 추가한 엔티티 중 원하는 엔티티를 빠르게 찾거나 체계적으로 엔티티를 관리하고자 할 때 사용하는 패널

- 계층 구조를 활용하여 엔티티를 한 번에 이동시키거나, 상위 부모 안에 속해있는 엔티티를 대상으로 한 번에 동일한 작업을 하는 등의 모델들 사이에 관계를 형성할 수도 있다.

- 기존 모델을 변형한 버전을 저장하고 싶으면 make original model 기능을 사용해 workspace에 저장하면 workspace에서 모델의 자세한 설정이 가능하다.

 

 [Workspace]

- Workspace : 폴더 형식의 리소스 관리 공간

- BaseEnvironment : 메이커에서 제공하는 모델과 스크립트가 저장된 폴더

-  MyDesk : 크리에이터가 만든 리소스를 보관하는 폴더

-  엔티티, 스크립트, 이미지를 효율적으로 관리할 수 있다.

- scene에 추가한 모델들의 원본 이미지가 저장된다.

- 스크립트, 폴더 등을 추가할 수 있다.

- 검색창을 활용해 원하는 리소스 또는 모델에 대해 쉽게 찾아볼 수 있다. (일종의 파일 탐색기 기능)

- 스크립트의 텍스트를 편집할 수 있다. 스크립트 또한 export 하면 파일로 내보내기 가능하다. 

 

[Property]

- name : npc 이름 지정

- message : npc 말풍선 지정

- 초기에 저장되어 있는 속성들 뿐만 아니라 새로운 속성을 추가할 수도 있다. (plain text 기능으로도 공유 가능)

- spriteRUID : 리소스 ID. 각 리소스마다 각기 다른 UID를 갖고 있다. Sprite Picker에서 다른 이미지로 교체 가능하다.

 

 

Map Layer

- 하나의 레이어에는 한 종류의 타일만 배치할 수 있다.

- 레이어 추가를 한다면 하나의 맵에도 다른 종류의 타일을 배치할 수 있다.

- 기본적으로 더 상위에 위치한 레이어의 우선순위가 더 높다. 외에 객체들은 Property-OrderInLayer를 사용해 레이어의 배치 순러를 지정할 수 있다.

 

Property - SpriteRenderComponent

- 한글에서의 앞으로 배치, 뒤로 배치와 유사한 역할을 한다.

- 아이템을 앞에 배치할 것인지 뒤에 배치할 것인지를 지정할 수 있다.

- 같은 레이어에서는 OrderInLayer 값에 의해서 Order가 결정이 된다.

- 다른 레이어에서는 레이어의 순서에 따라서 결정된다.

 

 

머쉬맘은 OrderInLayout 값을 1로 지정하였고, 좀비 머쉬맘은 OrderInLayout 값을 2로 지정하였다.

OrderInLayout 값이 더 큰 아이템이 앞에 배치된다.

 

 

머쉬맘은 Layer 1에서 배치시켰고, 좀비 머쉬맘은 Layer 2에서 배치시켰다.

더 나중에 생성된 레이어에 위치하는 아이템이 앞에 배치된다.

 

 

Property - TweenLineComponent

- 아이템의 이동과 관한 설정을 조작할 수 있다.

- 움직이지 않는 아이템을 움직이게 설정할 수도 있다.

 

* 설정을 통해 아이템이 기본적으로 가지고 있지 않은 속성을 부여할 수도 있다.

 

Workspace에 Script를 추가할 수도 있다.

 

 

Script를 통해 Property, Function등 세부설정을 관리할 수 있으며, 에러 발생 메시지를 설정할 수 있다.

 

 

아이템을 배치하면, 아이템은 SpriteRenderComponent로 구성되어 있다.

Sprite Picker를 통해 다른 이미지로 변경할 수도 있다.

몬스터 모델이 아니라 몬스터 이미지만 사용하고 싶은 경우 이러한 방식을 택할 수 있다.

몬스터 모델이 아닌 다른 아이템을 배치하고 이미지만 몬스터로 바꾸어 나타낼 수 있다.

 

 

[Resource Storage]

- Panel - Resource Storage에서 내 리소스를 업로드 할 수도 있다.

- 나만의 리소스를 직접 올리고 메타데이터 수정 가능.

 

 

 

Window

- 도킹이 안 되는 기능들을 제공한다.

- Map List : MOD에서 제공하는 맵 리스트 (MapleStory Map 또한 제공)

- Script Manager : 기본적으로 제공하는 스크립트 샘플들 확인 가능

 

Debug

- 스크립트 개발에서 문제가 생기는 부분 디버깅으로 확인 가능하다.

 

 

차례대로

Undo, Redo, 기본 커서(컴포넌트 선택), 화면 이동 커서(화면 스크롤 가능), 지우개 커서(개체 삭제-우클릭으로도 가능), UI 편집, 타일에디터 토글(타일맵모드를 변경할 수 있음)

 

 

차례대로 실행, 디버그, 테스트용 유저 추가(멀티 클라이언트 기능을 통해 테스트 가능) 실행 다음 활성화 되어 있지 않은 두 버튼은 아직 기능 미지원.

 

이번 시간에는 MOD가 무엇인지, 그리고 대략적인 기능들에 대해서 알아보는 시간을 가졌다.

 

*해당 게시글은 Supporters Hackathon 참여자에게 제공되는 MOD 학습 강의와 기본 학습 교안의 내용을 기반으로 작성되었음을 알립니다.