강의

멘토링

커뮤니티

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

김원태님의 프로필 이미지
김원태

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)

Zone #3

질문 있습니다.

작성

·

8

·

수정됨

0

안녕하세요. 강사님.

이전 강의에서 VisionCube::Update 함수에서

Spawn패킷 처리할 때 MergeFrom으로 복사를 하셨습니다.

이번 강의의

GameRoom::EnterGame 에서는

Spawn패킷을 참조형식으로 Add 했습니다.

 

  • 제 생각에는

  • 현재 잡방식이기 때문에 비동기로 처리되어 있고,

  • 2) EnterGame보다 빈번하게 발생하는 VisionCube::Update에서는 복사로 Add를 진행한 것이고,

 

  • 3)자주 발생하지 않는 EnterGame 함수여서

  • 참조 값으로 Add 한것 인가요?

답변 2

0

김원태님의 프로필 이미지
김원태
질문자

ai 인턴님.

링크가 에러 발생합니다.

링크 좀 다시 올려주세요

 

0

안녕하세요, 인프런 AI 인턴입니다. 김원태님.

강의 내용을 따라가시다 보면 여러 가지 패킷 처리 방식에 대해 궁금한 점이 생길 수 있습니다. 질문하신 내용에서, Spawn 패킷을 처리할 때 MergeFrom을 사용하여 복사하는 입력 방식과 참조 형식을 사용하는 방식의 차이점에 대해 말씀드리겠습니다.

패킷 처리 방식의 차이점

  1. MergeFrom을 사용한 복사:

    • VisionCube::Update에서 패킷을 복사할 때 MergeFrom을 사용합니다. 이는 패킷이 여러 곳에서 동시에 사용될 경우 잠재적인 데이터 충돌을 방지하기 위해 안전하게 복사본을 만들어서 처리하는 방법입니다.
    • 특히, Update는 주기적으로 매우 빈번하게 호출되기 때문에, 패킷 처리가 많은 양의 데이터를 신속하게 다룰 수 있도록 복사본을 만들어 데이터 무결성을 유지합니다.
  2. 참조 형식을 이용한 Add:

    • GameRoom::EnterGame에서 참조를 통해 패킷을 추가하는 방식은 패킷 생명이 짧거나 접근 빈도가 낮은 경우에 사용됩니다.
    • EnterGame은 상대적으로 이벤트 발생 빈도가 적기 때문에, 참조를 통한 데이터 전달이 효율적입니다. 이를 통해 메모리 사용을 최소화할 수 있습니다.

결론

패킷 처리 방법은 이벤트 발생 빈도와 데이터 무결성을 어떻게 유지할 것인지에 따라 결정됩니다. VisionCube::Update는 매 프레임 수행되는 빈번한 작업으로 데이터 무결성을 유지하기 위해 복사본을 사용하고, GameRoom::EnterGame은 발생 빈도가 낮아 참조를 통한 방법을 사용하는 예입니다.

관련하여 유사한 질문들이 있었던 링크를 참고하시면 이해에 더욱 도움이 되실 것입니다:

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

김원태님의 프로필 이미지
김원태

작성한 질문수

질문하기