pdpdds / CGSF

Online Game Server Platform
135 stars 68 forks source link

MMO서버 구조에 대한 추가적 질문입니다. #45

Open woodrockman opened 8 years ago

woodrockman commented 8 years ago

이전에 올렸던 구조를 쓰레드 기준으로 아니라 프로그램 기준으로 생각해서 조금 다른 관점에서 접근을 해보았습니다.

통신 레이어 / 필드 레이어 / 기타 레이어 / 조작레이어 3개의 구성이며 통신레이어만 서버로, 필드랑 기타는 클라이언트 방식으로 제작할 생각입니다.

  1. 통신 레이어를 켠다. 곧바로 유저를 받지는 않고 필드, 기타 레이어 클라이언트가 들어오기를 대기합니다. 이 각 기능을 담당하는 클라이언트의 개수는 통신레이어측에 직접 지정해줍니다. 그 개수가 전부 할당 될 때까지 기타 유저의 통신은 받지 않습니다.
  2. 필드 / 기타 레이어에서 통신레이어와 접촉하여 자신을 알리는 고유 패킷을 보냄 혹시 모를 해킹에 대비해서 레이어별 암호를 설정하여 그 암호로 순번을 식별
  3. 모든 레이어가 등록이 되었을 경우 유저의 진입을 허용
  4. 통신에서 모든 유저와, 각 레이어와의 통신만 처리하고 그 밖에 모든 연산은 각 레이어에서 하도록 한다.

이런식으로 필드 / 기타 레이어를 클라이언트 방식으로 처리해서 서로 통신하게 하는게 올바른 방법인가 싶습니다.

본래라면

  1. 플레이어가 이동! 이라는 명령을 보내고, 클라이언트는 미리 이동을 실시한다.
  2. 서버에서 이동을 승낙하지 않으면, 이동 취소 명령어를 보내고 그 이외에는 다른 플레이어어들에게도 이 플레이어가 이동명령을 시작했음을 알린다.

일텐데 저 방식이라면

  1. 플레이어가 이동! 이라는 명령을 보내고, 클라이언트는 미리 이동을 실시한다.
  2. 통신서버에서 필드레이어로 이동명령을 전달한다.
  3. 필드레이어에서 이동을 승낙하지 않으면, 이동 취소 명령어를 보내고 그 이외에는 다른 플레이어어들에게도 이 플레이어가 이동명령을 시작했음을 전달하는 패킷을 통신에 보낸다.
  4. 통신서버에서 받은 결과패킷을 다시 플레이어에게 전달한다

이런식으로 몇가지 과정이 추가되므로, 이 과정의 딜레이가 어느정도 발생하지 않을까 라는 고민이 듭니다. 그밖에도 이렇게 구성하는게 올바른건지도 잘 모르겠네요 ㅠㅠ..

이렇게 구성 해도 별다른 문제가 일어나지 않으려나요?

CGSF에 관련된 질문은 아닌것 같지만

카페쪽에서 질문은 불가능하여 여쭈어봅니다 ㅠㅠ

pdpdds commented 8 years ago

카페 등업해드렸으니 일단 mmo 관련 글을 찾아 보시고 그래도 답이 안나오시면 질문주세요 ^^