강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

정은성님의 프로필 이미지
정은성

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

마무리

두번째 세션부터 entergame 패킷이 보내지지않습니다.

작성

·

333

0

Part4를 베이스로 삼아 간단한 동기화만 구현을 해보려고 해보는 중입니다. 문제가 되는 것은 처음으로 들어온 세션은 EnterGame 패킷과 Spawn 패킷을 모두 받는 반면에 두 번째로 들어온 세션은 Enter패킷이 들어오지않습니다...

 

상황을 정리하자면

첫번째 세션: MyPlayer생성 O, other Player 생성 O

두번째 세션: MyPlayer생성 X, other Player 생성 X

로그를 찍어보니 두번째 세션에 EnterGame Handler가 작동을 하지 않더군요... 혹시하는 마음에 질문해봅니다.

EnterGame

public override void EnterGame(GameObject gameObject)

{

if (gameObject == null)

return;

if (gameObject.ObjectType == GameObjectType.Player)

{

Player player = gameObject as Player;

_players.Add(gameObject.Id, player);

player.Room = this;

// 본인한테 정보 전송

{

S_EnterGame enterPacket = new S_EnterGame();

enterPacket.Player = player.Info;

player.Session.Send(enterPacket);

S_Spawn spawnPacket = new S_Spawn();

foreach (Player p in _players.Values)

{

if (player != p)

spawnPacket.Objects.Add(p.Info);

}

player.Session.Send(spawnPacket);

}

}

// 타인한테 정보 전송

{

S_Spawn spawnPacket = new S_Spawn();

spawnPacket.Objects.Add(gameObject.Info);

foreach (Player p in _players.Values)

{

if (p.Id != gameObject.Id)

p.Session.Send(spawnPacket);

}

}

}

 

 

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

이런 문제는 무조건 디버깅을 통해 해결하셔야 합니다!
(당연히 위 내용만으로는 저도 알 수가 없습니다.)

클라 쪽에서 EnterGame 패킷을 보내고는 있는지 로그 or Breakpoint 확인해보시고
서버 쪽에서도 EnterGame 패킷을 받는지 로그 or BreakPoint 걸어서 확인해보시면
누가 범인인지 명확히 알 수가 있겠죠.

정은성님의 프로필 이미지
정은성

작성한 질문수

질문하기