<UNITY>/COLYSEUS

기본 예제 실행하기

CodeGrimie 2021. 2. 26. 12:29

오픈-소스 멀티플레이 프레임워크

Colyseus오픈-소스 게임 개발 전문 멀티플레이어 프레임워크다.

(무료라는 뜻이다. 지금까지 그래와꼬 아페로도 계속)

 

Photon이나 다른 상용 멀티플레이 프레임워크에 비하면야 인지도는 낮지만 무려 6년 동안이나 발전되어왔다.

그래서인지 C++, C#, Javascript를 비롯해서 꽤 많은 언어를 지원하고 동시에 해당 언어들을 사용하는 게임 엔진들도 다수 지원한다.

(우리나라에서는 마이너한 Hex엔진, Defold 엔진까지도 지원한다.)

 

최근에는 LUCID SIGHT라는 게임 개발사가 유지보수에 참여하면서 다른 오픈-소스 멀티플레이 프레임워크에 비해서 주기적인 업데이트가 가능해져서 전망이 밝다.

 

▼ LUCID SIGHT는 다양한 게임을 만들면서 노하우를 가지고 있는 중소 게임 회사다.

www.lucidsight.com/games

 

Lucid Sight | Apps and Games

Lucid Sight is a game developer based out of Los Angeles California that focuses on frontier gaming and its supporting technologies. They specialize in games with a Play To Earn focus. ​

www.lucidsight.com

Colyseus Unity Gamejam($500 prize)

이 프레임워크를 알게 된 건 정말 우연이었다.

 

오는 주말에 GameJam을 참가하려고 리스트를 뒤적이다 Colyseus를 사용해서 이틀동안 게임을 만드는 Jam이 있는게 아닌가? 무려 1등 상금은 500달러!

거기다 참가자도 적었다.

 

▼ GameJam 링크

itch.io/jam/mogj

 

Colyseus + Unity Gamejam ($500 prize) #MOGJ

A game jam from 2021-02-26 to 2021-03-05 hosted by Colyseus. Welcome to first official Colyseus Multiplayer Online Game Jam ! Create an online multiplayer game with Colyseus + Unity in 72 hours with a chance to...

itch.io

네트워크에 대해서는 발바닥 무좀 8군단 1사단 1중대 1소대 이병 박무좀만큼도 모르지만 원래 인생은 패기로 살아가는 것이다.

새로운 기술이란 뭔가를 만들면서 삽질함으로써 배우는 거다.

적어도 게임은 삽질하는 게 재미라도 있으니 얼마나 다행인가?

NodeJS, MongoDB 설치하기

삽질을 하기 전에 공식적으로 제공하는 예제를 살펴본다.

다행히도 Colyseus는 유니티 예제를 제공하고 있다.

 

Github에서 프로젝트 폴더를 내려받는다.

github.com/colyseus/unity-demo-shooting-gallery

 

colyseus/unity-demo-shooting-gallery

Colyseus Multiplayer Shooting Gallery (Tech Demo). Contribute to colyseus/unity-demo-shooting-gallery development by creating an account on GitHub.

github.com

내려받는 동안 Colyseus를 사용하기 위한 두가지 개발도구를 추가로 설치해야 한다.

 

1. NodeJS

2. MongoDB

 

NodeJS가 정확히 뭘 하는 건지는 모르겠지만 실질적으로 서버를 구동하는 역활을 하는 것으로 보인다.

MongoDB는 데이터베이스를 저장하고 관리하는 걸로 보이는데 이번 기회에 같이 공부하면 두고두고 도움이 될 것 같다.

 

NodeJS는 되도록이면 LTS 버전을 내려받아 설치해준다.

nodejs.org/ko/

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

▼ MongoDB는 자동으로 설치 버전을 권장해주기 때문에 그냥 그대로 내려받아 설치하면 된다.

www.mongodb.com/try/download/community?tck=docs_server

 

MongoDB Community Download

Download the Community version of MongoDB's non-relational database server from MongoDB's download center.

www.mongodb.com

설치하던 중간에 MongoDB Servies냐 MongoDB냐 고민이 될텐데 일단 예제는 MongoDB만 해도 문제없이 작동한다.

이 둘의 차이에 대해서는 공부하다 보면 알게 되지 않을까.

