Mirror General

2 minute read



Mirror

Mirror는 유니티에서 멀티플레이어 게임의 개발을 위한 시스템이다. low level transport 실시간 통신 계층 위에 구축된다. 그리고 멀티플레이어 게임에서 필요한 수 많은 일반적인 작업을 다룬다.

transport layer는 모든 종류의 네트워크 topolgy를 지원하지만 Mirror는 서버 인증 시스템이다. 단 참가자 중 한 명이 클라이언트와 서버를 동시에 사용할 수 있기 때문에 전용 서버 프로세스가 필요하지 않는다. 인터넷 서비스와 연계하여 멀티플레이어 게임을 개발자의 작업 없이 인터넷을 통해 즐길 수 있다.

layer


Mirror는 사용하기 쉽고 반복적인 개발에 중점을 두고 있으며 다음과 같은 멀티플레이어 게임에 유용한 기능을 제공한다.

  • Message handlers

  • General purpose high performance serialization

  • Distributed object management

  • State synchronization

  • Network classes: Server, Client, Connection, etc


Script Templates

베이스 클래스를 상속해서 쉽게 파생클래스를 생성할 수 있다.

  • 가능한 모든 오버라이드는 사용자를 위해 이미 재정의 되어있다.

  • 각 기능들은 무슨 기능을 하는지 주석이 달려있다.

  • 베이스 메서드 호출은 모두 필요한 위치에 있으므로 이미 그것들이 무슨 기능을 하는지 파악할 수 있다.

  • 각 스크립트 상단에는 mirror documents 링크가 첨부되어있다.

Mirror 패키지를 설치하면 Unity Editor의 Assets > Create Menu 에서 생성된 항목을 확인할 수 있다.


High Level Scripting API

Mirror는 high-level 네트워킹 라이브러리이다.

이를 통해 멀티 유저 게임의 일반적인 요건 대부분을 커버하는 명령어에 액세스 할 수 있다.

이것에 의해 lower level의 구현에 대한 자세한 걱정은 할필요가 없다.

  • NetworkManager를 사용하여 게임의 네트워크 상태를 제어한다.

  • 호스트가 플레이어 클라이언트인 클라이언트-호스트 방식으로 작동한다.

  • 범용 직렬화를 사용하여 데이터를 직렬화한다.

  • 네트워크 메시지를 송수신한다.

  • 클라이언트에서 서버로 네트워크 명령어를 송신한다.

  • 서버에서 클라이언트로 원격 프로시저 콜(RPC)를 호출한다.

  • 서버에서 클라이언트로 네트워크 이벤트를 보낸다.


Low Level Transport API

Mirror는 연결/연결 해제/송신/수신 메시지를 byte수준에서 사용하기 위해 낮은 수준 전송을 요구한다.


Engine & Editor integration

Mirror의 네트워크는 엔진과 에디터와 통합되어 있어 컴포넌트 및 시각적인 재료를 사용해서 멀티 플레이 게임을 만들 수 있다.

  • 네트워크 객체의 NetworkIdentity 컴포넌트

  • 네트워크 스크립트의 NetworkBehaviour

  • 오브젝트 변환의 자동 동기화 설정 가능

  • 스크립트 변수 자동 동기화

  • Unity 장면에 네트워크 오브젝트를 배치할 수 있다.

  • 네트워크 컴포넌트


Deprication

UNet에 있던 특정 기능들은 Mirror에서 여러가지 이유로 수정되거나 제거되었다.

Deprication


Integrations

Mirror와 호환되는 assets들의 모음

Dissonance Voice Chat

Dissonance Voice Chat

실시간 음성채팅을 게임에 쉽게 추가할 수 있다.

Steamworks Complete v2

Steamworks Complete v2

Steam API와의 통합을 쉽고 빠르게 해주는 툴

Smooth Sync

Smooth Sync

움직이는 모든 것을 동기화하는데 이상적이다.

Noble Connect Free

Noble Connect Free

Relays와 Punchthrough를 추가한다.

Relays : 상대적으로 비용과 대기시간이 더 들지만 안정적 연결이 보장된다.

Punchthrough : 대기 시간을 줄이고 가능하면 플레이어와 직접 연결하여 비용을 절약한다.

Weather Maker

Weather Maker-Volumetric Clouds and Weather System for Unity

프리팹을 통해 쉽게 하늘과 날씨 등 효과를 만들 수 있다.

RTS Engine 2022

RTS Engine 2022

RTS 게임을 만드는데 필요한 기능 제공

Master Audio 2022: AAA Sound

Master Audio 2022

멀티플레이에서 쉽게 오디오를 구현할 수 있다.