단위 엔진으로 실시간 통신 온라인 게임 만들기: 좌표 동기화

니소카입니다.
단비트 엔진(MUN)으로 실시간 통신 게임을 만들어 보세요!그래서
지금까지 방 매칭에 대해 접촉했지만, 최소한의 매칭 기능은 한 세트로 만들 수 있다.
이번부터 간단한 미니 게임을 사용하고 싶은데 드디어 실제 게임의 동기화 처리를 하게 되었습니다.

입문


나는 장르의 게임이 세상에서 가장 간단하다고 생각해서'핑퐁 게임'을 선택했다.
온라인 처리에 초점을 맞추고 싶어서 핑퐁 게임 제작 방법 등 이번에는 사랑을 끊고 싶어요.
대신 게임 제작에 참고할 링크 페이지를 붙여 주십시오.
참고: Unity 2D Pong Game in 20 Minutes
환경은 다음과 같다.
win10 64bit, Unity2018.3.3f1, Monobit Unity Networking2.0 v2.6

하는 일


기본적인 오프라인 핑퐁 게임이 완성된 전제에서 대화를 진행한다.
우선, 나는 모든 클라이언트에서 프로펠러의 이동을 동기화하고 싶다.
각 유저가 단말기에서 프로펠러를 이동할 때, 프로펠러는 각자의 단말기 화면에서 실시간으로 이동한다.
단비트 엔진을 사용한다면 이것은 비교적 간단하게 설치할 수 있다.

준비


MonobitView.cs 및 MonobitTransfomViewcs 추가



프로펠러의 동기화를 얻기 위해서, 단비트 엔진은 반드시 프로펠러를 감시해야 한다.
이렇게 하려면 먼저 MonobitView를cs 부착.

이어 모바일 동기화를 위해 MonobitTransformView를 사용합니다.cs 부착.

MonobitView.cs 및 MonobitTransfomView 부착



MonobitView.cs의 "Observed Componen List Colun 추가"단추를 누르면 List가 추가됩니다.
다음은 MonobitTransformView입니다.cs를 드래그하고 부착합니다.
( 참조: MUN 공식 - MonobitTransformView 구성 요소 )

MonobitEngine 상속


마지막으로 프로펠러와 상응하는 스크립트를 변경합니다. 아래와 같이 MonobitEngine을 진행합니다.모노베어 계승.
현재 단비트 엔진은 중개를 맡아 대상의 변환 정보를 다른 클라이언트에게 보낼 준비를 하고 있다.
using MonobitEngine;
public class Paddle : MonobitEngine.MonoBehaviour {
    // クラスの処理
}

각 클라이언트에 대한 패키지 생성

if (MonobitNetwork.isHost)
{
    // 球を(他クライアント上にも)生成
    Ball ball = MonobitNetwork.Instantiate("Ball", Vector3.zero, Quaternion.identity, 0).GetComponent<Ball>();
}
// 自プレイヤーを(他クライアント上にも)生成
Paddle paddle = MonobitNetwork.Instantiate("Paddle", Vector3.zero, Quaternion.identity, 0).GetComponent<Paddle>();
상술한 코드는 샘플일 뿐이니 자신의 환경에 따라 적절하게 변경하십시오.
우선, 모든 클라이언트는 MonobitNetWork.Instantiate 에서 자신의 가방을 생성한다.MonobitNetwork.isHost 에서 호스트인지 여부를 확인할 수 있습니다.
객체는 자신의 대상을 생성하고 끝내지만 호스트에 대해서도 공을 생성한다.MonobitNetWork.Instantiate 다른 클라이언트에서 동시에 생성할 수 있습니다.
이때 생성된 클라이언트는 이 대상의 소유권을 가진다.
소유권은 잠시 후에 논의될 것이다. 간단하게 말하면'자신의 대상을 이동할 수 있는 권리'를 가리킨다.

isMine에서 객체 처리


이렇게 되면 여러 개의 클라이언트에서 운행할 때 문제가 있다는 것을 바로 알게 될 것이다.
자신의 노를 이동하려면 상대방 유저의 노로 동시에 이동합니다.
'모두의 노가 모든 유저를 움직이게 하고 싶어서'다.
// パドルクラスUpdate
void Update()
{
    if(monobitView.isMine)
    {
        // パドルの更新処理
    }
}
따라서 상술한 바와 같이 사용monobitView.isMine.
모든 클라이언트는 자신이 가진 대상만 업데이트하고 다른 사람이 자신의 대상을 만지지 못하게 한다.
참고: MUN 공식은 "자신이 소유권을 가진 유저" 활동만 허용

마지막


고생하셨습니다.
이상은 단위 엔진을 사용하여 이동 동기화를 하는 절차 소개입니다.
다음에 나는 공을 튕기는 처리를 하고 싶다.

좋은 웹페이지 즐겨찾기