일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- githubdesktopmerge
- 깃허브 데스크탑 병합
- Unity
- nav오브젝트사이거리
- unity merge
- 유니티
- 유니티 해상도 변경
- networkobject.networkid
- 유니티 해상도
- nav거리
- unity git
- m585 수리
- networkbehaviourid
- stateauthority
- Github DeskTop Merge
- unity 병합
- 몬스터
- 유니티 합치기
- M590
- 유니티 해상도 설정
- 오브젝트 깜빡임
- NavMesh
- 유니티 브랜치 merge
- m585
- m590 수리
- networkobject
- navigation
- 유니티 머지
- 깃허브 데스크탑 합치기
- Today
- Total
집게사장의 꿈
NetworkRunner.IsServer || StateGameResult.Ok [결론...삽질...] 본문
문제점
Shared 모드를 사용하여 Fusion을 이용한 멀티게임 제작 중
멀티게임 씬에서의 서버 연결이 자동으로 ShutDown 되는 현상이 발견됨.
원래는 대기 시간이 표시되면서 현재 퍼즐 배경이 제거 되지 않고 존재해야된다.
해결
NetworkRunner.IsServer || StateGameResult.Ok
문제점은 위 두가지 조건문으로 씬을 불러올 때 발생하는 문제였는데,
StateGameResult.Ok
모든 클라이언트와 서버에서 씬을 로드를 한다.
이건, 네트워크 게임을 연결하고 시작할 때, 현재 연결을 시도한 클라이언트에서 실행되면 안되는데 서버와 동시에 실행이 되면서 문제가 발생했던 것이다.
//게임 시작을 위한 설정을 진행한다.
var result = await _runnerInstance.StartGame(startGameArgs);
//서버에 연결된 상태일 경우
if(result.Ok)
{
CustomDebug.Print("서버 연결 성공 접속 시도");
//씬을 호출합니다.
await _runnerInstance.LoadScene(sceneName);
}
서버 뿐만 아니라 클라이언트에서도 씬을 중복으로 생성하다 보니까
씬마다 하나씩 있어야될 매니저가 2개씩 생성된 걸 확인할 수 있었다.
뿐만 아니라
CustomDebug.Print("서버 연결 성공 접속 시도");
로 로그가 찍히면서, 클라이언트에서도 씬 호출을 시도한 것을 알 수 있었다.
서버에서만 씬을 생성한다면, 로그가 보이지 않는다.
NetworkRunner.IsServer
서버에서만 씬을 로드
씬 호출을 서버에서만 실행하도록 하는 것이기 때문에, 정상적으로 작동했다.
await _runnerInstance.StartGame(startGameArgs);
if (_runnerInstance.IsServer)
{
CustomDebug.Print("서버 연결 성공 접속 시도");
//씬을 호출합니다.
await _runnerInstance.LoadScene(sceneName);
}
삽질에...다달은...결론....
결론적으로는 해당 함수는 서버에서만 실행이 되는 것이다.!
결국 저 조건문 자체가 필요하지 않았다.
runner.StartGame() 파라미터에 이미 게임에 대한 정보가 들어가 있기 때문이다.
아침에 살펴보니....(지금 06시.......)
아무래도 새벽에 작성한다고....머리가 과부화 걸려 무엇이 문제인지 파악하지 못한 것 같다.
클라우드에 코드가 복제된다는 생각은...참 신박하다.
왜 아무리 찾아도 자료가 안나오는지 이제야 이해했다....
Shared 모드에서는 Cloud 를 거쳐서 데이터가 동기화
포톤 공식 문서를 보면 Shared 모드에서는 Simulation 의 IsServer는 클라이언트의 경우에는 False만 반환한다.
Ref
https://www.youtube.com/watch?v=TDlFWfE-scg
https://doc-api.photonengine.com/en/fusion/v2/class_fusion_1_1_simulation.html
'유니티 > Fusion' 카테고리의 다른 글
flag |= NetworkObjectFlags.MasterClientObject; (0) | 2024.06.18 |
---|---|
Fusion 기본 정보 (1) | 2024.06.06 |
[뜯어보기] Asteroids.SharedSimple (0) | 2024.06.06 |
photon fusion tutorial #3 (1) | 2024.06.04 |
Photon Fusion Tutorial #2 (0) | 2024.06.04 |