인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

사과일광욕님의 프로필 이미지

작성한 질문수

[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템

Skill (1) - 개요

MMORPG라면 서버가 어떤 기능들을 가져가야 할까요?

작성

·

92

0

클라가 모든 걸 다하고 서버는 판정만 해야할지

아니면 이동(구르기 같은), 데미지, 차징, State관리, Effect 등도 서버가 처리해야 할지 궁금합니다

답변 2

1

Developer G님의 프로필 이미지
Developer G
지식공유자

수강해주셔서 감사합니다.

이건 뭐가 답이 있는건 아니구요,
클라에서 로직을 실행하고, 판정만 서버쪽에 넘기면 서버 부담은 적어지겠지만 보안이 취약해질거고,
서버에서 로직을 실행하고, 클라는 상태에 대한 동기화만 한다면 서버 부담은 커지겠지만 보안은 강해질겁니다.

풀 서버 방식으로 만든다고하면, 말씀하신 것들을 전부 서버에서 처리하고 클라는 Skill과 Entity의 상태에 대한 동기화만 해주는게 맞을 것 같습니다.
다만, TargetSearcher의 경우에는 클라의 입력을 서버로 보내서 서버가 클라의 입력이 올바른지 검증할 필요가 있습니다.

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 사과일광욕님.

MMORPG와 같은 멀티플레이어 게임의 서버와 클라이언트 역할은 게임의 구조와 신뢰성에 따라 달라질 수 있습니다. 일반적인 MMORPG의 경우, 서버가 주로 처리하는 기능과 클라이언트가 처리하는 기능을 적절히 배분하여 게임 경험을 최적화합니다. 다음은 이를 이해하는 데 도움이 될 몇 가지 기본 원칙과 관련 정보입니다.

서버의 주요 기능:

  1. 판정 및 동기화:
    • 서버는 주로 주요 판정(공격 적중 판정, 상태 변화 등) 및 게임 상태의 동기화를 담당합니다. 이는 클라이언트가 서버로 정보를 보내면, 서버가 이를 처리하여 다른 클라이언트로 전파하는 방식입니다.
  2. 보안 및 데이터 관리:
    • 게임 데이터 보호 및 플레이어 간의 공정성을 유지하기 위해 중요한 데이터를 서버에서 처리합니다.
  3. 이동 및 충돌 감지:
    • 서버에서 이동 및 충돌을 관리하여 클라이언트 간의 일관성을 유지할 수 있습니다. 클라이언트는 주로 이동의 예측을 담당하지만, 최종 확인은 서버에서 이루어집니다.

클라이언트의 역할:

  1. 출력 렌더링:
    • 사용자에게 게임을 보여주기 위한 그래픽 처리 및 UI 렌더링을 주로 담당합니다.
  2. 입력 관리:
    • 사용자의 입력을 수집하고 이를 서버로 전송합니다.
  3. 지역적 애니메이션:
    • 일부 비판적인 부분이 아닌 애니메이션 효과는 클라이언트에서 미리 처리할 수 있습니다.

추천 참고 자료:

아래는 MMORPG의 서버 기능과 클라이언트 기능에 대한 유사한 질문 사례 및 답변입니다. 이는 더 깊은 이해를 돕기 위해 관련 정보를 제공합니다.

  1. 멀티 게임에서의 State Machine에 대해서 궁금한 점
    • 내용 요약: StateMachine의 작동 원리와 상태 동기화에 대한 내용으로, 서버와 클라이언트 간의 상태 관리를 어떻게 구현할지 설명합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.