프로그래밍 농장

유니티 프로젝트 정리 / Can not Instantiate before the client joined/created a room. State: PeerCreated [Unity] 본문

Unity

유니티 프로젝트 정리 / Can not Instantiate before the client joined/created a room. State: PeerCreated [Unity]

Tennessee201 2022. 11. 10.
728x90

각 플레이어가 게임서버에 접속시 2가지 문제가 발생하였다.

1. FieldItem이 중복/덮어씌워지는 문제 

2. 클라이언트_1 이 아이템을 습득하였는데 클라이언트_2의 인벤토리에 해당 아이템이 들어가는 경우 

( 위 경우 Scene상의 Item은 정상적으로 동기화된다. )

 

최초에는 아래와 같은 포톤Docs 에서 언급하였듯 포톤과 유니티 생명주기상의 문제로 인한 에러로 판단하였는데 비슷했지만 아니었다. 

start() / awake()문이 생명주기상에서 문제가있어 정상 동작하지않은부분도 있지만 더 정확히 말하자면 콘솔에러메세지 그대로 마스터클라이언트가 최초 접속하지않은 Status인데 프리팹을 Instantiate하려해서 발생한 문제였다.

이후 아래와 같이 함수화하여 마스터클라이언트 접속 후 동작하도록 구현하니 정상작동하였다. 


두번째 문제인 아이템이 중복 / 덮어씌워져 생성되는 문제는 아래와 같이 최초 마스터 클라이언트가 접속시에만 Photonview.Instantiate() 해주면 문제없이 동기화 될것이다.

마지막으로 클라이언트_1이 아이템을 습득시 클라이언트_2의 인벤토리로 아이템이 들어가는 문제는 아래의 코드가 Photon 동기화 없이 로컬함수로 동작하기에 해당 부분을 수정해주면 될것이다. 

 


1. 마스터 제외 클라이언트에서 아이템이 안보이는 문제 
-> PhotonView에서 동기화가 제대로 안되는 부분 해결필요


2. 타 클라이언트에서 아이템이 생성된부분에 접촉해서 습득시 마스터클라의 인벤토리로 들어감
-> Inventory.cs/OnTirggerEnter 부분을 Photon 동기화하는 코드로 변경해야함 .


 

References : 

 

Can not Instantiate before the client joined/created a room. State: PeerCreated

Hi all! I got an error when creating a shooter, yes, I'm between junior and middle (the name is the error) here is the code:

forum.photonengine.com

 

How could i solve this problem with photon game

I have followed this tutorial multiplayer fps serie from Expressed Unity especially this episode "https://youtu.be/j9PC9RhurRI?list=PLD4OdGjxbaByCEOH3fOJ4MgOdROHHBKUo" and i need some help with it...

stackoverflow.com

 

728x90