-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
두번째 세션부터 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);
}
}
}
답변을 작성해보세요.
0
Rookiss
지식공유자2022.11.22
이런 문제는 무조건 디버깅을 통해 해결하셔야 합니다!
(당연히 위 내용만으로는 저도 알 수가 없습니다.)
클라 쪽에서 EnterGame 패킷을 보내고는 있는지 로그 or Breakpoint 확인해보시고
서버 쪽에서도 EnterGame 패킷을 받는지 로그 or BreakPoint 걸어서 확인해보시면
누가 범인인지 명확히 알 수가 있겠죠.
답변 1