• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

패킷 하나의 멤버변수만 바꾸고 싶어도 패킷 전체를 보내야하나요?

21.10.15 14:05 작성 조회수 114

0

예를 들어, 패킷 안에 들어있는 멤버변수 level만 1 증가시키고 싶습니다.

그러면 C_PlayerInfoReq 라는 큰 용량의 패킷을 하나를 보내야하나요? 아니면

send(int packId, int offset, int desired); 처럼

packid만 송신해서 level 주소에 접근하는 방법이 있을까요?

답변 2

·

답변을 작성해보세요.

1

네 아주 자주 사용될 것 같은 패킷은 별도로 파야 합니다.
레벨만 바뀌는 경우는 드물고 레벨이 바뀌면 스탯도 바뀌니 조금 상황이 다르겠지만,
정말 '그' 부분만 바뀌고 또 자주 사용된다면 전용 패킷을 파주면 됩니다.
(그런데 실무에서도 이 부분은 늘 딜레마이긴 합니다)

문희찬님의 프로필

문희찬

질문자

2021.10.16

감사합니다. 서버랑 클라 창 띄어놓고 디버깅하면서 공부중이에요. 재미있어요. 책보고 독학했으면 진작 포기했을 텐데 어렵지 않게 가르쳐준 루키스님께 너무너무 감사해요. 

0

문희찬님의 프로필

문희찬

질문자

2021.10.15

송수신할 때 보내는 데이터의 최소 단위가 패킷이므로

새로운 패킷을 하나 만들어도 될거같아요.

C_PlayerInfoReq의 level만 변경하는 패킷인 C_PlayerLevelChange처럼요. 

패킷의 종류를 늘리면 할 수 있는 일은 많아지지만, 코드가 조잡해질 수도 있을거같아요