Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
woodrockman opened this issue Dec 10, 2015 · 1 comment
Open

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

woodrockman opened this issue Dec 10, 2015 · 1 comment

Comments

@woodrockman
Copy link

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

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

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

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

본래라면

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

일텐데 저 방식이라면

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

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

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

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

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

@pdpdds
Copy link
Owner

pdpdds commented Dec 11, 2015

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants