• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

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

22.11.22 13:49 작성 조회수 214

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

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

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