[ 2024.11.13 TIL ] 최종 프로젝트 1일차 기획 및 진행 상황 정리

박지영·2024년 11월 13일
0

Today I Learned

목록 보기
78/88

서버 구조 예상

세션형 게임의 서버 구조

로비 서버, 게임 서버, 매칭 서버, 채팅 서버 등
출처: https://www.youtube.com/watch?v=nvTV1B_Mi9k

마리오 파티 같은 보드와 미니 게임의 모음으로 이루어져 있기 때문에

수평적 분산 서버 구조가 될 것 같다.

로비 서버와 세션 서버(데디케이트)는 필수로 존재하고

필요에 따라 매칭 서버나 채팅 서버 등이 추가로 구현할 수 있겠다.

미니 게임 데모 버전을 위한 테스트 서버 구현

기존 리소스 재활용

이전에 진행했던 멀티플레이 게임에서 사용했던 게임 및 유저 클래스와 세션 기능, 그리고 타워 디펜스에서 사용했던 패킷 관리 방법 등을 이용해서 임시로 테스트 서버를 만들어보려고 한다.

미니 게임 - 빙판에서 상대방 밀치기

  • 미끄러운 빙판이 있고, 각 모서리에 플레이어가 스폰됨.

  • 기본 120초, 일정 시간마다 빙판의 크기가 줄어듬 ( 2번정도? )

  • 맵 가운데에 플레이어를 튕겨내는 오브젝트(펭귄)이 있음 ( 위치 고정 )

  • 점프 없이 vector2 사용?

  • 맵 밖으로 이동하면 체력이 줄어듬..! ( 충돌에 대한 데미지는 없음 )

더미 클라이언트를 이용해서 패킷 교환이 정상적으로 이루어지는지 테스트 해봤다.

클라이언트 1 현재 버퍼 길이: 36
클라이언트 1 서버에서 온 패킷: S2CPlayerSpawn { playerId: 1, x: 0, z: 0, playerType: 1 }
클라이언트 1 현재 버퍼 길이: 22
클라이언트 1 서버에서 온 패킷: S2CGameStartNotification {}
클라이언트 2 현재 버퍼 길이: 58
클라이언트 2 서버에서 온 패킷: S2CPlayerSpawn { playerId: 2, x: 0, z: 0, playerType: 2 }
클라이언트 2 서버에서 온 패킷: S2CGameStartNotification {}
클라이언트 1 현재 버퍼 길이: 45
클라이언트 1 서버에서 온 패킷: S2CSyncPlayerDataNotification {
  players: [
    PlayerState { playerId: 2, x: 0, z: NaN, y: 1, hp: 100, state: 1 }
  ]
}
클라이언트 2 현재 버퍼 길이: 45
클라이언트 2 서버에서 온 패킷: S2CSyncPlayerDataNotification {
  players: [
    PlayerState {
      playerId: 1,
      x: 1.8673038482666016,
      z: 7.997285842895508,
      y: 1,
      hp: 100,
      state: 1
    }
  ]
}
클라이언트 1 현재 버퍼 길이: 45
클라이언트 1 서버에서 온 패킷: S2CSyncPlayerDataNotification {
  players: [
    PlayerState {
      playerId: 2,
      x: 8.68913745880127,
      z: 3.768244743347168,
      y: 1,
      hp: 100,
      state: 1
    }
  ]
}
클라이언트 2 현재 버퍼 길이: 45
클라이언트 2 서버에서 온 패킷: S2CSyncPlayerDataNotification {
  players: [
    PlayerState {
      playerId: 1,
      x: 6.565838813781738,
      z: 0.7956889867782593,
      y: 1,
      hp: 100,
      state: 1
    }
  ]
}

캐릭터 스폰, 게임 시작, 상태 동기화 알림 등 정상적으로 패킷을 주고 받고 있다.

내일 맵 크기 변경 요청 등을 추가적으로 구현해볼 예정이다.

profile
신입 개발자

0개의 댓글