Ask Your Question
0

ORM 오브젝트를 Protobuf 형식으로 전송하는 법이 어떻게 되나요?

asked 2017-12-13 09:44:46 +0900

casper7609 gravatar image

ORM 오브젝트를 Protobuf 형식으로 전송하고 싶은데 해당 오브젝트를 클라이언트에서 얻기 좋은 방식이 있나요?

현재 생각나는 방식은

  1. ORM 오브젝트 당 Protobuf 메시지 형식 선언 -> 클라이언트에서 해당 메세지 수신 후 각각 상응하는 클라이언트에 선언된 객체로 변환
  2. ORM 오브젝트를 JSON으로 변환 후 PbufMessage 의 msg에 넣어서 전송 -> 클라이언트에서 JSON Deserialize 후 각각 상응하는 클라이언트에 선언된 객체로 변환

정도로 생각이 나는데 혹시 더 나은 방향이나 참고할 만한 사항이 있는지 질문 드립니다.

edit retag flag offensive close merge delete

1 answer

Sort by » oldest newest most voted
0

answered 2017-12-13 11:23:40 +0900

DK Moon gravatar image

안녕하세요. 아이펀팩토리 문대경이라고 합니다.

잘 아시겠지만, ORM 은 게임 서버가 데이터를 관리하기 편하도록 지원되는 기능입니다. 그리고 Protobuf 나 JSON 은 게임 서버와 클라이언트가 데이터를 공유하기 위한 프로토콜입니다.

게임 서버와 클라이언트가 데이터를 공유할 때는 게임 서버가 알고 있는 모든 데이터를 전송하지는 않습니다. 이는 패킷사이즈도 커질 뿐더러 게임 클라이언트가 알아서는 안되는 데이터까지 포함될 수 있기 때문입니다. 그때문에 게임 서버가 데이터를 관리하는 아이펀 엔진 ORM 은 클라이언트와의 프로토콜인 protobuf 로 1:1 로 맵핑해서 serialize 하지는 않습니다.

그 대신 serialize 를 담당하는 함수를 정의하시고 그 안에서 클라이언트에 전송이 필요한 ORM 필드 값들들 선택적으로 protobuf 필드 값으로 assign 하셔야 됩니다. 예를 들어 이런 식입니다.

my_protobuf->set_myfield(my_orm->GetMyField());
edit flag offensive delete link more

Comments

좋은 답변 감사드립니다. 말씀 하신 방향으로 고려해봐야겠네요!

casper7609 gravatar imagecasper7609 ( 2017-12-13 18:09:00 +0900 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2017-12-13 09:44:46 +0900

Seen: 49 times

Last updated: Dec 13 '17