Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

rabbit97 님의 블로그

22일 일지 본문

프로젝트 Final

22일 일지

rabbit97 2024. 11. 22. 22:16

# 오늘의 개발 진행 사항

 

 - *예비군 훈련 받고 오기*
 - 유저 업데이트 로직 병합

 - 리액션 핸들러 병합 준비 중

 

오늘도 문제가 있었는데 캐릭터가 공격을 하면 클라이언트에서 공격을 했구나!! 하고 서버로 리액션 요청이 오는 줄 알았는데

 

그게 맞긴 하지만 공격 로직에 문제가 있어서 또 무한 로딩에 걸렸었다.

 

처음에는 팀원들끼리 회의 중 리액션 로직에 문제가 있는거 같아서 그런 것 같다 결론이 나왔었는데 (아니였다)

 

# 해결 과정

 

패킷 명세 : 

 

message CharacterStateInfoData {

CharacterStateType state = 1;

CharacterStateType nextState = 2;

int64 nextStateAt = 3; // state가 nextState로 풀리는 밀리초 타임스탬프. state가 NONE이면 0

int64 stateTargetUserId = 4; // state에 target이 있을 경우

}

 

enum CharacterStateType {

NONE_CHARACTER_STATE = 0; BBANG_SHOOTER = 1; // 빵야 시전자

BBANG_TARGET = 2; // 빵야 대상 (쉴드 사용가능 상태)

DEATH_MATCH_STATE = 3; // 현피 중 자신의 턴이 아닐 때

DEATH_MATCH_TURN_STATE = 4; // 현피 중 자신의 턴

FLEA_MARKET_TURN = 5; // 플리마켓 자신의 턴

FLEA_MARKET_WAIT = 6; // 플리마켓 턴 대기 상태

GUERRILLA_SHOOTER = 7; // 게릴라 시전자

GUERRILLA_TARGET = 8; // 게릴라 대상

BIG_BBANG_SHOOTER = 9; // 난사 시전자

BIG_BBANG_TARGET = 10; //

난사 대상 ABSORBING = 11; // 흡수 중

ABSORB_TARGET = 12; // 흡수 대상

HALLUCINATING = 13; // 신기루 중

HALLUCINATION_TARGET = 14; // 신기루 대상

CONTAINED = 15; // 감금 중

}

 

 

로그 :

 

targetUserId:  3
게임 내 유저들 [
  {
    "id": 2,
    "nickname": "1111",
    "character": {
      "characterType": 5,
      "roleType": 3,
      "hp": 2,
      "weapon": 13,
      "stateInfo": {
        "state": 1,
        "nextState": 0,
        "nextStateAt": 3000,
        "stateTargetUserId": 3
},

{
    "id": 3,
    "nickname": "2222",
    "character": {
      "characterType": 8,
      "roleType": 1,
      "hp": 3,
      "weapon": 13,
      "stateInfo": {
        "state": 2,
        "nextState": 0,
        "nextStateAt": 3000,
        "stateTargetUserId": 0
      },

 

 

아무런 문제도 없어 보이고 실제로 아무런 오류가 나오지 않아서 찾는데 시간이 좀 걸렸지만 

 

수정한 로직 :

 

로그:

 

  {
    "id": 2,
    "nickname": "1111",
    "character": {
      "characterType": 5,
      "roleType": 3,
      "hp": 2,
      "weapon": 13,
      "stateInfo": {
        "state": 1,
        "nextState": 0,
        "nextStateAt": 1732276926057,
        "stateTargetUserId": 3
      },

  {
    "id": 3,
    "nickname": "2222",
    "character": {
      "characterType": 8,
      "roleType": 1,
      "hp": 3,
      "weapon": 13,
      "stateInfo": {
        "state": 2,
        "nextState": 0,
        "nextStateAt": 1732276926057,
        "stateTargetUserId": 3
      },

 

이게 맞았다

 

일단 단순히 3초 뒤가 아닌 Date.now() 를 사용해서 약속시간 잡듯이 몇시 몇분에 라고 지정을 해줘야 하고
또 문제는 당연히 명세에는 공격을 누구한테 했는지에 대한 타켓 아이디가 중요하다고 생각했지

공격을 받은 사람은 state를 2로 두고 타켓은 0으로 뒀었는데

공격자랑 통일을 해줬어야했다.

 

문제 해결

 

은 아니고 이제 리액션 패킷이 잘 보내지니 오류 내용을 참고해서 잘 수정만 하면 된다.

'프로젝트 Final' 카테고리의 다른 글

26일 일지  (0) 2024.11.26
23일 일지  (0) 2024.11.23
21일 일지  (1) 2024.11.21
20일 일지  (0) 2024.11.20
19일 일지  (0) 2024.11.19