inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

Protobuf 이식 (코드 리뷰)

구글 프로토콜 버퍼 사용 이유

739

자르트

작성한 질문수 59

0

기존의 PDL.xml대신 구글 프로토콜 버퍼를 사용하는 이유가

  1. Write, Read 함수의 최적화: 기존에 Write, Read를 사용하면서 역직렬화, 직렬화 하실 때 비트컨버터를 사용하는 방법 말고도 더 최적화 할 수 있다고 해주셨는데 관련 문서를 찾아보니 엄청 복잡한 설계를 통해 최적화가 잘 돼 있다고 봤습니다.

  2. 현업에서의 업무 적응 능력: 대부분 프로토콜 버퍼 혹은 플랫 버퍼를 쓰기 때문에 나중에 혹시나 사용하는 프로젝트를 만나면 적응이 빠르다.

  3. 데이터의 직관성: 제가 자주 사용해서 그런진 모르겠는데 xml과 달리 패킷 설계가 직관적이라 쉬운편

  4. 클라와 서버에 쓰일 공통 데이터 선언: 클라와 서버에서 쓰일 패킷 관련 변수를 매번 복붙안해도됨(정확하지 않음, 패킷 자동화 부분에서 xml에서 프로토콜버퍼로 바뀌면서 자동으로 수행되는 부분인지 프로토콜 버퍼 자체 기능인지는 모르겠으나 using protocol buffer를 사용하면 패킷 변수를 사용할 수 있는 것을 보니 자체 기능 같기도하고..?)

  5. 샌드 버퍼와 리시브 버퍼의 최적화: 1번의 현상과 마찬가지로 구글 프로토콜 버퍼를 사용시 강의에서 자체 제작하신 샌드 버퍼와 리시브 버퍼는 사용하지 않고 조금 더 최적화된 프로토콜 버퍼의 것을 사용한다.

이런 이유로 보이는데 루키스님은 어떤 매력이 있으신거 같나요?

C# unity

답변 1

0

Rookiss

네 뭐 대부분 맞고요
언어 호환성 (C++, C#), 버그도 없을 확률이 더 높고, 이미 많이 알려져서 공용 기술이고 등등
여러가지 장점이 많습니다.

1

자르트

다트 같은 언어도 지원하던데 언어의 호환성과 버그 없는 것이 크게 작용하겠군요 바쁘신 와중에 답변 감사합니다!

MessagePack

0

84

1

본인 플레이어 이동 관련 질문

0

49

1

Part7 Part9 질문이 있습니다.

0

71

1

.

0

116

1

.

0

105

2

게임 로직 루프에서 게임 틱 누락으로 인한 높은 CPU 사용 문제

0

91

1

타일 팔레트 깔았는데도 안돼요

0

115

2

2D로 그냥 만들어도 되나요?

0

81

2

지난 강의와 이어지는게 맞을까요?

0

80

2

순환참조 문제로 인해 발생하는 문제는 없을까요?

0

162

2

유니티 클라와 C++서버연동

0

277

2

멀티플레이 테스트 환경 관련 질문입니다

0

207

3

강의 후반부에 순서 동기화를 위해 잡큐를 사용 안 한 부분 질문입니다!

0

150

2

코드 관련한 몇 가지 질문입니다!

0

153

2

3d 프로젝트 이동 동기화 관련

0

321

4

파트 7 스트레스 테스트 질문 드립니다.

1

189

2

맵 이동 방식

0

133

0

맵 이동 관련해서 질문드립니다.

0

91

1

안녕하세요 도저히 알 수 없는 오류가 나와서 질문드려요,,

0

201

2

안녕하세요. 일전에 질문 드린 포폴 준비 관련 질문의 추가 질문입니다!

0

159

1

[팁] 2024년 기준 버전 이슈?

0

453

1

SendBuffer.cs 삭제 후 대체 되는 부분의 장단점?

1

200

1

지금 강의의 유니티 클라를 IOCP 서버와 연동하는 것

0

333

2

PushAfter 사용 질문

0

189

1