플레이어가 여러 명일 경우 “어떤 순서”로 처리할지 고민이 생길 수 있습니다. 대표적으로 플레이어가 네트워크에 접속하는 순서, 혹은 특정 인덱스 기준으로 정렬하고 싶을 때가 있죠.Runner.ActivePlayers는 현재 게임(세션)에 접속해 있는 모든 플레이어 목록을 제공합니다. 여기에 OrderBy(p => p.AsIndex)를 붙이면, 플레이어를 “Index가 낮은 순”부터 정렬합니다.Index가 낮을수록 먼저 접속했거나, Fusion2 내부에서 먼저 할당된 플레이어를 의미합니다. foreach (var playerRef in Runner.ActivePlayers.OrderBy(p => p.AsIndex)){ // 인덱스 순서대로 처리하고 싶은 로직}
Network Behaviour란?Network Behaviour 줄여서 NB는 Unity의 MonoBehaviour를 상속받아서 사용됩니다.그렇기에 유니티 MB의 함수들을 모두 사용할 수 있습니다. NB는 네트워크 기능을 통합한 클래스이며 NetworkObject와 연계되어 Network State 관리, RPC, Network Property 관리 등을 지원합니다. 주요 기능Runner 속성을 사용가능하게 해준다, Network Runner에 대한 참조를 제공합니다Network Object에 대한 참조를 제공합니다[Networked] Property를 관리 가능하게 해줍니다RPC 관리를 가능하게 해줍니다콜백함수를 사용할 수 있게 해줍니다, Spawend(), Despawned(), FixedUpdat..
Network Object란?Network Object는 Game Session안에서 단일 Network 객체를 나타냅니다.Network Object 줄여서 NO는 Scene이 로드되거나 Spawning함수를 통해 만들 수 있습니다. NO는 Game Session안에서 고유한 Network ID를 가지게 되는데, 이 ID는 Network 상에서 참조할 때 혹은 참조될 때 사용할 수 있습니다. NetworkRunner.TryFindObject() 메서드를 이용하여 Network Id로 Network Object를 찾아낼 수 있습니다.Network Object를 생성하는 방법Network Object를 생성하는 방식에는 2가지가 있습니다.Runner.Spawn()Scene에 미리 NO를 배치해놓기NO를 생성..
NetworkRunner란?Network Runner는 네트워크 시스템의 중심이 되는 컴포넌트입니다. Network Runner는 다음과 같은 핵심 역할을 합니다.Network Peer 관리SimulationBehaviour/INetworkCallbacks을 관리Game Session / (Join/Create) Room 관리Tick 관리Player / PlayerRef 관리Network Peer 관리Network Runner는 각 Peer를 관리한다고 해서 Scene Hierachy에 각 클라이언트마다 생겨나지는 않습니다. 클라이언트는 자신의 인스턴스에서 Network Runner를 생성하기 때문에 Scene에는 본인 자신꺼 하나의 Network Runner만이 존재합니다. 해당 Network Ru..
Sample Name Host Mode SharedMode Description Study Focus Asteroids SimpleYesNo간단한 아케이드 스타일의 게임 샘플. 네트워킹과 동기화의 기본을 배우기 적합.기본적인 네트워킹 개념, 동기화, 및 객체 이동 동기화를 학습하는 데 적합.Simple FPSYesNo기본적인 1인칭 슈팅 게임 샘플. FPS 게임에서의 네트워크 동기화와 레이턴시 처리 예시.FPS 장르의 캐릭터 컨트롤, 발사체 및 상호작용의 네트워크 처리 학습에 유용.Razor MadnessYesNo레이싱 게임 스타일의 샘플. 차량 물리와 동기화 메커니즘 학습.차량 물리 및 동기화 알고리즘, 레이싱 게임의 네트워크 처리 학습에 적합.Quiz NetworkYesYes간단한 퀴즈 게임 ..
현재 개발중인 프로젝트는 Fusion2을 이용한 게임을 제작하고 있습니다.Effect와 같이 자주 사용되는 오브젝트를 Pooling을 이용해서 관리하고자 했습니다. 처음에는 Effect같은 객체는 반드시 NetworkObject로 관리해야 하는 줄 알았으나, On/Off 시점만 동기화가 되면 된다는 것을 깨달았습니다. 그래서 Pool자체는 NGO을 관리하는 것이 아닌 Unity GameObject을 관리하도록 만들었습니다. Pool System은 크게 Init, Add, Get, Return 이렇게 나뉜다고 생각합니다. RPC을 이용할 때 Init과 Add, Return은 문제가 없었으나 Get이 문제였습니다.왜냐하면 Init과 Add, Return은 void함수였지만 Get은 return Type이 존..
Fusion2란?Fusion2는 Photon의 차세대 네트워크 엔진으로, 서버 모드, 호스트 모드, 공유 모드 등 다양한 네트워크 토폴로지를 지원합니다. 모드 특징 사용 사례 서버 모드전용 서버, 공용 IP, 높은 안정성, 보안성대규모 멀티플레이어 온라인 게임호스트 모드호스트 플레이어, 간편한 설정소규모 협동 게임공유 모드클라우드 룸, StateAuthority다양한 디바이스와 네트워크 환경 지원 Fusion2의 주요 기능으로는 네트워크 객체 동기화, 입력 동기화, 네트워크 이벤트 처리, 유연한 Room 관리 등이 있습니다. Fusion2 시작하기 Fusion 2 1 - 시작하기 | Photon EngineFusion 공유 모드 기초는 Fusion 프로젝트를 시작하는 데 필요한 초기 단계를 설명합니..