프로그래밍 농장

유데미 스타터스 유니티 1기 취업 부트캠프 - 18주차 학습 일지 본문

STARTERS

유데미 스타터스 유니티 1기 취업 부트캠프 - 18주차 학습 일지

Tennessee201 2022. 10. 23.
728x90

이번주는 유니티에서 제공하는 패키지들을 활용한 멀티플랫폼을 구현해보았습니다.

Photon과 Mirror 두가지를 각 사용하였습니다.

 

Mirror Networking [ 멀티플랫폼 패키지 ]

유니티가 인수한 Package중 하나 Mirror를 통해 메타버스 플랫폼에서 가장 중요한 기능 중 하나인 멀티플레이를 구현할수있다. 기존 유니티에서 많이 사용하는 포톤도 존재하지만, Mirror를 통해서도

daily50.tistory.com

 

 

 


- Mirror

유니티가 인수한 Package중 하나 Mirror를 통해 메타버스 플랫폼에서 가장 중요한 기능 중 하나인 멀티플레이를 구현할수있다.

기존 유니티에서 많이 사용하는 포톤도 존재하지만, Mirror를 통해서도 손쉽게 멀티플레이를 구현할수있다.

 

Mirror Networking - Mirror

Docs, Guides, FAQ, Templates, Examples, API, and more!

mirror-networking.gitbook.io


Mirror의 공식 홈페이지에 접속해보면 아래와 같이 미러에서 데모버전으로 서비스하고 또 실제 미러를 통해 서비스배포한 다양한 웹기반 게임과 메타버스 플랫폼을 플레이 해볼수있다.

그중 아래 Portals이라는 플랫폼의 경우 Mirror를 통하여 멀티플랫폼 기반의 메타버스를 구현한 사례이다. 실제 게임이나 컨텐츠를 소비하고 있지는 않고, Binance나 FTX와 같은 거래소에서 이벤트 개념으로 서비스할때 잠시 사용했던 메타버스 플랫폼이라고 한다. 

 

GitHub - vis2k/Mirror: #1 Open Source Unity Networking Library

#1 Open Source Unity Networking Library. Contribute to vis2k/Mirror development by creating an account on GitHub.

github.com


로딩 씬

캐릭터 선택 씬

인게임

위 와 같이 플랫폼 내 다양한 오브젝트와 상호작용이 가능하도록 구현해놓은것을 확인할수있다.

무겁지 않은 간단한 사이드프로젝트를 진행할때 가볍게 사용하기 좋을것같다. 


- Photon 

다중접속이 가능한 멀티플랫폼을 서비스하기 위하여 유니티 3d 프로젝트를 만들어 준 후 아래 포톤사이트에서 회원가입을 하고,  PUN으로 새 어플리케이션(프로젝트)를 생성해준다.

Bolt : 호스트/클라이언트가 있는 시스템

PUN : 전부 클라이언트가 되어 서버를 관리하는 형태 

 

이후 AssetStore에서 아래 에셋을 다운받아준다. 

이후 유니티 프로젝트에 Import 후, 생성한 포톤프로젝트의 ID를 입력해주면 기본세팅이 완료되었다.

포톤을 활용하여 프로젝트에서 멀티플랫폼 환경을 구축하기 위해서는, 생성될 플레이어를 Resources파일 내의 경로에 잘 맞추어 넣어주고, 아래와 같이 코드를 작성해주어야한다. 

-> 프로젝트를 완성 후, 전체 빌드 후 해당 파일을 열어주어야 접속이 가능하다.

-> 가장 먼저 접속한 플레이어(계정)이 마스터 클라이언트가 된다 (방장) 

Player Inspector

네트워크 접속/관리를 수행할 NetworkManager.cs 코드

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;
using TMPro;
using UnityEngine.SceneManagement;
using Random = UnityEngine.Random;


public class NetworkManager : MonoBehaviourPunCallbacks
{
    [SerializeField] TextMeshProUGUI inputText;
    static NetworkManager _instance;

    public static NetworkManager Instance
    {
        get
        {
            if (!_instance)
            {
                GameObject go = new GameObject("@NetworkManager");
                _instance = go.AddComponent<NetworkManager>();
            }
            
            return _instance;
        }
    }

    void Awake()
    {
        DontDestroyOnLoad(this);
    }

    public void ConnectBtn()
    {
        SceneManager.LoadScene(1);
        PhotonNetwork.ConnectUsingSettings();
        PhotonNetwork.NickName = inputText.text;
        
    }

    public override void OnConnectedToMaster()
    {
        PhotonNetwork.JoinOrCreateRoom("Room", new RoomOptions(), TypedLobby.Default);
        var player = PhotonNetwork.LocalPlayer;
        Debug.Log(player);
    }

    public override void OnJoinedRoom()
    {
        var pos = new Vector3(Random.Range(40f, 43f), 6f, Random.Range(66f, 70f));
        PhotonNetwork.Instantiate("Player", pos, Quaternion.identity);
    }

    [ContextMenu("PlayerList")]
    public void PlayerListPrint()
    {
        var players = PhotonNetwork.PlayerList;
        foreach (var VARIABLE in players)
        {
            Debug.Log(VARIABLE); 
        }
    }
}

아래와 같이 맵에 접속 플레이어가 생성된 것을 확인할수있다. 

 

 

유데미코리아 바로가기 : https://bit.ly/3b8JGeD

 

Udemy Korea - 실용적인 온라인 강의, 글로벌 전문가에게 배워보세요. | Udemy Korea

유데미코리아 AI, 파이썬, 리엑트, 자바, 노션, 디자인, UI, UIX, 기획 등 전문가의 온라인 강의를 제공하고 있습니다.

www.udemykorea.com

본 포스팅은 유데미-웅진씽크빅 취업 부트캠프 유니티 1기 과정 후기로 작성되었습니다.

 

#유데미, #유데미부트캠프, #취업부트캠프, #개발자부트캠프, #IT부트캠프, #부트캠프후기

 
728x90