더북(TheBook)

로비 서버가 한 대면 이 목록은 로비 서버가 가지면 됩니다. 로비 서버가 여러 대로 나뉘어 있다면 이 플레이어 목록에 어떻게 액세스해야 할까요? 9장에서 다루었던 서버 간 상호 작용을 구현하는 방식 세 가지를 검토합시다.

• 동기 분산 처리

• 비동기 분산 처리

• 데이터 복제에 기반을 둔 로컬 처리

동기 분산 처리는 다른 로비 서버의 플레이어 목록을 뒤지는 데 서버 간 통신 횟수가 너무 많습니다. 비동기 분산 처리는 어떨까요? 매치메이킹을 위한 의사 코드를 살펴봅시다.

Match(player)
{
  var list;
  for each (p in players)                 // ➊
  {
      if (p != player
          && p.waitingForGame
          && SimilarTo(player.elo, p.elo) // ➋
      {
          list.add(p);
      }
  }
  if (list.count = = 9)
  {
      StartGameRoom(list);
  }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.