Server 실행하기

별도의 수정을 하지 않았다면 예제 프로젝트 폴더의 이름은 'unity-demo-shooting-gallery-master' 일 것이다.

이 안에 보면 Server 폴더가 있는데 이게 실제 서버 코드가 들어있고 서버가 실행되는 폴더다.

 

Server 폴더의 주소를 저장해두고 CMD나 PowerShell로 해당 위치로 이동한 뒤에 아래의 명령어들을 순서대로 입력하면 된다.

 

1. npm install

2. npm start

 

npmNodeJS Package Manager의 약자로 NodeJS에서 사용하는 패키지관리하는 이다.

그리고 사용된 명령어는 서버에 사용될 패키지들을 설치하고 실행하는 것이 전부다.

 

▼ 서버 실행 화면

큰 문제점 없이 서버가 실행되는 것을 확인 할 수 있다.

이후의 과정은 서버가 켜져있어야 동작하기 때문에 서버는 킨 채로 계속 진행한다.

새 프로젝트 만들고 Package 포함하기

다시 유니티로 돌아와서 새 프로젝트를 만든다.

프로젝트의 이름은 뭘로 하던 실행에는 상관이 없다. 자유롭게 정하고 만들면 된다.

 

유니티로 Package를 포함시켜 본 적이 없어서 이번 기회에 알게 되었다.

[Assets] - [Import Package] - [Custom Package] 버튼을 눌러서 우리가 내려받은 예제 프로젝트 폴더에 있는 unity-shooting-gallery.unitypackage을 포함시켜주면 된다.

 

유니티 버전에 따라 현재 사용중인 버전과 프로젝트의 버전이 다르고 뜨면서 버전 최적화를 할 것인지 묻는 경우가 있다.

경험상 진행해도 예제 실행에는 문제가 없었다.

빌드 설정에 게임 장면 추가하기

유니티에서 게임은 장면으로 이루어져 있는데 이 장면들을 전환 하기 위해서는 빌드 설정에서 장면을 추가해줘야 한다.

프로젝트 뷰에서 [Assets] - [GallaryShooter] - [Scenes]에 있는 LobbyGallaryShooter가 실제로 게임에서 사용되는 장면들이다.

 

각각의 장면들에 들어가서 [File] - [Build Settings]에서 Scenes In Build에 추가해주면 된다.

빌드 후 클라이언트 두 개 실행해서 테스트하기

윈도우 플랫폼으로 빌드해서 클라이언트 두 개를 각각 실행해서 멀티 플레이가 정상적으로 작동하는지 테스트할 수 있다.

원한다면 두 개이상 실행해도 문제없다.

 

▼ 클라이언트 두 개 각각 실행

플레이어 이름은 두 개가 구분 되기만 하면 된다.

 

똑같은 이름을 써도 실행에는 문제없다.

다만 예제 프로젝트의 플레이어들은 모두 똑같게 생겨서 플레이어가 여러개 생성된건지 다른 플레이어가 들어온 건지 구분할 수가 없는 문제가 있어서 구분하기 쉬우라고 이름을 다르게 정하는 것 뿐이다.

 

▼ 하나의 클라이언트에서 멀티플레이 방을 생성한다.

 

▼ 방이 생성되면 다른 한쪽의 클라이언트에 방 리스트에도 동기화된다.

LocalHost 즉 로컬 네트워크로 방을 만들기 때문에 생성과 동시에 멀티플레이 방 리스트에 추가된다.

어느정도 핑이 생길 정도로 거리가 있는 상태라면 잠깐 뒤에 생성되지 않을까 생각한다.

 

▼ 현재는 방 생성자만 들어와 있기 때문에 한 명만 서버에 들어와 있는 걸 확인 할 수 있다.

 

▼ 나머지 하나의 클라이언트가 참가하면 서로 볼 수 있다.

 

▼ 이제 서버에는 두 명의 플레이어가 참가하고 있다.

공식 예제를 실행시켜보니 잘 작동한다.

이제 이 예제 코드를 조금씩 뜯어보면서 네크워킹의 기본적인 방법을 숙지하고 GameJam에 만들 게임에 적용하면 된다.

(말로는 언제나 쉬워..)